﻿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 updateValues(objK8)
{
    var strId = objK8.id.substring(0,objK8.id.lastIndexOf('_') + 1);
    var hdnTilesPerSqMtr = document.getElementById(strId + 'hdnTilesPerSqMtr');
    var hdnPricePerUnit = document.getElementById(strId + 'hdnPricePerUnit');
    var hdnVatRate = document.getElementById('hdnVatRate');
    var txtM2 = document.getElementById(strId + 'tbK8QtyM2');
    var txtNoUnits = document.getElementById(strId + 'tbK8Qty');
    var txtPrice = document.getElementById(strId + 'divK8Price');
    
    if (objK8.id == txtM2.id)
    {
        if (isNumeric(txtM2.value))
        {
            txtNoUnits.value = Math.ceil(txtM2.value*hdnTilesPerSqMtr.value);
        }
    }
    if (objK8.id == txtNoUnits.id)
    {
        if (isNumeric(txtNoUnits.value) && hdnTilesPerSqMtr.value > 0)
        {
            txtM2.value = (Math.floor((txtNoUnits.value/hdnTilesPerSqMtr.value)*100)/100).toFixed(2);
        }
    }
    var decPrice = (Math.round(txtNoUnits.value*hdnPricePerUnit.value*100))/100;
    decPrice = decPrice * hdnVatRate.value;
    txtPrice.innerHTML = formatCurrency(decPrice);
    if (isNumeric(txtNoUnits.value))
    {
        updateContent(strId,'update');  
    }
}

function updateContent(strId, strType)
{
    switch(strType)
    {
        case 'add':
            document.getElementById(strId + 'divContentK8').style.backgroundColor = '#ffffff';
            document.getElementById(strId + 'aAdd').firstChild.src = '/images/btn_add_cart.gif';
            document.getElementById(strId + 'aAdd').firstChild.alt = 'add to basket';
            document.getElementById(strId + 'divInBasket').style.visibility = 'hidden';
            document.getElementById(strId + 'aAdd').onclick = function() { return updateBasket(document.getElementById(strId + 'aAdd')); }
            break
        case 'update':
            if (document.getElementById(strId + 'divInBasket').style.visibility == 'visible')
            {
                document.getElementById(strId + 'divContentK8').style.backgroundColor = '#f9e0ec';
                document.getElementById(strId + 'aAdd').firstChild.src = '/images/btn_update_cart.gif';
                document.getElementById(strId + 'aAdd').firstChild.alt = 'update basket';
            }
            document.getElementById(strId + 'aAdd').onclick = function() { return updateBasket(document.getElementById(strId + 'aAdd')); }
            break
        case 'remove':
            document.getElementById(strId + 'divContentK8').style.backgroundColor = '#ffffff';
            document.getElementById(strId + 'aAdd').firstChild.src = '/images/btn_remove_cart.gif';
            document.getElementById(strId + 'aAdd').firstChild.alt = 'remove from basket';
            document.getElementById(strId + 'divInBasket').style.visibility = 'visible';
            document.getElementById(strId + 'aAdd').onclick = function() { return removeBasket(document.getElementById(strId + 'aAdd')); }
            break
    }
}

function updateBasket(objK8)
{
    var strId = objK8.id.substring(0,objK8.id.lastIndexOf('_') + 1);
    var hdnK8Id = document.getElementById(strId + 'hdnK8Id');
    var hdnTilesPerSqMtr = document.getElementById(strId + 'hdnTilesPerSqMtr');
    var hdnPricePerUnit = document.getElementById(strId + 'hdnPricePerUnit');
    var hdnUnitOfSale = document.getElementById(strId + 'hdnUnitOfSale');
    var txtM2 = document.getElementById(strId + 'tbK8QtyM2');
    var txtNoUnits = document.getElementById(strId + 'tbK8Qty');
    var txtPrice = document.getElementById(strId + 'divK8Price');
    var aDelete = document.getElementById(strId + 'aDelete');
    if (hdnK8Id.value == '' || hdnTilesPerSqMtr.value == '' || hdnPricePerUnit.value == '')
    {
        return false;
    }
    var intNoUnits = 0;
    var intInBasket = 0;
    if (isNumeric(txtNoUnits))
    {
        intNoUnits = txtNoUnits.value;
    }
    if (intNoUnits == 0)
    {
        txtNoUnits.value = 0;
    }
    if (intNoUnits > 0)
    {
        intInBasket = 1;
    }
    if (aDelete)
    {
        if (objK8.id == aDelete.id)
        {
            intInBasket = 0;
        }
    }
    var strRowId = strId;
//    f9e0ec
    
    if (hdnK8Id.value != '' && txtM2.value != '' && hdnPricePerUnit.value != '' && txtM2.value != '' && strRowId != '')
    {
        var dtNow = new Date();
        var requestTime = dtNow.getFullYear() + '-' + dtNow.getMonth() + '-' + dtNow.getDate() + '-' + dtNow.getTime();
        var strAddress = '/updateBasketXML.aspx?K8Id=' + hdnK8Id.value + '&NoUnits=' + intNoUnits + '&RowId=' + strRowId + '&InBasket=' + intInBasket + '&date=' + requestTime;
        xmlHttp.open("GET",strAddress,true);
        xmlHttp.onreadystatechange = function() { getBasketXML(); }
        xmlHttp.send(null);
    }
    return false;
}

