﻿var ref = 0;

function fnAjaxUpdateQuantity(form) {
    var productId = form["product"].value;
    var variantId = form["variant"].value;
    var quantity = form["quantity"].value;
    fnSetRecalculating();
    ref++;
    $.post("/baseAssets/ajax/basket.aspx?" + ref, { basket:"update",product:productId,variant:variantId,quantity:quantity }, function(data){
      var response = eval('(' + data + ')');
      if(response.ref == ref) {
        fnSetNewValues(response.totalText, response.subTotalText, response.shippingTotalText, response.itemText, response.discountTotalText, response.discountTotal, response.promoCode, response.message);
      }
    });
    return true;
}
function fnAjaxRemove(form) {
    var productId = form["product"].value;
    var variantId = form["variant"].value;
    fnSetRecalculating();
    ref++;
    
    if($("tr.lineItem").length <= 1)
        fnShowEmptyBasket();
    
    $.post("/baseAssets/ajax/basket.aspx?" + ref, { basket:"remove",product:productId,variant:variantId }, function(data){
      var response = eval('(' + data + ')');
      if(response.ref == ref) {
          if(response.itemCount == 0) {
            fnShowEmptyBasket();
          } else {
            fnSetNewValues(response.totalText, response.subTotalText, response.shippingTotalText, response.itemText, response.discountTotalText, response.discountTotal, response.promoCode, response.message);
          }
      }
      
    });
    return true;
}
function fnAjaxPromotionCode(form) {
    var promotionCode = form["promotionCode"].value;
    fnSetRecalculating();
    ref++;
    $.post("/baseAssets/ajax/basket.aspx?" + ref, { basket:"promotion",promotionCode:promotionCode }, function(data){
      var response = eval('(' + data + ')');
      if(response.ref == ref) {
        fnSetNewValues(response.totalText, response.subTotalText, response.shippingTotalText, response.itemText, response.discountTotalText, response.discountTotal, response.promoCode, response.message);
      }
    });
    return true;
}
function fnAjaxPrepayReturns(checkbox) {
    var prepayReturns = "";
    if(checkbox.checked)
        prepayReturns= "true";
    fnSetRecalculating();
    ref++;
    $.post("/baseAssets/ajax/basket.aspx?" + ref, { basket:"prepay",prepayReturns:prepayReturns}, function(data){
      var response = eval('(' + data + ')');
      if(response.ref == ref) {
        fnSetNewValues(response.totalText, response.subTotalText, response.shippingTotalText, response.itemText, response.discountTotalText, response.discountTotal, response.promoCode, response.message);
      }
    });
    return true;
}
function fnSetRecalculating() {
    $("#discount").text("Recalculating...");
    $("#total").text("Recalculating...");
    $("#subTotal").text("Recalculating...");
    $("#deliveryTotal").text("Recalculating...");
}
function fnSetNewValues(total,subTotal,shippingTotal,itemCount,discountText,discount,promoCode,message){
    if(discount > 0)
        $("div[id$='divDiscount']").css("display","block");
    else
        $("div[id$='divDiscount']").css("display","none");
    
    $("#discount").text(discountText);
    $("#total").text(total);
    $("#subTotal").text(subTotal);
    $("#deliveryTotal").text(shippingTotal);
    $("#bsQuantity").text(itemCount);
    $("#bsAmount").text(subTotal);
    $("#txtPromoCode").val(promoCode);
    if(message != "") 
    {
        $(".errorSummary").css("display","block");
        $("#errors").html("<li>" + message + "</li>");
    } else {
        $(".errorSummary").css("display","none");
    }
}
function fnSubmitUpdateForm(formName) {
    var form = document.getElementById(formName);
    if(!fnAjaxUpdateQuantity(form)) {
        form.submit();
    }
}
function fnSubmitRemoveForm(formName) {
    var form = document.getElementById(formName);
    var variantId = form["variant"].value;
    if(fnAjaxRemove(form)) {
        $("#" + variantId).fadeOut("slow", function() { $("#" + variantId).remove(); } );
    } else {
        form.submit();
    }
}
function fnShowEmptyBasket() {
    $(".emptyBasket").removeClass("hide");
    $("#fullBasket").addClass("hide");
    fnSetNewValues("£0.00","£0.00","£0.00","0 items","","","");
}

// when the document is loaded
$(document).ready(function() {	
	$(".jsHide").css("display","block");
	$(".jsHideInline").css("display","inline");
});