﻿/// <reference path="jquery-help.js" />
var del = true;
var menu = 0;
// 0-none; 1-login; 2-register
var count;
var over = false;
$(document).ready(function ()
{
	/* User section */
	$("#auth").click(function ()
	{
		LoginClick($(this));
		return false;
	});
	$("#register").click(function ()
	{
		RegisterClick($(this));
		return false;
	});
	$("#enter").click(function ()
	{
		MenuButtonClick();
	});
	$("#exit").click(function ()
	{
		UserLogout();
		return false;
	});
	$("#whyRegister").click(function ()
	{
		ShowDialog("whyAnswer", $(this), 220);
		$("#whyAnswer").slideToggle();
		return false;
	});
	$("#closeLogin").click(function ()
	{
		$("#auth_form").hide();
		menu = 0;
		return false;
	});
	$("#closeWhy").click(function ()
	{
		$("#whyAnswer").hide();
		return false;
	});
	if (jQuery.browser.msie)
	{
		$("a.item_photo").click(function ()
		{
			return !$(this).children().hasClass("ui-draggable-dragging");
		});
	}
	$("#phone").mask("(999)999-99-99");
	/* errors section*/
	$("#name").keypress(function ()
	{
		$("#enterNameErr").hide();
	});
	$("#phone").keypress(function ()
	{
		$("#enterPhoneErr").hide();
	});
	$("#login").keypress(function ()
	{
		$("#enterEmailErr").hide();
	});
	$("#pass").keypress(function ()
	{
		$("#enterPassErr").hide();
		$("#diffPassErr").hide();
	});
	$("#repeat").keypress(function ()
	{
		$("#repeatPassErr").hide();
		$("#diffPassErr").hide();
	});
	/* Cart and WishList section */
	count = new Number($("#count").val());

	$(".icon_cart").click(function ()
	{
		AddGood($(this).attr("idGood"));
		return false;
	});

	$("#ToggleMailerInfo").click(function (e)
	{
		e.preventDefault();
		$("#MailerInfo").show();
	});

	$("#CloseMailerInfo").click(function (e)
	{
		e.preventDefault();
		$("#MailerInfo").hide();
	});

	$("#CloseCartPopup").click(function (e)
	{
		e.preventDefault();
		$("#CartPopup").hide();
		$("#CartOverlay").hide();
	});

	$("#AssortPopupToggle").click(function (e)
	{
		e.preventDefault();
		$("#CartOverlay").show();
		$("#AssortPopup").show();
	});

	$("#SendComment").click(function (e)
	{
		e.preventDefault();
		var data = {};
		data.find = $("#AssortFind").val();
		data.assort = $("#AssortAssort").val();
		data.price = $("#AssortPrice").val();
		data.notlike = $("#AssortNotlike").val();
		data.text = $("#TextAreaAssortiment").val();
		var url = "/ajax.aspx/SendComment";

		var f = function (msg)
		{
			if (msg.d.Success == true)
			{
				$("#AssortPopup").hide();
				$("#CartOverlay").hide();
			}
			else
			{
				$("#AssortPopup").append("<br />Не удалось отправить сообщение. Попробуйте, пожалуйста, ещё раз.");
			}
		};
		Ajax(url, data, f);
	});

	$("#CloseAssortPopup").click(function (e)
	{
		e.preventDefault();
		$("#CartOverlay").hide();
		$("#AssortPopup").hide();
	});

	$("#SendMailer").click(function (e)
	{
		e.preventDefault();

		if ($("#MailerEmail").val() === "")
		{
			return alert("Введите Email");
		}

		var url = "/ajax.aspx/SendMailer";
		var data = {};
		data.email = $("#MailerEmail").val();
		data.name = $("#MailerName").val();
		$("#MailerMessage").remove();
		var f = function (msg)
		{
			if (msg.d.Success == true)
			{
				$("#Mailer .content").append("<p id='MailerMessage'>Вы добавлены</p>");
			}
			else
			{
				$("#Mailer .content").append("<p id='MailerMessage'>Ошибка. Попробуйте, пожалуйста, ещё раз.</p>");
			}
		};
		Ajax(url, data, f);
	});

	$("#AddBlogCommentToggle").click(function (e)
	{
		e.preventDefault();
		$("#AddBlogComment").toggle();
	});

	$("#SendBlogComment").click(function (e)
	{
		e.preventDefault();
		$("#SendBlogCommentError").remove();
		var url = "/ajax.aspx/SendBlogComment";
		var data = {};
		data.text = $("#BlogCommentText").val();
		data.name = $("#BlogCommentName").val();
		data.blogId = $("#BlogId").val();

		var f = function (msg)
		{
			if (msg.d.Success == true)
			{
				$("#AddBlogComment").hide();
				$("#BlogComments").append('<li><span class="from">' + msg.d.Author + '</span><span class="gb_mess_date">' + msg.d.Date + '</span><div class="gb_mess_txt">' + msg.d.Text + '</div></li>');
			}
			else
			{
				$("#AddBlogComment").append("<div id='SendBlogCommentError'>Ошибка. Попробуйте, пожалуйста, ещё раз.</div>");
			}
		};
		Ajax(url, data, f);
	});

	$(".icon_w_list").click(function ()
	{
		WishGood($(this).attr("idGood"));
		return false;
	});
	$(".draggable").draggable({
		revert: "invalid",
		helper: "clone",
		appendTo: "body",
		opacity: 0.8,
		zIndex: 1000,
		containment: 'document'
	});
	$(".selected_good").draggable({
		revert: "false",
		helper: "clone",
		appendTo: "body",
		opacity: 0.8,
		zIndex: 1000,
		containment: 'document',
		stop: function (ui)
		{
			DeleteGood(this.id, $(ui));
		}
	});
	$(".wished_good").draggable({
		revert: "false",
		helper: "clone",
		appendTo: "body",
		opacity: 0.8,
		zIndex: 1000,
		containment: 'document',
		stop: function (ui)
		{
			HateGood(this.id, $(ui));
		}
	});
	$("#my_cart").droppable({
		accept: ".draggable, .selected_good",
		hoverClass: "active",
		tolerance: "touch",
		drop: function (ev, ui)
		{
			if ((ui.draggable).hasClass("selected_good") == true)
			{
				del = false;
			}
			else
			{
				AddGood($(ui.draggable).attr("idGood"));
			}
		}
	});
	/*$("#right_column").scrollFollow({
	offset: 20,
	speed: 1000
	});*/
	$("#wish_list").droppable({
		accept: ".draggable, .wished_good",
		hoverClass: "active",
		tolerance: "touch",
		drop: function (ev, ui)
		{
			if ((ui.draggable).hasClass("wished_good") == true)
			{
				del = false;
			}
			else
			{
				WishGood($(ui.draggable).attr("idGood"));
			}
		}
	});
	$(".selected_good").click(function ()
	{
		ShowItemInfo($(this), 0);
		return false;
	});
	$(".wished_good").click(function ()
	{
		ShowItemInfo($(this), 1);
		return false;
	});
	$("#itemInfo > *").mouseout(function ()
	{
		over = false;
	}).mouseover(function ()
	{
		over = true;
	});
	$("#itemDelete").click(function ()
	{
		DeleteItem($(this).attr("mode"), $(this).attr("idItem"));
	});
	CheckOrderSumm();
});
/*Utils section*/
function CheckClick(obj){
	var $img = $(obj).children();
	return $img.hasClass("ui-draggable-dragging");
}
/*User section*/
function LoginClick(obj){
	$("#err_msg").hide();
	$("#auth_form .err").hide();
	ClearAuthFields();
	if (menu == 0){
		$("#repeatPass").hide();
		$("#userPhone").hide();
		$("#userNameReg").hide();
		$("#whyRegister").hide();
		$("#TextOnReg").hide();
		$("#TextOnEnter").show();
		$("#auth_form").slideDown();
		$("#enter > span").html("Войти");
		menu = 1;
	}
	else if (menu == 2){
		$("#auth_form").hide();
		menu = 0;
		LoginClick(obj);
	}
	else{
		$("#auth_form").hide();
		menu = 0;
	}
	ShowDialog("auth_form", obj, 100);
}
function RegisterClick(obj){
	$("#err_msg").hide();
	$("#auth_form .err").hide();
	ClearAuthFields();
	if (menu == 0){
		$("#repeatPass").show();
		$("#userPhone").show();
		$("#userNameReg").show();
		$("#whyRegister").show();
		$("#TextOnReg").show();
		$("#TextOnEnter").hide();
		$("#auth_form").slideDown();
		$("#enter > span").html("Зарегистрироваться");
		menu = 2;
	}
	else if (menu == 1){
		$("#auth_form").hide();
		menu = 0;
		RegisterClick(obj);
	}
	else{
		$("#auth_form").hide();
		menu = 0;
	}
	ShowDialog("auth_form", obj, 220);
}
function ClearAuthFields(){
	$("#login").val("");
	$("#pass").val("");
	$("#repeat").val("");
	$("#name").val("");
	$("#phone").val("");
}
function MenuButtonClick(){
	$("#err_msg").hide();
	if (menu == 1){
		if ($("#login").val().length < 1){
			$("#enterEmailErr").show();
			return;
		}
		if ($("#pass").val().length < 1){
			$("#enterPassErr").show();
			return;
		}
		UserAuth($("#login").val(), $("#pass").val());
		$("#pass").val("");
	}
	else if (menu == 2){
		if ($("#name").val().length < 1){
			$("#enterNameErr").show();
			return;
		}
		if ($("#phone").val().length < 5){
			$("#enterPhoneErr").show();
			return;
		}
		if ($("#login").val().length < 1){
			$("#enterEmailErr").show();
			return;
		}
		if ($("#pass").val().length < 1){
			$("#enterPassErr").show();
			return;
		}
		if ($("#repeat").val().length < 1){
			$("#repeatPassErr").show();
			return;
		}
		if ($("#pass").val() == $("#repeat").val()){
			UserAuth($("#login").val(), $("#pass").val(), $("#phone").val(), $("#name").val());
			$("#pass").val("");
			$("#repeat").val("");
		}
		else{
			$("#pass").val("");
			$("#repeat").val("");
			$("#diffPassErr").show();
		}
	}
}
function UserAuth(email, password, phone, name){
	var x = {};
	x.email = email;
	x.password = password;
	if (name != null){
		x.name = name;
	}
	var url = "";
	if (phone == null){
		url = "/ajax.aspx/UserAuth";
	}
	else{
		x.phone = phone;
		url = "/ajax.aspx/UserRegister";
	}
	$("#authCallMe").show();
	var f = function(msg){
		if (msg.d != null){
			if (msg.d.error != null){
				$("#err_msg").show().html(msg.d.error);
			}
			else{
				$("#user_profile").fadeIn();
				$("#auth_form").hide();
				$("#login_form").hide();
				menu = 0;
				$("#userName").html(msg.d.userName);
				LoadUserCart();
				LoadUserWishList();
				$(".icon_w_list").show();
				if (typeof userOrder != 'undefined'){
					OrderLogin();
				}
				if (typeof good != 'undefined'){
					GoodLogin();
				}
				$("#auth_form").hide();
				$("#login_form").hide();
			}
			$("#authCallMe").hide();
		}
	};
	Ajax(url, x, f);
}
function LoadUserCart(){
	var url = "/ajax.aspx/LoadUserCart";
	var f = function(msg){
		if (msg.d != null){
			count = 0;
			for (var g in msg.d){
				if (g != "orderSumm"){
					var a = CreateGoodInCart(msg.d[g].idObject, msg.d[g].itemPhoto, msg.d[g].idGood);
					count ++ ;
					$("#cartClear").before(a);
				}
				else{
					$("#orderSumm").html(msg.d["orderSumm"]);
					CheckOrderSumm();
				}
			}
		}
	};
	Ajax(url, {}, f);
}
function LoadUserWishList(){
	$("#wish_list").fadeIn();
	var url = "/ajax.aspx/LoadUserWishList";
	var f = function(msg){
		var x = 1;
		if (msg.d != null){
			for (var w in msg.d){
				var a = CreateGoodInWishList(msg.d[w].idObject, msg.d[w].itemPhoto, msg.d[w].idGood);
				if ($("#wish_list > a:last").length == 0){
					$("#wishClear").before(a);
				}
				else{
					$(a).insertAfter("#wish_list > a:last");
				}
			}
		}
	};
	Ajax(url, {}, f);
}
function UserLogout(){
	var url = "/ajax.aspx/UserLogOut";
	var f = function(msg){
		if (msg.d != false){
			$("#user_profile").hide();
			$("#login_form").fadeIn();
			$("#userName").empty();
			$("#wish_list").slideUp();
			$("#wish_list a").remove();
			$("#my_cart a.selected_good").remove();
			$("#orderSumm").empty();
			$("#phoneNumber").val("");
			CheckOrderSumm();
			$(".icon_w_list").hide();
			if (typeof good != 'undefined'){
				GoodLogout();
			}
		}
	};
	Ajax(url, {}, f);
}
/* Cart and WishList section */
function ShowItemInfo(obj, mode){
	$("#itemInfo").hide();
	$("#itemImagePrev").attr("src", "/img/ajax-loader.gif");
	if (obj != null){
		var pos = $(obj).offset();
		$("#itemInfo").css("top", pos.top).css("left", pos.left - 150);
	}
	$("#itemInfo").fadeIn(300);
	over = true;
	var id = $(obj).attr("idGood");
	var x = 
	{
		"id" : id
	};
	var hr = "/good/" + id + ".aspx";
	var url = "/ajax.aspx/LoadItemInfo";
	var f = function(msg){
		if (msg.d != null){
			$("#divLoadAjax").hide();
			$("#itemHref").attr("href", hr);
			$("#itemHref2").attr("href", hr).html(msg.d.name);
			$("#itemImagePrev").attr("src", msg.d.img);
			$("#itemPrice").html(msg.d.price);
			$("#itemDelete").attr("mode", mode).attr("idItem", $(obj).attr("id"));
			$("#itemTable").show();
		}
	};
	Ajax(url, x, f);
	HideItem();
}
function HideItem(){
	if ( ! over){
		$("#itemInfo").fadeOut(300, function(){
			if ( ! over){
				$("#divLoadAjax").show();
				$("#itemTable").hide();
			}
		});
	}
	else{
		setTimeout("HideItem()", 300);
	}
}
function DeleteItem(mode, idItem){
	del = true;
	if (mode == 0){
		DeleteGood(idItem);
	}
	else{
		HateGood(idItem);
	}
	over = false;
	HideItem();
}

