﻿var US = 235;
var UK = 42;
var Canada = 81;

function ShowHideFilter(hiddenfieldID, mainDivID, footerDivID, buttonImageID, headerFooterImageID) {
    if(document.getElementById(hiddenfieldID).value == 'none'
            || document.getElementById(hiddenfieldID).value == ''
            || document.getElementById(hiddenfieldID).value == null) {
        document.getElementById(hiddenfieldID).value = 'inline';
        document.getElementById(buttonImageID).src = '/Images/nav/rightbar/filter_close.gif';
        document.getElementById(headerFooterImageID).src = '/Images/nav/rightbar/filterPanelHeaderBtm1.gif';
    }
    else {
        document.getElementById(hiddenfieldID).value = 'none';
        document.getElementById(buttonImageID).src = '/Images/nav/rightbar/filter_open.gif';
        document.getElementById(headerFooterImageID).src = '/Images/nav/rightbar/filterPanelHeaderBtm2.gif';
    }

    document.getElementById(mainDivID).style.display = document.getElementById(hiddenfieldID).value;
    document.getElementById(footerDivID).style.display = document.getElementById(hiddenfieldID).value;
}

function ShowFilterPanel(hiddenfieldID, mainDivID, footerDivID, buttonImageID, headerFooterImageID) {
    document.getElementById(hiddenfieldID).value = 'inline';
    document.getElementById(buttonImageID).src = '/Images/nav/rightbar/filter_close.gif';
    document.getElementById(headerFooterImageID).src = '/Images/nav/rightbar/filterPanelHeaderBtm1.gif';
    document.getElementById(mainDivID).style.display = document.getElementById(hiddenfieldID).value;
    document.getElementById(footerDivID).style.display = document.getElementById(hiddenfieldID).value;
}

function SetFilterHiddenField(triggerID, hiddenfieldID) {
    if(document.getElementById(triggerID) && document.getElementById(hiddenfieldID)) {
        document.getElementById(hiddenfieldID).value = document.getElementById(triggerID).innerHTML;
    }
}

function SetTextBoxFilterHiddenField(triggerID, hiddenfieldID) {
    if(document.getElementById(triggerID) && document.getElementById(hiddenfieldID)) {
        document.getElementById(hiddenfieldID).value = document.getElementById(triggerID).value;
    }
}

function SetCheckBoxFilterHiddenField(checkboxID, hiddenfieldID) {
    if(document.getElementById(checkboxID) && document.getElementById(hiddenfieldID)) {
        if(document.getElementById(checkboxID).checked) {
            document.getElementById(hiddenfieldID).value = document.getElementById(checkboxID).value;
        } else {
            document.getElementById(hiddenfieldID).value = '0';
        }
    }
}

/*
=================================================================================
Web methods
=================================================================================
*/

//webmethod for adding a product
function UpdateBasket(logonID, sessionID, ecommProductID, quantity, price, revAppID, revData) {

    // Get rid of any spaces first
    if(isNaN(quantity))
        quantity = quantity.replace(" ", "");

    if(isNaN(quantity) || quantity == '') {
        alert("Please enter a numeric value greater than zero");
        return false;
    }

    PageMethods.UpdateBasket(logonID, sessionID, ecommProductID, quantity, price, revAppID, revData, OnCallPerformUpdateBasketComplete, OnCallPerformUpdateBasketError, '');
    UpdateDeliveryCharge(logonID, sessionID);
}

function OnCallPerformUpdateBasketComplete(result, txtresult, methodName) {
    //window.location.reload();

    document.getElementById("divBasketList").innerHTML = result;
}

function OnCallPerformUpdateBasketError(error, userContext, methodName) {
    if(error !== null) {
        alert("error:  " + error.get_message());
    }
}

//webmethod for updating a quantity in the basket
function UpdateBasketQuantity(logonID, sessionID, ecommProductID, quantity, price, revData) {
    var basketID = "ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtQuantity" + GetBasketID(ecommProductID, revData);
    var currentQTY = Number(document.getElementById(basketID).value);

    if(currentQTY == 1 && quantity == -1 || currentQTY == 0) {
        if(currentQTY == 0)
            DeleteProduct(logonID, sessionID, ecommProductID, price)

        return;
    }

    if(isNaN(currentQTY) || currentQTY < 0)
        currentQTY = 1;

    quantity = (quantity == 0) ? Number(currentQTY) : currentQTY + Number(quantity);

    PageMethods.UpdateBasketQuantity(logonID, sessionID, ecommProductID, quantity, price, revData, OnCallPerformUpdateBasketQuantityComplete, OnCallPerformUpdateBasketQuantityError, '');
	
}

