﻿//  Script file that supports the ShoppingCartPageBase class.
var containerPrefix = "ctl00_ContentPlaceHolder1_";

var itemRowPrefix = "rowItem";
var itemQtyEditPrefix = "editQty";
var itemRFCButtonPrefix = "btnRFC";
var itemPriceLabelPrefix = "lblItemPrice";
var itemExtPriceLabelPrefix = "lblExtPrice";
var cartSubTotalControlName = "lblOrderSubTotal";
var cartShippingHandlingName = "lblEstShipping";
var cartTaxName = "lblEstTax";
var cartOrderTotalName = "lblOrderTotalCost";

//  Click event handler for all remove from cart buttons.
function OnRemoveFromCart(ctrl) {
    if(self.EnableCallbackControls != null)
        self.EnableCallbackControls(false);
    
    var shipAddressID = "0";
    var shipMethodID = "0";
    
    if (self.selShipMethod != null) {    
        var optSM = selShipMethod.options[selShipMethod.selectedIndex];
        var optST = selShipTo.options[selShipTo.selectedIndex];
        
        shipAddressID = optST.value;
        shipMethodID = optSM.value;
    }

    DoSyncCallback("RemoveFromCart", "StandardEvalReturn", ctrl.getAttribute("ciID"), shipAddressID, shipMethodID);
}

//  onchange event handler for all quantity edits.
function OnUpdateQuantity(ctrl) {
    if(self.EnableCallbackControls != null)
        self.EnableCallbackControls(false);

    var shipAddressID = "0";
    var shipMethodID = "0";
    
    if (self.selShipMethod != null) {    
        var optSM = selShipMethod.options[selShipMethod.selectedIndex];
        var optST = selShipTo.options[selShipTo.selectedIndex];
        
        shipAddressID = optST.value;
        shipMethodID = optSM.value;
    }

    DoSyncCallback("UpdateCartQuantity", "StandardEvalReturn", ctrl.getAttribute("ciID"),
        ctrl.getAttribute("ccID"), ctrl.getAttribute("qtyPerPkg"), Trim(ctrl.value), 
        shipAddressID, shipMethodID);
}

//  Update the UI when an item has updated in the cart.
function UpdateUISetQuantity(ciID, qty, hideItemOnRemove, extPrice, cartSubTotal, 
    cartShipping, cartTax, cartTotal, itemCount, hasHazardousItems, hasQuoteItems,
    hasGSAItems) {
    var row = document.getElementById(containerPrefix + itemRowPrefix + ciID);

    var ctrlCartSubTotal = document.getElementById(containerPrefix + cartSubTotalControlName);
    var ctrlCartShipping = document.getElementById(containerPrefix + cartShippingHandlingName);
    var ctrlCartTax = document.getElementById(containerPrefix + cartTaxName);
    var crtlCartTotal = document.getElementById(containerPrefix + cartOrderTotalName);
    
    if(ctrlCartSubTotal != null)
        ctrlCartSubTotal.innerHTML = cartSubTotal;
    
    if(ctrlCartShipping != null)
        ctrlCartShipping.innerHTML = cartShipping;

    if(ctrlCartTax != null)
        ctrlCartTax.innerHTML = cartTax;

    if(crtlCartTotal != null)
        crtlCartTotal.innerHTML = cartTotal;

    if(self.EnableCallbackControls != null)
        self.EnableCallbackControls(true);

    if (qty == 0 && hideItemOnRemove == true) {
        ShowElement(row, false);
        ReGraybarGrid(row);

        if(self.OnPostItemRemove != null)
            self.OnPostItemRemove(itemCount, hasHazardousItems, hasQuoteItems, hasGSAItems);

        return;
    }
    
    var edt = document.getElementById(containerPrefix + itemQtyEditPrefix + ciID);
    var btn = document.getElementById(containerPrefix + itemRFCButtonPrefix + ciID);
    var lbl = document.getElementById(containerPrefix + itemExtPriceLabelPrefix + ciID);

    edt.value = (qty == 0) ? "" : qty;
    ShowElement(btn, (qty > 0));
    
    if(lbl != null && qty != 0)
        lbl.innerHTML = extPrice;
}

//  Adjust the graybar effect on an item grid once an item has been "removed".
function ReGraybarGrid(row) {
    var tbl = document.getElementById(row.getAttribute("tableID"));
    var rows = tbl.getElementsByTagName("tr");
    var currClass = "itemGreyBarEven";
    var bFirstVisRow = true;
    
    for (var i = 0; i < rows.length; i++) {
        var ciID = rows[i].getAttribute("ciID");

        if (ciID != null && rows[i].style.display != "none") {
            rows[i].className = currClass;
            currClass = (currClass == "itemGreyBarEven") ? "itemGreyBarOdd" : "itemGreyBarEven";
            
            if (bFirstVisRow == true) {
                var lblIP = document.getElementById(containerPrefix + itemPriceLabelPrefix + ciID);
                var lblEP = document.getElementById(containerPrefix + itemExtPriceLabelPrefix + ciID);
                
                if(lblIP != null && lblIP.innerHTML.length > 0 && lblIP.innerHTML.substr(0, 1) != "$")
                    lblIP.innerHTML = "$" + lblIP.innerHTML;

                if(lblEP != null && lblEP.innerHTML.length > 0 && lblEP.innerHTML.substr(0, 1) != "$")
                    lblEP.innerHTML = "$" + lblEP.innerHTML;
                    
                bFirstVisRow = false;
            }
        }
    }
}

//  [Add to Cart] button handler.  Mostly just prevents a postback if no item
//  numbers have been entered in the textboxes.
function OnQuickOrderSearch() {
    if (Trim(editItemNo1.value).length > 0)
        return true;

    if (Trim(editItemNo2.value).length > 0)
        return true;

    if (Trim(editItemNo3.value).length > 0)
        return true;

    if (Trim(editItemNo4.value).length > 0)
        return true;

    if (Trim(editItemNo5.value).length > 0)
        return true;

    return false;
}