function AddGood(idGood){
	var x = 
	{
		"idGood" : idGood
	};
	var url = "/ajax.aspx/AddGoodToCart";
	var exist = $("a[idGood^=" + idGood + "].selected_good");
	if (exist.length != 0){
		$(exist[exist.length - 1]).after($("#loaderMyCart"));
	}
	else{
		$("#cartClear").before($("#loaderMyCart"));
}
    
    $("#loaderMyCart").show();

    //$("*").attr("style", "text-shadow: 2px 2px 10px black !important;color: transparent;");
    var arrPageSizes = ___getPageSize();
    // Style overlay and show it
    $('#CartOverlay').css({
        width: arrPageSizes[0],
        height: arrPageSizes[1]
    }).fadeIn();


    var f = function (msg)
    {
        if (msg.d != null)
        {
			_gaq.push(['_trackPageview', '/order/add/']);
			yaCounter10856731.reachGoal('/order/add/'); 
            var tegA = CreateGoodInCart(msg.d.idOrderGood, msg.d.img, idGood);
            count++;
            $("#loaderMyCart").hide();
            if (exist.length != 0)
            {
                $(exist[0]).after(tegA);
            }
            else
            {
                $("#cartClear").before(tegA);
            }
            $("#orderSumm").html(msg.d.orderSumm);
            CheckOrderSumm();

            var price = msg.d.ProductPrice;
            var name = msg.d.ProductName;
            $("#CartPopup #ProductName").html(name);
            $("#CartPopup #ProductPrice").html(price);
            $("#CartPopup #ProductImg").attr("src", msg.d.MediumImg);
            // Get page scroll
            var arrPageScroll = ___getPageScroll();

            var pageS = ___getPageSize();
            // Calculate top and left offset for the jquery-lightbox div object and show it
            $('#CartPopup').css({
                top: arrPageScroll[1] + (arrPageSizes[3] / 10),
                left: (pageS[0] - $('#CartPopup').width()) / 2
            }).show();

        }
    };
	Ajax(url, x, f);
}

