/* cart */
var item_variant = 0;

function addToCart(id, link, variant, num){
	add_item_id = id;
	if(link)
		link.blur();
	if(!num){
		num = 1;
	}
	var items_num = num;
	var inp = document.getElementById('items_num_' + id + '_' + variant);
	if(inp){
		var t_n = inp.value;
		if(!isNaN(parseInt(t_n)) && t_n != '' && t_n != 0){
			items_num = t_n;
		}
	}
	item_variant = variant;
	add_item_var = item_variant;
	add_item_num = items_num;
	$.get('/cart/', {'action': 'add_item', 'id': id, 'num': items_num, 'item_variant': item_variant}, function(response){onAfterAddedToCart(response, link, id, items_num);});
	closeAddPopup();
}

function onAfterAddedToCart(response, link, id, num){
	if(response){		
		//alert('Товар добавлен в список покупок');
		showCartAlert();
		setCartInfo(response);		
	}else{
		//showPopup('login_form', false, true);
		doRegister(false, true, true);
	}
}

function setCartInfo(xml, in_list){
	var stat = '';	
	var lnk = '';
	var cnt = '';
	
	$('#cart_text').html($('statText', xml).text());
	var dsc = $('discountText', xml).text();
	$('#cart_text_discount').html(dsc);
	if(dsc){
		$('#cart_text_discount').show();
	}else{
		$('#cart_text_discount').hide();
	}
	if($('countNum', xml).text()){
		$('#to_cart_link').show();	
	}else{
		$('#to_cart_link').hide();	
	}
	
	var nu = $('userLogin', xml);
	if(nu.length){
		var str = '<a href="/personal/" class="uname">' + $(nu[0]).text() + '</a> ';
		str += '<a onClick="showMyServMenu(\'my_serv_menu\', this); return false;" href="#" class="js_link" id="my_serv_link">личный кабинет</a> ';
		str += '<a href="/login/?logout">выйти</a>';
		$('#user_links').html(str);
	}
	
	if(in_list){
		nums_changed = false;
		if(!$('countNum', xml).text()){			
			$('#cart_content').html('В корзине нет товаров');
		}
	}
	
}

function deleteCartItem(cart, item, link){
	if(confirm('Вы уверены?')){
		cart_items['id' + item]['deleted'] = 1;
		calculateCartTotalSum();
		$.get('/cart/', {'action': 'delete_item', 'item': item, 'wishlist': cart}, function(response){onAfterItemDeleted(response, item);});
	}
	link.blur();
}

