﻿var xmlHttp = false;
try {
    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
    try {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e2) {
        xmlHttp = false;
    }
}

if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
    xmlHttp = new XMLHttpRequest();
}

function getKey(e) {
    if (window.event) {
        return window.event.keyCode;
    }
    else if (e != null) {
        return e.which;
    }
    else {
        return 0;
    }
}

function quickOrder(obj, e) {
    //obj.onblur = function() { if (this.value == '') { this.value = 'Enter product code'; } document.getElementById('divQuickOrderSelect').style.visibility = 'hidden'; }
    var intKey = getKey(e);
    if (intKey == 38 || intKey == 40) {
        checkScrollAction(intKey);
    }
    else if (intKey == 13) {
        //obj.form.submit();
    }
    else {
        var dtNow = new Date();
        var requestTime = dtNow.getFullYear() + '-' + dtNow.getMonth() + '-' + dtNow.getDate() + '-' + dtNow.getTime();
        var strAddress = '/SearchXML.aspx?Search=' + obj.value + '&date=' + requestTime;
        xmlHttp.open("GET", strAddress, true);
        xmlHttp.onreadystatechange = function() { getSearchXML(obj); }
        xmlHttp.send(null);
    }
}

var divQuickOrderSelect;
var hdnQuickOrder;
var taQuickOrder;
var tbQuickOrder;

function getSearchXML(obj) {
    if (xmlHttp.readyState == 4) {
        var xmlResponse = xmlHttp.responseXML.documentElement;
        divQuickOrderSelect = document.getElementById('divQuickOrderSelect');
        hdnQuickOrder = document.getElementById('hdnQuickOrder');
        taQuickOrder = document.getElementById('taQuickOrder');
        tbQuickOrder = document.getElementById('tbQuickOrder');
        divQuickOrderSelect.innerHTML = '';
        if (xmlResponse.getAttribute('TotalItems') > 0) {
            for (i = 0; i < xmlResponse.childNodes.length; i++) {
                var divQuickOrder = document.createElement('div');
                divQuickOrder.onclick = function() { quickOrderClick(this); divQuickOrderSelect.style.visibility = 'hidden'; }
                var hdnProductId = document.createElement('input');
                hdnProductId.type = 'hidden';
                hdnProductId.value = xmlResponse.childNodes[i].getAttribute('ProductID');
                var hdnProductDesc = document.createElement('input');
                hdnProductDesc.type = 'hidden';
                hdnProductDesc.value = xmlResponse.childNodes[i].firstChild.nodeValue;
                var divProductName = document.createElement('div');
                divProductName.innerHTML = xmlResponse.childNodes[i].getAttribute('ProductName');
                divQuickOrder.appendChild(hdnProductId);
                divQuickOrder.appendChild(hdnProductDesc);
                divQuickOrder.appendChild(divProductName);
                divQuickOrderSelect.appendChild(divQuickOrder);
                if (i == 0) {
                    divQuickOrder.className = 'divQuickSelect';
                    hdnQuickOrder.value = hdnProductId.value;
                    taQuickOrder.innerHTML = hdnProductDesc.value;
                }
                else {
                    divQuickOrder.className = 'divQuickOrder';
                }
            }
            divQuickOrderSelect.style.visibility = 'visible';
        }
        else {
            divQuickOrderSelect.style.visibility = 'hidden';
            taQuickOrder.innerHTML = '';
            hdnQuickOrder.value = '';
        }
    }
}
function quickOrderSubmit() {
    addToCart(hdnQuickOrder.value);
    divQuickOrderSelect.style.visibility = 'hidden';
    return false;
}
function quickOrderClick(obj) {
    for (i = 0; i < obj.parentNode.childNodes.length; i++) {
        obj.parentNode.childNodes[i].className = 'divQuickOrder';
    }
    divQuickOrderSelect.style.visibility = 'visible';
    obj.className = 'divQuickSelect';
    hdnQuickOrder.value = obj.firstChild.value;
    taQuickOrder.innerHTML = obj.childNodes[1].value;
    tbQuickOrder.value = obj.childNodes[2].firstChild.nodeValue;
}
function checkScrollAction(intKey) {
    var selectedIndex = 0;
    if ((intKey == 38) || (intKey == 40)) {
        if (divQuickOrderSelect.childNodes.length > 0) {
            for (i = 0; i < divQuickOrderSelect.childNodes.length; i++) {
                if (divQuickOrderSelect.childNodes[i].className == 'divQuickSelect') {
                    selectedIndex = i;
                }
            }
            if (intKey == 38) {
                if (selectedIndex > 0) {
                    selectedIndex -= 1;
                }
            }
            else {
                if (selectedIndex < divQuickOrderSelect.childNodes.length - 1) {
                    selectedIndex += 1;
                }
                else {
                    selectedIndex = divQuickOrderSelect.childNodes.length - 1;
                }
            }
            quickOrderClick(divQuickOrderSelect.childNodes[selectedIndex]);
        }
    }
}
function checkKeycode(e, obj) {
    var intKey = getKey(e);
    if (isNumeric(String.fromCharCode(intKey)) || (intKey == 27) || (intKey == 8)) {
        return true;
    }
    else if (intKey == 13) {
        updateBasket(obj);
    }
    return false;
}

