(function(window, $) {
	var Basket = {
		successMessage: function() {
			$.blockUI({
				fadeIn: 600,
				fadeOut: 600,
				timeout:   100000,
				message: '<div class="message_basket_dlg"><div class="basket_dialog_close basket_dialog_close_js"></div> <a class="basket_to_order" href="/basket/"></a>  <a class="basket_continue_shopping basket_dialog_close_js" href="#">Продолжить покупки</a></div>',
				css: {
					border: 'none',
					padding: '0px',
					backgroundColor: 'transparent',
					cursor: 'default'
				}
			});
		},
		setCount: function(productId, count) {
			count == 0 ? count=1 : count;
			Lib.Ajax.wrap('/basket/setcount/id/' + productId + '/count/' + count, function(data){
				Basket.fromPacked(data.products_packed);
				if(data.error){
					alert(data.error);
					exit();
				}
				if(data.list_basket){
					if(document.getElementById('list_basket_product')){
						var count_dublicate_line = 0;
						$('#list_basket_product tr').each(function(){
							//alert($(this).attr('product_id'));
							if(data.product_ids == $(this).attr('product_id')){
								//alert('найдено совпадение');
								count_dublicate_line++;
							}
						});
						if(count_dublicate_line == 0){
							$('#list_basket_product').html($('#list_basket_product').html() + data.list_basket);
						}
						setTimeout(function(){
							var summ_elements = 0;
							$('tr').find('.basket_product_cost').each(function(){
								summ_elements = summ_elements + parseInt($(this).text().replace(/\s+/g,''));
							});
							$('#summ_delivery').text(summ_elements);
						}, 1000);
					}
				}
			});

			Lib.Ajax.wrap('/basket/ajaxlightbox/id/' + productId, function(data){
			if(data.product_lightbox)
				{
					$(document).ready(function(){
						if(data.product_lightbox['html']){
							$('#ajax_add_prod').html(data.product_lightbox['html']);
							$('#lightbox_summ_basket').html(' ' + data.product_lightbox['summ']);
							_gaq.push(['_trackPageview', '/virtual/basket/add/'+productId]);
						}
					});
				}
			});
		},
		UpdateBasket: function() {

			setTimeout(function(){
					Lib.Ajax.wrap('/basket/authbasketreturn/', function(data){
						Basket.fromPacked(data.products_packed);
						if(data.error){
							alert(data.error);
							exit();
						}
					});
				if(window.location.href.indexOf('/ny2012/') != -1){
					if(!$('.form_error_container').hasClass('form_error_message')){
							$('#auth_ny2012').hide();
					}
				}

					Lib.Ajax.wrap('/basket/ajaxlightbox/', function(data){
					if(data.product_lightbox)
					{
						$(document).ready(function(){
							if(data.product_lightbox['html']){
								$('#ajax_add_prod').html(data.product_lightbox['html']);
								$('#lightbox_summ_basket').html(' ' + data.product_lightbox['summ']);
							}
						});
					}
			});
				}, 500);
			setTimeout(function(){
				var err_auth = $('.form_error_container').html();
				if(err_auth == '' || err_auth == null){
					location.reload();
				}
			}, 1500);
			refreshBasket();
		},
		add: function(productId) {
			Lib.Ajax.wrap('/basket/add/id/' + productId, function(data) {
				Basket.fromPacked(data.products_packed);
				Basket.successMessage();

			});
		},
		add_products: function(products_str, count_str) {
			this.products_ids = products_str.split(',');
			this.products_counts = count_str.split(',');
			for (var i = 0; i < this.products_ids.length; i++) {
				if (this.products_ids[i] != "" && this.products_counts[i] != "" && parseInt(this.products_counts[i]) >= 1) {
					Basket.add(parseInt(this.products_ids[i]));
				}
			}
			window.location = '/basket/';
		},
		del: function(productId) {
			Lib.Ajax.wrap('/basket/del/id/' + productId, function(data) {
				Basket.fromPacked(data.products_packed);
				$('ul.jcarousel-list').find('img[product_id="'+productId +'"]').attr('class','basket-btn ');
			});
			Lib.Ajax.wrap('/basket/ajaxlightbox/id/' + productId, function(data){
			if(data.product_lightbox)
				{
					$(document).ready(function(){
						if(data.product_lightbox['html']){
							$('#ajax_add_prod').html(data.product_lightbox['html']);
							$('#lightbox_summ_basket').html(' ' + data.product_lightbox['summ']);
						}
					});
				}
			});
		},
		dec: function(productId) {
			Lib.Ajax.wrap('/basket/decrease/id/' + productId, function(data) {
				Basket.fromPacked(data.products_packed);
			});
		},
		setProducts: function(packedProducts) {
			_products = [];
			for (var key in packedProducts) {
				var packedProduct = packedProducts[key];

				var newProduct = new Basket.Product(packedProduct[0], packedProduct[1], packedProduct[2]);

				_products[newProduct.id] = newProduct;
			}
			this.update();
		},
		update: function() {
			this.updateCountAndCost();
			this.updateSmall();
			this.updateFull();
		},
		updateSmall: function() {
			$('.count_prod_basket').html(_productCount);
			$('#basket_small_count').html(_productCount);
			$('#basket_small_cost').html(_productCost);
			//������ ���� �������
			/*if(_productCount == 0){
				basket_gray();
			}else{
				basket_blue();
			}*/
		},
		updateFull: function() {

		},
		updateCountAndCost: function() {
			_productCount = _productCost = 0;
			for (var productId in _products) {
				var product = _products[productId];
				_productCost += product.cost;
				_productCount += product.count;
			}
		},
		getProducts: function() {
			return _products;
		},
		getProduct: function(id) {
			return _products[id];
		},
		toCookie: function(productsSerialized) {
			$.cookie('basket_products', productsSerialized, {path: '/'});
		},
		fromCookie: function() {
			var productsSerialized = $.cookie('basket_products');

			this.fromPacked(productsSerialized, true);
		},
		clearCookie: function() {
			$.cookie('basket_products', null, {path: '/'});
		},
		clear: function() {
			_products = [];

			this.clearCookie();

			this.update();
		},
		fromPacked: function(productsSerialized, doNotSaveToCookie) {
			if (!productsSerialized) {
				return;
			}

			var packedProducts = eval('(' + productsSerialized + ')');

			this.setProducts(packedProducts);

			if (!doNotSaveToCookie) {
				this.toCookie(productsSerialized);
			}
		},
		Product: function(id, price, count) {
			this.id = parseInt(id);
			this.price = parseInt(price);
			this.count = parseInt(count);
			this.cost = this.price * this.count;
		}
	},
			_products = [],
			_productCount = 0,
			_productCost = 0;

	window.Basket = Basket;
})(window, jQuery);

