/* common function */
function toggleBlock(id, link, animate, t_class, animate_param, opened_text, closed_text){
	if(!animate_param){
		animate_param = 'height';
	}
	
	var el = typeof(id) == 'object' ? id : $('#' + id);
	
	var res = 1;
	if(t_class){
		$(link).toggleClass(t_class);
	}
	if($(el).css('display') == 'none'){

		if(animate){
			if(animate_param == 'height')
				$(el).animate({'height': 'show'}, 'fast');
			else
				$(el).animate({'width': 'show'}, 'fast');
		}else
			$(el).show();
		
		if(opened_text && link){
			link.innerHTML = opened_text;
		}
			
	}else{
		if(animate){
			if(animate_param == 'height')
				$(el).animate({'height': 'hide'}, 'fast');
			else
				$(el).animate({'width': 'hide'}, 'fast');
		}else
			$(el).hide();
			
		if(closed_text && link){
			link.innerHTML = closed_text;
		}
	}
	if(link)
		link.blur();
	return false;
}

/* popups */
function showPopup(id, link){
	hideAllPopups();
	if(link)
		link.blur();
	showSandBox();
	var t = ($(window).width()-$('#' + id).width())/2;
	$('#' + id).show();//animate({height: 'show'}, 200);
	$('#' + id).css({'left': t});
	$('#' + id).css({'top': $(document).scrollTop() + 50});
	//$(document).scrollTop(0);
}

function hidePopup(id){
	hideSandBox();
	var t = document.getElementById(id);
	if(t){
		t.style.display = 'none';
	}
}

function hideAllPopups(){
	hideSandBox();
	$('div.login_popup').hide();
}

function showSandBox(){
	var s = document.getElementById('sandbox');
	if(!s){
		s = document.createElement('div');
		s.setAttribute('id', 'sandbox');
		$(s).click(function(){hideAllPopups();});
		document.body.appendChild(s);
	}
	s.style.height = $(document).height() + 'px';
	$(s).show();
}

function hideSandBox(){
	var s = document.getElementById('sandbox');
	if(s){
		s.style.display = 'none';
	}
}
			
/* init images actions */
$(document).ready(
	function(){
		/* thumb events */
		var t = $('#thumbs > a');
		if(t.length){
			$(t[0]).children().addClass('active');
			$(t).click(
				function(){
					changeCatalogPhoto(this.href, this.rel, $(this).children());
					return false;
				}
			);
		}
		/* opeing lightbox by clicking on middle size picture */
		$('#big_photo > a').click(
			function(){
				tb_show('', this.href, '');
				return false;
			}
		);
	}
);

function showFirstPhoto(){
	var t = $('#thumbs > a');
	if(t.length)
		$(t[0]).click();
}

function changeCatalogPhoto(src, src2, thumb){
	$('#big_photo > a > img').attr('src', src);
	$('#big_photo > a').attr('href', src2);
	$('#thumbs > a > img.active').removeClass('active');
	if(thumb){
		$(thumb).addClass('active');
	}
}

/* login */
function doLogin(link){
	link.blur();
	var email = document.forms['login_form'].elements['login'];
	var password = document.forms['login_form'].elements['password'];
	var remember = document.forms['login_form'].elements['remember'];
	var ok = simpleFormCheck('login_form');
	if(ok){
		var s_data = {'login': email.value, 'password': password.value}
		if(remember.checked){
			s_data.remember=1;
		}
		$.post('/login/', s_data, onLoginDone);
	}
}

function onLoginDone(text){
	if(text != ''){
		document.getElementById('login_errors').innerHTML = text;
	}else{
		window.location.reload();
	}
}

function clearLoginForm(){
	var form_name = 'login_form';
	document.getElementById('login_errors').innerHTML = '';
	for(var i=0; i<document.forms[form_name].elements.length; i++){
		if(document.forms[form_name].elements[i].className != 'but' && document.forms[form_name].elements[i].className != 'chb'){
			document.forms[form_name].elements[i].value = '';
			$(document.forms[form_name].elements[i]).removeClass('error');
		}
	}
}

