  $(document).ready(function(){
    
    $(".notready").click(function(){
      $.jGrowl("Work in progress", {header: "Sorry, not avaliable"});
      return false;
    })
    
    //Функции увеличения картинки каталога 
    /*$(".full-image").click(function () {
      if($.browser.msie && $.browser.version < 7) return true;
      $("body").append("<div class='darkerer'></div>");
      $("body").append("<div class='lighterer'></div>");
      $(".lighterer").append('<div class="loading-message" style="background-color: #0d5c43; color: #fff">Loading image...</div>');
      //$(".lighterer").css({"margin-left": -$(".lighterer").width()/2, "margin-top": -$(".lighterer").height()/2});
      $(".lighterer").append('<img class="enlarged-pic" src="'+$(this).attr('href')+'"" style="display: none; margin: 0 auto;">');
			var preloader = new Image();
			preloader.onload = function() {
				$(".loading-message").hide();
        $(".lighterer").css({"margin-top": -preloader.height/2});
        $(".lighterer img").show(500);
				preloader.onload = null;
				preloader = null;
			};	
      preloader.src = $(this).attr('href');

      return false;
    });

    $(".darkerer, .lighterer, .lighterer img").live("click", function () {
      $('.darkerer, .lighterer').remove();
    });
    */
    
    $(".full-image").fancybox();
    

    //Инфоблок
    $(".info-block .close-button").css({"background-color": "white", opacity: 0.01});

    $(".info-block .close-button").click(function () {
      $(this).parent().hide(150);
    });    
    if($.browser.msie && $.browser.version < 7)
    {
      $(".actions .info, .actions .mini-carello").click(function () {
        $("#block"+$(this).attr("id")).show();
        return false;
      });
      $(".login-link").click(function () {
        $("#login-block-menu").show();
        return false;
      })
      $(".info-block").show();    
      $(".info-block").hide();
    }    
    else
    {    
      $(".actions .info, .actions .mini-carello").click(function () {
        $("#block"+$(this).attr("id")).show(300);
        return false;
      });
      $(".login-link").click(function () {
        $("#login-block-menu").show(300);
        return false;
      })
    }
    
    $("#login-block-menu input").blur(function () {
      if($(this).val() == "") {
        $(this).val("Login");
        $(this).addClass("faded-input");
      }
    });
    $("#login-block-menu input").focus(function () {
      if($(this).val() == "Login") {
        $(this).val("");
        $(this).removeClass("faded-input");
      }
    });
    
    $("input[name='search_query']").blur(function () {
      if($(this).val() == "") {
        $(this).val("Ricerca dei prodotti");
      }
    });
    $("input[name='search_query']").focus(function () {
      if($(this).val() == "Ricerca dei prodotti") {
        $(this).val("");
      }
    });

    if(!$.browser.msie) $(".info-block").draggable({ cursor: 'move', opacity: 0.65});
    
    $(".login-enter-link").click( function() {
      login($(this).prevAll(":text").val(), $(this).nextAll(":password").val());
      return false;
    });
    $("#login-block-menu .query").keypress(function(event)
    	{
        if (event.keyCode==13)
      		$(".login-enter-link").click();
      }
    );
    $(".logout-link").click( function() {
      logout();
      return false;
    });



    $(".quantity").keypress(function(event)
    	{
        if (event.keyCode==13)
      		$(this).next('.add-to-cart-link').click();
      }
    );

    $(".quantity1").keypress(function(event)
			{
        if (event.keyCode==13)
            recount();
      }
	  );

    $(".refresh").click(recount);

    $(".delete").click(deleteGood);

    $(".add-to-cart-link").click(order);

  	$(".quantity").blur(function()
  		{			
  			if($(this).val()=="")
  				$(this).val("0");
  		}
  	);

    $(".quantity").click(function()
		  {
  			if($(this).val()=="0")
  				$(this).val("");
		  }
	  );

    $("tr.line:odd").css("background-color","#daf0e8");

    $(".refresh,.delete").hover(function()
    {
        $(".refresh,.delete").css("cursor","pointer");
        if($(this).attr("class")=="delete")
            {
                $(this).attr("src","/images/002.gif");
            } else $(this).attr("src","/images/001.gif");
    },
    function()
    {
        $(".refresh,.delete").css("cursor","default");
        if($(this).attr("class")=="delete")
            {
                $(this).attr("src","/images/002b.gif");
            } else $(this).attr("src","/images/001b.gif");
    }); //hover ends

    
    
    $.jGrowl.defaults.closer = false;
    
    //Отмена заказа
    
    $("#cancel-order :button").click(function() {
        cancelOrder($("#cancel-order .order_id").val(), $("#cancel-order .comment").val());
    });
            
  });
  
  
