﻿/// <reference path="jquery-1.2.6-intellisense.js"/>
/// <reference path="json2.js" />

function UseAmendmentBasket() {

    var useAmendmentBasket = document.getElementById('hfUseAmendmentBasket');

    if (useAmendmentBasket == null || (useAmendmentBasket != "false" & useAmendmentBasket != "true"))
        useAmendmentBasket = "false"
    return useAmendmentBasket;
}

function resolveURL(url) {

    return $("input[ID$='hfUrl']").val() + url;
}



// Adds an Item to the basket through a WebService
function addItemToBasket(pid) {

    
    //get the outer tr row
    var productRow = $('#' + pid);

    var quantity = productRow.find("INPUT[NAME$='tbQuantity']").val();
    
    var note = productRow.find("INPUT[NAME$='hfItemNote']").val();
    if (note == undefined) note = "";
    var substitute = productRow.find("INPUT[NAME$='hfDoNotSubstitute']").val();
    if (substitute == undefined || substitute == "") substitute = "false";


    



    var params = { 'UseAmendmentBasket': UseAmendmentBasket(), 'ProductID': pid, 'Quantity': quantity, 'Note': note, 'DoNotSubstitute': ParseBoolean(substitute) };

    var jsonString = "{json: '" + JSON.stringify(params) + "'}";
    var serviceURL = resolveURL("WebServices/BasketServices.asmx/AddItemToBasket");
    $.ajax({
        type: "POST",
        url: serviceURL,
        data: jsonString,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: OnItemAddedSuccess,
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            alert("There was an error trying to process the last operation."
            + "Error: " + errorThrown + "  TextStatus:  " + textStatus);
        }
    });
}




/********************************************
    Executes on successful completion of the 
    ItemAdded webservice
********************************************/
function OnItemAddedSuccess(result, eventArgs) {
    //deserialize the JSON and use it to update the Mini Basket
    var miniBasketData = JSON.parse(result.d);

    if (miniBasketData == undefined) {
        return;
    }
    
    //update the mini basket
    UpdateMiniBasket(miniBasketData);



    var productRow = $('#' + miniBasketData.ProductID);

    productRow.find("IMG[ID$='imgAddToBasket']").css("display", "none");
    productRow.find("IMG[ID$='imgUpdateBasket']").css("display", "block");

    productRow.find("A[ID$='lnkInBasket']").css("display", "block");
    productRow.find("IMG[ID$='imgBasket']").css("display", "block");
    
    
    productRow.find("A[ID$='btnAddToBasket']").attr("class", "update");
    
    // write the quantity to the cell beside the Trolley icon
    var quantity = productRow.find("*[ID$='tbQuantity']").val();
    productRow.find("LABEL[ID$='lblItemSelectedQuantity']").text(" x " + quantity);

    // Remove the toolTip onmouseover for the addnote image
    productRow.find("A[ID$='addNote']").removeAttr("onmouseover");


    // ----- Update referentials on page ----
    var productReferentials = $(".product_referential input[value$='" + miniBasketData.ProductID + "'], .product_referential_wrap input[value$='" + miniBasketData.ProductID + "']");
    productReferentials.parents(".product_info_container").find("IMG[ID$='imgInBasket']").css("display", "inline");

    //------------------------------------------------------------------------------------------------------------------------------------------------
    //Bind the button clicks

    // change the "Add" function to "Update" function.
    productRow.find("A[ID$='btnAddToBasket']").unbind("click");
    productRow.find("A[ID$='btnAddToBasket']").bind("click", function(eventObject) {
        addItemToBasket(miniBasketData.ProductID);
        return false;
    });

    // when an item has been added to the basket, it is then possible to add a note to that Item.
    productRow.find("*[ID$='addNote']").unbind("click");
    productRow.find("*[ID$='addNote']").bind("click", function(eventObject) {
        showAddNotePopup(miniBasketData.ProductID);
        return false;
    });
    //------------------------------------------------------------------------------------------------------------------------------------------------
    
    
    
}