function updateBasket(obj) {
    var strProductID = obj.id.substring(4);
    var intQuantity = obj.value;
    makeRequest(strProductID, intQuantity, '', obj);
}

function addToCart(strProductID, obj) {
    makeRequest(strProductID, 1, 'plus', obj);
    return false;
}

function removeFromCart(strProductID, obj) {
    makeRequest(strProductID, 1, 'minus', obj);
    return false;
}

function makeRequest(strProductID, intQuantity, strAmend, obj) {
    var dtNow = new Date();
    var requestTime = dtNow.getFullYear() + '-' + dtNow.getMonth() + '-' + dtNow.getDate() + '-' + dtNow.getTime();
    var strAddress = '/BasketXML.aspx?ProductID=' + strProductID + '&Quantity=' + intQuantity + '&date=' + requestTime;
    if (strAmend) {
        strAddress += '&Amend=' + strAmend;
    }
    xmlHttp.open("GET", strAddress, true);
    xmlHttp.onreadystatechange = function() { getBasketXML(strProductID, obj); }
    xmlHttp.send(null);
}

function basketSubmit() {
    return true;
}

function formatCurrency(decValue) {
    var delimiter = ',';
    decValue = parseFloat(decValue);
    decValue = decValue.toFixed(2);
    var a = decValue.toString()
    a = a.split('.', 2);
    var d = a[1];
    var i = parseInt(a[0]);
    if (isNaN(i)) { return ''; }
    var n = new String(i);
    var a = [];
    while (n.length > 3) {
        var nn = n.substr(n.length - 3);
        a.unshift(nn);
        n = n.substr(0, n.length - 3);
    }
    if (n.length > 0) {
        a.unshift(n);
    }
    n = a.join(delimiter);
    var strCurrency;
    if (d.length < 1) {
        strCurrency = n;
    }
    else {
        strCurrency = n + '.' + d;
    }
    return '£' + strCurrency;
}

function isNumeric(strText) {
    var strValidChars = "0123456789";
    var blIsNumber = true;
    var chChar;

    for (i = 0; i < strText.length && blIsNumber == true; i++) {
        chChar = strText.charAt(i);
        if (strValidChars.indexOf(chChar) == -1) {
            blIsNumber = false;
        }
    }
    return blIsNumber;
}