function onAfterItemDeleted(response, id){	
	$('#wl_item'+id).remove();
	setCartInfo(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(){
	$('div#moveitem_popup').css('display', 'none');
}

function moveItemToList(from_list, to_list){
	if(curMoveItem){
		$('#wl_item'+curMoveItem).addClass('loading');
		closeMoveItemPopup();
		$.get('/cart/', {'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();
	setCartInfo(response, true);
}

function changeDefaultList(sel){
	$.get('/cart/', {'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();	
	
}

/* price functions */

var cart_items = new Object();
var nums_changed = false;

function buildCartItemsArray(){
	var it = $('#wishlist_items_list > tbody > tr');
	var tid = 0;
	var tnum = 0;
	var tprice = 0;
	var tweight = 0;
	var inp = null;
	for(var i=0; i < it.length; i++){
		if($(it[i]).hasClass('head'))
			continue;
		tid = $(it[i]).attr('id').substr(7);
		inp = $('#num_' + tid);		
		inp.keyup(
			function(event){
				onCartItemNumChange(this, event);
			}
		);
		tprice = $('#price_' + tid + ' span').text().replace(/\s/g, '');
		tnum = $(inp).attr('value');
		tweight = $('#weight_' + tid).attr('value');
		cart_items['id' + tid] = {'id': tid, 'num': parseInt(tnum), 'price': parseInt(tprice), 'weight': tweight};
	}
}

function onCartItemNumChange(fld, evt){
	
	nums_changed = true;
	
	if(evt)
		var sm = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : ((evt.which) ? evt.which : 0));
	//if(sm > 57){
		//fld.value = parseInt(fld.value);//fld.value.substr(0, fld.value.length-1);	
	//}
	if(isNaN(parseInt(fld.value)) || fld.value == '' || fld.value == 0){
		fld.value = 1;
	}else{
		fld.value = parseInt(fld.value);
	}
	tid = $(fld).attr('id').substr(4);
	cart_items['id' + tid]['num'] = parseInt(fld.value);
	var sum = cart_items['id' + tid]['price']*cart_items['id' + tid]['num'];
	//$('#sum_' + tid).text(sum);
	calculateCartTotalSum('sum_' + tid, sum);	
}

function calculateCartTotalSum(item_id, item_sum){
	
	//calculateDelivery();
	
	var sum = 0;
	
	for(key in cart_items){
		if(!cart_items[key]['deleted']){
			sum += cart_items[key]['price']*cart_items[key]['num'];
		}
	}	 
	
	if(sum != $('#totalSum span').text().replace(/\s/g, '')){
		if(item_id && item_sum){
			changePriceValue(item_sum, item_id);
		}
		changePriceValue(sum, 'totalSum');
		//var val = sum-(sum/1.18)
		//$('#nds').text(val.toFixed(2));
	}

}

function calculateTotalWeight(){
	var sum = 0;	
	for(key in cart_items){
		if(!cart_items[key]['deleted']){
			sum += parseFloat(cart_items[key]['weight'])*cart_items[key]['num'];
		}
	}
	return sum;
}

var sum_change_array = new Array();

function changePriceValue(new_sum, element_id){
	
	if(sum_change_array && sum_change_array[element_id]){
		clearInterval(sum_change_array[element_id]['timer']);
		$('#' + element_id + ' span').text(sum_change_array[element_id]['value']);
		sum_change_array[element_id] = null;
	}
	
	var cur = parseInt($('#' + element_id + ' span').text().replace(/\s/g, ''));
	
	sum_change_array[element_id] = {
		'value': new_sum, 
		'counter': 0, 
		'cur': cur, 
		'step': Math.floor((new_sum-cur)/10),
		'timer': null
	};	

	sum_change_array[element_id]['timer'] = setInterval(
		function(){
			animatePriceChange(element_id);
		},50
	);	
		
}

function animatePriceChange(element_id){
	var arr = sum_change_array[element_id];
	if(arr.counter >= 10){
		//makeTotalSum();
		$('#' + element_id + ' span').text(formatIntValue(arr.value));
		clearInterval(arr.timer);
		sum_change_array[element_id] = null;
		if(element_id == 'totalSum'){
			$.get(
				'/cart/', 
				{'a': 'discount_info', 'sum': arr.value}, 
				function(resp){
					$('#discount_info').html(resp);
					checkUseBonus();
					calculateSumWithBonus();
				}
			);
		}
		return;
	}
	arr.counter++;
	arr.cur += parseInt(arr.step);
	$('#' + element_id + ' span').text(formatIntValue(arr.cur));
}

function formatIntValue(src){
	src = src.toString();
	var cnt = 1;
	var str = '';
	var lngth = 0;
	var res =  '';
	for(var i=src.length-1; i >= 0; i--){
		str += src.substr(i, 1);
		lngth++;
		if((src.length-i)%3 == 0 && i > 0){
			str += ' ';
			lngth++;
		}
	}	
	var t = '';
	for(var i=lngth-1; i>=0; i--){
		/*
		t = str[i];
		str[i] = 'a';//str[lngth-i-1];
		str[lngth-i-1] = t;
		*/
		res += str.substr(i, 1);
	}
	return res;
}

function saveWishlistChanges(wl_id, redir_to){
	var params = new Object();
	for(key in cart_items){
		if(!cart_items['deleted']){
			params['change_num['+cart_items[key]['id']+']'] = cart_items[key]['num'];
		}
	}
	showAjaxLoader();
	$.post('/cart/?action=change_items_num', params, function(){if(redir_to){$('#ajax_loader').hide();location.href=redir_to;}});
}

function changeItemFlavor(item_id, sel){
	$.get('/cart/', {'action': 'change_item_flavor', 'item_id': item_id, 'flavor_id': $(sel).attr('value')});
}

function beforeOrderSend(){
	var t = null;
	var frm = document.forms['order_form'];
	if(nums_changed){
		for(key in cart_items){
			t = document.createElement('input');
			$(t).attr('type', 'hidden');
			$(t).attr('name', 'change_num[' + cart_items[key]['id'] + ']');
			$(t).attr('value', cart_items[key]['num']);
			frm.appendChild(t);
		}
	}
	document.forms['order_form'].submit();
}

function showCartAlert(){
	
	var a = document.getElementById('cart_alert');
	if(!a){
		var cnt = '<div class="alert_close"><a onClick="closeCartAlert(); return false;" href="#"><img src="/img/close_ic.gif"/></a></div>';
		cnt += '<div class="alert_content">';
		cnt += '<b>Товар добавлен в корзину!</b><a onClick="closeCartAlert(); return false;" href="#" class="blue_btn"><span>Продолжить покупки</span></a>&nbsp;&nbsp;<a href="/cart/" class="blue_btn"><span>Оформить заказ</span></a>';
		cnt += '</div>';
		a = document.createElement('div');
		a.innerHTML = cnt;
		a.setAttribute('id', 'cart_alert');
		document.body.appendChild(a);
	}
	
	showSandBox();
	var t = $(document).scrollTop() + (($(window).height()-90)/2 - 30);
	var l = ($(window).width()-351)/2;
	a.style.top = t + 'px';
	a.style.left = l + 'px';
	a.style.display = 'block';
	
}

function closeCartAlert(){	
	$('#cart_alert').hide();
	hideSandBox();
}

function addItemsToCart(){
	var inp = $('input[@type="text"]', $('#multi_order'));
	var str = '';
	for(var i=0; i<inp.length; i++){
		if($(inp[i]).attr('value') != 0){
			if(str != '')
				str += ',';
			str += $(inp[i]).attr('name') + '-' + $(inp[i]).attr('value');
		}
	}
	if(str == ''){
		alert('Необходимо указать количество');
	}else{
		$.get('/cart/', {'action': 'add_item', 'id': str}, function(response){onAfterAddedToCart(response);});
	}
}

function showAddPopup(product_id, lnk){
	
	var cnt = '<table class="sh_top nbg"><tr><td class="l"></td><td>&nbsp;</td></tr></table>';
	cnt += '<table class="shadow_cnt nbg add_to_cart"><tr><td class="l"></td><td class="r" id="add_popup_cnt">';
	cnt += '<div align="center"><img src="/img/ajax-loader.gif"/></div>';
	cnt += '</td></tr></table>';
	cnt += '<table class="sh_bot nbg"><tr><td class="l"></td><td>&nbsp;</td></tr></table>';
	
	var par = $(lnk).parent().parent();
	var pos = $(par).offset();
	
	var d = document.createElement('div');
	$(d).attr('id', 'add_popup');
	$(d).html(cnt);
	document.body.appendChild(d);	
	$(d).css({'left': pos.left-45, 'top': pos.top + par[0].offsetHeight - 50}).show();	
	
	$.get(
		'/catalog/', 
		{'a': 'add_popup', 'id': product_id}, 
		function(rsp){
			$('#add_popup_cnt').html(rsp);
		}
	);
	
}

function closeAddPopup(pid){
	$('#add_popup').remove();
	if(pid){
		$('#product' + pid).hide();
	}
}

function onUseBonusChanged(){
		
	checkUseBonus();
	calculateSumWithBonus();
	
}

function checkUseBonus(){
	
	var fld = $('#use_bonus');
	
	var new_value = '';

	if($(fld).val() == '0'){
		new_value = '';
	}else{
	
		if(!isNaN(parseInt($(fld).val()))){		
			new_value = parseInt($(fld).val());		
			if(new_value > avail_bonus){
				new_value = avail_bonus;
			}
			if(new_value > price_with_discount){
				new_value = price_with_discount;
			}
		}
		
	}
	
	$(fld).val(new_value);
	document.forms['order_form'].elements['use_bonus'].value = new_value;
	
}

function calculateSumWithBonus(){	
	var bonus_value = $('#use_bonus').val();
	if(bonus_value == '')
		bonus_value = 0;
	else
		bonus_value = parseInt(bonus_value);
	$('#totalSumWithBonus span').text(formatIntValue(price_with_discount-bonus_value));
}