/* registration */
function doRegister(link){
	if(link)
		link.blur();
	var email = document.forms['registration_form'].elements['login'];
	var password = document.forms['registration_form'].elements['password'];
	var password_r = document.forms['registration_form'].elements['password_repeat'];
	var cpt = document.forms['registration_form'].elements['captcha_word'];
	var ok = simpleFormCheck('registration_form');
	if(ok){
		$.post('/registration/', {'_save': 1, 'login': email.value, 'password': password.value, 'password_repeat': password_r.value, 'captcha_word': cpt.value}, onRegisterDone);
	}
}

function onRegisterDone(text){
	if(text != ''){
		document.getElementById('registration_errors').innerHTML = text;
	}else{
		window.location.reload();
	}
}

/* common form functions */
function onFieldFocus(el){
	$(el).removeClass('error');
}

function simpleFormCheck(form_name){
	var isok = true;
	for(var i=0; i<document.forms[form_name].elements.length; i++){
		if(document.forms[form_name].elements[i].value == ''){
			document.forms[form_name].elements[i].className = document.forms[form_name].elements[i].className == '' ? 'error' : document.forms[form_name].elements[i].className + ' error';
			isok = false;
		}
	}
	return isok;
}

/* WISHLIST */
var item_variant = 0;
var toadd_item = 0;
var cur_wl_link = null;

function addToWishlist(id, link){
	
	if(!user_authorized){
		showPopup('login_form');
		return false;
	}
	
	/* set default values */
	$('input:checkbox', document.forms['tocart_form']).attr('checked', false);
	document.forms['tocart_form'].elements['num'].value = 1;
	document.forms['tocart_form'].elements['name'].value = '';
	$('#new_wl_name_cnt').hide();
	$('select', document.forms['tocart_form']).attr('disabled', false);
	
	cur_wl_link = link;
	link.blur();
	toadd_item = id;
	var offs = $(link).offset();	
	var h = $('#tocart_popup').height();
	var left = offs.left - 17;
	var top = offs.top;
	//alert($(window).height());
	if(top+h-$(document).scrollTop() > $(window).height())
		top = top - h;
	$('#tocart_popup').css({'left': left, 'top': top});
	$('#tocart_popup').show();
}

function doAddToWishlist(){
	var params = {'id': toadd_item, 'item_variant': item_variant, 'action': 'add_item'};
	if($('input:checkbox', document.forms['tocart_form']).attr('checked')){
		var nwl = $('#new_wl_name').attr('value');
		if(nwl == ''){
			alert('Необходимо ввести название нового списка покупок');
			return false;
		}else{			
			params.new_wishlist = nwl;
		}
	}else{
		params.wishlist_id = document.forms['tocart_form'].elements['wishlist_id'].value;
	}
	var num = document.forms['tocart_form'].elements['num'].value;
	if(num == '' || !parseInt(num) || parseInt(num) < 1){
		alert('Укажите правильное кол-во товара');
		return false;
	}else{
		params.num = num;
	}
	$.get('/wishlist/', params, function(response){onAfterAddedToWishlist(response);});
	return false;
}

function onAfterAddedToWishlist(response){
	link = cur_wl_link;
	closeWLPopup();
	if(response){		
		$(link).attr('href','/wishlist/');
		link.removeAttribute('onclick');
		$(link).html('добавлено');
		$(link).parent().addClass('added');
		setWishlistInfo(response);
	}else{
		showPopup('login_form');
	}	
}

function closeWLPopup(){
	$('#tocart_popup').hide();
}

