/* 
Cart.js
Original Author: Jared Coleson


*/

var divOrder = null;
var divCart = null;
var divCartTotal = null;

function HandleEnter(e,btn){
    if (!e) var e = window.event;
        
    if (e.which || e.keyCode)
    {
        if ((e.which == 13) || (e.keyCode == 13)) 
        {
            var btnTag=document.getElementById(btn);
            if (btnTag)
            {
                btnTag.focus();
                btnTag.click();
            }
            return false;
        }
    } 
    else 
    {
        return true;
    }
}

function HandleNextTextBox(e,txt){
    if (!e) var e = window.event;
        
    if (e.which || e.keyCode)
    {
        if ((e.which == 13) || (e.keyCode == 13)) 
        {
            var txtTag=document.getElementById(txt);
            if (txtTag)
            {
                txtTag.focus();
            }
            return false;
        }
    } 
    else 
    {
        return true;
    }
}

function DisableEnter(e)
{
       if (!e) var e = window.event;
        
        if (e.which || e.keyCode)
        {
            if ((e.which == 13) || (e.keyCode == 13)) 
            {
                e.cancelBubble = true;
	            if (e.stopPropagation) e.stopPropagation();
                return false;
            }
        } 
        else 
        {
            return true;
        }
}

function LoadDefaultButtons()
{
    if (document.addEventListener) {
        document.addEventListener("keypress", DisableEnter, true);
    } else if (document.attachEvent) {
        window.attachEvent('onkeydown', DisableEnter);
    } else {
        if (document.onkeydown)
        {
            var oldkeydown = document.onkeydown;
            document.onkeydown = function() { if ( DisableEnter()) { return oldkeydown(); } else { return false; } };
        } else {
            document.onkeydown = DisableEnter;
        }
    }
    
    var x=document.getElementsByTagName('input');
    for (var i=0;i<x.length;i++)
    {
        if (x[i].getAttribute("defaultbutton"))
        {
            x[i].onkeydown = new Function("event","{return HandleEnter(event,'" + x[i].getAttribute("defaultbutton") + "');}");    
            
        }
        if (x[i].getAttribute("nexttextbox"))
        {
            x[i].onkeydown = new Function("event","{return HandleNextTextBox(event,'" + x[i].getAttribute("nexttextbox") + "');}");    
        }
    }
}


function Add2Cart() {
    var inputTags = document.getElementsByTagName("input");
    var cartTag = document.getElementById("CartStore");
    var inputTag;
    var arrayIndex;
    var tagName;
    var strCatalog, strVendor;
    var intPos;
    var postData = new Object();
    var oServer = new ServerRequest();
    var itemCount = 0;
    var btnCart = document.getElementById("btnCart");

    if (btnCart)
    {
        btnCart.oldValue =btnCart.value;
        btnCart.value="Adding Items...";
        btnCart.disabled="disabled";
    }
    
    loadDivVars();
    
    showCartLoading();
    
    // Search through all the input boxes on the page
    for (var arrayIndex=0;arrayIndex<inputTags.length;arrayIndex++) {
        inputTag = inputTags[arrayIndex];
        if (inputTag.getAttribute("type").toLowerCase() == "text"){
            tagName = inputTag.getAttribute("name");
            if (tagName && tagName.substring) {
                if (tagName.substring(0,7).toLowerCase() == "cart--|"){
                    //found tag with name starting with "cart--"
                    var qnty = inputTag.value+0;
                    var intMby = inputTag.getAttribute("multiplyby");
                    var intMof = inputTag.getAttribute("multiplesof");
                    if (intMby)  qnty * intMby;
                    if (intMof && (qnty % intMof) != 0)  
                    {
                        alert("Invalid Quantity");
                        return 
                    }
                    inputTag.getAttribute("name");
                    postData[tagName] = inputTag.value;
                    inputTag.value = "";
                    itemCount += 1;
                }
            }
        }
    }
    
    if (itemCount > 0) {
        postData.ItemCount = itemCount + ' '    // Load Item count for request
        postData.Store = cartTag.value;         // Load hidden store field
        oServer.OnComplete = ChartCallBack;     // set function to handle completed request
        oServer.OnError = ChartCallBackError;   // set function to handle error
        oServer.SendPostRequest("/Checkout/add2Chart.aspx",postData); //Send Request
    }
    return false;
}