function GetBasketID(ecommProductID, revData) {
    var basketID;
    var size = "";
    var startIndex = 0, endIndex = 0;
    
    if (revData != "" && revData.indexOf("<size>") > -1) {
        startIndex = revData.indexOf("<size>") + 6;
        endIndex = revData.indexOf("</size>");
        
        size = revData.substring(startIndex, endIndex - startIndex);
    }

    if(size != "")
        basketID = ecommProductID + "_" + size.split(' ').join('');
    else
        basketID = ecommProductID;
        
    return basketID;
}

function OnCallPerformUpdateBasketQuantityComplete(result, txtresult, methodName) {
    var basketID = GetBasketID(result.ProductList[0].EcommProductID, result.ProductList[0].RevData);
    document.getElementById("ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtQuantity" + basketID).value = result.ProductList[0].Quantity;
    document.getElementById("spnProductPrice" + basketID).innerHTML = formatNumber((result.ProductList[0].Price * result.ProductList[0].Quantity), 2, -1, 0);
    document.getElementById("totalQuantity").innerHTML = result.TotalQuantity;
//    document.getElementById("totalBasketValue").innerHTML = "&pound;" + formatNumber(Number(result.TotalPrice) + Number(document.getElementById("orderDeliveryCharge").innerHTML), 2, -1, 0);
    document.getElementById("subtotalBasketValue").innerHTML = "&pound;" + formatNumber(result.TotalPrice, 2, -1, 0);

    UpdateDeliveryCharge();
}

function OnCallPerformUpdateBasketQuantityError(error, userContext, methodName) {
    if(error !== null) {
        alert(error.get_message());
    }
}



//webmethod for emptying the basket
function EmptyBasket(logonID, sessionID) {
    PageMethods.EmptyBasket(logonID, sessionID, OnCallPerformEmptyBasketComplete, OnCallPerformEmptyBasketError, '');
}

function OnCallPerformEmptyBasketComplete(result, txtresult, methodName) {
    document.getElementById("divBasketList").innerHTML = result.ResponseText;
}

function OnCallPerformEmptyBasketError(error, userContext, methodName) {
    if(error !== null) {
        alert(error.get_message());
    }
}

//webmethod for removing individual products from the basket
function DeleteProduct(logonID, sessionID, ecommProductID, price, revData, revAppID) {

    PageMethods.DeleteProduct(logonID, sessionID, ecommProductID, revData, revAppID, OnCallPerformDeleteProductComplete, OnCallPerformDeleteProductError, '');

    var basketID = GetBasketID(ecommProductID, revData);
    
    document.getElementById("productRow" + basketID).style.display = 'none';

    // Calculate new total
    if(document.getElementById("spanTotalPrice")) {
        var total = document.getElementById("spanTotalPrice").innerHTML;
        total = parseFloat(total.substring(1).replace(',', '')) - price;
        document.getElementById("spanTotalPrice").innerHTML = '&pound;' + total.toFixed(2).toLocaleString();
    }
}

// Webmethod for  deleting the donation from the ecomm basket.
function DeleteEcommDonation(logonID, sessionID, price) {

	PageMethods.DeleteEcommDonation(logonID, sessionID);

	document.getElementById("productRowDonation").style.display = 'none';

	// Calculate new total
	if (document.getElementById("spanTotalPrice")) {
		var total = document.getElementById("spanTotalPrice").innerHTML;
		total = parseFloat(total.substring(1).replace(',', '')) - price;
		document.getElementById("spanTotalPrice").innerHTML = '&pound;' + total.toFixed(2).toLocaleString();
	}
}