function setWishlistInfo(xml, in_list){
	
	if(!$('#wishlist_short').length){
		return false;
	}
	
	var new_cnt = '';
	var lnk = '';
	var items = $('items > item', xml);
	
	var sum = $('totalSum', xml).text();
	
	var sel = new Array();
	sel[0] = document.forms['cur_list'].elements['wishlist'];
	sel[1] = document.forms['tocart_form'].elements['wishlist_id'];
	
	var new_wishlist = $('newWishlist', xml);
	if(new_wishlist.length){
		var new_name = $('newWishlist > name', xml);
		var new_id = $('newWishlist > id', xml);
		for(var i=0; i<sel.length; i++){
			sel[i].options[sel[i].options.length] = new Option(new_name.text(), new_id.text());
		}
	}
	
	var default_list = $('defaultList', xml).text();
	for(var i=0; i<sel.length; i++){
		for(var j=0; j<sel[i].options.length; j++){
			if(sel[i].options[j].value == default_list)
				$(sel[i].options[j]).attr('selected', true);
		}
	}
	
	if(items.length){
		$('#wishlist_price_info').show();
		for(var i=0; i<items.length; i++){
			lnk = '<a href="/catalog/?id=' + $('id', items[i]).text() + '">';
			//new_cnt += '<div class="item_photo">' + lnk + '<img src="' + $('photo', items[i]).text() + '"/></a></div>';
			new_cnt += '<div class="item">';
			new_cnt += '<div class="item_name">' + lnk + $('name', items[i]).text() + '</a></div>';
			new_cnt += '<div class="items_num">' + $('num', items[i]).text() + 'шт</div>';
			new_cnt += '<div class="clearer"></div>';
			new_cnt += '</div>';
		}
		$('#cur_wishlist_sum').text($('totalSum', xml).text() + ' ' + $('currency', xml).text());
		$('#wishlist_info').show();
	}else{
		$('#wishlist_info').hide();
		new_cnt = '<div class="item">Нет покупок</div>';
	}
	
	new_cnt += '<div class="ug"></div>';
	$('#wishlist_short').html(new_cnt);
	
	if(in_list){
		if(!items.length){
			$('#wishlist_order_form').remove();
			$('#wishlist_items_list').html('Список пуст');
			//$('#wishlist_total_sum').remove();
		}else{
			$('#totalSum').html($('totalSum', xml).text());
		}
	}
}

function deleteWishlistItem(wishlist, item, variant, link){
	if(confirm('Вы уверены?')){
		$('#wl_item'+item).addClass('loading');
		$.get('/wishlist/', {'action': 'delete_item', 'item': item, 'item_variant': variant, 'wishlist': wishlist}, function(response){onAfterItemDeleted(response, item, variant);});
	}
	link.blur();
}

function onAfterItemDeleted(response, id, variant){	
	$('#wl_item'+id+'_'+variant).remove();
	setWishlistInfo(response, true);
}

function onWLCreateSubmit(form){
	if(form.elements['name'].value.replace(' ','') == ''){
		alert('Введите название списка');
		return false;
	}
	return true;
}

var curMoveItem = 0;
var curMoveVariant = 0;

function showMoveItemPopup(id, variant, link, ev){
	if(link)
		link.blur();
	var e = (window.event) ? window.event : ev;
	if($('div#moveitem_popup').css('display') == 'none' || curMoveItem != id){
		$('div#moveitem_popup').css('display', 'block');
		var l = e.clientX;
		var t = e.clientY + $(document).scrollTop();
		$('div#moveitem_popup').css('left', l);
		$('div#moveitem_popup').css('top', t);
	}else{
		if(curMoveItem == id)
			$('div#moveitem_popup').css('display', 'none');
	}
	curMoveItem = id;	
	curMoveVariant = variant;	
}

function closeMoveItemPopup(){
	curMoveItem = 0;
	curMoveVariant = 0;
	$('div#moveitem_popup').css('display', 'none');
	$('div#wishlist_items_list > div').removeClass('hover');
}

function moveItemToList(from_list, to_list){
	if(curMoveItem){
		$('#wl_item'+curMoveItem).addClass('loading');
		closeMoveItemPopup();
		$.get('/wishlist/', {'action': 'move_item', 'id': curMoveItem, 'item_variant': curMoveVariant, 'from': from_list, 'to': to_list}, function(response){onAfterItemMoved(response, curMoveItem, curMoveVariant);});
	}
}

function onAfterItemMoved(response, item, variant){
	$('#wl_item'+item+'_'+variant).remove();
	setWishlistInfo(response, true);
}