function removeBasket(objK8)
{
    var strId = objK8.id.substring(0,objK8.id.lastIndexOf('_') + 1);
    var txtNoUnits = document.getElementById(strId + 'tbK8Qty');
    var txtM2 = document.getElementById(strId + 'tbK8QtyM2');
    var hdnTilesPerSqMtr = document.getElementById(strId + 'hdnTilesPerSqMtr');
    var hdnPricePerUnit = document.getElementById(strId + 'hdnPricePerUnit');
    var hdnVatRate = document.getElementById('hdnVatRate');
    var txtPrice = document.getElementById(strId + 'divK8Price');
    txtNoUnits.value = 0;
    updateBasket(objK8);
    txtNoUnits.value = 1;
    txtM2.value = (Math.floor((txtNoUnits.value / hdnTilesPerSqMtr.value) * 100) / 100).toFixed(2);
    var decPrice = (Math.round(txtNoUnits.value * hdnPricePerUnit.value * 100)) / 100;
    decPrice = decPrice * hdnVatRate.value;
    txtPrice.innerHTML = formatCurrency(decPrice);
    var strUrl = window.location.href;
    if (strUrl.indexOf('basket.aspx') > 0)
    {
        hideFromBasket(strId);
    }
    return false;
}

function hideFromBasket(strId)
{
    var divContentK8 = document.getElementById(strId + 'divContentK8');
    divContentK8.style.display = 'none';
    for (i=0;i<divContentK8.parentNode.childNodes.length;i++)
    {
        if(divContentK8.parentNode.childNodes[i].className == 'divBasketK8Item')
        {
            if (divContentK8.parentNode.childNodes[i].style.display != 'none')
            {
                return;
            }
        }
    }
    divContentK8.parentNode.style.display = 'none';
    window.location = window.location.href;
}

function getBasketXML()
{
    if (xmlHttp.readyState == 4)
    {
        var xmlResponse = xmlHttp.responseXML.documentElement;
        if (xmlResponse.getElementsByTagName('Basket').length > 0)
        {
            var xmlBasketResult = xmlResponse.getElementsByTagName('Basket')[0];
            var decTotal = xmlBasketResult.childNodes[1].firstChild.nodeValue;
            var decTotalVat = xmlBasketResult.childNodes[2].firstChild.nodeValue;
            var decCount = xmlBasketResult.firstChild.firstChild.nodeValue;
            if (window.location.href.indexOf('basket.aspx') > 0)
            {
                document.getElementById('ctl00_ContentPlaceHolder1_spanBasketCount').innerHTML = decCount;
                document.getElementById('ctl00_ContentPlaceHolder1_spanBasketTotal').innerHTML = formatCurrency(decTotalVat);
                document.getElementById('ctl00_ContentPlaceHolder1_divBasketTotalExcVat').innerHTML = formatCurrency(decTotal);
                document.getElementById('ctl00_ContentPlaceHolder1_divBasketVat').innerHTML = formatCurrency(decTotalVat - decTotal);
                document.getElementById('ctl00_ContentPlaceHolder1_divBasketTotalIncVat').innerHTML = formatCurrency(decTotalVat);
            }
            else
            {
                document.getElementById(strBasketID + 'spanItemsTotal').innerHTML = decCount;
                document.getElementById(strBasketID + 'spanPriceTotal').innerHTML = formatCurrency(decTotalVat);
                document.getElementById(strBasketID + 'divShoppingBasket').style.visibility = 'visible';
            }
            if (xmlBasketResult.childNodes[4].firstChild.nodeValue > 0)
            {
                updateContent(xmlBasketResult.childNodes[3].firstChild.nodeValue,'remove');
            }
            else
            {
                updateContent(xmlBasketResult.childNodes[3].firstChild.nodeValue,'add');
            }
        }
    }
}

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 getKey(e)
{
    if (window.event)
    {
        return window.event.keyCode;
    }
    else if (e != null)
    {
        return e.which;
    }
    else
    {
        return 0;
    }
}

function checkKeycode(e,obj)
{
    var intKey = getKey(e);
    if ((intKey == 27) || (intKey == 8) || (intKey == 9) || (intKey > 47 && intKey < 58) || (intKey > 95 && intKey < 106) || (intKey == 35) || (intKey == 46) || (intKey > 36 && intKey < 41) || (intKey == 110) || (intKey == 190))
    {
        if ((intKey == 110 || intKey == 190) && ((obj.value.indexOf('.')>0) || (obj.id.indexOf('tbK8QtyM2')<0)))
        {
            return false;
        }
        else
        {
            return true;
        }
    }
    return false;
}