﻿
/* JAVASCRIPT to handle the MASTER PAGE functionality */
var oGlobal=new Object();

function sls_web_service_calls() {

    switch (arguments[0]) {

        case 'search':

            if ($get(oGlobal.searchText).value.toLowerCase() == "search" || $get(oGlobal.searchText).value == "")
            { /* DO NOTHING */ }
            else {
                $get(oGlobal.searchText).value = $get(oGlobal.searchText).value.replace("&", "and");
                slsWebServices.getSearchURL($get(oGlobal.searchText).value, 'PRODUCT', 1, searchJump);
            }
            break;

        case 'add':
     
            var maxOrderQty = oGlobal.maxOrderQty;
            if (isQuantityNumeric($get(arguments[2]).value, true)) {
                if (parseInt($get(arguments[2]).value, 10) > parseInt(maxOrderQty, 10)) {
                    alert('Your order quantity exceeds the allowed order limit of ' + maxOrderQty + '.\nPlease contact SLS to discuss your order.');
                }
                else {
                    slsWebServices.addToBasket(arguments[1], $get(arguments[2]).value, refreshScreen);
                }
            }
            break;

        case 'addToDistributorBasket':

            var maxOrderQty = oGlobal.maxOrderQty;
            if (isQuantityNumeric($get(arguments[2]).value, true)) {
                if (parseInt($get(arguments[2]).value, 10) > parseInt(maxOrderQty, 10)) {
                    alert('Your order quantity exceeds the allowed order limit of ' + maxOrderQty + '.');
                }
                else {
                    slsWebServices.addToDistributorBasket(arguments[1], $get(arguments[2]).value, initiateDistributorSend);
                }
            }
            break;

        case 'update':
            var maxOrderQty = oGlobal.maxOrderQty;                
            if (isQuantityNumeric($get(arguments[2]).value, false)) {
                if (parseInt($get(arguments[2]).value, 10) > parseInt(maxOrderQty, 10)) {
                    alert('Your order quantity exceeds the allowed order limit of ' + maxOrderQty + '.\nPlease contact SLS to discuss your order.');
                }
                else {
                    slsWebServices.updateProductQuantityBasket(arguments[1], $get(arguments[2]).value, refreshScreen);
                }
            }
            break;                
        
        case 'remove':
            slsWebServices.removeFromBasket(arguments[1], refreshScreen);
            break;

        case 'login':
            slsWebServices.userLogin($get(arguments[1]).value, $get(arguments[2]).value, refreshScreen);
            break;

        case 'setAccount':
            slsWebServices.setUserAccount(arguments[1], refreshScreen);
            break;

        case 'logoff':
            slsWebServices.userLogoff(refreshScreen);
            break;

        case 'requestQuote':
            if (isQuantityNumeric($get(arguments[2]).value, true)) {
                slsWebServices.storeRequestAQuote(arguments[1], $get(arguments[2]).value, quoteJump);
            }
            break;
  
        case 'loadFav':
            slsWebServices.loadASavedBasket(arguments[1], refreshScreen);
            break;

        case 'deleteFav':
            slsWebServices.deleteASavedBasket(arguments[1], refreshScreen);
            break;
            
        case 'sessionAlive':
            slsWebServices.keepSessionAlive(keepSessionAlive);
            break;
            
        case 'ecatalogue':
            slsWebServices.storeECatalogueInAudit();
            break;

        case 'SLSCorporateBrochure':
            slsWebServices.storeSLSCorporateBrochureInAudit();
            break;
            
        case 'selectDeliveryAddress':
            slsWebServices.selectDeliveryAddress(arguments[1], refreshScreen);
            break;
            
        case 'setDeliveryAddressAsDefault':
            slsWebServices.setDeliveryAddressAsDefault(arguments[1], refreshScreen);
            break;
            
        case 'removeDeliveryAddress':
            slsWebServices.removeDeliveryAddress(arguments[1], refreshScreen);
            break; 
            
        case 'addFavourite':
            slsWebServices.addToFavourites(arguments[1], refreshScreen);
            break;                                   

        case 'removeFavourite':
            slsWebServices.removeFromFavourites(arguments[1], refreshScreen);
            break;                                   
                 
    }

    return false;
}


function initiateDistributorSend() {
    
    // Set Distributor IFRAME source to initiate the post back
    $('#distributorPostBack').attr('src', oGlobal.distributorSendURL);
}