function OnCallPerformDeleteProductComplete(result, txtresult, methodName) {

    if(result == null || result.EcommBasketID == -1) {
        //document.getElementById("ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_btnSubmit").style.display = "none"; crashes..MaHo
        if(document.getElementById("divBasketList")) {
            document.getElementById("divBasketList").innerHTML = result.ResponseText;
        }
    }

    if(result == null || result.EcommBasketID == -1 && (document.getElementById("totalQuantity") || document.getElementById("totalBasketValue") || document.getElementById("subtotalBasketValue"))) {
        document.getElementById("NoItemsInBasket").style.display = getMSIEInline();
        document.getElementById("ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_pnlTotals").style.display = "none";
        document.getElementById("liSubmit").style.display = "none";
        return;
    }

    if(document.getElementById("totalQuantity")) {
        document.getElementById("totalQuantity").innerHTML = result.TotalQuantity;
    }

//    if(document.getElementById("totalBasketValue")) {
//        document.getElementById("totalBasketValue").innerHTML = "&pound;" + formatNumber(Number(result.TotalPrice) + Number(document.getElementById("orderDeliveryCharge").innerHTML), 2, -1, 0);
//    }

    if(document.getElementById("subtotalBasketValue")) {
        document.getElementById("subtotalBasketValue").innerHTML = "&pound;" + formatNumber(result.TotalPrice, 2, -1, 0);
    }

    UpdateDeliveryCharge();

}

function OnCallPerformDeleteProductError(error, userContext, methodName) {
    if(error !== null) {
        alert(error.get_message());
    }
}

//webmethod for putting billing address as the delivery address
function UseBillAddress(checkboxValue) {
    PageMethods.UseBillAddress(checkboxValue, null, OnCallPerformDeleteProductError, '');
}

function OnCallPerformUseBillAddressComplete(result, txtresult, methodName) {
    //document.getElementById("divBasketList").innerHTML = "<ul><li>There are currently no items in the Shopping Basket</li></ul>"
    //window.location.href = window.location.href;
}

function OnCallPerformUseBillAddressError(error, userContext, methodName) {
    if(error !== null) {
        alert(error.get_message());
    }
}

//webmethod for updating list of counties / states
function UpdateCountyList(countryID, countyDropDownID, stateID) {

    if (countyDropDownID == null)
        countyDropDownID = "ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_ddlCounty";

    if (stateID == null)
        stateID = "0";

    PageMethods.UpdateCountyList(countryID, countyDropDownID, stateID, OnCallPerformUpdateCountyComplete, OnCallPerformUpdateCountyError, '');
}

function OnCallPerformUpdateCountyComplete(result, txtresult, methodName) {
    var countyDropDownID = result[0];
    var arrOptionIDs = result[1];
    var arrOptionValues = result[2];
    var countryID = result[3];
    var stateID = result[4];

    if(document.getElementById(countyDropDownID)) {
        document.getElementById(countyDropDownID).options.length = 0;
        if(arrOptionIDs.length == 0) {
            document.getElementById("ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_liCounty").style.display = "none";
        }
        else {
            document.getElementById("ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_liCounty").style.display = "inline";
            for(var i = 0; i < arrOptionIDs.length; i++) {
                document.getElementById("ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_liCounty").style.display = "inline";
                document.getElementById("ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_ddlCounty").options[i] = new Option(arrOptionValues[i], arrOptionIDs[i]);
            }

            // Need to show Mandatory asterisk for County drop down if US or Canada is selected
            if (countryID == Canada || countryID == US) {
                document.getElementById("ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_lblCounty").style.display = "none";
                document.getElementById("ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_lblState").style.display = "inline";
            }
            else {
                document.getElementById("ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_lblCounty").style.display = "inline";
                document.getElementById("ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_lblState").style.display = "none";
            }
        }

        document.getElementById(countyDropDownID).value = stateID;
    }
    

    return false;

}

function OnCallPerformUpdateCountyError(error, userContext, methodName) {
    if(error !== null) {
        alert(error.get_message());
    }
}

function UpdateDeliveryCharge() {
    
    // Only do this if we're on the main basket page
    if (document.getElementById('ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_ddlDelivery')) 
        PageMethods.GeneratePostalChargeJS(OnCallUpdateDeliveryChargeComplete, OnCallUpdateDeliveryChargeError, '');
    else {
    	if(document.getElementById('totalBasketValue'))
    		document.getElementById('totalBasketValue').innerHTML = "&pound;" + formatNumber(Number(document.getElementById('subtotalBasketValue').innerHTML.substring(1, document.getElementById('subtotalBasketValue').innerHTML.length).replace(',','')), 2, -1, 0);
    		
    }
}

