var httpRequest;

function pUpdateBasketSummary()
{
    // Only continue processing if we have completed the work from the XMLHTTP request
    if (httpRequest.readyState != 4 || httpRequest.status != 200)
    {
        return;
    }
    var tokens = new Array();
    tokens = httpRequest.responseText.split('/')
    
    var numberOfItems = 0;
    var totalGBP = 0;

    var basketGUIDSpan = document.getElementById("BasketGUID");
    var messageSpan = document.getElementById("BasketMessage");

    
    if (tokens.length == 3)
    {
        
        
        if (basketGUIDSpan != null)
        {
            basketGUIDSpan.innerHTML = tokens[0];
        }

        
        numberOfItems = parseInt(tokens[1]);
        totalGBP = parseFloat(tokens[2]);

        // Write the appropriate message to the summary box
        var message = '';
        
        var numberOfItemsString = numberOfItems + '';
        
        if (numberOfItems == 0)
        {
            message = 'Your basket is empty';
        }
        
        if (numberOfItems == 1)
        {
            message = numberOfItemsString + ' item / &pound;' + totalGBP.toFixed(2);
        }
                
        if (numberOfItems > 1)
        {
            message = numberOfItemsString + ' items / &pound;' + totalGBP.toFixed(2);
        }
                
        messageSpan.innerHTML = message;
    }
    

}

function pAddToBasket(contributorCode, itemCode, formatCode, itemName, paypalItemName, quantity, cost)
{
    var strQuantity = quantity + "";
    var strCost = cost + "";
    
    var basketGUID;
    
    var basketGUIDSpan = document.getElementById("BasketGUID");

    if (basketGUIDSpan != null)
    {
        basketGUID = basketGUIDSpan.innerHTML;
    }
    else
    {
        basketGUID = "";
    }

    var url = "AddToBasket.aspx?BasketGUID=" + basketGUID + "&ContributorCode=" + contributorCode + "&ItemCode=" + itemCode
                                             + "&FormatCode=" + formatCode + "&ItemName=" + itemName + "&PaypalItemName=" + paypalItemName 
                                             + "&Quantity=" + strQuantity + "&Cost=" + strCost;
    if (window.XMLHttpRequest) 
    {
        // branch for native XMLHttpRequest object
        httpRequest = new XMLHttpRequest();
        httpRequest.abort();
        httpRequest.onreadystatechange = pUpdateBasketSummary;
        httpRequest.open("POST", url, true);
        httpRequest.send('');
    }
    else if (window.ActiveXObject) 
    {
        // branch for IE/Windows ActiveX version
        httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
        if (httpRequest) 
        {
            httpRequest.abort();
            httpRequest.onreadystatechange = pUpdateBasketSummary;
            httpRequest.open("POST", url, true);
            httpRequest.send();
        }
    }

}



function pValidateAndSubmitBasket()
{
    var result = true;
    
    var inputArray = document.frmBasket.elements;
    
    for (var i = 0 ; i < inputArray.length ; i++)
    {

        // Get the error field - we will set it, no matter what happens

        var tokens = inputArray[i].name.split("_");
        
        var errElementName = "err_" + tokens[1] + "_" + tokens[2];
        
        var errElement = document.getElementById(errElementName);
        
        // Get the error message field

        var errMsg = document.getElementById("ErrorMessage");

        var testString = inputArray[i].value;
        
        if (!isNumeric(testString))
        {
            errElement.innerHTML = "*";
            
            result = false;
        }
        else
        {
            errElement.innerHTML = "";
            
        }
    
    }
    
    // If the validation passed, then submit the form
    if (result)
    {
        errMsg.style.display = "none";

        document.frmBasket.submit();
    }
    else
    {
        errMsg.style.display = "block";
    }
    
}


function isNumeric(input)
{
    var validChars = "0123456789";
    var singleChar;
    var result = true;

    if (input.length == 0)
    {
        // If the string is empty - it's a no-no.
        return false;
    }
    
    // If we get this far, check each individual character
    for (var i = 0 ; i < input.length && result == true ; i++)
    {
        singleChar = input.charAt(i);
        
        if (validChars.indexOf(singleChar) == -1)
        {
            result = false;
        }
    }
    
    if (result)
    {
        // We have an integer, so let's make sure that it is at least 1.
        
        var number = parseInt(input);
        
        if (number < 1)
        {
            result = false;
        }
    }

    return result;

}


function doCheckout(formName)
{

    var result = true; 
    
    var inputArray = document.frmBasket.elements;
    
    for (var i = 0 ; i < inputArray.length ; i++)
    {

        // Get the error field - we will set it, no matter what happens

        var tokens = inputArray[i].name.split("_");
        
        var errElementName = "err_" + tokens[1] + "_" + tokens[2];
        
        var errElement = document.getElementById(errElementName);
        
        // Get the error message field

        var errMsg = document.getElementById("ErrorMessage");

        var testString = inputArray[i].value;
        
        if (!isNumeric(testString))
        {
            errElement.innerHTML = "*";
            
            result = false;
        }
        else
        {
            errElement.innerHTML = "";
            
        }
    
    }
        
    // If the validation passed, then submit the form
    if (result)
    {
        errMsg.style.display = "none";

        document.frmBasket.submit();
        
        synchronisePayPalForms();
    }
    else
    {
        errMsg.style.display = "block";
    }
    
    if (result)
    {
        var command = "document." + formName + ".submit();";
    
        eval(command);
    }

}