function cancelOrder(order_id, comment) {
	$.jGrowl("...in progress", {header: "Canceling order #" + order_id + "..."});
	$.ajax({
		type: "POST",
		url: "/js/a_order.php",
		data: "order_id="+escape(order_id)+"&comment="+escape(comment)+"&do=cancel_order",
		success: cancelOrderResponse
	});
}
function cancelOrderResponse(response) {
  var tmp = response.split(';');
	if(tmp[0]=='0') {
    $.jGrowl("Order allready canceled", {header: "Error"});
    return false;
  }
  
  $.jGrowl("Done.", {header: "Canceling order #" + tmp[1] + "..."});

  $("#cancel-order").hide(200);
  $("#order"+tmp[1]+" .cancel-row").hide(200).remove();
  $("#order"+tmp[1]+" .status").text("Status: Canceled");
  
  return false;
}  
  
function login(login, pass) {
	$.jGrowl("...in progress", {header: "Loggin in..."});
	$.ajax({
		type: "POST",
		url: "/js/a_login.php",
		data: "login="+escape(login)+"&pass="+escape(pass)+"&do=login",
		success: loginResponse
	});
}

function loginResponse(response) {
	if(response==0) {
    $.jGrowl("Login or password mismatch", {header: "Error"});
    return false;
  }
  var tmp = response.split(';');
  $.jGrowl("Thank you!", {header: "Logged in"});
  $('#li-login').hide(300);
  $('#loggedin').html('Logged in as: <a href="/account/">' + tmp[1] + ' ' + tmp[2] + '</a><br><a class="logout-link" href="/logout/">log out</a>').show(300);
  $('.login-block').hide(300);
  $('#login-block-menu input').val("").blur();
  $(".logout-link").click( function() {
    logout();
    return false;
  });
    
}
function logout() {
	$.jGrowl("...in progress", {header: "Loggin out..."});
  $.ajax({
		type: "POST",
		url: "/js/a_login.php",
		data: "do=logout",
		success: logoutResponse
	});
}

function logoutResponse(response) {
	if(response==0) {
    $.jGrowl("Please, contact administrator", {header: "Error"});
    return false;
  }
  $.jGrowl("Thank you!", {header: "Logged out"});
  $('#li-login').show(300);
  $('#loggedin').hide(300);  
}  

function order(multi)
{
  $(".quantity").attr("disabled", "disabled");
	$(".add-to-cart-link").attr("disabled", "disabled");

  var sku = parent_sku = new Array($(this).prevAll(".sku").val());
  if($("#taglia"+sku).val()) sku = new Array($("#taglia"+sku).val());
  var quantity = new Array($(this).prevAll(".quantity").val());
  
	$.jGrowl(quantity + " pcs of " + $(this).prevAll("strong").text(), {header: "Adding to cart"});

	quantity=serialize(quantity);
	sku=serialize(sku);


	$.ajax({
		type: "POST",
		url: "/js/a_cart.php",
		data: "parent_sku="+escape(parent_sku)+"&sku="+escape(sku)+"&quantity="+escape(quantity)+"&do=order",
		success: cartAddResponse
	});
	
	return false;
}

function recount()
{
  $(".quantity1").attr("disabled", "disabled");
  var sku = new Array();
	var quantity = new Array();

	num = ($(".quantity1")).length;
    
	for(i=0;i<num;i++)
	{
		quantValue = $(".quantity1:eq("+i+")").val();
		if(!is_numeric(quantValue)) 
    {
      quantValue = 1;
      $(".quantity1:eq("+i+")").val(quantValue);
    }
    quantity[quantity.length] = quantValue;
		skuValue = $(".sku:eq("+i+")").val();
		sku[sku.length] = skuValue;
	}

	quantity=serialize(quantity);
	sku=serialize(sku);

	$.ajax({
		type: "POST",
		url: "/js/a_cart.php",
		data: "sku="+escape(sku)+"&quantity="+escape(quantity)+"&do=recount",
		success: cartRecountResponse
	});
}