$(function() {
	Basket.fromCookie();
	$('#basket_small_count, #basket_small_cost').show();


	function generateDeliveryTime(time) {
		var d = new Date(time * 1000);
		var day = d.getDay();
		isHoliday = 0;
		if (day == 0 || day == 6) {
			var isHoliday = 1;
		}

		var dts = $('#delivery_times_select');
		dts.find('option').remove();
		for (i = 0; i < timelist[isHoliday].length; ++i) {
			var v = timelist[isHoliday][i];
			if (isHoliday == 1 || timeOfDay == '' || timeOfDay == v.key || v.key == constTimeOfDay) {
				dts.append($('<option>' + v.value + '</option>').attr('value', v.key));
			}
		}
	}

$("#delivery_city").blur(function (){
	if( $(this).val() == 'Москва' || $(this).val() == 'Санкт-Петербург')
	{
		$('.mkad').show();
	}
	else{
		$('.mkad').hide();
		$("input[ type='radio']:checked").removeAttr('checked');
	}
});
var cacheDeliveryCity = cacheCity = cacheStreet = {}, lastXhr;
if(window.location.href.indexOf('/ny2012/') == -1){
	$("#delivery_city").autocomplete({
		minLength: 2,
		source: function(request, response) {
			var term = request.term;
			if (term in cacheDeliveryCity) {
				response(cacheDeliveryCity[ term ]);
				return;
			}

			lastXhr = $.getJSON('/geo/cities/delivery/1/', request, function(data, status, xhr) {
				cacheDeliveryCity[ term ] = data;
				if (xhr === lastXhr) {
					response(data);
				}
			});
		},
		select: function(event, ui) {
			if(ui.item.value == 'Москва' || ui.item.value == 'Санкт-Петербург')
			{
				$('.mkad').show();
			}
			else{
				$('.mkad').hide();
				$("input[ type='radio']:checked").removeAttr('checked');
			}		
		},
		focus: function (event, ui) {
			var form = $('#order_delivery_form');
			if (form) {
				mkadRadio = form.find('input[name=delivery[in_mkad]]');
				if (mkadedCityId != ui.item.id) {
					//form.find('#out').attr('checked', 'checked');
					//mkadRadio.attr('disabled', 'disabled');
				} else {
					//mkadRadio.attr('disabled', '');
				}
			}
		},
		change: function(event, ui) {
			if (ui.item) {
				initStreetAutocomplete(event, ui);
			}
		}
	});
}
		if (window.currentCityId != undefined) {
			initStreetAutocomplete({}, {'item':{'id':currentCityId}});
	}


	function initStreetAutocomplete(event, ui) {
		//@todo создаем саджест для улиц


		$("#delivery_street").autocomplete({
			minLength: 2,
			source: function(request, response) {
				var term = request.term;
				if (term in cacheStreet) {
					response(cacheStreet[ ui.item.id + term ]);
					return;
				}

				lastXhr = $.getJSON('/geo/street/delivery/1/cityId/' + ui.item.id + '/', request, function(data, status, xhr) {
					cacheStreet[ term ] = data;
					if (xhr === lastXhr) {
						response(data);
					}
				});
			},
			focus: function (event, ui) {
				timeOfDay = ui.item.timed.key;
				var dds = $('#delivery_day_select option:first');
				if (dds) {
					var t = dds.attr('value');
					generateDeliveryTime(t);
				}
			}
		});
	}

	$('#delivery_day_select').change(function() {
		generateDeliveryTime(this.value);
	});
if(window.location.href.indexOf('/ny2012/') == -1){
		$("#city").autocomplete({
			minLength: 2,
			source: function(request, response) {
				var term = request.term;
				if (term in cacheCity) {
					response(cacheCity[ term ]);
					return;
				}

				lastXhr = $.getJSON('/geo/cities/', request, function(data, status, xhr) {
					cacheCity[ term ] = data;
					if (xhr === lastXhr) {
						response(data);
					}
				});
			}
		});
	}
	});


function refreshBasket()
{
	if(location.href.indexOf('/basket/') > 3)
	{
		setTimeout(function(){
			location.reload();
		}, 1000)
	}
}
//������ ���� �������
/*function basket_gray(){
	$('.basket b').css('background-image','url("/images/templates/nerf/basket-left-bg2.png")');
	$('.basket b').css('background-color','#c3c3c3');
	$('.basket b b').css('background-image','url("/images/templates/nerf/basket-right-bg2.png")');
	$('.basket b b').css('background-color','transparent');
}

function basket_blue(){
	$('.basket b').css('background-image','url("/images/templates/nerf/basket-left-bg.png")');
	$('.basket b').css('background-color','#1073B6');
	$('.basket b b').css('background-image','url("/images/templates/nerf/basket-right-bg.png")');
	$('.basket b b').css('background-color','transparent');
}*/
