/**
* Все функции связанные с каталогом и заказами
*/

var CATALOG = {};

/**
 * Ссылочки управления корзиной
 */

CATALOG.Add2Basket = {};

$(document).ready(function(){ CATALOG.Add2Basket.Init();});


CATALOG.Add2Basket.Add = function(form) {
	
	var url = '/__ajax/basket/add2basket/';
	var data = $(form).serialize();
	var submitform = $(form);
	var div = submitform.parents('div.order');
	
	//alert(div);
	
	div.fadeTo('fast',0.1);
	$.get(url,data,function(txt){
		//alert(data);
		CATALOG.Add2Basket.ParseResponse(txt);
		div.fadeTo('fast',1);
		//div.html(div.html()+'.');
	});
	
	return false;
	
}


CATALOG.Add2Basket.Init = function() {
	
	var url = '/__ajax/basket/add2basket/';
	
	$('a.add2basket').each(function(){
		var id = this.id.substring(16);
		id = parseInt(id);
		if(id) {
			$(this).unbind('click').bind('click',function(){
				$(this).fadeTo('fast',0.1);
				var link = $(this);
				$.get(url,{'goodid':id,'addcount':1},function(data){
					//alert(data);
					CATALOG.Add2Basket.ParseResponse(data,link);
					link.fadeTo('fast',1);
				});
				return false;
			});
		}
		
	});
	
	
	$('a.add2basket_slideformshow').each(function(){
		var link = this;
		$(this).unbind('click').bind('click',function(){
			var div = $(link).parents('div.cat_list').children('div.order');
			div.slideToggle();
			return false;
		});
	});
}

CATALOG.Del2Basket = {};

$(document).ready(function(){ CATALOG.Del2Basket.Init();});

CATALOG.Del2Basket.Init = function() {
	
	var url = '/__ajax/basket/del2basket/';
	
	$('a.del2basket').each(function(){
		var id = this.id.substring(16);
		//id = parseInt(id);
		//alert(id);
		if(id) {
			$(this).unbind('click').bind('click',function(){
				
				if(!confirm('Вы действительно хотите удалить эту позицию из корзины?')) return false;
				
				$(this).fadeTo('fast',0.1);
				var link = $(this);
				$.get(url,{'goodid-var-color':id.replace(/\+/g,' ')},function(data){
					CATALOG.Add2Basket.ParseResponse(data,link);
					//alert(data);
					link.fadeTo('fast',1);
				});
				return false;
			});			
		}
		
	});
}