function changeDefaultList(sel){
	$.get('/wishlist/', {'action': 'set_default_list', 'id': sel.value}, onAfterListChanged);
}

function onAfterListChanged(response){
	window.location.reload();
}

function showConfigElements(el, link){
	
	$('#'+el).toggle('fast',
		function(){
			var t = $(link).parent();
			var p = t[0];
			if(document.getElementById(el).style.display == 'none'){
				$(p).removeClass('opened');
				$(p).addClass('closed');
			}else{
				$(p).removeClass('closed');
				$(p).addClass('opened');
			}
		}
	);
	link.blur();	
	
}

/* menu functions */
function menuItemHover(el){
	
	if(this.className != 'active')
		$(this).addClass('hover');
	
}

function menuItemOut(el){

	$(this).removeClass('hover');
	
}

/* init hor menu */
/*
$(document).ready(
	function(){
		stretchMenu('hor_menu');
		// hover effects
		var t = $('table.hor_menu > tbody > tr > td');
		$(t).mouseover(menuItemHover);
		$(t).mouseout(menuItemOut);
	}
);
*/

var menu_types = new Array('catalog_sections', 'brand_list');//, 'lib_links');
function showMenu(bid, lnk){
	bid = '#' + bid;
	if($(bid).css('display') != 'block'){
		/* hide opened */
		for(var i = 0; i < menu_types.length; i++)
			if(bid != '#' + menu_types[i] && $('#' + menu_types[i]).css('display') == 'block'){
				var tt = $('div.menu_section_name.opened');
				var cur_opened = false;
				if(tt.length && tt[0].className != 'menu_section_name opened stat')
					cur_opened = tt[0];
				$('#' + menu_types[i]).animate({height: "hide"}, 300, 
					function(){
						if(cur_opened)
							$(cur_opened).removeClass('opened');
					}
				);
				//$('#' + menu_types[i]).hide();
			}
		$(bid).animate({height: "show"}, 300);
		if(lnk)
			$(lnk).addClass('opened');
	}else{
		$(bid).animate({height: "hide"}, 300, function(){if(lnk) $(lnk).removeClass('opened')});
	}
}

/* top banner functions */
var curBan = 1;

function changeBan(dir){
	var cur = document.getElementById('top_ban'+curBan);
	if(cur){
		if(dir == 0)
			curBan--;
		else
			curBan++;
		var toshow = document.getElementById('top_ban'+curBan);
		if(toshow){
			cur.style.display = 'none';
			toshow.style.display = 'block';
		}else{
			if(dir == 0)
				curBan++;
			else
				curBan--;
		}
	}
	checkControls();
}

function checkControls(){
	var t = curBan+1;
	var next = document.getElementById('ban_control_next');
	var prev = document.getElementById('ban_control_prev');
	if(document.getElementById('top_ban'+t))
		next.style.visibility = 'visible';
	else
		next.style.visibility = 'hidden';
	t = curBan-1;
	if(document.getElementById('top_ban'+t))
		prev.style.visibility = 'visible';
	else
		prev.style.visibility = 'hidden';		
}

/* init top news behavior */
$(document).ready(
	function(){
		$('div#top_news > a.news_entry').mouseover(topNewsOver);
	}
);

function topNewsOver(){
	$('div#top_news > a.news_entry.n_opened').removeClass('n_opened');
	$(this).addClass('n_opened');
}

/* news line functions */
function showNextNews(dir){
	
	var cur = $('#cur_news');
	$(cur).removeAttr('id');
	$(cur).hide();
	var new_el = dir == 1 ? $(cur).next() : $(cur).prev();
	if(!new_el.length){
		/* get first or last */
		var t = $('#news_line_items > div');
		new_el = dir == 1 ? t[0] : t[t.length-1];
	}
	$(new_el).fadeIn('fast');
	$(new_el).attr('id', 'cur_news');
	
}

/* product details */
/*
$(document).ready(
	function(){
		$('table#product_menu > tbody > tr > td > div > a').click(
			function(){
				showProductInfo(this.href, this);
				return false;
			}
		);
	}
);
*/

