$(function () {
	$('#lightbox_coupons').jqm({
		closeClass: 'close'
	});
	
	$('#button_pay').click(function(){
		$(this).attr('disabled', true);
		var res = $('#cartForm').valid();
		if (res) {
			var params = {};
			var i = 0;
			$('input[name*=gift_email_]').each(function(){
			    params['sku['+this.id.substr(10, 10)+']'] = $(this).val();
			    i++;
			});
			
			$.getJSON(
					CartControllerUrl + 'savecart',
					params,
					redirectToLogin
			);
			return false;
		} else
			$(this).attr('disabled', false);
		return false;
	});
			
	if($('#lightbox_coupons').length){
		if($('body.fr').length){
			$('#content .buttons').before('<div class="buttons next_step"><span class="button cancel"><a href="#">Utiliser un coupon</a></span></div>');
		}else{
			$('#content .buttons').before('<div class="buttons next_step"><span class="button cancel"><a href="#">Use a coupon</a></span></div>');
		}
		$('#content .next_step a').click(function(event){
			event.preventDefault();
			$('#lightbox_coupons').jqmShow();
		});
		$('#coupon_set').click(function(event){
			event.preventDefault();
			$.getJSON(
				CartControllerUrl + 'set-coupon',
				{id_coupon: $('#lightbox_coupons :radio:checked').val()},
				updateCartCount
			);
		});
		$('#coupon_unset').click(function(event){
			event.preventDefault();
			$.getJSON(
				CartControllerUrl + 'unset-coupon',
				{id_sku: $('#lightbox_coupons :radio:checked').val()},
				updateCartCount
			);
		});
		$('#lightbox_coupons :radio').change(function(){
			$('#lightbox_coupons .disabled').each(function(){$(this).removeClass('disabled');});
		});
		if(!$('#lightbox_coupons :radio:checked').length){
			$('#lightbox_coupons .button').each(function(){$(this).addClass('disabled');});
		}
	}
	
	$.fn.jq_z_calculate=function(options){
		var settings={
			q_overall:null,
			b_overall:'.overall span',
			b_hidden:'input:hidden',
			b_current:'.products_quantity',
			cartTable:'table.cart_table',
			prodParent:'tr',
			totalPrice:'td.total span',
			totalCart:'tfoot td.total span',
			singlePrice:'td.price span',
			sendQuerry:null
		};
		if(options){$.extend(settings, options);}
		$.fn.extend({
			calculateAndFill:function(this_,settings){
				if(Number($(this_).find(settings.b_hidden).val())>settings.q_overall) $(this_).find(settings.b_hidden).val(settings.q_overall);
				var cur=Number($(this_).find(settings.b_hidden).val());
				if(cur==1){$(this_).find('.less:visible').hide();}else{$(this_).find('.less:hidden').show();}
				if(cur==settings.q_overall){$(this_).find('.more:visible').hide();}else{$(this_).find('.more:hidden').show();}
				$(this_).find(settings.b_current).text(cur);
				$(this_).find(settings.b_overall).text(settings.q_overall-cur);
			},
			cartCalculation:function(settings){
				var total = 0;
				$(settings.cartTable+' '+settings.singlePrice).each(function () {
					var unitPrice = Number($(this).html().replace(',', '.'));
					var input = $(this).parents(settings.prodParent).find(settings.b_hidden);
					var numOfUnits = Number(input.val());
					//if (isNaN(numOfUnits)) numOfUnits = 1;
					//if (numOfUnits < 1) numOfUnits = 1;
					input.val(numOfUnits);
					var price = unitPrice * numOfUnits;
					$(this).parents(settings.prodParent).find(settings.totalPrice).text(price.toFixed(2).toString().replace('.', ','));
					total += price;
				});
				$(settings.cartTable+' '+settings.totalCart).text(total.toFixed(2).toString().replace('.',','));
			},
			updateCartCount:function(reply){
				$('#bag_amount').text(reply.count);
			}
		});
		$(this).find(settings.b_current).before('<a class="less" href="#"><span><!--less--></span>&larr;</a>').after('<a class="more" href="#"><span><!--more--></span>&rarr;</a>');
		$.fn.calculateAndFill(this,settings);
		if(settings.sendQuerry) $.fn.cartCalculation(settings);
		var currentElement=this;
		$(this).find('a.more').click(function(event){
			event.preventDefault();
			$(currentElement).find(settings.b_hidden).val(Number($(currentElement).find(settings.b_hidden).val())+1);
			$.fn.calculateAndFill(currentElement,settings);
			if(settings.sendQuerry){
				$.fn.cartCalculation(settings);
				$.getJSON(
					settings.sendQuerry,
					{id_sku: $(currentElement).find(settings.b_hidden).attr('name').split('-')[1], count: $(currentElement).find(settings.b_hidden).val()},
					$.fn.updateCartCount
				);
			}
		});
		$(this).find('a.less').click(function(event){
			event.preventDefault();
			$(currentElement).find(settings.b_hidden).val(Number($(currentElement).find(settings.b_hidden).val())-1);
			$.fn.calculateAndFill(currentElement,settings);
			if(settings.sendQuerry){
				$.fn.cartCalculation(settings);
				$.getJSON(
					settings.sendQuerry,
					{id_sku: $(currentElement).find(settings.b_hidden).attr('name').split('-')[1], count: $(currentElement).find(settings.b_hidden).val()},
					$.fn.updateCartCount
				);
			}
		});
		
	}
	
	function calculate(){
		var total = 0;
		$('table.cart_table td.price span').each(function () {
			var unitPrice = Number($(this).html().replace(',', '.'));
			var input = $(this).parents('tr').find('td.quantity input');
			var numOfUnits = Number(input.val()).toFixed();
			if (isNaN(numOfUnits)) numOfUnits = 1;
			if (numOfUnits < 1) numOfUnits = 1;
			input.val(numOfUnits);
			var price = unitPrice * numOfUnits;
			$(this).parents('tr').find('td.total span').text(price.toFixed(2).toString().replace('.', ','));
			total += price;
		});
		$('table.cart_table tfoot td.total span').text(total.toFixed(2).toString().replace('.',','));
	}

	$('#lightbox_delete').jqm({
		trigger: 'table.cart_table td.delete a',
		closeClass: 'close'
	});	
	$('table.cart_table td.delete a').click(function () {
		//event.preventDefault();
		//$('#lightbox_delete').jqmShow();
		var $this = $(this);
		var id = $this.attr('id').split('-');
		var params = {id_sku: id[1]};
		if (id.length >= 3) {
			params.personal_key = id[2];
		}
		
		$('#lightbox_delete .button a').click(function(event){
			event.preventDefault();
			$this.parents('tr').remove();
			$.getJSON(
				CartControllerUrl + 'remove',
				params,
				$.fn.updateCartCount
			);
			calculate();
			$('#lightbox_delete').jqmHide();
		});
	});
	
	if ($('#bag_amount').text() < 1) {
		disableNextButton();
	}
	
	$('#gift_apply').click(function(event){
		event.preventDefault();
		$.getJSON(
				CartControllerUrl + 'applygift',
				{code:$('#cartGift').val()},
				showGiftData
			);
	});
});

function showGiftData(r)
{
	$('#gift_sum').html(r.gift);
	$('.total span').html(r.total);
}

function disableNextButton() 
{
	$('#next-button a').click(function (e) {e.preventDefault()});
	$('#next-button').addClass('disabled');
}

function redirectToLogin() {
	window.location = CartControllerUrl + 'identification';
}