function removeTr(obj) //удаление строки в таблице корзины
{
    var link=obj.parent().parent();
    link.css('background-color','#ff6666');
    link.fadeOut(1000, function() { $(this).remove(); } );
}

function deleteGood() //удаление товара из корзины
{
  $(".quantity1").attr("disabled", "disabled");
	var sku = $(this).parent().siblings().children(".sku").val();

    $.ajax({
		type: "POST",
		url: "/js/a_cart.php",
		data: "sku="+escape(sku)+"&do=delete",
		success: cartDeleteResponse
	});

  removeTr($(this));
}

function showNewPrice(textVal) //отображение новой цены
{
  var tmp = textVal.split(';');
	var tovar = tmp[0];
	var summa = tmp[1];

	$("#tovar").text(tovar);
	$("#summa").text(summa);

  return summa; //она нам может понадобиться
}

function cartDeleteResponse(response)
{
  var summa = Number(showNewPrice(response)); //обновляем цену и кол-во в малой корзине
	
	if(summa == 7)
	{
		$("#cart_content").slideUp();
		$("#cart_content").after("Il Suo carrello e' vuoto.").remove();
	}
	else 
	{
		$("#summa_cart").html("&euro;"+summa.toFixed(2));
		$(".quantity1").attr("disabled", "");
	}
}

function cartAddResponse(response)
{
	var tmp = response.split(';');
	var id = tmp[2];

  //showNewPrice(response); //обновляем цену и кол-во в малой корзине

	$(".quantity").attr("disabled", "");
	$(".button").attr("disabled", "");
    
  //$(".quantity").val("0");
  
	if(tmp[0] > 1)
    txt = tmp[0] + " nomi prodotti";
  else
    txt = tmp[0] + " nome prodotto";

	txt += "<br>Somma totale: &euro;" + tmp[1] + "<br><br><a href='/carrello/'>Click here to order</a>";
  $.jGrowl(txt, {header: "In carrello", life: 6500});

  $("#blockcarello"+id+" .close-button").click(); 
  
}

function cartRecountResponse(response)
{
  var num = ($(".quantity1")).length;

	for(var i=0;i<num;i++)
	{
    var quantVal = $(".quantity1:eq("+i+")").val();
        
		if(quantVal==0) //удаляем строки с нулевым количеством
        {
            removeTr($(".quantity1:eq("+i+")"));
        }
        else
        {
            //далее считаем новую сумму по каждому товару
            var price = $(".price:eq("+i+")").text();
            var newSum = Math.abs(Number(quantVal)*Number(price));
            $(".sum:eq("+i+")").text(newSum.toFixed(2));
        }
	}

  cartDeleteResponse(response);
}

	



function serialize( mixed_value ) {
    var _getType = function( inp ) {
        var type = typeof inp, match;
        if (type == 'object' && !inp) {
            return 'null';
        }
        if (type == "object") {
            if (!inp.constructor) {
                return 'object';
            }
            var cons = inp.constructor.toString();
            if (match = cons.match(/(\w+)\(/)) {
                cons = match[1].toLowerCase();
            }
            var types = ["boolean", "number", "string", "array"];
            for (key in types) {
                if (cons == types[key]) {
                    type = types[key];
                    break;
                }
            }
        }
        return type;
    };
    var type = _getType(mixed_value);
    var val, ktype = '';
    
    switch (type) {
        case "function": 
            val = ""; 
            break;
        case "undefined":
            val = "N";
            break;
        case "boolean":
            val = "b:" + (mixed_value ? "1" : "0");
            break;
        case "number":
            val = (Math.round(mixed_value) == mixed_value ? "i" : "d") + ":" + mixed_value;
            break;
        case "string":
            val = "s:" + mixed_value.length + ":\"" + mixed_value + "\"";
            break;
        case "array":
        case "object":
            val = "a";
            var count = 0;
            var vals = "";
            var okey;
            for (key in mixed_value) {
                ktype = _getType(mixed_value[key]);
                if (ktype == "function" && ktype == "object") { 
                    continue; 
                }
                
                okey = (key.match(/^[0-9]+$/) ? parseInt(key) : key);
                vals += serialize(okey) +
                        serialize(mixed_value[key]);
                count++;
            }
            val += ":" + count + ":{" + vals + "}";
            break;
    }
    if (type != "object" && type != "array") val += ";";
    return val;
}  

function is_numeric( mixed_var ) {
    return !isNaN(mixed_var * 1);
}