function showProductInfo(url, it){
	$(it).parent().parent().siblings('.active').removeClass('active');
	$(it).parent().parent().addClass('active');
	$(it).blur();
	ajaxLoadContent(url, 'product_detail_info');
}

function ajaxLoadContent(url, content_id){
	$('#' + content_id).html('<div class="ajax_loader"><img src="/img/ajax-loader.gif"/></div>');
	$.get(url, null, 
		function(response){
			onAjaxContentLoaded(response, content_id);
		}
	);
}

function onAjaxContentLoaded(text, content_id){
	$('#' + content_id).html(text);
}

/* filter functions */
function showFilter(filter, link){
	link.blur();
	if(!$(link).parent().hasClass('cur')){
		$(link).parent().siblings('.cur').removeClass('cur');
		$(link).parent().addClass('cur');
		$('#filter_contents > div').hide();
		$('#' + filter).fadeIn('fast');
	}	
}

function showSpecialProducts(sid, link){
	link.blur();
	var par = $(link);
	if(!$(par).hasClass('act')){
		//$(par).siblings('.act').addClass('lnk');
		$(par).siblings('.act').removeClass('act');
		$(par).addClass('act');
		//$(par).removeClass('lnk');
		$('#special_products > div').hide();
		$('#catalog_special' + sid).show();
	}
}

/* some other */

function changeProductVariant(){
	
	var p_var = document.forms['product_variants'].elements['product_variants'].value;
	if(p_var == ''){
		document.getElementById('product_price').innerHTML = base_price;
		//showFirstPhoto();
	}
	
	/*
	DESCRIPTIONS
	$('#product_descriptions div.short_desc').hide();
	$('#product_description_v' + p_var).show();
	
	if(p_var != '' && $('#product_description_v' + p_var).html() == ''){
		$('#product_description_v' + p_var).hide();
		$('#product_description_v').show();
	}
	*/
	
	item_variant = p_var;
	if(item_variant == '')
		item_variant = 0;
		
	for(var i=0; i<product_variants.length; i++){
		if(product_variants[i]['id'] == p_var){
			if(product_variants[i]['pict1'] != ''){
				changeCatalogPhoto(product_variants[i]['pict1'], product_variants[i]['pict2']);
			}else{
				showFirstPhoto();
			}
			document.getElementById('product_price').innerHTML = product_variants[i]['price'];
		}
	}	
}

/* init purpose filter behaviour */
/*
$(document).ready(
	function(){
		var t = $('#purpose_filter > div > table > tbody > tr > td');
		//alert(t.length);
		$('#purpose_filter > div > table > tbody > tr > td > a').mouseover(
			function(){				
				$(this).parent().addClass('hover');
			}
		).mouseout(
			function(){
				$(this).parent().removeClass('hover');
			}
		);
	}
);
*/

function stretchMenu(cnt_id){
	
	var container = document.getElementById(cnt_id);
	var e_width = 0;
	var items = $('table > tbody > tr >td a span', container);
	var items_num = 0;
	
	/* calculate width */
	for(var i=0; i<items.length; i++){
		e_width += items[i].offsetWidth;
		items_num++;
	}
	
	if(items_num){		
		var padding = (container.offsetWidth-e_width)/(items_num*2);
		$('table > tbody > tr >td a', container).css('padding-left', padding+'px').css('padding-right', padding+'px');
	}	
	
}

$(document).ready(
	function(){
		stretchMenu('purpose_items');
		moveFilterMarker();
	}
);

/* purpose filter */
function changeCatalogPurpose(id, lnk, index){	
	$('#sections_content_rel').addClass('loading');
	lnk.blur();
	$(lnk).parent().siblings().removeClass('active');
	$(lnk).parent().addClass('active');
	var req = {'purpose': id}
	if(index)
		req.no_sub = '1';
	$.get('/catalog/', req, onFilterApplied);
	moveFilterMarker();
	$('#clear_filter').show();	
}

function onFilterApplied(text){
	var c = document.getElementById('sections_content')
	if(c){
		$(c).html(text);
	}else{
		location.href = '/catalog/';
	}
	$('#sections_content_rel').removeClass('loading');
}