function CreateGoodInCart(idOrderGood, image, idGood){
	var a = document.createElement('a');
	var img = document.createElement('img');
	ChangeImg(img, image, "");
	$(a).attr("id", idOrderGood + "_" + count).attr("class", "selected_good").attr("href", "#").attr("idGood", idGood).html(img).draggable({
		revert : "false",
		helper : "clone",
		appendTo : "body",
		opacity : 0.8,
		zIndex : 1000,
		containment : 'document',
		stop : function(ui){
			DeleteGood(this.id, $(ui));
		}
	}).click(function(){
		ShowItemInfo($(this), 0);
		return false;
	});
	return a;
}
function WishGood(idGood){
	var x = 
	{
		"idGood" : idGood
	};
	var url = "/ajax.aspx/AddGoodToWishList";
	var f = function(msg){
		if (msg.d != null){
			var a = CreateGoodInWishList(msg.d.idWishList, msg.d.img, idGood);
			$("#wishClear").before(a);
		}
	};
	Ajax(url, x, f);
}
function CreateGoodInWishList(idWishList, image, idGood){
	var a = document.createElement('a');
	var img = document.createElement('img');
	ChangeImg(img, image, "");
	$(a).attr("id", "w" + idWishList).attr("class", "wished_good").attr("href", "#").attr("idGood", idGood).html(img).draggable({
		revert : "false",
		helper : "clone",
		opacity : 0.8,
		appendTo : "body",
		opacity : 0.8,
		zIndex : 1000,
		containment : 'document',
		stop : function(ui){
			HateGood(this.id, $(ui));
		}
	}).click(function(){
		ShowItemInfo($(this), 1);
		return false;
	});
	return a;
}
function DeleteGood(id, ui){
	if (del == false){
		del = true;
		return;
	}
	if (ui != null){
		CreatePoof(ui[0].pageX, ui[0].pageY);
	}
	var idOrderGood = id.substring(0, id.indexOf("_"));
	var x = 
	{
		"idOrderGood" : idOrderGood
	};
	var url = "/ajax.aspx/DeleteGoodFromCart";
	var f = function(msg){
		if (msg.d != null){
			$("#" + id).remove();
			count -- ;
			ProcessCount();
			$("#orderSumm").html(msg.d.orderSumm);
			CheckOrderSumm();
		}
	};
	Ajax(url, x, f);
}
function HateGood(id, ui){
	if (del == false){
		del = true;
		return;
	}
	if (ui != null){
		CreatePoof(ui[0].pageX, ui[0].pageY);
	}
	var x = 
	{
		"idWishList" : id.substr(1)
	};
	var url = "/ajax.aspx/DeleteGoodFromWishList";
	var f = function(msg){
		if (msg.d == true){
			$("#" + id).remove();
		}
	};
	Ajax(url, x, f);
}
function CheckOrderSumm(){
	if ($("#orderSumm").html() == "0" || $("#orderSumm").html() == ""){
		$("#makeOrder").hide();
		$("#dragGoodToCart").show();
	}
	else{
		$("#makeOrder").show();
		$("#dragGoodToCart").hide();
	}
}
function CreatePoof(X, Y){
	var poof = document.createElement('img');
	$(poof).attr("id", "poof").attr("src", "/img/poof.gif").css("position", "absolute").css("left", X - 15).css("top", Y - 15);
	$("body").append(poof);
	setTimeout('$("#poof").remove()', 500);
}
function ProcessCount(){
	for (var i = 0; i < $("#my_cart > a:not(.ui-draggable-dragging)").length; i ++ ){
		var id = $("#my_cart > a")[i].id;
		$("#my_cart > a")[i].id = id.substring(0, id.indexOf("_")) + "_" + i;
	}
}