function ChartCallBackError(status, statusText, responseText){
    
    loadDivVars();
    deleteTableRows(divCart);
    
    addTableRows(divCart, [["&nbsp;"],["<div class='smallred'>&nbsp;&nbsp;Error Loading Item!</div>"],["&nbsp;"]]  ,0);

    document.close();
    document.write(responseText);
    document.close();
    //window.alert(status + ' ' + statusText + '\n'+ responseText);

}

function ChartCallBack(serverResponse){
    
    var objReturn;
    
    loadDivVars();
    
    objReturn = serverResponse.parseJSON();
    
    deleteTableRows(divCart);
    
    if (objReturn && objReturn.errors)
    {
        alert(objReturn.errors);
    }
    
    //Add rows using array literal
    if (objReturn && objReturn.total && objReturn.items) {
        addTableRows(divCart, objReturn.items , 0);
        for( var rowSub = 0; rowSub < divCart.tBodies[0].rows.length; rowSub++ ) {
            divCart.tBodies[0].rows[rowSub].cells[0].setAttribute("width","30px");
            divCart.tBodies[0].rows[rowSub].cells[0].setAttribute("align","right");
            divCart.tBodies[0].rows[rowSub].cells[0].innerHTML = divCart.tBodies[0].rows[rowSub].cells[0].innerHTML + "&nbsp;";
            divCart.tBodies[0].rows[rowSub].cells[1].innerHTML = "&nbsp;" + divCart.tBodies[0].rows[rowSub].cells[1].innerHTML;
        }
        
        divCartTotal.innerHTML = objReturn.total;
        addTableRows(divCart, [['&nbsp;','<a href="/Checkout/cart.aspx">View All Items</a>']], 0);
    } else {
        addTableRows(divCart, [[serverResponse.Text()]] , 0);
        //addTableRows(divCart, [["&nbsp;"],["<div class='smallred'>&nbsp;&nbsp;Error Loading Cart!</div>"],["&nbsp;"]]  ,0);
    }
    
    var btnCart = document.getElementById("btnCart");
    if (btnCart)
    {
        btnCart.value=btnCart.oldValue;
        btnCart.disabled=null;
    }
}

function loadDivVars(){
    if (isNull(divOrder)){
        divOrder = document.getElementById("order");
        if (isNull(divOrder) && window.parent){
            divOrder = window.opener.document.getElementById("order");
        }
    }
    
    if (isNull(divCart)){
       divCart = document.getElementById("tblCart");
       if (isNull(divCart) && window.parent){
            divCart = window.opener.document.getElementById("tblCart");
        }
    }
    
    if(isNull(divCartTotal)) {
        divCartTotal = document.getElementById("CartTotal");
        if (isNull(divCartTotal) && window.parent){
            divCartTotal = window.opener.document.getElementById("CartTotal");
        }
    }
}

function showCartLoading(){
    divOrder.style.display = "block";
        
    deleteTableRows(divCart);
    
    addTableRows(divCart, [["&nbsp;"],["<div class='instructions'>&nbsp;&nbsp;Loading Items...</div>"],["&nbsp;"]] ,0);
    
    divCartTotal.innerHTML = "?.??";
}

function deleteTableRows(theTable) {
    if (theTable && theTable.tBodies[0]) {
        for( var rowSub = theTable.tBodies[0].rows.length - 1; rowSub >= 0; rowSub-- ) {
            theTable.tBodies[0].deleteRow(rowSub);
	    }
    }
}

//theTable - <table> tag elements
//rows - multi-dem array ie row[0][1] is the first row second column
//tBodiesSub index into theTable.tBodies, usually == 0
function addTableRows(theTable, rows, tBodiesSub) {
    if (rows.length) {
        for( var rowSub = 0; rowSub < rows.length; rowSub++ ) {
            if (rows[rowSub].length) {
                var newRow = theTable.ownerDocument.createElement('tr')
                
                
                for( var colSub = 0; colSub < rows[rowSub].length; colSub++ ) {
                    var newCol = theTable.ownerDocument.createElement('td');
                    newCol.innerHTML = rows[rowSub][colSub];
                    newRow.appendChild(newCol);
                }
                
                if (theTable.tBodies[tBodiesSub]) {
                    theTable.tBodies[tBodiesSub].appendChild(newRow);    
                }else {
                    if (!(theTable.tBodies[0])) {
                        theTable.appendChild(theTable.ownerDocument.createElement("TBODY"));
                    }
                    theTable.tBodies[0].appendChild(newRow);    
                }
            }
        }
    }
}


function isNull(a) {
    return typeof a == 'object' && !a;
}