// обработка ответа от сервера на добавление/обновление/удаление позиций
CATALOG.Add2Basket.ParseResponse = function(data,link) {
	
	// если сервер ничего не вернул
	if(typeof(data)=='undefined' || data.length==0) {
		return;
	}
	
	// данные должны быть в формате JSON
	var order = eval('('+data+')');
	if(typeof(data)=='undefined') {
		return;
	}
	
	//if(navigator && navigator.userAgent && /newARTix/.test(navigator.userAgent))
		CATALOG.Add2Basket.ShowSplashGoodAdded(order,link);
				
	// если указана какая-то удаленная позиция
	if(order.deleted_items)
	for(var id in order.deleted_items) {
		$(document.getElementById('order_table_tr_'+order.deleted_items[id])).remove();
		var good_id = order.deleted_items[id].split('+');
		var variantkey = good_id[1];
		var colorkey = good_id[2];
		var good_id = good_id[0];
		checkForChangesDump[good_id][variantkey][colorkey] = null;
	}
	
	// если указана какая-то обновленная/добавленная позиция
	if(order.updated_items/* && typeof(TEMPLATES_OrderTableTr)!='undefined'*/) 
	for(var id in order.updated_items) {
		var i = order.updated_items[id];
		
		
		// если строка такой позиции уже есть в таблице
		if(document.getElementById('order_table_tr_'+i.oitem_goodid+'+'+i.oitem_variantkey+'+'+i.oitem_colorkey)) {
			$('#order_table_count_'+i.oitem_goodid+'+'+i.oitem_variantkey+'+'+i.oitem_colorkey).val(i.oitem_count);
			document.getElementById('order_table_price_'+i.oitem_goodid+'+'+i.oitem_variantkey+'+'+i.oitem_colorkey).innerHTML = i.oitem_price*i.oitem_count;
		}
		/*else {
			var str = TEMPLATES_OrderTableTr;
			str = str.replace(/\{\+/g,"'+").replace(/\+\}/g,"+'");
			str = eval("'"+str+"'");
			$('tbody',$('#order_table')).append(str);
		}*/
		
		// к вновь добавленным строкам добавляем обработку удаления
		CATALOG.Del2Basket.Init();
		
		// к инпутам привязываем события нажатия кнопки
		CATALOG.OrderForm.CountsInputsInit();
		
		// обновляем дамп актуальных значений
		
		
		if(typeof(checkForChangesDump[i.oitem_goodid])=='undefined') {
			checkForChangesDump[i.oitem_goodid] = [];
			checkForChangesDump[i.oitem_goodid][i.oitem_variantkey] = [];
		}else if (typeof(checkForChangesDump[i.oitem_goodid][i.oitem_variantkey])=='undefined') {
			checkForChangesDump[i.oitem_goodid][i.oitem_variantkey] = [];
		}
		checkForChangesDump[i.oitem_goodid][i.oitem_variantkey][i.oitem_colorkey] = i.oitem_count;

	}
	
	
	
	// основные данные о заказе
	var str = '';
	var str2 = 'Корзина пуста.';
	if(typeof(order.order_id)!='undefined') {
		var o = order;
		
		if(typeof(TEMPLATES_BasketSpanInLoginform)!='undefined') {
			str = o.order_discount?TEMPLATES_BasketSpanInLoginformWithDiscount:TEMPLATES_BasketSpanInLoginform;
			str = str.replace(/\{\+/g,"'+").replace(/\+\}/g,"+'");
			str = eval("'"+str+"'");
		}
		if(typeof(TEMPLATES_OrderInfoSpan)!='undefined') {
			str2 = o.order_discount?TEMPLATES_OrderInfoSpanWithDiscount:TEMPLATES_OrderInfoSpan;
			str2 = str2.replace(/\{\+/g,"'+").replace(/\+\}/g,"+'");
			str2 = eval("'"+str2+"'");			
		}
		
		$('#order_price').html(o.order_price*(1-0.01*o.order_discount)+'');
		$('#order_discount').html(o.order_discount+'');
		
	}
	$('#basket_span_in_loginform').html(str);
	$('#orderinfo_span').html(str2);


	// если заказ пуст
	if(parseInt(order.order_itemscount)==0) {
		// удаляем все строки
		$('tr',$('tbody',$('#order_table'))).each(function(){$(this).remove()});
		// скрываем таблицу
		$('#order_table').hide();
	}
	else {
		// перекрашиваем таблицу
		CATALOG.Add2Basket.RecolorOrderTable();
		// показываем таблицу
		$('#order_table').show();
	}
	
}



$(document).ready(function(){ CATALOG.Add2Basket.ByNameInit();});

CATALOG.Add2Basket.ByNameInit = function() {
	
	var url = '/__ajax/basket/add2basket/';
	
	$('#order_add2basket_byname_form').unbind('submit').bind('submit',function(){
		var value = $('#order_add2basket_byname_input').val();
		$(this).fadeTo('fast',0.1);
		$.get(url,{'goodname':value,'addcount':1},function(data){
			//alert(data);
			CATALOG.Add2Basket.ParseResponse(data);
			$('#order_add2basket_byname_form').fadeTo('fast',1);
		});
		return false;	
	});
	
}


CATALOG.Add2Basket.RecolorOrderTable = function() {
	var n = 1;
	$('tr',$('tbody',$('#order_table'))).each(function(){
		if(n%2) {
			$(this).attr('bgcolor','');
		}
		else {
			$(this).attr('bgcolor','#f2f2f2');
		}
		
		n++;
	});
}



CATALOG.OrderForm = {};