/*********************************
    Updates the Mini Basket with
    new values.
*********************************/
function UpdateMiniBasket(miniBasketData) 
{
    
    //get the outer div of the mini basket
    var miniBasketDiv = $('#minibasket');

    miniBasketDiv.find("SPAN[ID$='lblEstimatedCost']").text("€" + miniBasketData.TotalPrice.toFixed(2));

     //set the last item added to the basket
    miniBasketDiv.find("SPAN[ID$='lblLastItem1']").text(miniBasketData.RecentItems[0]);


    //only want to setup the buttons if it is the first item added to the basket
    if (miniBasketData.TotalItems >= 1) {

        var hiddenFieldDiv = $('#hfBase');

        var hdnUrlPath = hiddenFieldDiv.find("INPUT[NAME$='hfSiteUrlWithTheme']").val();
        var hdnSiteUrl = hiddenFieldDiv.find("INPUT[NAME$='hfUrl']").val();
        var hdnSecureUrlPath = hiddenFieldDiv.find("INPUT[NAME$='hfSecureSiteUrl']").val();

        
        miniBasketDiv.find("IMG[ID$='imgViewYourBasket']").attr("src", hdnUrlPath + "/images/buttons/bttn_mini_viewyourbasket.png");

        miniBasketDiv.find("IMG[ID$='imgViewYourBasket']").mouseover(function() {
        $(this).attr("src", hdnUrlPath + "/Images/buttons/bttn_mini_viewyourbasket.png");
        });

        miniBasketDiv.find("IMG[ID$='imgViewYourBasket']").mouseout(function() {
            $(this).attr("src", hdnUrlPath + "/Images/buttons/bttn_mini_viewyourbasket.png");
        });

        miniBasketDiv.find("A[ID$='lnkViewYourBasket']").attr("href", hdnSiteUrl + "Shopping/Basket.aspx");

        miniBasketDiv.find("IMG[ID$='imgGoToCheckout']").attr("src", hdnUrlPath + "/images/buttons/bttn_mini_gotocheckout.png");
        miniBasketDiv.find("IMG[ID$='imgGoToCheckout']").mouseover(function() {
        $(this).attr("src", hdnUrlPath + "/Images/buttons/bttn_mini_gotocheckout.png");
        });

        miniBasketDiv.find("IMG[ID$='imgGoToCheckout']").mouseout(function() {
        $(this).attr("src", hdnUrlPath + "/Images/buttons/bttn_mini_gotocheckout.png");
        });

        miniBasketDiv.find("A[ID$='lnkGoToCheckout']").attr("href", hdnSecureUrlPath + "Checkout/CheckoutLogin.aspx");
        
        
    }
    
    
}


function AddRemoveFavouriteFromProductListing(btnChooseWeightId) {
    var row = $('#' + btnChooseWeightId).parent().parent();
    var pid = parseInt(row.attr("id"));

    var onWeightedItemAddedFunction = function(elementID, quantity) {
        //alert("PL: elementID = " + elementID + "; " + "quantity = " + quantity);
    };

    addRemoveFavourite(pid, 'LISTING');
}

/*
    Calls a web service to add/remove favourites from a customers favourites list
*/
function addRemoveFavourite(pid, context) {

    var params = { 'ProductID': pid };

    var jsonString = "{JsonProductID: '" + JSON.stringify(params) + "'}";
    var serviceURL = resolveURL("WebServices/FavouritesServices.asmx/SetFavourite");
    $.ajax({
        type: "POST",
        url: serviceURL,
        data: jsonString,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(results) {

            if (context == "BASKET") {
                if (results.d == "on")
                    $('#' + pid).find("A[ID$='btnFavourites']").attr("class", "favourite active");
                else
                    $('#' + pid).find("A[ID$='btnFavourites']").attr("class", "favourite");
            }
            else if (context == "DETAIL") {
                if (results.d == "on") {
                    $('#pnlDetails').find("A[ID$='lnkAddToFavourites']").attr("class", "favouriteDetails active");
                    $('#pnlDetails').find("*[ID$='lnkAddToFavourites']").text("This Product is on your favourites list.");
                }
                else {
                    $('#pnlDetails').find("A[ID$='lnkAddToFavourites']").attr("class", "favouriteDetails");
                    $('#pnlDetails').find("*[ID$='lnkAddToFavourites']").html("This items is not on your favourites list.<br/>To add this to your favourites list click here");
                }
            }
            else {
                if (results.d == "on")
                    $('#' + pid).find("A[ID$='btnFavourites']").attr("class", "favourite active");
                else
                    $('#' + pid).find("A[ID$='btnFavourites']").attr("class", "favourite");
            }
        }
    });
}