function getBasketXML(strProductID, obj) {
    if (xmlHttp.readyState == 4) {
        var xmlResponse = xmlHttp.responseXML.documentElement;
        var decPrice = xmlResponse.getAttribute('TotalPrice')
        var decDelivery = xmlResponse.getAttribute('Delivery')
        var decGrandTotal = xmlResponse.getAttribute('GrandTotal')
        var intItems = xmlResponse.getAttribute('TotalItems');
        var strItems = ' items';
        if (intItems == 1) {
            strItems = ' item';
        }
        document.getElementById('ctl00_spanCartItems').innerHTML = intItems + strItems;
        document.getElementById('ctl00_spanCartTotal').innerHTML = formatCurrency(decPrice);
        var blFound = false;
        if (document.getElementById('ctl00_ContentPlaceHolder1_divTotal')) {
            //            var decVat = decPrice * document.getElementById('ctl00_ContentPlaceHolder1_hdnVatRate').value;
            //            document.getElementById('ctl00_ContentPlaceHolder1_divSubTotal').innerHTML = formatCurrency(decPrice);
            //            document.getElementById('ctl00_ContentPlaceHolder1_divVat').innerHTML = formatCurrency(decVat);
            document.getElementById('ctl00_ContentPlaceHolder1_divTotal').innerHTML = formatCurrency(decPrice); // + parseFloat(decVat));
            document.getElementById('ctl00_ContentPlaceHolder1_divDelivery').innerHTML = formatCurrency(decDelivery);
            document.getElementById('ctl00_ContentPlaceHolder1_divGrandTotal').innerHTML = formatCurrency(decGrandTotal);
            if (strProductID > 0) {
                if (xmlResponse.getElementsByTagName('Product').length > 0) {
                    for (var i = 0; i < xmlResponse.getElementsByTagName('Product').length; i++) {
                        var xmlProduct = xmlResponse.getElementsByTagName('Product')[i];
                        if (xmlProduct.getAttribute('ProductID') == strProductID) {
                            blFound = true;
                            if (document.getElementById('qty_' + strProductID)) {
                                document.getElementById('qty_' + strProductID).value = xmlProduct.getAttribute('Quantity');
                                var price = parseFloat(xmlProduct.getAttribute('ProductRetailPrice'));
                                var del = parseFloat(xmlProduct.getAttribute('DeliverySurcharge'));
                                var qty = parseInt(xmlProduct.getAttribute('Quantity'));
                                document.getElementById('tot_' + strProductID).innerHTML = formatCurrency(price * qty);
                                document.getElementById('del_' + strProductID).innerHTML = formatCurrency(del * qty);
                            }
                            else {
                                window.location = '/Basket.aspx';
                            }
                        }
                    }
                }
                else {
                    window.location = 'Basket.aspx';
                }
                if (!blFound) {
                    document.getElementById('row_' + strProductID).style.display = 'none';
                }
            }
        }
        else if (obj) {
            var divProductBasket = document.getElementById('divProductBasket_' + strProductID);
            if (strProductID > 0) {
                if (xmlResponse.getElementsByTagName('Product').length > 0) {
                    for (var i = 0; i < xmlResponse.getElementsByTagName('Product').length; i++) {
                        var xmlProduct = xmlResponse.getElementsByTagName('Product')[i];
                        if (xmlProduct.getAttribute('ProductID') == strProductID) {
                            blFound = true;
                            document.getElementById('qty_' + strProductID).value = xmlProduct.getAttribute('Quantity');
                        }
                    }
                }
            }
            if (blFound) {
                divProductBasket.style.visibility = 'visible';
            }
            else {
                divProductBasket.style.visibility = 'hidden';
            }
        }
    }
}
var popupWindow;
function popup(url) {
    popupWindow = window.open(url, 'popup', 'width=613, height=500, scrollbars=yes, status=no, toolbar=no, directories=no, menubar=no, location=no, resizable=no');
    popupWindow.focus();
    return false;
}

function print(url) {
    popup(url);
    popupWindow.print();
    return false;
}

function expandSiteMap(obj) {
    if (obj.parentNode.parentNode.childNodes.length > 1) {
        obj.parentNode.parentNode.childNodes[1].style.display = 'block';
        obj.onclick = function() { return contractSiteMap(this); }
        obj.firstChild.src = '/Assets/Images/sitemapContract.gif';
        obj.firstChild.alt = 'contract';
        return false;
    }
    else {
        return true;
    }
}

function contractSiteMap(obj) {
    obj.parentNode.parentNode.childNodes[1].style.display = 'none';
    obj.onclick = function() { return expandSiteMap(this); }
    obj.firstChild.src = '/Assets/Images/sitemapExpand.gif';
    obj.firstChild.alt = 'expand';
    return false;
}

function rollup(objid) {
    var obj = document.getElementById(objid);
    if (obj.style.display == 'none') {
        obj.style.display = 'block';
        obj.style.height = '0px';
        expandSections(obj);
    }
    else {
        rollupSections(obj);
    }
}

var t;
function expandSections(obj) {
    if (obj.offsetHeight < obj.getAttribute('ch')) {
        if ((obj.offsetHeight + 20) > obj.getAttribute('ch')) {
            obj.style.height = obj.getAttribute('ch') + 'px';
        }
        else {
            obj.style.height = (obj.offsetHeight + 20) + 'px';
        }
        t = setTimeout(function () { expandSections(obj) }, 10);
    }
    else {
        clearTimeout(t);
    }
}

function rollupSections(obj) {
    if (obj.offsetHeight > 0) {
        if ((obj.offsetHeight - 20) < 0) {
            obj.style.height = '0px';
        }
        else{
            obj.style.height = (obj.offsetHeight - 20) + 'px';
        }
        t = setTimeout(function () { rollupSections(obj) }, 10);
    }
    else {
        obj.style.height = '0px';
        obj.style.display = 'none';
        clearTimeout(t);
    }
}