$(document).ready(
	function() {
		$('#delivery_region').change(
			function(){
				CATALOG.OrderForm.CheckForChanges();
			}
		);
		
		CATALOG.OrderForm.CountsInputsInit();
	});


CATALOG.OrderForm.CountsInputsInit = function() {
	
	FormsExtendDigitalonlyInputs();
	
	$('input.order_table_count_input',$('#order_table')).bind('keyup',function(e){
		CATALOG.OrderForm.CheckForChanges();
	});
}


$(document).ready(function(){ CATALOG.OrderForm.SubmitButtonsInit(); });

CATALOG.OrderForm.SubmitButtonsInit = function() {

	var url = '/__ajax/basket/add2basket/';
	
	$('#order_savechanges_button')
		.bind('click',function(e){
			$(this).attr('disabled','disabled');
			var counts = '?';
			
			$('#order_table').fadeTo('fast',0.1);
			
			$('input.order_table_count_input',$('#order_table')).each(function(){
				var good_id = $(this).attr('id').substring(18);
				var good_count = $(this).val();
				counts += 'gc['+good_id+']='+good_count+'&';
			});
			
			$.get(url+counts,{},function(data){
				CATALOG.Add2Basket.ParseResponse(data);
				$('#order_table').fadeTo('fast',1);
			});
	
			return false;
	});
}

var checkForChangesDump = [];

$(document).ready(function(){ CATALOG.OrderForm.CheckForChanges(); });

CATALOG.OrderForm.CheckForChanges = function(reset){
	
	if(reset) checkForChangesDump = [];
	
	var changed = false;
	
	$('input.order_table_count_input',$('#order_table')).each(function(){
		
		var good_id = $(this).attr('id').substring(18);
		var good_id = good_id.split('+');
		var variantkey = good_id[1];
		var colorkey = good_id[2];
		var good_id = good_id[0];
		var val = $(this).val();
		
		if(typeof(checkForChangesDump[good_id])=='undefined') {
			checkForChangesDump[good_id] = [];
			checkForChangesDump[good_id][variantkey] = [];
			checkForChangesDump[good_id][variantkey][colorkey] = val;
		}else if (typeof(checkForChangesDump[good_id][variantkey])=='undefined') {
			checkForChangesDump[good_id][variantkey] = [];
			checkForChangesDump[good_id][variantkey][colorkey] = val;
		}else if (typeof(checkForChangesDump[good_id][variantkey][colorkey])=='undefined') {
			checkForChangesDump[good_id][variantkey][colorkey] = val;
		}else if (checkForChangesDump[good_id][variantkey][colorkey]!=val) {
			changed = true;
		}
		/*}else if (checkForChangesDump[good_id]!=val) {
			changed = true;
		}*/
		//alert(good_id);
		
	});
	
	if(changed) $('#order_savechanges_button').attr('disabled','');
	else $('#order_savechanges_button').attr('disabled','disabled');
}


CATALOG.Add2Basket.ShowSplashGoodAdded = function(order,link) {
	
	if(typeof(link)=='undefined') {
		return;
	}
	
	//alert('top: '+position.top+' left: '+position.left);
	var position = $(link).position();
	var o = order;
		
	if(typeof(TEMPLATES_BasketSpanInLoginform)!='undefined') {
		str = TEMPLATES_BasketSpanInLoginform;
		str = str.replace(/\{\+/g,"'+").replace(/\+\}/g,"+'");
		str = eval("'"+str+"'");
	}
	
	/* основные настройки */
	// код всплывающего дива, можно ставить классы, стили и все что угодно
	var noticediv = '<div id="splashgoodadded"><div class="korzina"><span class="korzinared">ВАША КОРЗИНА</span></a><br /><span id="basket_span_in_loginform"><table><tr><td>'+str+'</td></tr></table></div></span></div>';
	
	// видимость (непрозрачность дива)
	var visibility = 0.9;
	
	// время развертывания/свертывания
	var period = 500;
	
	// отступ сверху, закоментируйте чтобы выравнивался посередине вертикали окна
	//var top = 400;
	
	
	
	/* нижеследующий код трогать нежелательно! */
	var noticediv = $(noticediv+'');
	$(noticediv).addClass('basket_notice_div');
	var width = parseInt($(noticediv).css('width'));
	var height = parseInt($(noticediv).css('height'));
	if(typeof(top)=='undefined') 
		var top = $(window).height()/2;
	//var left = ($(window).width()-width)/2;
	//alert(top);
	//alert(left);
	
	$(noticediv).css({
					'position':'absolute',
					'z-index':10000,
					'overflow':'hidden',
					'left':position.left + 30 + 'px',
					'top':position.top + 30 + 'px'/*,
					//'left':left+'px',
					'top':top+'px',
					'height':0*/})
				//.fadeTo('fast',visibility);
				.fadeTo('fast',0,function(){$(link).after(noticediv);});
	

	/*
	$(noticediv).animate({'height':height,'top':top-(height/2)},period,function(){
		$(noticediv).animate({'height':0,'top':top},period,function(){
			$(noticediv).remove();
		});
	});
	*/
	$(noticediv).fadeTo('slow',visibility,function(){
		setTimeout(function(){$(noticediv).fadeTo('slow',0,function(){$(noticediv).remove();});},1500);
	});
	
}