function clearPurposeFilter(lnk, index){
	$('#sections_content_rel').addClass('loading');
	$(lnk).parent().hide();
	var pf = $('#purpose_items');
	$('td.active', pf).removeClass('active');
	moveFilterMarker();
	var req = {'purpose': 'all'}
	if(index)
		req.no_sub = '1';
	$.get('/catalog/', req, onFilterApplied);
}

function moveFilterMarker(){
	if(document.getElementById('filter_marker')){
		var t = $('#purpose_filter > div > table > tbody > tr > td.active');
		if(t.length){
			offs = $(t).position();
			l = offs.left + (($(t[0]).width()-$('#filter_marker').width())/2);
			$('#filter_marker').css({'left': l + 'px'}).show();
		}else{
			$('#filter_marker').hide();
		}
	}
}

function copyPreviousElement(lnk, par_level, callback){
	if(!par_level)
		par_level = 0;
	lnk.blur();
	for(var i=0; i<par_level; i++)
		lnk = $(lnk).parent();
	var new_el = $(lnk).prev().clone();
	$(new_el).insertBefore(lnk);
	/* clear inputs */
	$('input[@type="text"]', new_el).attr('value', '');
	$('input[@type="checkbox"]', new_el).removeAttr('checked');
	var sel = $('select', new_el);
	for(var i=0; i<sel.length; i++){
		sel[i].selectedIndex=0;
	}
	
	if(callback){
		callback(new_el);
	}
	
}

function showSectionChildren(field){
	field.blur();
	var section_id = field.value;
	if(section_id){
		$.get('/catalog/', {'a': 'sub_sections', 'parent': section_id}, function(text){onChildrenLoaded(text, field)});
	}else{
		removeNextSections(field);
	}
}

function onChildrenLoaded(text, field){
	var options = $('option',text);
	removeNextSections(field);
	if(options.length){
		var sel = document.createElement('select');
		$(sel).attr('name', 'section[]');
		$(sel).change(function(){showSectionChildren(this)});
		$(sel).insertAfter(field);
		sel.options[0] = new Option('--', '')
		for(var i=0; i<options.length; i++){
			sel.options[sel.options.length] = new Option($('name', options[i]).text(), $('value', options[i]).text());
		}
	}
}

function removeNextSections(field){
	$(field).nextAll('select').remove();
}

function checkSectionSelected(form){
	var s = $('select', form);
	var check = s[s.length-1].value != '';
	if(!check){
		alert('Необходимо выбрать категорию');
		return false;
	}
	return true;
}

function changePriceType(sel){
	var val = sel.value;
	if(val == 2){
		$('#mlt_prices').show();
	}else{
		$('#mlt_prices').hide();
	}
	if(val == 0){
		$('#discount_price').show();
	}else{
		$('#discount_price').hide();
	}
}

/* add to cart functions */
function checkCreateNew(el){
	$('#new_wl_name_cnt').toggle();
	if(el.checked)
		$('select', document.forms['tocart_form']).attr('disabled', true);
	else
		$('select', document.forms['toart_form']).removeAttr('disabled');
}

/* sections list */
function toggleSectionsList(list, link){
	link.blur();
	$('#sections_content > div').hide();
	$('#' + list).show();
	$('#sections_switcher > div').removeClass('active');
	$(link).parent().parent().addClass('active');
}

function toggleAllSections(link){
	link.blur();
	$('#all_sections').slideToggle('fast', function(){$(link).parent().toggleClass('opened');});	
}

function checkAll(formname, but, el, exclude){
	var frm = (typeof formname == "string") ? document.forms[formname] : formname[0];
	//var but_ob = document.forms[formname].elements[but];
	var but_ob = $('input[@name="' + but + '"]:checkbox', frm);
	var elements = $('input:checkbox', frm);
	but_ob.blur();
	for(var i=0; i < elements.length; i++){
		if((!el || elements[i].getAttribute('name') == el) && (!exclude || elements[i].getAttribute('id') != 'exclude')){				
			$(elements[i]).click(function(){
				if(!this.checked){
					but_ob[0].checked = false;
				}
			});
			if($(but_ob).attr('checked'))
				elements[i].checked = true;
			else
				elements[i].checked = false;
		}
	}
}

