$(function() {
	var lock = new Array();

	$('#show_good_list').click(function() {
		$('#good_list').slideToggle('fast');
		return false;
	});

	$('#btn_do_order').attr({
		src: '/i/btn_order_sm1.png'
	}).mouseover(function() {
		this.src = '/i/btn_order_sm2.png';
	}).mouseout(function() {
		this.src = '/i/btn_order_sm1.png';
	}).click(function() {
		this.src = '/i/btn_order_sm1.png';
	});

	$('input.btn_order').each(function() {
		this.src = '/i/btn_order1.png';
	}).mouseover(function() {
		this.src = '/i/btn_order2.png';
	}).mouseout(function() {
		this.src = '/i/btn_order1.png';
	}).click(function() {
		this.src = '/i/btn_order1.png';
		return false;
	});

	$('input.btn_order_big').each(function() {
		this.src = '/i/btn_order_big1.png';
	}).mouseover(function() {
		this.src = '/i/btn_order_big2.png';
	}).mouseout(function() {
		this.src = '/i/btn_order_big1.png';
	}).click(function() {
		this.src = '/i/btn_order_big1.png';
		return false;
	});

	$('input[cart=count]').keydown(function() {
		var goodId = $(this).attr('goodid');
		$('input:image[goodid='+goodId+']').fadeIn('fast');
	}).change(function() {
		var goodId = $(this).attr('goodid');
		$('input:image[goodid='+goodId+']').fadeIn('fast');
	});

	$('input[cart=add]').click(function() {
		var goodId = $(this).attr('goodid');

		if(lock[goodId]) return false;

		lock[goodId] = true;
		this.disabled = true;

		block();
		showBubble();

		$.post(
			'/cart/?action=add',
			{goodId: $(this).attr('goodid')},
			addSuccess,
			'json'
		);

		return false;
	});

	$('input[cart=save]').each(function() {
		$(this).css({display: 'none'});
	}).click(function() {
		var goodId = $(this).attr('goodid');

		if(lock[goodId]) return false;

		lock[goodId] = true;
		this.disabled = true;

		var count = $('#count_'+goodId+'').val();

		$.post(
			'/cart/?action=save',
			{goodId: $(this).attr('goodid'), count: count},
			saveSuccess,
			'json'
		);

		return false;
	});

	$('input[cart=drop]').click(function() {
		var goodId = $(this).attr('goodid');

		if(lock[goodId]) return false;

		lock[goodId] = true;
		this.disabled = true;

		$.post(
			'/cart/?action=drop',
			{goodId: $(this).attr('goodid')},
			dropSuccess,
			'json'
		);

		return false;
	});

	var addSuccess = function(data) {
//		alert(data);
		if(data.goodId) {
			var goodId = data.goodId;
			var positionCount = data.positionCount;
			var sum = data.sum;
			var totalSum = data.totalSum;
			var goodList = data.goodList;
			var personalDiscount = data.personalDiscount;
			var activeCount = 0;

			var content =
				'<b><a href="/cart/">Корзина</a></b>'
				+'<p>Всего товаров '+positionCount+'<br>на сумму '+totalSum+' руб.</p>'
				+'<span id="show_good_list" class="dashed">Все товары</span>'
				+'<div class="rel">'
				+'<div id="good_list" class="abs" style="display: none; width: 224px; margin-left: -22px; top: 2px;">'
				+'<div class="bg_basket">';

			for(var i = 0; i < goodList.length; i++) {
				var good = goodList[i];
				content +=
					'<p><strong><a href="'+good.href+'">'
					+good.title+'</a></strong><br> <span>'
					+good.count+'&nbsp;шт. на сумму '
					+good.sum+' руб.</span></p>';
				if(good.id == goodId) {
					activeCount = good.count;
				}
			}

			content +=
				'<div class="btn_order_sm"><a href="/order/">'
				+'<img id="btn_do_order" width="110" height="28" alt=""></div>'
				+'</div>'
				+'<div class="u_basket"></div>'
				+'</div>'
				+'</div>';

			var displayGoodList = $('#good_list').css('display');

			$('#cartBlockContainer').each(function() {
				this.innerHTML = content;
			});

			$('#show_good_list').click(function() {
				$('#good_list').slideToggle('fast');
				return false;
			});

			$('#good_list').css('display', displayGoodList);

			$('#btn_do_order').attr({
				src: '/i/btn_order_sm1.png'
			}).mouseover(function() {
				this.src = '/i/btn_order_sm2.png';
			}).mouseout(function() {
				this.src = '/i/btn_order_sm1.png';
			}).click(function() {
				this.src = '/i/btn_order_sm1.png';
			});

			$('#count_'+goodId).html('В корзине '+activeCount+' шт.');

			lock[goodId] = false;

			$('input[cart=add][goodid='+goodId+']').each(function() {
				this.disabled = false;
			});
		}
	};

	var saveSuccess = function(data) {
//		alert(data);
		if(data.goodId) {
			var goodId = data.goodId;
			var activeSum = data.activeSum;
			var positionCount = data.positionCount;
			var sum = data.sum;
			var totalSum = data.totalSum;
			var personalDiscount = data.personalDiscount;

			if(positionCount > 0) {

				var blockContent =
					'<b>Корзина</b>'
					+'<p>Всего товаров '+positionCount+'<br>на сумму '+totalSum+' руб.</p>';

			} else {

				var blockContent = '<div class="lgrey"><b>Корзина</b>В вашей корзине пока ничего нет.</div>';

			}

			$('#cartBlockContainer').each(function() {
				this.innerHTML = blockContent;
			});

			$('#sum_'+goodId).html(activeSum);

			var sumContent = '';

			if(sum != totalSum) {
				sumContent += '<p>Товаров на сумму: <b>'+sum+'</b> руб.<br>';
			}
			if(personalDiscount) {
				sumContent += 'Персональная скидка: <b>'+personalDiscount+'%</b></p>';
			}
			sumContent += '<p>Итого:<br><span class="big_text">'+totalSum+'</span> руб.</p>';

			$('#sumContainer').each(function() {
				this.innerHTML = sumContent;
			});

			lock[goodId] = false;

			$('input:image[cart=save][goodid='+goodId+']').each(function() {
				this.disabled = false;
			}).fadeOut('fast');
		}
	};

	var dropSuccess = function(data) {
//		alert(data);
		if(data.goodId) {
			var goodId = data.goodId;
			var positionCount = data.positionCount;
			var sum = data.sum;
			var totalSum = data.totalSum;
			var personalDiscount = data.personalDiscount;

			if(positionCount > 0) {

				var blockContent =
					'<b>Корзина</b>'
					+'<p>Всего товаров '+positionCount+'<br>на сумму '+totalSum+' руб.</p>';

				$('#cartBlockContainer').each(function() {
					this.innerHTML = blockContent;
				});

				var sumContent = '';

				if(sum != totalSum) {
					sumContent += '<p>Товаров на сумму: <b>'+sum+'</b> руб.<br>';
				}
				if(personalDiscount) {
					sumContent += 'Персональная скидка: <b>'+personalDiscount+'%</b></p>';
				}
				sumContent += '<p>Итого:<br><span class="big_text">'+totalSum+'</span> руб.</p';

				$('#sumContainer').each(function() {
					this.innerHTML = sumContent;
				});

				$('#position_'+goodId).slideUp('fast', function() {
					$(this).remove();
				});

			} else {

				var blockContent = '<div class="lgrey"><b>Корзина</b>В вашей корзине пока ничего нет.</div>';

				$('#cartBlockContainer').each(function() {
					this.innerHTML = blockContent;
				});

				var cartContent = '<p>В корзине ничего нет.</p>';

				$('#cartContainer').fadeOut('fast', function() {
					this.innerHTML = cartContent;
					$(this).show();
				});

			}

			lock[goodId] = false;
		}
	};

	var showBubble = function() {
		var html =
			'<div><h2>Товар добавлен в корзину</h2>'
			+'Вы можете:<br><ul>'
			+'<li><a href="/" id="close_bubble">Вернуться к просмотру товаров</a></li>'
			+'<li><a href="/cart/">Изменить количество товара в корзине</a></li>'
			+'<li><a href="/order/" class="red">Оформить заказ</a></li></ul></div>';

		var bubble = $('<div id="bubble"></div>').css({
			position: 'fixed',
			zIndex: 100,
			display: 'none'
		}).appendTo(document.body).html(html).css({
			top: parseInt(($(window).height() - 200) / 2),
			left: parseInt(($(window).width() - 300) / 2),
			filter: 'alpha(opacity=1)',
			opacity: '0.01',
			display: 'block'
		}).fadeTo(200, 0.9);

		$('#close_bubble').click(function() {
			hideBubble();
			unblock();
			return false;
		});
	};

	var hideBubble = function() {
		if($.browser.opera) {
			$('#bubble').remove();
		} else {
			$('#bubble').fadeOut(100, function() {
				$(this).remove();
			});
		}
	};

	var block = function () {
		var blocker = $('<div id="blocker"></div>').css({
			width: $(document).width(),
			height: $(document).height(),
			position: 'absolute',
			top: 0,
			left: 0,
			zIndex: 90,
			overflow: 'hidden',
			backgroundColor: '#666',
			filter: 'alpha(opacity=1)',
			display: 'block'
		}).each(function() {
			this.style.opacity = 0.01;
		}).appendTo(document.body).insertBefore(document.body.firstChild);

		if($.browser.opera) {
			blocker.each(function() {
				this.style.opacity = 0.5;
			});
		} else {
			blocker.fadeTo(200, 0.5);
		}

		blocker.click(function() {
			hideBubble();
			unblock();
			return false;
		});

		$('<textarea></textarea>').css({
			opacity: 0,
			width: '1px',
			height: '1px',
			position: 'absolute',
			top: $(window).scrollTop()+'px',
			left: 0
		}).appendTo(document.body).focus().css({
			display: 'none'
		}).remove();
	};

	var unblock = function() {
		if($.browser.opera) {
			$('#blocker').each(function() {
				this.style.opacity = 0.5;
				$(this).remove();
			});
		} else {
			$('#blocker').fadeOut(100, function() {
				$(this).remove();
			});
		}
	};
});
