var _cart = {

	
	_init_summ : 0,
	_cartChanged : false,
	
	_addProductsToCart: function () {
		
		var _ajaxData = [],
			_aticle = null;

		$('#popup .sizes_cart').each(function () {

			if (parseInt($(this).val()) > 0) {
				
				var _data = $(this).attr('rel').split('~')
				var _object = {
					'article': _data[0],
					'height': _data[1],
					'size': _data[2],
					'count': parseInt($(this).val()),
				};
				
				_aticle = _data[0];
				_ajaxData.push(_object);

			}
			
		});

		var _href = document.location.href.replace(document.location.search, '');
		$.get(_href, {ajax: 1, method: 'addToCart', data: _ajaxData}, function (data) {
			
			$('div[rel=' + _aticle + ']')
				.html(data.count + ' уп.')
				.addClass('basket')
				.removeClass('basketEmpty');
			$('a[rel=' + _aticle + ']').show();

			$('#block_inner_cart').html(data.cart);
			
			
		}, 'json');
		
	},

	/**
	 * Обработчик кнопки добавить в корзину
	 */
	_addToCartHandler:function () {

		var _this = this;
		
		$('#popup .price').click(function () {
			
			var _error = true;
			
			$('#popup .sizes_cart').each(function () {
				
				if ($(this).val() != '') {
					_error = false;
				}
				
			});
			
			if (_error) {
				alert('Необходимо добавить хотябы одну упаковку продукции');
			}
			else {	

				var _top = $(document).scrollTop() > $('#exit_form').offset().top ? 0 : $('#exit_form').offset().top,
					_left = $('#exit_form').offset().left;
					
				$('#popup .window').css('left', $('#popup .window').position().left);
					
				$('#popup .window').animate({
					left: _left,
					top: _top,
					opacity: 0,
					width: 0,
					height: 0
				}, 600);
				
				_this._addProductsToCart();
				
			}
				
			return false;
		})

		
	},
	
	_initCart : function () {
		this._recalcCart();
		this._plusMinusHandler();
		this._deleteHandler();
		this._saveHandler();
		this._clearHandler();
		this._orderHandler();
	},
	
	_orderHandler : function () {
		
		$('#order').click(function () {
			
			if (_this._cartChanged && confirm('Сохранить измененные данные в корзине заказа?')) {
				$('#save').click();
				return false;
			}
			
			$('body, html').animate({
				scrollTop: $('#orderBasket').offset().top
			}, 500)
			
			return false;
		})
		
	},
	
	_clearHandler : function () {
		
		$('#clear').click(function () {
			
			$('.baskeTable .delete').click();
			
			return false;
		});
		
	},
	
	_saveHandler : function () {
		
		$('#save').click(function () {
			$('#form_basket').submit();
			return false;
		})
		
	},
	
	_deleteHandler: function () {
		
		var _this = this;
		
		$('.baskeTable .delete').click(function () {
			
			var _parent = $(this).parents('tr');
			
			if (_parent.is('.sum')) {
				$('*[rel=' + _parent.attr('rel') + ']').remove();
			}
			else {
				if ($('*[rel=' + _parent.attr('rel') + ']').length <= 2) {
					$('*[rel=' + _parent.attr('rel') + ']').remove();
				}
				else {
					_parent.remove();
				}
			}
			
			$('.num').each(function (i) {
				$(this).html(i + 1);
			})
			
			_this._recalcCart();
			
			if ($('.product').length == 0) {
				$('#save').click();
			}

			return false;

		});
		
	},
	
	_plusMinusHandler: function () {
		
		var _this = this;
		
		$('.minus, .plus').click(function () {
			
			var _parent = $(this).parent('td')
				_input = $('input', _parent);
			
			if ($(this).is('.minus') && parseInt(_input.val()) > 1) {
				var new_val = _input.val() - 1;
				_input.val(new_val);
			}
			
			if ($(this).is('.plus') && parseInt(_input.val()) < 9999) {
				var new_val = 1 + parseInt(_input.val());
				_input.val(new_val);
			}
			
			_this._recalcCart();
			
			return false;
		});
		
		$('input.count').keyup(function () {

			if ($(this).val() == '' || parseInt($(this).val()) < 1) {
				$(this).val(1);
			}
			
			_this._recalcCart();
			
		});
		
	},
	
	_recalcCart : function () {
		
		var _summ = 0, _object = null, _pack = 0, _pack_summ = 0
			_totalSumm = 0, _totalPack = 0, _totalPackSumm = 0, _this = this;

		if (!$('.baskeTable tr').length) return;
			
		$('.baskeTable tr').each(function () {
			
			if ($(this).is('.sum') || $('.baskeTable tr:last').get(0) == this) {
				
				if (_object) {

					_pack_summ += _pack * $('.in_pack', _object).attr('rel');

					$('.pack_sum', _object).html(_pack);
					$('.all_sum', _object).html(_pack_summ);
					$('.price_sum', _object).html(number_format(_summ, (!$.cookie('valute') || $.cookie('valute') == 'price_brb' ? 0 : 2), '.', ' '));
					
				}
			
				_totalSumm += _summ;
				_totalPack += _pack;
				_totalPackSumm += _pack_summ;
				
				_summ = 0; _object = $(this); _pack = 0; _pack_summ = 0;

			}
			else if ($('.count', this).length) {
				
				$('.pack span', this).html(parseInt($('.count', this).attr('value')) * $('.in_pack span', this).html());
				$('.summ_all', this)
					.html(parseFloat($('.summ', this).attr('rel')) * parseInt($('.pack span', this).html()))
					.attr('rel', $('.summ_all', this).html())
					.html(number_format($('.summ_all', this).html(), (!$.cookie('valute') || $.cookie('valute') == 'price_brb' ? 0 : 2), '.', ' '))
				
				_pack += parseInt($('.count', this).attr('value'));
				_summ += parseFloat($('.summ_all', this).attr('rel'));
				

			}
			
			
		});
		
		if (this._init_summ == 0) {
			this._init_summ = _totalSumm;
		}
		
		if (this._init_summ != _totalSumm) {
			this._cartChanged = true;
		}
		
		$('.totalPack').html(_totalPack);
		$('.totalPackSum').html(_totalPackSumm);
		$('.totalSumm').html(number_format(_totalSumm, (!$.cookie('valute') || $.cookie('valute') == 'price_brb' ? 0 : 2), '.', ' '));
		
		$('input[name=summ]').val(_totalSumm);
		$('input[name=valute]').val($.cookie('valute') || 'price_brb');
		
	},
	
	init: function () {
		this._addToCartHandler();
		this._initCart();
		
		var _this = this;
		$(window).unload(function () {
			
			if (_this._cartChanged && confirm('Сохранить измененные данные в корзине заказа?')) {
				$('#save').click();
				return false;
			}
			
		})
		
	}
	
}

$(function () {
	_cart.init();
	
	
	$('input[name=date]')
		.addClass('datePicker')
		.attr('disabled', 'disabled')
		.datePicker();
		
	$('#orderBasket').submit(function () {
		$('input[name=date]').removeAttr('disabled');
	});
	
	
})



function number_format (number, decimals, dec_point, thousands_sep) {
    
    number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
    var n = !isFinite(+number) ? 0 : +number,
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);
            return '' + Math.round(n * k) / k;
        };
    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    return s.join(dec);

}