function initCheckboxes(formname, but, el, exclude){
	$(document.forms[formname].elements[but]).click(
		function(){
			checkAll(formname, but, el, exclude);
		}
	);

	$(document.forms[formname].elements[el]).click(
		function(){
			if((!exclude || !this.getAttribute('exclude')) && !$(this).attr('checked')){
				$('input[@name="' + but + '"]:checkbox', document.forms[formname]).attr('checked', false);
			}
		}
	);

}

function getSelectValue(formname, element_name){
	var el = document.forms[formname].elements[element_name];
	var opt = el.options;
	return opt[el.selectedIndex].value;
}

/* my charts */

var main_chart_params = new Array();
var chart_errors = '';
var charts_num = 0;

function buildChart(btn, form){
	btn = $(btn).parent().parent();
	if(!form)
		form = $(btn).prev();
	var chart_cb = $(form).parent().next();	
	
	var form_type = $('input[@name="form_type"]', form).attr('value');
	var type = $('input[@name="report_type"]', form).attr('value');
	if(form_type == 'my'){
		buildMyChart(type, form, chart_cb);
	}else{
		buildCommonChart(type, form, chart_cb);
	}
	
}

function buildMyChart(type, form, chart_cb){	
	
	var c_params = getChartParams(form);
	if(chart_errors)
		return false;	
	
	var c_query = 'type=' + type + '&' + makeChartQueryFromArray(c_params);
	
	$(chart_cb).html('');
	showChart(chart_cb, c_query, form);
	
}

var is_group = 0;
var is_competitors = 0;

function buildCommonChart(type, form, chart_cb){	
	
	var c_params = getChartParams(form);
	/* check params */
	if(false){
		
	}
	
	var c_query ='type=' + type + '&' + makeChartQueryFromArray(c_params);	
	$('div', chart_cb).html('');
	showChart(chart_cb, c_query, form);
}

function showChart(cb, url, form){
	$.post('/reports/?a=show_grid&is_group='+is_group+'&' + url, {}, function(response){onChartGridLoaded(response, url, cb, form)});
}

function onChartGridLoaded(response, url, cb, form){
	
	/* show image */
	
	charts_num++;
	
	if(!f_charts){
		
		var dv = document.createElement('div');
		var im = document.createElement('img');
		dv.appendChild(im);
		$(cb).html(dv);
		im.setAttribute('src', '/reports/?a=show_chart&is_group='+is_group+'&' + url);
		
	}else{

		var dv = document.createElement('div');
		dv.setAttribute('id', 'chart' + charts_num);
		$(cb).html(dv);
		
		var so = new SWFObject('/amcharts/amline/amline.swf', 'amline', '700', '450', '8', '#FFFFFF');
		so.addParam('wmode', 'opaque');
		so.addVariable('path', '/amcharts/amline/');
		so.addVariable('settings_file', encodeURIComponent('/reports/?a=settings_xml&is_group='+is_group+'&' + url));
		so.addVariable('data_file', encodeURIComponent('/reports/?a=show_xml&is_group='+is_group+'&' + url));
		so.write('chart' + charts_num);
		
	}
	
	/* show grid */
	
	$(cb).next().html(response);
	
	/* show extra charts */
	if($(form).attr('id') == 'main_chart')
		$('#extra_charts_cnt').show();	
	
}