function ___getPageSize()
{
    var xScroll, yScroll;
    if (window.innerHeight && window.scrollMaxY)
    {
        xScroll = window.innerWidth + window.scrollMaxX;
        yScroll = window.innerHeight + window.scrollMaxY;
    } else if (document.body.scrollHeight > document.body.offsetHeight)
    { // all but Explorer Mac
        xScroll = document.body.scrollWidth;
        yScroll = document.body.scrollHeight;
    } else
    { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
        xScroll = document.body.offsetWidth;
        yScroll = document.body.offsetHeight;
    }
    var windowWidth, windowHeight;
    if (self.innerHeight)
    {	// all except Explorer
        if (document.documentElement.clientWidth)
        {
            windowWidth = document.documentElement.clientWidth;
        } else
        {
            windowWidth = self.innerWidth;
        }
        windowHeight = self.innerHeight;
    } else if (document.documentElement && document.documentElement.clientHeight)
    { // Explorer 6 Strict Mode
        windowWidth = document.documentElement.clientWidth;
        windowHeight = document.documentElement.clientHeight;
    } else if (document.body)
    { // other Explorers
        windowWidth = document.body.clientWidth;
        windowHeight = document.body.clientHeight;
    }
    // for small pages with total height less then height of the viewport
    if (yScroll < windowHeight)
    {
        pageHeight = windowHeight;
    } else
    {
        pageHeight = yScroll;
    }
    // for small pages with total width less then width of the viewport
    if (xScroll < windowWidth)
    {
        pageWidth = xScroll;
    } else
    {
        pageWidth = windowWidth;
    }
    arrayPageSize = new Array(pageWidth, pageHeight, windowWidth, windowHeight);
    return arrayPageSize;
};
function ___getPageScroll()
{
    var xScroll, yScroll;
    if (self.pageYOffset)
    {
        yScroll = self.pageYOffset;
        xScroll = self.pageXOffset;
    } else if (document.documentElement && document.documentElement.scrollTop)
    {	 // Explorer 6 Strict
        yScroll = document.documentElement.scrollTop;
        xScroll = document.documentElement.scrollLeft;
    } else if (document.body)
    {// all other Explorers
        yScroll = document.body.scrollTop;
        xScroll = document.body.scrollLeft;
    }
    arrayPageScroll = new Array(xScroll, yScroll);
    return arrayPageScroll;
};

$(window).resize(function ()
{
    // Get page sizes
    var arrPageSizes = ___getPageSize();
    // Get page scroll
    var arrPageScroll = ___getPageScroll();
    // Calculate top and left offset for the jquery-lightbox div object and show it
    $('#CartPopup').css({
        top: arrPageScroll[1] + (arrPageSizes[3] / 10),
        left: arrPageScroll[0]
    });
});