function OnCallUpdateDeliveryChargeComplete(result, txtresult, methodName) {
    if (result != null && result != "") {
        $('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_spanScript').html(result);
        if (typeof (BasketDeliveryObject) != 'undefined') {
            
            BasketDeliveryObject.BasketPrice = Number(document.getElementById('subtotalBasketValue').innerHTML.substring(1, document.getElementById('subtotalBasketValue').innerHTML.length));
            BasketDeliveryObject.DeliveryID = document.getElementById('ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_ddlDelivery').value;
            BasketDeliveryObject.CalculateBasketPrice();
        }

        if (typeof (BasketDeliveryObject) != 'undefined' && BasketDeliveryObject.DeliveryCost > 0) {
            document.getElementById('totalBasketValue').innerHTML = "&pound;" + formatNumber(BasketDeliveryObject.TotalPrice, 2, -1, 0);
            document.getElementById('orderDeliveryCharge').innerHTML = "&pound;" + formatNumber(BasketDeliveryObject.DeliveryCost, 2, -1, 0);

            PageMethods.UpdateDeliveryOption(BasketDeliveryObject.DeliveryID, null, null, '');
        }
        else {
            // Free delivery
            document.getElementById('ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_ddlDelivery').style.display = "none";
            document.getElementById('orderDeliveryCharge').innerHTML = "Free";
            document.getElementById('totalBasketValue').innerHTML = "&pound;" + formatNumber(Number(document.getElementById('subtotalBasketValue').innerHTML.substring(1, document.getElementById('subtotalBasketValue').innerHTML.length)), 2, -1, 0);
        }
    }
}


function OnCallUpdateDeliveryChargeError(error, userContext, methodName) {
    if (error !== null) {
        alert(error.get_message());
    }
}

function RetrieveAddressDetail() {
    if(document.getElementById('ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_chkUseBillAddress').checked == true)
        PageMethods.RetrieveAddressDetails(0, '', OnCallPerformRetrieveAddressDetailComplete, OnCallPerformRetrieveAddressDetailError, '');
    else {
        document.getElementById('ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtAddress').value = '';
        document.getElementById('ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtAddress2').value = '';
        document.getElementById('ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtAddress3').value = '';
        document.getElementById('ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtCity').value = '';

        document.getElementById('ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtPostcode').value = '';
        document.getElementById('ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtPhone').value = '';
        document.getElementById('ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtNewEmail').value = '';

        document.getElementById('ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_ddlCountry').value = UK;

        UpdateCountyList(UK, null);

    }
}

function OnCallPerformRetrieveAddressDetailComplete(result, txtresult, methodName) {
    if(result != null) {
        document.getElementById('ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtAddress').value = result.Address1;
        document.getElementById('ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtAddress2').value = result.Address2;
        document.getElementById('ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtAddress3').value = result.Address3;
        document.getElementById('ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtCity').value = result.City;

        document.getElementById('ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtPostcode').value = result.PostCode;
        document.getElementById('ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtPhone').value = result.Telephone;
        document.getElementById('ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtNewEmail').value = result.Email;
        document.getElementById('ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_ddlCountry').value = result.CountryID;

        UpdateCountyList(result.CountryID, null, result.StateID);

        
    } else {
        alert('Failed to retrieve billing address details, your session has expired, please return to the basket summary page.');
    }
}

function OnCallPerformRetrieveAddressDetailError(error, userContext, methodName) {
    if(error !== null) {
        alert(error.get_message());
    }
}

function RetrieveYourFavouritesOnComplete(result, txtResult, methodName) {
    document.getElementById("divYourFavourites").innerHTML = result;
}

function YourFavouritesError(error, userContext, methodName) {
    if (error != null)
    //alert(error.get_message());
        alert("An error occured while processing your request");
}




var HeadwayExtranet = new function() {
    this.SubmitStatsForm = function(clientID, table1, table2) {
        var fieldList1 = new Array();
        var valuesList1 = new Array();
        var fieldList2 = new Array();
        var valuesList2 = new Array();

        var index = 0;
        $('#' + table1).find('input').each(function() {
            fieldList1[index] = $(this).attr('name');
            valuesList1[index] = $(this).val();
            index++;
        });

        index = 0;
        $('#' + table2).find('input').each(function() {
            fieldList2[index] = $(this).attr('name');
            valuesList2[index] = $(this).val();
            index++;
        });

        PageMethods.SubmitStatsForm(clientID, fieldList1, valuesList1, fieldList2, valuesList2, SubmitStatsFormOnComplete, SubmitStatsFormOnError, '');

        function SubmitStatsFormOnComplete(result, txtResult, methodName) {
            $('#divMain').hide();
            $('#divSubmitted').show();
        }

        function SubmitStatsFormOnError(error, userContext, methodName) {
            if (error != null)
                alert("An error occured while processing your request:\n" + error.get_message());
            else
                alert("An error occured while processing your request");
        }
    }
}