function getChartParams(form){	
	var res = new Array();
	chart_errors = '';
	var type = $('input[@name="form_type"]', form).attr('value');
	if(type == 'my'){
		var c_type = is_competitors ? 1 : $('select[@name="chart_type"]', form).attr('value');
		var year = $('select[@name="year"]', form).attr('value');
		var hotels = $('input[@name="hotels[]"][@checked]', form);
		var exclude_nds = $('input[@name="exclude_nds"]', form).attr('checked');
		if(c_type == 1){
			var hotels_str = '';
			var alr = false;
			for(var i=0; i<hotels.length; i++){
				if(alr)
					hotels_str += '|';
				hotels_str += hotels[i].value;
				alr = true;
			}
			res[0] = {'year': year, 'hotels': hotels_str, 'exclude_nds': (exclude_nds ? 1 : 0), 'is_competitors': is_competitors}
		}else{
			for(var i=0; i<hotels.length; i++){
				res[i] = {'year': year, 'hotels': hotels[i].value, 'exclude_nds': (exclude_nds ? 1 : 0)}
			}
		}
		if((res.length == 0 || res[0]['hotels'] == '')){
			alert('Выберите одну или несколько гостиниц');
			chart_errors = 1;
		}
	}else{
		
		var year = $('select[@name="year"]', form).attr('value');
		var placing = $('select[@name="placing"]', form).attr('value');
		var city = $('select[@name="city"]', form).attr('value');
		var stars = $('select[@name="stars"]', form).attr('value');
		var rooms_number = $('select[@name="rooms_number"]', form).attr('value');
		
		res[0] = {
			'year': year,
			'placing': placing,
			'city': city,
			'stars': stars,
			'rooms_number': rooms_number
		}
		
	}
	
	if($(form).attr('id') == 'main_chart'){
		main_chart_params = res;
	}
	
	return res;
}

function makeChartQueryFromArray(arr){	
	var str = '';
	var alr = false;
	for(var i=0; i<arr.length; i++){
		for(var key in arr[i]){
			if(alr)
				str += '&';
			str += 'chart[' + i + '][' + key + ']=' + arr[i][key];
			alr = true;
		}
	}	
	return str;	
}

function buildSingleChart(btn){
	btn = $(btn).parent().parent();
	
	getChartParams($('form', $(btn).prev()));
	if(chart_errors)
		return;
	
	var orig  = $(btn).prev();
	var el = $(orig).clone();
	$('#single_charts').append('<hr/>').append(el);
	
	$('div.btn', el).parent().removeClass('hidden');
	$('div.hide_filter_link', el).removeClass('hidden').next().hide();
	$('div.hide_filter_link > div > a.js_link', el).text('развернуть фильтр');
	
	/* fill the form */
	var o_selects = $('select', orig);
	var c_selects = $('select', el);
	for(var i=0; i<o_selects.length; i++){
		c_selects[i].selectedIndex = o_selects[i].selectedIndex;
	}
	
	var o_ch = $('input[type="checkbox"]', orig);
	var c_ch = $('input[type="checkbox"]', el);
	for(var i=0; i<o_ch.length; i++){
		if($(o_ch).attr('checked'))
			$(c_ch).attr('checked');
	}
	
	var form = $('form', el);
	buildChart(null, form[0]);
}

function buildMergedChart(type, btn){
	
	if(!main_chart_params.length){
		alert('Базовый график еще не построен!');
		return;
	}
		
	var form1 = $('form', $(btn).parent().parent().prev());
	var new_params = getChartParams(form1);
	if(chart_errors)
		return false;
	
	var res_arr = new Array();
	for(var i=0; i<main_chart_params.length; i++){
		res_arr[res_arr.length] = main_chart_params[i];
	}
	for(var i=0; i<new_params.length; i++){
		res_arr[res_arr.length] = new_params[i];
	}
	
	q_str = 'type=' + type + '&' + makeChartQueryFromArray(res_arr);
	
	var cb = $('#main_chart').parent().next();
	showChart(cb, q_str);
	
}

function afterChartCopied(el){
	$('div.charts_cnt', el).html('');
	$('a.js_link', el).html('свернуть фильтр');
	$('div', el).show();
	/*
	var hr = document.createElement('hr');
	$(hr).insertBefore(el);
	$(hr).addClass('big');
	*/
}

function showChartForm(ch_id, link){
	link.blur();
	var par = $(link);
	if(!$(par).hasClass('act')){
		$(par).siblings('.act').removeClass('act');
		$(par).addClass('act');
		$('#chart_forms > div').hide();
		$('#chart_form_' + ch_id).show();
	}
}
