/**********************************
    Shopping Cart
***********************************/
var onMouseOutTimeOut = 300;
var cartEffectsDuration = 300;
function addToCart(SkuId, Skucount)
{
    var count = Skucount;
    if (!Skucount)
        count = $("#" + SkuId).val();
    $.ajax({
        type: "POST",
        url: "/Cart/AddSku/" + SkuId + "/" + count,
        data: "",
        dataType: "json",
        success: ChangeBasket,
        error: function(XMLHttpRequest, textStatus, errorThrown)
        {
            alert("Add to cart failed\nReason: " + textStatus + "\nHTTP status: " + XMLHttpRequest.status + " " + XMLHttpRequest.statusText);
        }
    });
}
function ChangeBasket(msg) {
    $("#ViewCartControl").html(msg.htmlViewCart);
    $("#smallShoppingCart").html(msg.smallShoppingCart);
    if (msg.Message) {
        var messageBox = $("<div class='fadingMessage'></div>");
        messageBox.text(msg.Message).hide();
        $("body").prepend(messageBox);
        messageBox.fadeIn(300, function() {
            setTimeout(function() {
                messageBox.fadeOut(500, function() {
                    messageBox.remove();
                });
            }, 3000);
        });
    }
}

function quantityChanged(source, skuId)
{
    var qty = parseInt($(source).val());
    if (!isNaN(qty) && isFinite(qty))
        updateQty(skuId, qty);
    else
        alert("Incorrect number!");
}

function applyCoupon(couponCode) {
    $.ajax({
        type: "POST",
        url: "/Cart/ApplyCoupon/" + couponCode,
        data: "",
        dataType: "json",
        success: function(msg) {
            if (msg.error)
                alert(msg.error);
            else
                ChangeBasket(msg);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            alert("Add to cart failed\nReason: " + textStatus + "\nHTTP status: " + XMLHttpRequest.status + " " + XMLHttpRequest.statusText);
        }
    });
}

function updateQty(skuId, quantity)
{
    $.ajax({
        type: "POST",
        url: "/Cart/UpdateSku/" + skuId + "?quantity=" + quantity,
        data: "",
        dataType: "json",
        success: function(msg)
        {
            ChangeBasket(msg);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown)
        {
            alert("Update from cart failed\nReason: " + textStatus + "\nHTTP status: " + XMLHttpRequest.status + " " + XMLHttpRequest.statusText);
        }
    });
}

function removeFromCart(skuId)
{
    $.ajax({
        type: "POST",
        url: "/Cart/RemoveSku/" + skuId,
        data: "",
        dataType: "json",
        success: function(msg)
        {
            ChangeBasket(msg);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown)
        {
            alert("Remove from cart failed\nReason: " + textStatus + "\nHTTP status: " + XMLHttpRequest.status + " " + XMLHttpRequest.statusText);
        }
    });
}