function refreshScreen(passedValue) {

    //  Load the returned XML
    //  only continue if okay

    if (xmlLoad(passedValue)) {

        // The sls_web_service_calls - search routine now includes a <FORM> cancel on the submit event
        // Due to an issue with the search product locator forcing a submit on enter
        // which overrode the web service call for the new product (i.e. Previous product was redisplayed)

        try {
            var localForm = document.forms['aspnetForm'];
            if (!localForm) {
                localForm = document.aspnetForm;
            }

            // Remove the cancel submit to allow button to force a postback
            localForm.onsubmit = null;
        }
        catch(e) {}
        
        var btn = $get(oGlobal.buttonRefresh);
        if (btn) btn.click();
    }
}


function quoteJump(passedValue) {


    //  Load the returned XML
    //  only continue if okay

    if (passedValue == "") {
    }
    else {
        window.location = passedValue
    }
    
}


function searchJump(searchURL) {

    if (searchURL == "") {
    }
    else {

        window.setTimeout("window.location = '" + searchURL + "';", 250); 
    }

}


function isEnterKeyPressed(inField, e) {

    var charCode;
    if (e && e.which) {
        charCode = e.which;
    } 
    else if (window.event) {
        e = window.event; charCode = e.keyCode;
    }

    if (charCode == 13) {
        return true;
    }
    else {
        return false;
    }

}

function isQuantityNumeric(qty, zeroCheck) {

    var strValidChars = "0123456789";
    var strChar;
    var blnResult = true;

    if (qty.length == 0) {
        blnResult = false;
    }else {
        for (i = 0; i < qty.length && blnResult == true; i++)
        {
            strChar = qty.charAt(i);
            if (strValidChars.indexOf(strChar) == -1)
            {
                blnResult = false;
            }
        }

    }
    
    if (zeroCheck == true) {
        if (qty == '0') {
            blnResult = false;
        }
    }

    if (blnResult == true) {
        return true;
    }
    else {
        alert('The quantity must be a postive whole number.');
        return false;
    }

}

function keepSessionAlive()
{
    window.setTimeout("sls_web_service_calls('sessionAlive')", 600000);
}


window.setTimeout("sls_web_service_calls('sessionAlive')", 600000);


//************************************************************************************************************		
//** P R E - L O A D E R   F U N C T I O N S     		
//************************************************************************************************************

function preloadImages() {
    var d = document; 
    if (d.images) { if (!d.p) d.p = new Array(); var i, j = d.p.length, a = preloadImages.arguments; for (i = 0; i < a.length; i++) if (a[i].indexOf("#") != 0) { d.p[j] = new Image; d.p[j++].src = a[i]; } } 
}

//************************************************************************************************************		
//** X M L   L O A D E R   F U N C T I O N S     		
//************************************************************************************************************

function xmlLoad(xml_string) {

    xml_string = unescape(xml_string);
  
    if ($.browser.msie) {
        
        // ** Internet Explorer
        var xmlDoc = new ActiveXObject('Microsoft.XMLDOM');

        xmlDoc.async = false;

        var loadResult = xmlDoc.loadXML(xml_string);

        if (!loadResult) {
            alert('XML Load Error!\nXML failed to load.\nCode:' + xmlDoc.parseError.errorCode + ", " + xmlDoc.parseError.reason);
            return false;
        }

        if (xmlDoc.selectSingleNode('//status')) {

            switch (xmlDoc.selectSingleNode('//status').text) {

                case "FAIL":
                    alert(xmlDoc.selectSingleNode('//message').text)
                    return false;
                    break;
            }
        }
    }
    else {
        
        // ** Firefox 
        var xmlParser = new DOMParser();

        var xmlDoc = xmlParser.parseFromString(xml_string, 'text/xml');

        var oElement = xmlDoc.evaluate('//status', xmlDoc, null, XPathResult.ANY_TYPE, null);

        switch (oElement.iterateNext().textContent.toUpperCase()) {

            case "FAIL":
                alert(xmlDoc.evaluate('//message', xmlDoc, null, XPathResult.ANY_TYPE, null).iterateNext().textContent);
                return false;
                break;
        }
    }

    return true;
}

function processClick(el) {

    try {

        if (window.addEventListener) {
            var Event = document.createEvent('MouseEvents');
            Event.initEvent('click', false, false);
            document.getElementById(el).dispatchEvent(Event);
        }
        else {

            document.getElementById(el).click();
        }
    }
    catch (e) { }
}
