$(function(){
	/* search input placeholder */
	var searchInput = $("form.search input");
	var defaultValue = searchInput.val();

	searchInput.addClass("placeholded");

	searchInput.bind({
		focus: function(){
			if (searchInput.val() == defaultValue) {
				searchInput.removeClass("placeholded").val("");
			}
		},
		blur: function(){
			if (!searchInput.val()){
				searchInput.addClass("placeholded").val(defaultValue);
			}
		}
	});

	/* promo-block */
	var places = $("#promo-block .places li");
	var images = $("#promo-block .images a");
	var last = 0;
	var current = 0;
	var interval;

	images.parent().css("position", "relative");
	images.each(function(index){
		$(this).css("position", "absolute").css("z-index", index + 1);
	});

	places.mouseenter(function(){
		current = places.index(this);

		if (current == last) {
			return;
		}

		places.removeClass("active").eq(current).addClass("active");

		images.stop(true,true);
		images.eq(last).fadeOut();
		images.eq(current).fadeIn();

		last = current;
	});

	$("#promo-block").mouseenter(endShow).mouseleave(startShow);
	startShow();

	function startShow(){
		interval = setInterval(function(){
			if (++current == images.length) {
				current = 0;
			}

			places.removeClass("active").eq(current).addClass("active");

			images.stop(true, true);
			images.eq(last).fadeOut();
			images.eq(current).fadeIn();

			last = current;
		}, 3000);
	}

	function endShow(){
		clearInterval(interval);
	}

	/* fancybox */
	$("a.image").fancybox({
		transitionIn: "elastic",
		transitionOut: "elastic",
		speedIn: 600,
		speedOut: 200,
		centerOnScroll: true,
		overlayShow: true
	});

	$("a.map").fancybox({
		transitionIn: "elastic",
		transitionOut: "elastic",
		speedIn: 600,
		speedOut: 200
	});

	var popups = $('<div id="popups" />').appendTo("body");

	popups.delegate(".close a", "click", function(e){
		$(this).closest(".popup").hide("fast").delay("fast").remove();

		e.preventDefault();
	});

	popups.delegate("form", "submit", function(e){
		var form = $(this);
		var popup = form.closest(".popup");
		var url = form.attr("action");
		var data = form.serialize();

		$.post(url, data, function(data){
			if (typeof data == "string" && data) {
				popup.replaceWith(data);
				popups.find(".popup:hidden").show();
			} else if (data.redirectUrl) {
				window.location = data.redirectUrl;
			} else if (data.refresh) {
				window.location.reload(true);
			} else {
				popup.hide("fast").delay("fast").remove();
			}
		});

		e.preventDefault();
	});

	$("a.showPopup").click(function(e){
		var a = $(this);
		var url = a.attr("href");

		a.addClass("process");

		$.get(url, function(data){
			popups.append(data);

			popups.find(".popup:hidden").show();

			a.removeClass("process");
		});

		e.preventDefault();
	});

	var menucat=$(".menu-content .sidebar .menu-categories");

	if (menucat.length) {
		var top=menucat.offset().top - parseFloat(menucat.css("margin-top").replace("auto",0));
		
		function fixCategories(){
			if($(window).scrollTop() >= top){
				menucat.addClass("fixed");
			}
			else{
				menucat.removeClass("fixed");
			}
		}

		$(window).scroll(fixCategories);

		fixCategories();
	}

	$("a.add-to-cart").click(function(e){
		var a=$(this);
		var id=a.attr("rel");

		if (!$.browser.msie) {
			toCartAnimation(a.closest(".item").find(".image img:first"));
		}

		$.getJSON("/?r=site/addItemToCart",{modifierId:id},function(data){
			setTotalPrice(data);
			$("a.add-to-cart[rel=" + id + "]").closest(".order").find(".number").show();

			var value = $("a.add-to-cart[rel=" + id + "]").closest(".order").find(".value span");
			var num=parseInt(value.eq(0).text());

			value.text(++num);
		});

		e.preventDefault();
	});

	$("a.dec, a.inc").click(function(e){
		var a = $(this);
		var o = a.closest(".order");
		var id = o.find("a.add-to-cart").attr("rel");
		var value = $("a.add-to-cart[rel=" + id + "]").closest(".order").find(".value span");
		var num = parseInt(value.eq(0).text());

		if(a.hasClass("dec"))
			--num;
		else
			++num;

		if(num > 0){
			$.getJSON("/?r=site/setItemQuantity",{modifierId:id,quantity:num},function(data){
				setTotalPrice(data.totalPrice);
				value.text(num);
			});
		}
		else if(num == 0){
			$.getJSON("/?r=site/deleteItem",{modifierId:id},function(data){
				setTotalPrice(data.totalPrice);
				value.text(num);
			});
		}

		e.preventDefault();
	});

	$(".order").mouseleave(function(){
		var num=parseInt($(this).find(".value span").text());

		if(num==0){
			$(this).find(".number").fadeOut("fast");
		}
	});

	$("div.new-actions").mousemove(function(e){
		var o = $(this);
		var width = o.innerWidth();
		var x = e.pageX - o.offset().left;
		var left = x * ((o.attr("scrollWidth") - width + 20) / width);

		o.scrollLeft(left);
	});
});

function setTotalPrice(n){
	$("#cart a").text("Заказ на "+n+" руб.");
}

function toCartAnimation(o){
	if(!o.length)
		return;

	var parent=o.parent();
	var cart=$("#cart");
	var t=o.clone();

	var newOffset=cart.offset();
	var oldOffset=o.offset();

	var oldLeft=oldOffset.left-$(document).scrollLeft();
	var oldTop=oldOffset.top-$(document).scrollTop();
	var newLeft=newOffset.left-$(document).scrollLeft();
	var newTop=newOffset.top-$(document).scrollTop();

	cart.show();

	t.appendTo(parent);

	t.css({
		position:"fixed",
		margin:0,
		left:oldLeft,
		top:oldTop,
		zIndex:100
	});

	t.animate({
		left:newLeft,
		top:newTop,
		opacity:0.25,
		width:0,
		height:0
	},500,"swing",function(){
		t.hide("fast").remove();
	});
}