var FormsExtendDigitalonlyInputs = function(){
	$('input.digitalonly')
		.unbind('keydown').bind('keydown',function(e){
		var key = e.charCode || e.keyCode || 0;
		/*        9           0        home end  arrows      backsp    delete */
		if(!(key<=57 && key>=48) && !(key<=40 && key>=35) && key!=8 && key!=46 
		/*      enter       tab         f5         esc     numlock */
			&& key!=13 && key!=9 && key!=116 && key!=27 && key!=144
		/*      ctrl            numpad 0-9       */
			&& key!=17 && !(key<=105 && key>=96)) {
			//alert(key);
			return false;
		}
	})
		.unbind('keyup').bind('keyup',function(e){
		$(this).val($(this).val().replace(/[^0-9]/g,''));
	});
}

























function selectColor(label) {
	
	var selclass = 'selected';
	
	var label = $(label);
	var tagName = label.tagName;
	var container = label.parent();
	
	$(container).children(tagName).each(function(){
		$(this).removeClass(selclass);
	});
	
	label.addClass(selclass);
	
	return true;
}

function recalcPrice(elem,goodid) {
	
	var price = getVariantPrice(goodid);
	var count = getCount(goodid);
	
	//alert(price + ' ' + count);
	
	var result = price * count;
	
	setResultPrice(result,goodid);
}

function setResultPrice(resultprice,goodid) {
	if(typeof(goodid)=='undefined') var goodid = '';
	var span = $('#resultprice_span'+goodid);
	
	resultprice = Math.round(resultprice*100)/100;
	
	span.html(resultprice);
}

function getVariantPrice(goodid) {
	if(typeof(goodid)=='undefined') var goodid = '';
	var varselect = $('#variant_select'+goodid);
	if(!varselect.length) return getGoodPrice(goodid);
	
	variant = varselect.val().split('|');
	variantprice = parseFloat(variant[1]);
	
	return variantprice;
}


function getGoodPrice(goodid) {
	if(typeof(goodid)=='undefined') var goodid = '';
	var varsminprice = $('#item_varsminprice_hidden'+goodid);
	
	if(varsminprice.length && varsminprice.val()>0) return parseFloat(varsminprice.value);
	var price = $('#item_price_hidden'+goodid);
	if(price.length && price.val()>0) return parseFloat(price.val());
	
	return 0;
}

function getCount(goodid) {
	if(typeof(goodid)=='undefined') var goodid = '';
	var countinput = $('#count_input'+goodid);
	
	var rtn = 1;
	if(countinput && countinput.val()) 
		rtn = parseInt(countinput.val());
	
	if(isNaN(rtn)) {
		rtn = 1;
	}
	
	return rtn;
}

function initOrderForm() {
	$('div.colours').addClass('colours_js');
	
	var tmp = $('div.colours').children('label'); 
	$(tmp[0]).addClass('selected');

}

$(document).ready(function(){initOrderForm();});
