/* common function */
function toggleBlock(id, link, animate){
	var res = 1;
	if($('#'+id).css('display') == 'none'){
		if(animate)
			$('#'+id).animate({'height': 'show'}, 200);
		else
			$('#'+id).show();
	}else{
		if(animate)
			$('#'+id).animate({'height': 'hide'}, 200);
		else
			$('#'+id).hide();
	}
	if(link)
		link.blur();
}

function changePriceCheckbox(el){
	el.blur();
	if(el.checked){
		/* recheck all others */
		if(el.getAttribute('value') == 'all'){
			for(var i=0; i<document.forms['price_filter'].elements.length; i++)
				if(document.forms['price_filter'].elements[i].getAttribute('value') != 'all')
					document.forms['price_filter'].elements[i].checked = false;
		}else{
			document.forms['price_filter'].elements[0].checked = false;
		}
	}
}

function changeCatalogPurpose(id){	
	if(catalog_purpose)
		$('#c_purpose_'+catalog_purpose).removeClass('active_item');
	$('#c_purpose_'+id).addClass('active_item');
	catalog_purpose = id;	
	
	setMarkerPosition(catalog_purpose);
	
	applySectionsFilter();
}

function setMarkerPosition(purpose){
	if(purpose == '')
		purpose = 'all';
	var l = $('#c_purpose_' + purpose).position();	
	if(l)
		$('#cur_item_arrow').css('left', (l.left + $('#c_purpose_'+catalog_purpose).width()/2-5) + 'px');
}

function applySectionsFilter(){
	var query = {'action': 'sections'}
	query['filter[catalog_item_purposes]'] = catalog_purpose == 'all' ? '' : catalog_purpose;
	if(document.forms['price_filter']){
		var pt = getPriceFilter();
		for(var i=0; i<pt.length; i++){
			query['filter[catalog_item_price_types]['+i+']'] = pt[i];
		}
		if(!pt.length)
			query['filter[catalog_item_price_types]'] = '';
	}
	$('#preloader').show();
	if(filter_mode == 'ajax')
		$('#catalog_sections_main').addClass('loading');
	$.get('/catalog/', query, onFilterApplied);
}

function onFilterApplied(text){
	$('#preloader').hide();
	if(filter_mode == 'ajax'){
		$('#catalog_sections_main').removeClass('loading');
		$('#catalog_sections_main').html(text);
	}else{
		window.location.reload();
	}
}

function getPriceFilter(){
	var price_types = new Array();
	var chb = document.forms['price_filter'].elements['price_types[]'];
	var price_types = new Array();
	for(var i=0; i<chb.length; i++){
		if(chb[i].checked){
			price_types[price_types.length] = chb[i].value;
		}
	}	
	return price_types;
}

function changeProductVariant(){
	
	var p_var = document.forms['product_variants'].elements['product_variants'].value;
	if(p_var == ''){
		document.getElementById('product_price').innerHTML = base_price;
		showFirstPhoto();
	}
	
	$('#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;
	else
		item_variant = p_var;
	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'];
		}
	}	
}

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

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

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

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

function hideSandBox(){
	var s = document.getElementById('sandbox');
	if(s){
		s.style.display = 'none';
	}
}

/* set marker position */
$(document).ready(
	function(){
		setMarkerPosition(catalog_purpose);
	}
);
			
/* 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;

function addToWishlist(id, link){
	link.blur();
	$.get('/wishlist/', {'action': 'add_item', 'id': id, 'item_variant': item_variant}, function(response){onAfterAddedToWishlist(response, link);});
}

function onAfterAddedToWishlist(response, link){
	if(response){
		link.setAttribute('href','/wishlist/');
		link.removeAttribute('onclick');
		link.innerHTML = 'Уже в списке';
		$(link).addClass('orange');
		setWishlistInfo(response);
	}else{
		showPopup('registration_form');
	}
}

function setWishlistInfo(xml, in_list){
	var count = $('count', xml).text();
	var sum = $('totalSum', xml).text();
	var cnt = $('countNum', xml).text();
	var currency = $('currency', xml).text();
	var ci = document.getElementById('cart_info');
	if(ci){
		if(cnt)
			ci.innerHTML = '<strong><a href="/wishlist/">' + count + '</a></strong> на сумму <strong>' + sum + ' ' + currency + '</strong>';
		else
			ci.innerHTML = 'Список покупок пуст';
			
		if(in_list){
			/* change total sum */
			if(!cnt){
				$('#wishlist_order_form').remove();
			}else{
				$('#totalSum').html(sum);
			}
		}
	}
}

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('right', '150px');
		$('div#moveitem_popup').css('top', t);
	}else{
		if(curMoveItem == id)
			$('div#moveitem_popup').css('display', 'none');
	}
	curMoveItem = id;	
	curMoveVariant = variant;	
}

function closeMoveItemPopup(){
	$('div#moveitem_popup').css('display', 'none');
}

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).slideToggle('fast',
		function(){
			var t = $(link).parent();
			var p = t[0];
			if(document.getElementById(el).style.display == 'none'){
				$(link).html('развернуть');
				$(p).removeClass('opened');
				$(p).addClass('closed');
			}else{
				$(link).html('свернуть');
				$(p).removeClass('closed');
				$(p).addClass('opened');
			}
		}
	);
	link.blur();	
	
}
