var nItems = 0;
var total = 0;
var totalwt = 0;
var shipcost = 0;
var handlecost = 0;
var taxcost = 0;
var nCartFlds = 20;
var nShipFlds = 14;
var nCookies = 0;
var arCookies = new Array();
var shipdetails = new ew_ShipItem();
if (ew_cartAction == 0) {
    LoadCart()
} else if (ew_cartAction == 1) {
    ClearCart();
    LoadCart()
}
function ew_CartItem() {
    this.itemnumber = "";
    this.itemname = "";
    this.amt = 0;
    this.qty = 0;
    this.shipping = 0;
    this.shipping2 = 0;
    this.handling = 0;
    this.tax = 0;
    this.on0 = "";
    this.on1 = "";
    this.os0 = "";
    this.os1 = "";
    this.discounttype = -1;
    this.shiptype = -1;
    this.taxtype = -1;
    this.on2 = "";
    this.on3 = "";
    this.os2 = "";
    this.os3 = "";
    this.wt = 0;
    this.fromArray = ew_CartItemFromArray;
    this.toArray = ew_CartItemToArray;
    this.isSame = ew_IsSameCartItem;
    this.isSameItemNo = ew_IsSameCartItemNo;
    this.toString = ew_CartItemToString;
    this.fromString = ew_CartItemFromString
}
function ew_CartItemFromArray(ar) {
    if (ar.length != nCartFlds) return false;
    this.itemnumber = ar[0];
    this.itemname = ar[1];
    this.amt = ar[2];
    this.qty = ar[3];
    this.shipping = ar[4];
    this.shipping2 = ar[5];
    this.handling = ar[6];
    this.tax = ar[7];
    this.on0 = ar[8];
    this.on1 = ar[9];
    this.os0 = ar[10];
    this.os1 = ar[11];
    this.discounttype = ar[12];
    this.shiptype = ar[13];
    this.taxtype = ar[14];
    this.on2 = ar[15];
    this.on3 = ar[16];
    this.os2 = ar[17];
    this.os3 = ar[18];
    this.wt = ar[19];
    return true
}
function ew_CartItemToArray() {
    var ar = new Array();
    ar[0] = this.itemnumber;
    ar[1] = this.itemname;
    ar[2] = this.amt;
    ar[3] = this.qty;
    ar[4] = this.shipping;
    ar[5] = this.shipping2;
    ar[6] = this.handling;
    ar[7] = this.tax;
    ar[8] = this.on0;
    ar[9] = this.on1;
    ar[10] = this.os0;
    ar[11] = this.os1;
    ar[12] = this.discounttype;
    ar[13] = this.shiptype;
    ar[14] = this.taxtype;
    ar[15] = this.on2;
    ar[16] = this.on3;
    ar[17] = this.os2;
    ar[18] = this.os3;
    ar[19] = this.wt;
    return ar
}
function ew_IsSameCartItem(item) {
    return ((this.itemnumber == item.itemnumber) && (this.itemname == item.itemname) && (this.on0 == item.on0) && (this.on1 == item.on1) && (this.os0 == item.os0) && (this.os1 == item.os1) && (this.on2 == item.on2) && (this.on3 == item.on3) && (this.os2 == item.os2) && (this.os3 == item.os3))
}
function ew_IsSameCartItemNo(item) {
    return (this.itemnumber == item.itemnumber)
}
function ew_CartItemToString() {
    var ar = this.toArray();
    return ar.join(ew_cartDelimiter)
}
function ew_CartItemFromString(str) {
    if (str.length == 0) return false;
    var ar = str.split(ew_cartDelimiter);
    return this.fromArray(ar)
}
function LoadCart() {
    var cookieStr, cookieValue;
    nItems = ReadCookie(ew_cntCookie);
    if (nItems == "" || nItems == null) nItems = 0;
    nCookies = (nItems > 0) ? (parseInt((nItems - 1) / ew_itemsPerCookie) + 1) : 0;
    for (i = 0; i < nCookies; i++) {
        cookieStr = ew_cartCookie + (i + 1);
        cookieValue = ReadCookie(cookieStr);
        if (cookieValue == "" || cookieValue == null) {
            nCookies = i;
            break
        }
        arCookies[i] = new Array();
        arCookies[i] = cookieValue.split(ew_cartDelimiter)
    }
    cookieStr = ew_shipCookie;
    cookieValue = ReadCookie(cookieStr);
    shipdetails.fromString(cookieValue)
}
function ClearCart() {
    WriteCookie(ew_cntCookie, 0, eval(ew_cartExpire), ew_cartPath)
}
function CheckItemQty(cartid, itemno, itemqty) {
    if (!EW_CHECK_ITEM_COUNT) return true;
    var qty = parseInt(itemqty);
    if (itemno != "") {
        var ci = new ew_CartItem();
        ci.itemnumber = itemno;
        for (var i = 1; i <= nItems; i++) {
            if (i != cartid) {
                var itemStr = ReadItemFromCart(i);
                var item = new ew_CartItem();
                if (item.fromString(itemStr)) {
                    if (ci.isSameItemNo(item)) qty += parseInt(item.qty)
                }
            }
        }
        var wrkqty = getItemCount(itemno);
        if (wrkqty == null) {
            return false
        } else if (qty > wrkqty) {
            var msg = ew_qtyExceedMsg;
            msg = msg.toString().replace("%i", itemno);
            msg = msg.toString().replace("%qr", qty);
            msg = msg.toString().replace("%qa", wrkqty);
            alert(msg);
            return false
        }
    }
    return true
}
function getItemCount(itemnumber) {
    var msg;
    var xmlHttp = ew_CreateXMLHttp();
    if (!xmlHttp) return;
    xmlHttp.open('get', ew_urlGetCnt + '?item=' + encodeURIComponent(itemnumber), false);
    try {
        xmlHttp.send(null);
        if (xmlHttp.status == 200 && xmlHttp.responseText) {
            return parseInt(xmlHttp.responseText)
        } else {
            msg = ew_svrStatusMsg;
            msg = msg.toString().replace("%i", itemnumber);
            msg = msg.toString().replace("%s", xmlHttp.status);
            alert(msg);
            return null
        }
    } catch (e) {
        msg = ew_svrErrorMsg;
        msg = msg.toString().replace("%i", itemnumber);
        msg = msg.toString().replace("%e", e.description);
        alert(msg);
        return null
    }
}
function ew_CreateXMLHttp() {
    if (!(document.getElementsByTagName || document.all)) return;
    var ret = null;
    try {
        ret = new ActiveXObject('Msxml2.XMLHTTP')
    } catch (e) {
        try {
            ret = new ActiveXObject('Microsoft.XMLHTTP')
        } catch (ee) {
            ret = null
        }
    }
    if (!ret && typeof XMLHttpRequest != 'undefined') ret = new XMLHttpRequest();
    return ret
}
function AddItemToCart(f) {
    var itemnumber = (f.elements[ew_fldItemNumber]) ? f.elements[ew_fldItemNumber].value : "";
    var itemqty = (f.elements[ew_fldQuantity]) ? f.elements[ew_fldQuantity].value : 1;
    if (!CheckItemQty(0, itemnumber, itemqty)) {
        var elem = f.elements[ew_fldQuantity];
        if (elem && elem.type != "hidden") {
            elem.focus();
            elem.select()
        }
        return
    }
    var arOptions = [];
    if (nItems >= ew_maxCartItems && ew_maxCartItems > 0) {
        alert(ew_cartFullMsg)
    } else {
        var ci = new ew_CartItem();
        for (var i = 0; i <= 3; i++) {
            eval("ci.on" + i + "='';ci.os" + i + "='';");
            AddOption(f, eval("ew_fldOn" + i + "d"), eval("ew_fldOs" + i + "d"), arOptions)
        }
        for (var i = 0; i < arOptions.length; i++) {
            eval("ci.on" + i + "=arOptions[" + i + "][0]");
            eval("ci.os" + i + "=arOptions[" + i + "][1]")
        }
        ci.itemnumber = (f.elements[ew_fldItemNumber]) ? f.elements[ew_fldItemNumber].value : "";
        ci.itemname = (f.elements[ew_fldItemName]) ? f.elements[ew_fldItemName].value : "";
        ci.amt = (f.elements[ew_fldAmount]) ? f.elements[ew_fldAmount].value : 0;
        ci.qty = (f.elements[ew_fldQuantity]) ? f.elements[ew_fldQuantity].value : 1;
        ci.shipping = (f.elements[ew_fldShipping]) ? f.elements[ew_fldShipping].value : 0;
        ci.shipping2 = (f.elements[ew_fldShipping2]) ? f.elements[ew_fldShipping2].value : 0;
        ci.handling = (f.elements[ew_fldHandling]) ? f.elements[ew_fldHandling].value : 0;
        ci.tax = (f.elements[ew_fldTax]) ? f.elements[ew_fldTax].value : 0;
        ci.discounttype = (f.elements[ew_fldDiscountType]) ? f.elements[ew_fldDiscountType].value : "";
        ci.shiptype = (f.elements[ew_fldShipType]) ? f.elements[ew_fldShipType].value : "";
        ci.taxtype = (f.elements[ew_fldTaxType]) ? f.elements[ew_fldTaxType].value : "";
        ci.wt = (f.elements[ew_fldWeight]) ? f.elements[ew_fldWeight].value : 0;
        if (ci.itemname != "") {
            ProcessCartItem(ci);
            if (ew_showCartAddMsg) alert(ew_cartAddMsg);
            ReloadCurrentPage()
        } else {
            alert(ew_emptyItemMsg)
        }
    }
}
function AddOption(f, en_on, en_os, ar) {
    var on = (f.elements[en_on]) ? f.elements[en_on].value : "";
    var os = (f.elements[en_os]) ? OptionValue(f.elements[en_os]) : "";
    if (on != "" && os != "") ar[ar.length] = new Array(on, RemovePrice(os))
}
function ProcessCartItem(ci) {
    for (var i = 1; i <= nItems; i++) {
        if (UpdateCartItem(i, ci)) return true
    }
    nItems++;
    WriteCartItem(nItems, ci);
    WriteCookie(ew_cntCookie, nItems, eval(ew_cartExpire), ew_cartPath);
    return true
}
function UpdateCartQuantity(f) {
    for (var i = nItems; i >= 1; i--) {
        var qty = (f.elements[ew_fldQuantity + "_" + i]) ? f.elements[ew_fldQuantity + "_" + i].value : 1;
        UpdateQuantity(i, qty)
    }
    ReloadCurrentPage()
}
function UpdateItemQuantity(i, qty) {
    UpdateQuantity(i, qty);
    ReloadCurrentPage()
}
function UpdateQuantity(i, qty) {
    var itemStr = ReadItemFromCart(i);
    var ci = new ew_CartItem();
    if (ci.fromString(itemStr)) {
        var itemnumber = ci.itemnumber;
        if (!CheckItemQty(i, itemnumber, qty)) return;
        ci.qty = IntValue(qty);
        if (ci.qty == 0) {
            RemoveItemFromCart(i)
        } else {
            WriteCartItem(i, ci)
        }
    }
}
function UpdateCartItem(i, item) {
    var itemStr = ReadItemFromCart(i);
    var ci = new ew_CartItem();
    if (ci.fromString(itemStr)) {
        if (ci.isSame(item)) {
            ci.amt = item.amt;
            ci.qty = parseInt(ci.qty) + parseInt(item.qty);
            WriteCartItem(i, ci);
            return true
        }
    }
    return false
}
function WriteCartItem(i, item) {
    WriteItemToCart(i, item.toString());
    return true
}
function RemoveItemFromCart(i) {
    if (confirm(ew_cartRemoveMsg)) {
        for (var idx = i; idx < nItems; idx++) {
            var itemStr = ReadItemFromCart(idx + 1);
            WriteItemToCart(idx, itemStr)
        }
        WriteCookie(ew_cntCookie, nItems - 1, eval(ew_cartExpire), ew_cartPath);
        var cookieStr = ew_cartCookie + nItems;
        DeleteCookie(cookieStr, "/");
        nItems--;
        ReloadCurrentPage()
    }
}
function ReloadCurrentPage() {
    var cookieStr, cookieValue;
    for (var i = 0; i < nCookies; i++) {
        cookieValue = arCookies[i].join(ew_cartDelimiter);
        cookieStr = ew_cartCookie + (i + 1);
        WriteCookie(cookieStr, cookieValue, eval(ew_cartExpire), ew_cartPath)
    }
    CartView();
    Spry.Data.updateAllRegions()
}
function GoToShipping() {
    GoToPage(ew_urlShipping)
}
function GoToConfirm() {
    GoToPage(ew_urlConfirm)
}
function GoToPage(url) {
    window.location = url
}
function ReadItemFromCart(i) {
    var cookieIdx, cookieValue, cookieOffset;
    cookieIdx = parseInt((i - 1) / ew_itemsPerCookie) + 1;
    var itemStr = "";
    cookieOffset = (i - 1) % ew_itemsPerCookie;
    if (nCookies >= cookieIdx) {
        for (idx = cookieOffset * nCartFlds; idx < (cookieOffset + 1) * nCartFlds - 1; idx++) {
            itemStr += arCookies[cookieIdx - 1][idx];
            itemStr += ew_cartDelimiter
        }
        itemStr += arCookies[cookieIdx - 1][(cookieOffset + 1) * nCartFlds - 1]
    }
    return itemStr
}
function ReadCookie(name) {
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;
    while (i < clen) {
        var j = i + alen;
        if (document.cookie.substring(i, j) == arg) return ReadCookieVal(j);
        i = document.cookie.indexOf(" ", i) + 1;
        if (i == 0) break
    }
    return null
}
function ReadCookieVal(offset) {
    var endStr = document.cookie.indexOf(";", offset);
    if (endStr == -1) endStr = document.cookie.length;
    return unescape(document.cookie.substring(offset, endStr))
}
function WriteItemToCart(i, str) {
    var cookieIdx, cookieValue, cookieOffset;
    var fldArrays = new Array();
    fldArrays = str.split(ew_cartDelimiter);
    if (fldArrays.length == nCartFlds) {
        cookieIdx = parseInt((i - 1) / ew_itemsPerCookie) + 1;
        if (nCookies < cookieIdx) {
            nCookies += 1;
            cookieIdx = nCookies;
            arCookies[cookieIdx - 1] = new Array();
            cookieValue = str
        } else {
            cookieOffset = (i - 1) % ew_itemsPerCookie;
            if ((cookieOffset + 1) * nCartFlds <= arCookies[cookieIdx - 1].length) {
                for (i = 0; i < nCartFlds; i++) arCookies[cookieIdx - 1][cookieOffset * nCartFlds + i] = fldArrays[i]
            }
            cookieValue = arCookies[cookieIdx - 1].join(ew_cartDelimiter);
            cookieValue += ew_cartDelimiter;
            cookieValue += str
        }
        arCookies[cookieIdx - 1] = cookieValue.split(ew_cartDelimiter)
    }
}
function WriteCookie(name, value, expires, path) {
    document.cookie = name + "=" + escape(value) + ((expires) ? "; expires=" + expires.toGMTString() : "") + ((path) ? "; path=" + path : "")
}
function DeleteCookie(name, path, domain) {
    if (ReadCookie(name)) {
        document.cookie = name + "=" + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + "; expires=Thu, 01-Jan-70 00:00:01 GMT"
    }
}
function CartExpire(day, hour, min, sec) {
    var expireTime = new Date();
    var timeWrk = expireTime.getTime();
    timeWrk += (((((day * 24) + hour) * 60 + min) * 60) + sec) * 1000;
    expireTime.setTime(timeWrk);
    return expireTime
}
function IntValue(obj) {
    if (obj.length == 0) return 1;
    var int_format = "0123456789";
    var check_char;
    for (var i = 0; i < obj.length; i++) {
        check_char = int_format.indexOf(obj.charAt(i));
        if (check_char < 0) return 1
    }
    return parseInt(obj)
}
function FormatCurrency(amt) {
    var sign = "";
    var cents = "";
    var centswrk = "";
    var outstr = "";
    var base = 1;
    for (var i = 1; i <= ew_ccyDecimal; i++) {
        base = base * 10
    }
    amt = amt.toString().replace(/\$|\,/g, '');
    if (isNaN(amt)) amt = "0";
    sign = (amt == (amt = Math.abs(amt)));
    amt = Math.floor(amt * base + 0.50000000001);
    cents = amt % base;
    centswrk = cents + "";
    amt = Math.floor(amt / base).toString();
    for (var i = centswrk.length; i < ew_ccyDecimal; i++) {
        centswrk = "0" + centswrk
    }
    for (var i = 0; i < Math.floor((amt.length - (1 + i)) / 3); i++) {
        amt = amt.substring(0, amt.length - (4 * i + 3)) + ew_ccyDlm1 + amt.substring(amt.length - (4 * i + 3))
    }
    outstr = ((sign) ? '' : '-') + ew_ccySymbol + amt;
    if (ew_ccyDecimal > 0) outstr += ew_ccyDlm2 + centswrk;
    return outstr
}
function FormatPercent(pct) {
    var outstr = pct * 100;
    outstr = outstr + "%";
    return outstr
}
function CheckEnter(e) {
    var charCode;
    if (e && e.which) {
        e = e;
        charCode = e.which
    } else {
        e = event;
        charCode = e.keyCode
    }
    if (charCode == 13) {
        return true
    } else {
        return false
    }
}
function OptionString(item) {
    var str = "";
    if (item.on0 != "" && item.os0 != "") {
        str += item.on0 + ew_optionSep + item.os0
    }
    if (item.on1 != "" && item.os1 != "") {
        if (str != "") str += ew_optionDelim;
        str += item.on1 + ew_optionSep + item.os1
    }
    if (item.on2 != "" && item.os2 != "") {
        if (str != "") str += ew_optionDelim;
        str += item.on2 + ew_optionSep + item.os2
    }
    if (item.on3 != "" && item.os3 != "") {
        if (str != "") str += ew_optionDelim;
        str += item.on3 + ew_optionSep + item.os3
    }
    return str
}
function GetPPOptions(item) {
    var obj = {};
    obj[ew_fldOn0] = "";
    obj[ew_fldOn1] = "";
    obj[ew_fldOs0] = "";
    obj[ew_fldOs1] = "";
    var cnt = 0;
    if (item.on0 != "") cnt++;
    if (item.on1 != "") cnt++;
    if (item.on2 != "") cnt++;
    if (item.on3 != "") cnt++;
    switch (cnt) {
    case 1:
        obj[ew_fldOn0] = item.on0;
        obj[ew_fldOs0] = item.os0;
        break;
    case 2:
        obj[ew_fldOn0] = item.on0;
        obj[ew_fldOs0] = item.os0;
        obj[ew_fldOn1] = item.on1;
        obj[ew_fldOs1] = item.os1;
        break;
    case 3:
        obj[ew_fldOn0] = item.on0 + ew_multiOptionSep + item.on1;
        obj[ew_fldOs0] = item.os0 + ew_multiOptionSep + item.os1;
        obj[ew_fldOn1] = item.on2;
        obj[ew_fldOs1] = item.os2;
        break;
    case 4:
        obj[ew_fldOn0] = item.on0 + ew_multiOptionSep + item.on1;
        obj[ew_fldOs0] = item.os0 + ew_multiOptionSep + item.os1;
        obj[ew_fldOn1] = item.on2 + ew_multiOptionSep + item.on3;
        obj[ew_fldOs1] = item.os2 + ew_multiOptionSep + item.os3
    }
    return obj
}
function SetupOptions(f) {
    var cnt = 0;
    var on0 = (f.elements[ew_fldOn0d]) ? f.elements[ew_fldOn0d].value : "";
    var on1 = (f.elements[ew_fldOn1d]) ? f.elements[ew_fldOn1d].value : "";
    var on2 = (f.elements[ew_fldOn2d]) ? f.elements[ew_fldOn2d].value : "";
    var on3 = (f.elements[ew_fldOn3d]) ? f.elements[ew_fldOn3d].value : "";
    var os0 = (f.elements[ew_fldOs0d]) ? RemovePrice(OptionValue(f.elements[ew_fldOs0d])) : "";
    var os1 = (f.elements[ew_fldOs1d]) ? RemovePrice(OptionValue(f.elements[ew_fldOs1d])) : "";
    var os2 = (f.elements[ew_fldOs2d]) ? RemovePrice(OptionValue(f.elements[ew_fldOs2d])) : "";
    var os3 = (f.elements[ew_fldOs3d]) ? RemovePrice(OptionValue(f.elements[ew_fldOs3d])) : "";
    if (on0 != "") cnt++;
    if (on1 != "") cnt++;
    if (on2 != "") cnt++;
    if (on3 != "") cnt++;
    switch (cnt) {
    case 1:
        f.elements[ew_fldOn0].value = on0;
        f.elements[ew_fldOs0].value = os0;
        f.elements[ew_fldOn1].value = "";
        f.elements[ew_fldOs1].value = "";
        break;
    case 2:
        f.elements[ew_fldOn0].value = on0;
        f.elements[ew_fldOs0].value = os0;
        f.elements[ew_fldOn1].value = on1;
        f.elements[ew_fldOs1].value = os1;
        break;
    case 3:
        f.elements[ew_fldOn0].value = on0 + ew_multiOptionSep + on1;
        f.elements[ew_fldOs0].value = os0 + ew_multiOptionSep + os1;
        f.elements[ew_fldOn1].value = on2;
        f.elements[ew_fldOs1].value = os2;
        break;
    case 4:
        f.elements[ew_fldOn0].value = on0 + ew_multiOptionSep + on1;
        f.elements[ew_fldOs0].value = os0 + ew_multiOptionSep + os1;
        f.elements[ew_fldOn1].value = on2 + ew_multiOptionSep + on3;
        f.elements[ew_fldOs1].value = os2 + ew_multiOptionSep + os3
    }
    return true
}
function CheckCart() {
    for (var i = 1; i <= nItems; i++) {
        var itemStr = ReadItemFromCart(i);
        var ci = new ew_CartItem();
        if (ci.fromString(itemStr)) {
            var qty = ci.qty;
            var itemnumber = ci.itemnumber;
            if (!CheckItemQty(i, itemnumber, qty)) return false
        }
    }
    if (total <= 0) {
        alert(ew_invalidAmount);
        return false
    }
    return true
}
function RoundNumber(num, dgt) {
    var newnum = Math.round(num * Math.pow(10, dgt)) / Math.pow(10, dgt);
    return newnum
}
function UpdatePrice(f) {
    var id, amt, c, p, v, wrk, opr, adj;
    amt = f.elements[ew_fldAmountBase].value;
    c = (f.elements[ew_fldOs0d]) ? f.elements[ew_fldOs0d] : f.elements[ew_fldOs0];
    if (c) amt = OptionPrice(amt, OptionValue(c));
    c = (f.elements[ew_fldOs1d]) ? f.elements[ew_fldOs1d] : f.elements[ew_fldOs1];
    if (c) amt = OptionPrice(amt, OptionValue(c));
    c = (f.elements[ew_fldOs2d]) ? f.elements[ew_fldOs2d] : f.elements[ew_fldOs2];
    if (c) amt = OptionPrice(amt, OptionValue(c));
    c = (f.elements[ew_fldOs3d]) ? f.elements[ew_fldOs3d] : f.elements[ew_fldOs3];
    if (c) amt = OptionPrice(amt, OptionValue(c));
    amt = RoundNumber(amt, ew_ccyDecimal);
    f.elements[ew_fldAmount].value = amt;
    id = f.elements[ew_fldID].value;
    if (document.getElementsByName) {
        var e = document.getElementsByName(ew_divAmountName + id);
        for (var i = 0; i < e.length; i++) {
            e[i].innerHTML = FormatCurrency(amt)
        }
    } else {
        alert(ew_browserNotSupported)
    }
}
function RemovePrice(value) {
    var i, p;
    if (isArray(value)) {
        for (i = 0; i < value.length; i++) {
            p = value[i].lastIndexOf("=");
            if (p >= 0) value[i] = HTMLDecode(value[i].substring(0, p))
        }
        return value.join(", ")
    } else {
        p = value.lastIndexOf("=");
        if (p >= 0) value = HTMLDecode(value.substring(0, p));
        return value
    }
}
function OptionValue(obj) {
    var i, p, v;
    var arValues = [];
    if (obj.type == "text") {
        return obj.value
    } else if (obj.type == "select-one") {
        return obj.options[obj.selectedIndex].value
    } else if (obj.type == "select-multiple") {
        for (i = 0; i < obj.options.length; i++) {
            if (obj.options[i].selected) arValues[arValues.length] = obj.options[i].value
        }
        return arValues
    } else if (obj.type == "radio" || obj.type == "checkbox") {
        if (obj.checked) return obj.value
    } else if (obj[0]) {
        if (obj[0].type == "radio") {
            for (i = 0; i < obj.length; i++) {
                if (obj[i].checked) return obj[i].value
            }
        } else if (obj[0].type == "checkbox") {
            for (i = 0; i < obj.length; i++) {
                if (obj[i].checked) arValues[arValues.length] = obj[i].value
            }
            return arValues
        }
    }
    return ""
}
function OptionPrice(amt, v) {
    var i, p, adj, wrkamt;
    wrkamt = amt;
    if (isArray(v)) {
        for (i = 0; i < v.length; i++) {
            p = v[i].lastIndexOf("=");
            if (p >= 0) {
                adj = parseFloat(v[i].substring(p + 1));
                if (!isNaN(adj)) wrkamt = wrkamt * 1.0 + adj * 1.0
            }
        }
    } else {
        p = v.lastIndexOf("=");
        if (p >= 0) {
            adj = parseFloat(v.substring(p + 1));
            if (!isNaN(adj)) wrkamt = amt * 1.0 + adj * 1.0
        }
    }
    return wrkamt
}
function CheckOptions(f) {
    if (!CheckOption(f, ew_fldOn0d, ew_fldOs0d, ew_fldOr0, ew_option1Message)) return false;
    if (!CheckOption(f, ew_fldOn1d, ew_fldOs1d, ew_fldOr1, ew_option2Message)) return false;
    if (!CheckOption(f, ew_fldOn2d, ew_fldOs2d, ew_fldOr2, ew_option3Message)) return false;
    if (!CheckOption(f, ew_fldOn3d, ew_fldOs3d, ew_fldOr3, ew_option4Message)) return false;
    return true
}
function CheckQty(f) {
    var q = 0;
    var obj = f.elements[ew_fldQuantity];
    var type = (!obj.type && obj[0]) ? obj[0].type : obj.type;
    if (type == "text" || type == "hidden") {
        q = obj.value
    } else if (type == "select-one") {
        q = obj.options[obj.selectedIndex].value
    } else if (type == "radio") {
        if (obj[0]) {
            for (i = 0; i < obj.length; i++) {
                if (obj[i].checked) q = obj[i].value
            }
        } else {
            if (obj.checked) q = obj.value
        }
    }
    q = parseInt(q);
    if (isNaN(q) || q < 1) {
        alert(ew_qtyMessage);
        FocusOption(obj);
        return false
    }
    return true
}
function CheckOption(f, en_on, en_os, en_or, msg) {
    var c1, c2, c3, selected;
    c1 = f.elements[en_on];
    c2 = f.elements[en_os];
    c3 = f.elements[en_or];
    if (c1 && c2 && c3 && c3.value == 1 && !OptionSelected(c2)) {
        alert(msg + ' ' + c1.value);
        FocusOption(c2);
        return false
    }
    return true
}
function OptionSelected(obj) {
    var type = (!obj.type && obj[0]) ? obj[0].type : obj.type;
    if (type == "text") {
        return (obj.value.length > 0)
    } else if (type == "select-one") {
        return (obj.selectedIndex > 0)
    } else if (type == "select-multiple") {
        return (obj.selectedIndex > -1)
    } else if (type == "radio" || type == "checkbox") {
        if (obj[0]) {
            for (i = 0; i < obj.length; i++) {
                if (obj[i].checked) return true
            }
        } else {
            return true
        }
        return false
    }
}
function FocusOption(c) {
    if (c.type == "hidden") return;
    if (c.options) c.focus();
    else if (c[0]) c[0].focus();
    else if (c) c.focus()
}
function SubmitItemToCart(f) {
    if (document.getElementById) {
        if (CheckQty(f) && CheckOptions(f)) AddItemToCart(f)
    } else {
        alert(ew_browserNotSupported)
    }
    return false
}
function SubmitItem(f) {
    if (document.getElementById) {
        if (CheckOptions(f)) {
            SetupOptions(f);
            return true
        } else return false
    } else {
        alert(ew_browserNotSupported);
        return false
    }
    return true
}
function SubmitShipping(f) {
    if (document.getElementById) {
        if (CheckShipping(f)) {
            AddShipping(f);
            document.location = ew_urlConfirm
        }
    } else {
        alert(ew_browserNotSupported)
    }
    return false
}
function ew_ShipItem() {
    this.ppac = "";
    this.ppad = "";
    this.fname = "";
    this.lname = "";
    this.address1 = "";
    this.address2 = "";
    this.city = "";
    this.state = "";
    this.zip = "";
    this.country = "";
    this.email = "";
    this.shipmethod = "";
    this.custom = "";
    this.phone = "";
    this.fromArray = ew_ShipItemFromArray;
    this.toArray = ew_ShipItemToArray;
    this.toString = ew_ShipItemToString;
    this.fromString = ew_ShipItemFromString
}
function ew_ShipItemFromArray(ar) {
    if (ar.length != nShipFlds) return false;
    this.ppac = ar[0];
    this.ppad = ar[1];
    this.fname = ar[2];
    this.lname = ar[3];
    this.address1 = ar[4];
    this.address2 = ar[5];
    this.city = ar[6];
    this.state = ar[7];
    this.zip = ar[8];
    this.country = ar[9];
    this.email = ar[10];
    this.shipmethod = ar[11];
    this.custom = ar[12];
    if (ar.length > 13) {
        this.phone = ar[13]
    }
    return true
}
function ew_ShipItemToArray() {
    var ar = new Array();
    ar[0] = this.ppac;
    ar[1] = this.ppad;
    ar[2] = this.fname;
    ar[3] = this.lname;
    ar[4] = this.address1;
    ar[5] = this.address2;
    ar[6] = this.city;
    ar[7] = this.state;
    ar[8] = this.zip;
    ar[9] = this.country;
    ar[10] = this.email;
    ar[11] = this.shipmethod;
    ar[12] = this.custom;
    ar[13] = this.phone;
    return ar
}
function ew_ShipItemToString() {
    var ar = this.toArray();
    return ar.join(ew_cartDelimiter)
}
function ew_ShipItemFromString(str) {
    if (str == null) return false;
    if (str.length == 0) return false;
    var ar = str.split(ew_cartDelimiter);
    return this.fromArray(ar)
}
function AddShipping(f) {
    var cookieStr, cookieValue;
    var ppac, ppad;
    var fname, lname, address1, address2, city, state, zip, country, email, shipmethod;
    var custom;
    var phone;
    ppac = f.ppac;
    ppad = f.ppad;
    fname = f.elements[ew_fldFirstName];
    lname = f.elements[ew_fldLastName];
    address1 = f.elements[ew_fldAddress1];
    address2 = f.elements[ew_fldAddress2];
    city = f.elements[ew_fldCity];
    state = f.elements[ew_fldState];
    zip = f.elements[ew_fldZip];
    country = f.elements[ew_fldCountry];
    email = f.elements[ew_fldEmail];
    shipmethod = f.elements[ew_fldShipMethod];
    custom = f.elements[ew_fldCustom];
    phone = f.elements[ew_fldPhone];
    if (ppac) shipdetails.ppac = (ppac.checked) ? "1" : "0";
    if (ppad) shipdetails.ppad = (ppad.checked) ? "1" : "0";
    if (fname) shipdetails.fname = fname.value;
    if (lname) shipdetails.lname = lname.value;
    if (address1) shipdetails.address1 = address1.value;
    if (address2) shipdetails.address2 = address2.value;
    if (phone) shipdetails.phone = phone.value;
    if (city) shipdetails.city = city.value;
    if (state) shipdetails.state = (state.type == "select-one") ? state.options[state.selectedIndex].value : state.value;
    if (zip) shipdetails.zip = zip.value;
    if (country) shipdetails.country = (country.type == "select-one") ? country.options[country.selectedIndex].value : country.value;
    if (email) shipdetails.email = email.value;
    if (shipmethod) if (shipmethod.options) shipdetails.shipmethod = shipmethod.options[shipmethod.selectedIndex].value;
    else shipdetails.shipmethod = shipmethod.value;
    if (custom) shipdetails.custom = custom.value;
    cookieStr = ew_shipCookie;
    cookieValue = shipdetails.toString();
    WriteCookie(cookieStr, cookieValue, eval(ew_cartExpire), ew_cartPath);
    return true
}
function getCurrentPath() {
    var href = location.href;
    var idx = href.lastIndexOf("/");
    return (idx > -1) ? href.substring(0, idx + 1) : ""
}
function isArray(obj) {
    return (obj.constructor.toString().indexOf("Array") > -1)
}
function ShipViewCheckBoxView(type, name, val, disable) {
    var outstr = "";
    outstr += "<input type=\"checkbox\" name=\"" + name + "\" value=\"1\" onClick=\"UpdateShipView(this)\"";
    if (val == "1") outstr += " checked=\"checked\"";
    if (type != 1 || disable == "1") outstr += " disabled=\"true\"";
    outstr += " />";
    return outstr
}
function UpdateShipView(obj) {
    var ppad;
    if (obj.name == "ppac") {
        ppad = obj.form.ppad;
        if (obj.checked) ppad.disabled = false;
        else {
            ppad.checked = false;
            ppad.disabled = true
        }
    } else if (obj.name == "ppad") {
        ppad = obj
    }
    if (obj.form.elements[ew_fldFirstName]) {
        obj.form.elements[ew_fldFirstName].disabled = ppad.checked;
        obj.form.elements[ew_fldFirstName].style.backgroundColor = (ppad.checked) ? ew_disableColor : ""
    }
    if (obj.form.elements[ew_fldLastName]) {
        obj.form.elements[ew_fldLastName].disabled = ppad.checked;
        obj.form.elements[ew_fldLastName].style.backgroundColor = (ppad.checked) ? ew_disableColor : ""
    }
    if (obj.form.elements[ew_fldAddress1]) {
        obj.form.elements[ew_fldAddress1].disabled = ppad.checked;
        obj.form.elements[ew_fldAddress1].style.backgroundColor = (ppad.checked) ? ew_disableColor : ""
    }
    if (obj.form.elements[ew_fldAddress2]) {
        obj.form.elements[ew_fldAddress2].disabled = ppad.checked;
        obj.form.elements[ew_fldAddress2].style.backgroundColor = (ppad.checked) ? ew_disableColor : ""
    }
    if (obj.form.elements[ew_fldPhone]) {
        obj.form.elements[ew_fldPhone].disabled = ppad.checked;
        obj.form.elements[ew_fldPhone].style.backgroundColor = (ppad.checked) ? ew_disableColor : ""
    }
    if (obj.form.elements[ew_fldCity]) {
        obj.form.elements[ew_fldCity].disabled = ppad.checked;
        obj.form.elements[ew_fldCity].style.backgroundColor = (ppad.checked) ? ew_disableColor : ""
    }
    if (obj.form.elements[ew_fldZip]) {
        obj.form.elements[ew_fldZip].disabled = ppad.checked;
        obj.form.elements[ew_fldZip].style.backgroundColor = (ppad.checked) ? ew_disableColor : ""
    }
    if (ew_shippingType != 2 && ew_taxType != 2) {
        if (obj.form.elements[ew_fldCountry]) {
            obj.form.elements[ew_fldCountry].disabled = ppad.checked;
            obj.form.elements[ew_fldCountry].style.backgroundColor = (ppad.checked) ? ew_disableColor : ""
        }
        var state = obj.form.elements[ew_fldState];
        if (state) {
            state.disabled = ppad.checked;
            state.style.backgroundColor = (ppad.checked) ? ew_disableColor : ""
        }
    }
    var elems = document.getElementsByName("PayPalShipAddress");
    var i, elem;
    for (i = 0; i < elems.length; i++) {
        elem = elems[i];
        elem.className = (ppad.checked) ? "ewHideRow" : "ewShowRow"
    }
}
function TextView(type, name, val, size, maxlen, disable) {
    var outstr = "";
    if (type == 1) {
        outstr += "<input type=\"text\" name=\"" + name + "\" value=\"" + HTMLEncode(val) + "\" size=\"" + size + "\" maxlength=\"" + maxlen + "\"";
        if (disable == "1") outstr += " disabled=\"true\" style=\"background-color: " + ew_disableColor + ";\"";
        outstr += ">"
    } else {
        if (name == "night_phone") {
            if (disable != "1") {
                var ar = val.split(ew_fldPhoneSep);
                if (ar.length == 3) {
                    outstr += "<input type=\"hidden\" name=\"" + name + "_a\" value=\"" + HTMLEncode(ar[0]) + "\">";
                    outstr += "<input type=\"hidden\" name=\"" + name + "_b\" value=\"" + HTMLEncode(ar[1]) + "\">";
                    outstr += "<input type=\"hidden\" name=\"" + name + "_c\" value=\"" + HTMLEncode(ar[2]) + "\">"
                } else if (ar.length == 2) {
                    outstr += "<input type=\"hidden\" name=\"" + name + "_a\" value=\"" + HTMLEncode(ar[0]) + "\">";
                    outstr += "<input type=\"hidden\" name=\"" + name + "_b\" value=\"" + HTMLEncode(ar[1]) + "\">"
                } else if (ar.length == 1) {
                    outstr += "<input type=\"hidden\" name=\"" + name + "_b\" value=\"" + HTMLEncode(val) + "\">"
                }
            }
        } else {
            if (disable != "1") outstr += "<input type=\"hidden\" name=\"" + name + "\" value=\"" + HTMLEncode(val) + "\">"
        }
        outstr += val
    }
    return outstr
}
function TextAreaView(type, name, val, rows, cols, maxlen, disable) {
    var outstr = "";
    if (type == 1) {
        outstr += "<textarea name=\"" + name + "\" cols=\"" + cols + "\" rows=\"" + rows + "\"";
        if (disable == "1") outstr += " disabled=\"true\" style=\"background-color: " + ew_disableColor + ";\"";
        if (maxlen > 0) {
            outstr += " onKeyDown=\"TextCounter(this.form." + name + ",this.form.cnt" + name + "," + maxlen + ");\"";
            outstr += " onKeyUp=\"TextCounter(this.form." + name + ",this.form.cnt" + name + "," + maxlen + ");\""
        }
        outstr += ">";
        outstr += val + "</textarea>";
        if (maxlen > 0) {
            outstr += "<br /><input readonly type=text name=cnt" + name + " size=3 maxlength=3 value=" + (maxlen - val.length) + ">&nbsp;" + ew_TextAreaCntMessage
        }
    } else {
        if (disable != "1") outstr += "<input type=\"hidden\" name=\"" + name + "\" value=\"" + HTMLEncode(val) + "\">";
        outstr += val
    }
    return outstr
}
function TextCounter(fld, cntfld, maxlen) {
    if (fld.value.length > maxlen) fld.value = fld.value.substring(0, maxlen);
    else cntfld.value = maxlen - fld.value.length
}
function CountrySelectView(type, name, val, list, statename, disable) {
    var outstr = "";
    var arval = list.split(ew_cartDelimiter);
    if (type == 1) {
        outstr += "<select name=\"" + name + "\"";
        if (disable == "1") {
            outstr += " disabled"
        } else if (statename != "") {
            outstr += " onchange=\"UpdateState(this.form." + statename + ",this.options[this.selectedIndex].value);\""
        }
        outstr += ">";
        outstr += "<option value=\"\">" + ew_PleaseSelect + "</option>";
        for (var i = 0; i < arval.length; i++) {
            var arctry = arval[i].split(",");
            var ctry = arctry.pop();
            outstr += "<option value=\"" + HTMLEncode(arctry.join(",")) + "\"";
            if (arctry.join(",") == val) outstr += " selected=\"selected\"";
            outstr += ">" + ctry + "</option>"
        }
        outstr += "</select>"
    } else {
        for (var i = 0; i < arval.length; i++) {
            var arctry = arval[i].split(",");
            var ctry = arctry.pop();
            if (arctry.join(",") == val) {
                outstr = ctry;
                if (disable != "1") outstr += "<input type=\"hidden\" name=\"" + name + "\" value=\"" + HTMLEncode(arctry[2]) + "\">";
                break
            }
        }
    }
    return outstr
}
function StateSelectView(type, name, val, list, ctry_value, disable) {
    var outstr = "",
        n = 0;
    var arval = list.split(ew_cartDelimiter);
    if (type == 1) {
        outstr += "<select name=\"" + name + "\"";
        if (disable == "1") outstr += " disabled";
        outstr += ">";
        var ctry = (ctry_value == "" || ctry_value == null) ? "" : ctry_value.split(",")[1];
        for (var i = 0; i < arval.length; i++) {
            var arstate = arval[i].split(",");
            var state = arstate.pop();
            var ctryid = arstate[0];
            if (ctryid == ctry) {
                outstr += "<option value=\"" + HTMLEncode(arstate.join(",")) + "\"";
                if (arstate.join(",") == val) outstr += " selected=\"selected\"";
                outstr += ">" + state + "</option>";
                n++
            }
        }
        if (n == 0) outstr += "<option value=\"\">" + ew_stateNA + "</option>";
        outstr += "</select>"
    } else {
        for (var i = 0; i < arval.length; i++) {
            var arstate = arval[i].split(",");
            var state = arstate.pop();
            if (arstate.join(",") == val) {
                outstr = state;
                if (disable != "1") outstr += "<input type=\"hidden\" name=\"" + name + "\" value=\"" + HTMLEncode(arstate[2]) + "\">";
                break
            }
        }
        if (outstr == "") {
            outstr = ew_stateNA;
            outstr += "<input type=\"hidden\" name=\"" + name + "\" value=\"\">"
        }
    }
    return outstr
}
function UpdateState(obj, ctry_value) {
    if (!obj) return;
    var value = (obj.selectedIndex > -1) ? obj.options[obj.selectedIndex].value : null;
    for (var i = obj.length - 1; i >= 0; i--) {
        obj.options[i] = null
    }
    var ctry = (ctry_value == "" || ctry_value == null) ? "" : ctry_value.split(",")[1];
    var arval = ew_stateList.split(ew_cartDelimiter);
    for (var i = 0; i < arval.length; i++) {
        var arstate = arval[i].split(",");
        var state = arstate.pop();
        var ctryid = arstate[0];
        if (ctryid == ctry) {
            var length = obj.length;
            obj.options[length] = new Option(state, arstate.join(","), false, false)
        }
    }
    if (value != null) {
        for (var i = obj.length - 1; i >= 0; i--) {
            if (obj.options[i].value.toUpperCase() == value.toUpperCase()) {
                obj.selectedIndex = i;
                break
            }
        }
    }
    if (obj.length == 0) obj.options[0] = new Option(ew_stateNA, "", false, false)
}
function ShipMethodSelectView(type, name, val, list) {
    var outstr = "";
    var arval = list.split(ew_cartDelimiter);
    var arfld;
    if (type == 1) {
        if (list == "") outstr = "";
        else if (arval.length == 1) {
            arfld = arval[0].split(",");
            outstr += "<input type=\"hidden\" name=\"" + name + "\" value=\"" + HTMLEncode(arfld[0]) + "\" />" + arfld[1]
        } else {
            outstr += "<select name=\"" + name + "\">";
            for (var i = 0; i < arval.length; i++) {
                arfld = arval[i].split(",");
                outstr += "<option value=\"" + HTMLEncode(arfld[0]) + "\"";
                if (arfld[0] == val) outstr += " selected=\"selected\"";
                outstr += ">" + arfld[1] + "</option>"
            }
            outstr += "</select>"
        }
    } else {
        for (var i = 0; i < arval.length; i++) {
            arfld = arval[i].split(",");
            if (arfld[0] == val) {
                outstr = arfld[1];
                break
            }
        }
    }
    return outstr
}
function CalculateDiscountQty(dtype) {
    var totalqty = 0;
    var ci = new ew_CartItem();
    for (var i = 1; i <= nItems; i++) {
        itemStr = ReadItemFromCart(i);
        if (ci.fromString(itemStr)) {
            if (ci.discounttype == dtype) totalqty += ci.qty * 1
        }
    }
    return totalqty
}
function CalculateDiscount(dtype, qty) {
    var last_qty = 0;
    var last_pct = 0;
    if (!ew_discountList) return last_pct;
    var arDiscount = ew_discountList.split(ew_cartDelimiter);
    for (var i = 0; i < arDiscount.length; i++) {
        var arDiscountItem = arDiscount[i].split(",");
        if (arDiscountItem.length == 3) {
            var itemdtype = arDiscountItem[0];
            var this_qty = arDiscountItem[1];
            var this_pct = arDiscountItem[2];
            if (itemdtype == dtype) {
                if (qty >= last_qty && qty < this_qty) {
                    return parseFloat(last_pct / 100)
                } else {
                    last_qty = this_qty;
                    last_pct = this_pct
                }
            }
        }
    }
    return parseFloat(last_pct / 100)
}
function CalculateTax(ttype, ctry, state) {
    var taxpct = 0;
    var arCtry = ctry.split(",");
    if (arCtry.length == 3) {
        var regioncode = arCtry[0];
        var ctrycode = arCtry[1];
        var statecode;
        if (state == "" || state == null) statecode = -1;
        else statecode = state.split(",")[1];
        taxpct = GetTax(ttype, regioncode, ctrycode, statecode);
        while (taxpct == null) {
            if (statecode != -1) statecode = -1;
            else if (ctrycode != -1) ctrycode = -1;
            else if (regioncode != -1) regioncode = -1;
            taxpct = GetTax(ttype, regioncode, ctrycode, statecode)
        }
    }
    return taxpct
}
function GetTax(ttype, reg, ctry, state) {
    var arTax = ew_taxList.split(ew_cartDelimiter);
    for (var i = 0; i < arTax.length; i++) {
        var arTaxItem = arTax[i].split(",");
        if (arTaxItem.length == 5) {
            if ((arTaxItem[0] == ttype) && (arTaxItem[1] == reg) && (arTaxItem[2] == ctry) && (arTaxItem[3] == state)) {
                return (parseFloat(arTaxItem[4] / 100))
            }
        }
    }
    if (reg == -1 && ctry == -1 && state == -1) return 0;
    else return null
}
function CalculateShipCost(stype, smethod, ctry, state, qty, amt, wt) {
    var shipcost = 0;
    var arCtry = ctry.split(",");
    if (arCtry.length == 3) {
        var regioncode = arCtry[0];
        var ctrycode = arCtry[1];
        var statecode;
        if (state == "" || state == null) statecode = -1;
        else statecode = state.split(",")[1];
        shipcost = GetShipcost(stype, smethod, regioncode, ctrycode, statecode, qty, amt, wt);
        while (shipcost == null) {
            if (statecode != -1) statecode = -1;
            else if (ctrycode != -1) ctrycode = -1;
            else if (regioncode != -1) regioncode = -1;
            shipcost = GetShipcost(stype, smethod, regioncode, ctrycode, statecode, qty, amt, wt)
        }
    }
    return shipcost
}
function GetShipcost(stype, smethod, reg, ctry, state, qty, amt, wt) {
    var shipCalcType = GetShipType(stype);
    var arShipcost;
    if (shipCalcType == 0) arShipcost = ew_shipcostList0.split(ew_cartDelimiter);
    else if (shipCalcType == 1) arShipcost = ew_shipcostList1.split(ew_cartDelimiter);
    else if (shipCalcType == 2) arShipcost = ew_shipcostList2.split(ew_cartDelimiter);
    else return 0;
    var lastshipcost = null;
    var last_wt_range = 0;
    for (var i = 0; i < arShipcost.length; i++) {
        var arShipcostItem = arShipcost[i].split(",");
        if (arShipcostItem.length == 8) {
            var itemstype = arShipcostItem[0];
            var itemsmethod = arShipcostItem[1];
            if (itemstype == stype && (itemsmethod == smethod || smethod == -1)) {
                if ((arShipcostItem[2] == reg) && (arShipcostItem[3] == ctry) && (arShipcostItem[4] == state)) {
                    var basecost = parseFloat(arShipcostItem[6]);
                    var extracost = parseFloat(arShipcostItem[7]);
                    if (shipCalcType == 1) {
                        var price_range = parseFloat(arShipcostItem[5]);
                        if (price_range > 0) {
                            if (amt == 0) {
                                return 0
                            } else if (amt <= price_range) {
                                return basecost
                            } else {
                                lastshipcost = basecost
                            }
                        }
                    } else if (shipCalcType == 2) {
                        var wt_range = parseFloat(arShipcostItem[5]);
                        if (wt_range > 0) {
                            if (wt <= wt_range) {
                                return (basecost + extracost * (wt - last_wt_range))
                            } else {
                                lastshipcost = (basecost + extracost * (wt - wt_range));
                                last_wt_range = wt_range
                            }
                        }
                    } else {
                        var qty_range = parseFloat(arShipcostItem[5]);
                        if (qty_range > 0) {
                            if (qty <= qty_range) {
                                return (basecost + extracost * qty)
                            } else {
                                lastshipcost = (basecost + extracost * qty)
                            }
                        }
                    }
                }
            }
        }
    }
    if (lastshipcost != null) return lastshipcost;
    else if (reg == -1 && ctry == -1 && state == -1) return 0;
    else return null
}
function GetShipType(stype) {
    var arShipType = ew_shipTypeList.split(ew_cartDelimiter);
    for (var i = 0; i < arShipType.length; i++) {
        var arShipTypeItem = arShipType[i].split(",");
        if (arShipTypeItem.length == 2) {
            if (arShipTypeItem[0] == stype) return arShipTypeItem[1]
        }
    }
    return 0
}
function HTMLEncode(t) {
    return t.toString().replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;")
}
function HTMLDecode(t) {
    return t.toString().replace(/&amp;/g, "&").replace(/&quot;/g, "\"").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&nbsp;/g, " ").replace(/&#61;/g, "=").replace(/&#47;/g, "/")
}
function SelectView(name, data, ps, none, type, size) {
    var outstr = "<select name=\"" + name + "\" onchange=\"UpdatePrice(this.form);\"";
    if (type == EW_OPTION_SELECT_MULTIPLE) outstr += " multiple size=\"" + size + "\"";
    outstr += ">";
    var arOptions = data.split("/");
    if (arOptions.length > 0) {
        if (type != EW_OPTION_SELECT_MULTIPLE) outstr += "<option value=\"" + HTMLEncode(none) + "\">" + ps + "</option>";
        var i, arOption;
        for (i = 0; i < arOptions.length; i++) {
            arOption = arOptions[i].split("=");
            outstr += "<option value=\"" + HTMLEncode(arOptions[i]) + "\">" + arOption[0] + "</option>"
        }
    }
    outstr += "</select>";
    return outstr
}
function SelectOneView(name, data, ps, none) {
    return SelectView(name, data, ps, none, EW_OPTION_SELECT_ONE, 0)
}
function SelectMultipleView(name, data, size) {
    size = parseInt(size);
    if (size < 1) size = EW_OPTION_SELECT_MULTIPLE_SIZE;
    return SelectView(name, data, "", "", EW_OPTION_SELECT_MULTIPLE, size)
}
function InputView(name, type, data, col) {
    var outstr = "";
    var arOptions = data.split("/");
    if (arOptions.length > 0) {
        var i, arOption;
        col = parseInt(col);
        if (col < 1) col = EW_OPTION_REPEAT_COLUMN;
        outstr += "<table class='ewOptionTable'>";
        for (i = 0; i < arOptions.length; i++) {
            if (i == 0 || (i > 1 && i % col == 0)) outstr += "<tr>";
            arOption = arOptions[i].split("=");
            outstr += "<td><input type=\"" + type + "\" onclick=\"UpdatePrice(this.form);\" name=\"" + name + "\" value=\"" + HTMLEncode(arOptions[i]) + "\" />" + arOption[0] + "</td>";
            if ((i + 1) % col == 0 || i == arOptions.length) outstr += "</tr>"
        }
        outstr += "</table>"
    }
    return outstr
}
function CheckboxView(name, data, col) {
    return InputView(name, "checkbox", data, col)
}
function RadioView(name, data, col) {
    return InputView(name, "radio", data, col)
}
var dsObserver = {
    onPostUpdate: function (notifier, data) {
        Spry.$$("#" + data.regionID).setStyle("display: block")
    }
};
var dsShopCartItems = new Spry.Data.DataSet();
var dsShopCartSummary = new Spry.Data.DataSet();
var dsShipView = new Spry.Data.DataSet();

function ew_ShopCartItem() {
    this.itemnumber = "";
    this.itemname = "";
    this.option = "";
    this.price = "";
    this.quantity = "";
    this.quantity1 = "";
    this.discount = "";
    this.subtotal = "";
    this.remove = "";
    this.itemhidden = ""
}
function ew_ShopCartSummary() {
    this.total = "";
    this.shipping = "";
    this.handling = "";
    this.tax = "";
    this.grandtotal = "";
    this.hidden = "";
    this.nTotal = "";
    this.nShipping = "";
    this.nHandling = "";
    this.nTax = "";
    this.nGrandtotal = ""
}
function CartView() {
    total = 0;
    handlecost = 0;
    var outstr = "";
    var sci, scs;
    var scis = new Array();
    for (var i = 1; i <= nItems; i++) {
        sci = CartItem(i);
        if (sci) scis.push(sci)
    }
    SetDataSetFromArray(dsShopCartItems, scis);
    scs = CartFooter();
    if (scs) SetDataSetFromArray(dsShopCartSummary, new Array(scs))
}
function CartItem(i) {
    var itemStr = ReadItemFromCart(i);
    var ci = new ew_CartItem();
    if (ci.fromString(itemStr)) {
        var wt = ci.wt;
        var amt = ci.amt;
        var qty = ci.qty;
        var dtype = ci.discounttype;
        var dqty = CalculateDiscountQty(dtype);
        var discount = CalculateDiscount(dtype, dqty);
        var damt = parseFloat(amt) * (1 - discount);
        var subtotal = parseInt(qty) * parseFloat(damt);
        total = total + subtotal;
        totalwt = totalwt + parseInt(qty) * parseFloat(wt);
        var sci = new ew_ShopCartItem();
        sci.itemnumber = ci.itemnumber;
        sci.itemhidden += "<input type=hidden name=\"" + ew_fldItemNumber + "_" + i + "\" value=\"" + HTMLEncode(ci.itemnumber) + "\" />";
        sci.itemname = ci.itemname;
        sci.itemhidden += "<input type=hidden name=\"" + ew_fldItemName + "_" + i + "\" value=\"" + HTMLEncode(ci.itemname) + "\" />";
        sci.option = OptionString(ci);
        var PPOptions = GetPPOptions(ci);
        sci.itemhidden += "<input type=hidden name=\"" + ew_fldOn0 + "_" + i + "\" value=\"" + HTMLEncode(PPOptions[ew_fldOn0]) + "\" />" + "<input type=hidden name=\"" + ew_fldOn1 + "_" + i + "\" value=\"" + HTMLEncode(PPOptions[ew_fldOn1]) + "\" />" + "<input type=hidden name=\"" + ew_fldOs0 + "_" + i + "\" value=\"" + HTMLEncode(PPOptions[ew_fldOs0]) + "\" />" + "<input type=hidden name=\"" + ew_fldOs1 + "_" + i + "\" value=\"" + HTMLEncode(PPOptions[ew_fldOs1]) + "\" />";
        var postItem;
        if (ew_shippingType == 0) {
            switch (ew_profileShippingPostType) {
            case "1":
                postItem = (parseFloat(ci.shipping) > 0);
                break;
            case "2":
                postItem = (parseFloat(ci.shipping) >= 0);
                break;
            case "3":
                postItem = false;
                break;
            default:
                postItem = true;
                break
            }
            if (postItem) {
                sci.itemhidden += "<input type=hidden name=\"" + ew_fldShipping + "_" + i + "\" value=\"" + ci.shipping + "\" />"
            }
            sci.itemhidden += "<input type=hidden name=\"" + ew_fldWeight + "_" + i + "\" value=\"" + ci.wt + "\" />" + "<input type=hidden name=\"" + ew_fldWeightUnit + "_" + i + "\" value=\"" + HTMLEncode(ew_weightUnit) + "\" />"
        } else if (ew_shippingType == 1) {
            sci.itemhidden += "<input type=hidden name=\"" + ew_fldShipping + "_" + i + "\" value=\"" + ci.shipping + "\" />" + "<input type=hidden name=\"" + ew_fldShipping2 + "_" + i + "\" value=\"" + ci.shipping2 + "\" />" + "<input type=hidden name=\"" + ew_fldHandling + "_" + i + "\" value=\"" + ci.handling + "\" />" + "<input type=hidden name=\"" + ew_fldWeight + "_" + i + "\" value=\"" + ci.wt + "\" />" + "<input type=hidden name=\"" + ew_fldWeightUnit + "_" + i + "\" value=\"" + HTMLEncode(ew_weightUnit) + "\" />";
            shipcost = shipcost + parseFloat(ci.shipping) + (qty - 1) * parseFloat(ci.shipping2);
            handlecost = handlecost + parseFloat(ci.handling)
        } else if (ew_shippingType == 2) {
            if (ew_HandlingCart <= 0) handlecost = handlecost + parseFloat(ci.handling)
        }
        if (ew_taxType == 0) {
            switch (ew_profileTaxPostType) {
            case "1":
                postItem = (parseFloat(ci.tax) > 0);
                break;
            case "2":
                postItem = (parseFloat(ci.tax) >= 0);
                break;
            case "3":
                postItem = false;
                break;
            default:
                postItem = true;
                break
            }
            if (postItem) {
                sci.itemhidden += "<input type=hidden name=\"" + ew_fldTax + "_" + i + "\" value=\"" + ci.tax + "\" />"
            }
        } else if (ew_taxType == 1) {
            sci.itemhidden += "<input type=hidden name=\"" + ew_fldTax + "_" + i + "\" value=\"" + ci.tax + "\" />";
            taxcost = taxcost + parseFloat(ci.tax)
        } else if (ew_taxType >= 2) {
            taxcost = taxcost + CalculateTax(ci.taxtype, shipdetails.country, shipdetails.state) * subtotal
        }
        sci.price = FormatCurrency(amt);
        sci.itemhidden += "<input type=hidden name=\"" + ew_fldAmount + "_" + i + "\" value=\"" + RoundNumber(damt / ew_ccyExchange, ew_ccyDecimal) + "\" />";
        sci.quantity1 = "<input type=text size=\"" + ew_fldQuantitySize + "\" type=text name=\"" + ew_fldQuantity + "_" + i + "\" value=\"" + qty + "\" onKeyPress=\"if (CheckEnter(event)) UpdateItemQuantity(" + i + ", this.value);\" onChange=\"UpdateItemQuantity(" + i + ", this.value);\" class='SB_Quantity'/>";
        sci.quantity = qty + "<input type=hidden name=\"" + ew_fldQuantity + "_" + i + "\" value=\"" + qty + "\" />";
        sci.discount = FormatPercent(discount);
        sci.subtotal = FormatCurrency(subtotal);
        sci.remove = "<a href=\"javascript:RemoveItemFromCart(" + i + ")\">" + ew_fldRemove + "</a>";
        return sci
    }
    return false
}
function CartFooter() {
    var arShiptype = new Array();
    var shipitem, found;
    if (nItems > 0) {
        var shipmethod = shipdetails.shipmethod;
        var shipctry = shipdetails.country;
        var shipstate = shipdetails.state;
        if (ew_shippingType == 2) {
            for (var i = 0; i < nItems; i++) {
                var itemStr = ReadItemFromCart(i + 1);
                var ci = new ew_CartItem();
                ci.fromString(itemStr);
                if (ci.shiptype != "") {
                    var amt = parseFloat(ci.amt);
                    var qty = parseFloat(ci.qty);
                    var uwt = parseFloat(ci.wt);
                    var dtype = ci.discounttype;
                    var dqty = CalculateDiscountQty(dtype);
                    var discount = CalculateDiscount(dtype, dqty);
                    var damt = amt * (1 - discount);
                    var subtotal = qty * damt;
                    var wt = qty * uwt;
                    found = false;
                    if (i > 0) {
                        for (j = 0; j < arShiptype.length; j++) {
                            if (arShiptype[j][0] == ci.shiptype) {
                                shipitem = j;
                                found = true;
                                break
                            }
                        }
                    }
                    if (!found) {
                        shipitem = arShiptype.length;
                        arShiptype[shipitem] = new Array(ci.shiptype, qty, subtotal, wt)
                    } else {
                        arShiptype[shipitem][1] = parseInt(arShiptype[shipitem][1]) + parseInt(qty);
                        arShiptype[shipitem][2] = parseFloat(arShiptype[shipitem][2]) + parseFloat(subtotal);
                        arShiptype[shipitem][3] = parseFloat(arShiptype[shipitem][3]) + parseFloat(wt)
                    }
                }
            }
            shipcost = 0;
            for (var i = 0; i < arShiptype.length; i++) {
                shipcost = shipcost + CalculateShipCost(arShiptype[i][0], shipmethod, shipctry, shipstate, arShiptype[i][1], arShiptype[i][2], arShiptype[i][3])
            }
        }
        var grandtotal = total + shipcost;
        if (ew_HandlingCart > 0) handlecost = ew_HandlingCart;
        grandtotal += handlecost;
        if (ew_taxType == 3) {
            var taxpct = CalculateTax(ew_shippingTaxType, shipctry, shipstate);
            taxcost = taxcost + (shipcost + handlecost) * taxpct
        }
        grandtotal = grandtotal + taxcost;
        var scs = new ew_ShopCartSummary();
        scs.nTotal = total;
        scs.nShipping = shipcost;
        scs.nTax = taxcost;
        scs.nHandling = handlecost;
        scs.nGrandtotal = grandtotal;
        scs.total = FormatCurrency(total);
        scs.shipping = FormatCurrency(shipcost);
        scs.tax = FormatCurrency(taxcost);
        if (ew_shippingType > 0) {
            scs.shipping = FormatCurrency(shipcost);
            if (ew_shippingType == 2) {
                scs.hidden += "<input type=hidden name=\"" + ew_fldHandlingCart + "\" value=\"" + RoundNumber(shipcost + handlecost / ew_ccyExchange, ew_ccyDecimal) + "\" />"
            }
            scs.handling = FormatCurrency(handlecost)
        }
        if (ew_taxType == 2) {
            scs.hidden += "<input type=hidden name=\"" + ew_fldTaxCart + "\" value=\"" + RoundNumber(taxcost / ew_ccyExchange, ew_ccyDecimal) + "\" />"
        }
        if (ew_shippingType <= 1) {
            scs.hidden += "<input type=hidden name=\"" + ew_fldWeightUnit + "\" value=\"" + HTMLEncode(ew_weightUnit) + "\" />";
            if (ew_shippingType == 0) {
                if (ew_weightCart > 0) totalwt = ew_weightCart;
                scs.hidden += "<input type=hidden name=\"" + ew_fldWeightCart + "\" value=\"" + totalwt + "\" />"
            }
        }
        scs.grandtotal = FormatCurrency(grandtotal);
        if (!EW_USE_PAYPAL) {
            scs.shipping += "<input type=hidden name=\"" + ew_fldShipCost + "\" value=\"" + shipcost + "\" />";
            scs.tax += "<input type=hidden name=\"" + ew_fldTaxCost + "\" value=\"" + taxcost + "\" />";
            scs.handling += "<input type=hidden name=\"" + ew_fldHandleCost + "\" value=\"" + handlecost + "\" />";
            scs.grandtotal += "<input type=hidden name=\"" + ew_fldGrandTotal + "\" value=\"" + grandtotal + "\" />"
        }
        return scs
    }
    return false
}
function ew_ShipView() {
    this.usePayPalStoredShippingAddress = "";
    this.firstname = "";
    this.lastname = "";
    this.address1 = "";
    this.address2 = "";
    this.city = "";
    this.zip = "";
    this.country = "";
    this.state = "";
    this.email = "";
    this.custom = "";
    this.phone = ""
}
function ShipView(type) {
    var sv = new ew_ShipView();
    if (shipdetails.toString() != "") {
        var disable = "0";
        if (EW_USE_PAYPAL) sv.usePayPalStoredShippingAddress += ShipViewCheckBoxView(type, "ppad", shipdetails.ppad, disable);
        else sv.usePayPalStoredShippingAddress += ShipViewCheckBoxView(type, "ppad", shipdetails.ppad, "1");
        disable = (shipdetails.ppad == "1") ? "1" : "0";
        sv.firstname = TextView(type, ew_fldFirstName, shipdetails.fname, 20, 32, disable);
        sv.lastname = TextView(type, ew_fldLastName, shipdetails.lname, 20, 64, disable);
        sv.address1 = TextView(type, ew_fldAddress1, shipdetails.address1, 30, 100, disable);
        sv.address2 = TextView(type, ew_fldAddress2, shipdetails.address2, 30, 100, disable);
        sv.phone = TextView(type, ew_fldPhone, shipdetails.phone, 30, 100, disable);
        sv.city = TextView(type, ew_fldCity, shipdetails.city, 30, 40, disable);
        sv.zip = TextView(type, ew_fldZip, shipdetails.zip, 30, 32, disable);
        if (ew_shippingType == 2 || ew_taxType == 2) disable = "0";
        sv.country = CountrySelectView(type, ew_fldCountry, shipdetails.country, ew_countryList, ew_fldState, disable);
        sv.state = StateSelectView(type, ew_fldState, shipdetails.state, ew_stateList, shipdetails.country, disable);
        sv.email = TextView(type, ew_fldEmail, shipdetails.email, 30, 127, "0");
        if (ew_customTextBox) {
            sv.custom = TextAreaView(type, ew_fldCustom, shipdetails.custom, 4, 40, 255, false)
        }
        var smethod = ShipMethodSelectView(type, ew_fldShipMethod, shipdetails.shipmethod, ew_shipMethodList);
        if (smethod == "") {
            sv.shipmethod = "<input type=\"hidden\" name=\"" + ew_fldShipMethod + "\" value=\"-1\" />"
        } else {
            sv.shipmethod = ew_shippingMethod + "&nbsp;";
            sv.shipmethod += smethod;
            sv.shipmethod += "<br />";
            if (!EW_USE_PAYPAL && type == 2) sv.shipmethod += "<input type=\"hidden\" name=\"" + ew_fldShipMethod + "\" value=\"" + smethod + "\" />"
        }
    }
    SetDataSetFromArray(dsShipView, new Array(sv));
    var elems = document.getElementsByName("PayPalShipAddress");
    var i, elem;
    for (i = 0; i < elems.length; i++) {
        elem = elems[i];
        elem.className = (shipdetails.ppad == "1") ? "ewHideRow" : "ewShowRow"
    }
}
function SetDataSetFromArray(ds, arr) {
    ds.unfilteredData = null;
    ds.filteredData = null;
    ds.data = [];
    ds.dataHash = {};
    var arrLen = arr.length;
    for (var i = 0; i < arrLen; i++) {
        var row = arr[i];
        if (row.ds_RowID == undefined) row.ds_RowID = i;
        ds.dataHash[row.ds_RowID] = row;
        ds.data.push(row)
    }
}
function CheckShipping(f) {
    var fname, lname, address1, address2, city, state, zip, country, email;
    var custom;
    var phone;
    fname = f.elements[ew_fldFirstName];
    lname = f.elements[ew_fldLastName];
    address1 = f.elements[ew_fldAddress1];
    address2 = f.elements[ew_fldAddress2];
    city = f.elements[ew_fldCity];
    state = f.elements[ew_fldState];
    zip = f.elements[ew_fldZip];
    country = f.elements[ew_fldCountry];
    email = f.elements[ew_fldEmail];
    custom = f.elements[ew_fldCustom];
    phone = f.elements[ew_fldPhone];
    if (fname && !fname.disabled) {
        if (fname.value == "") {
            alert(ew_RequiredMessage + ' ' + ew_firstName);
            FocusOption(fname);
            return false
        }
    }
    if (lname && !lname.disabled) {
        if (lname.value == "") {
            alert(ew_RequiredMessage + ' ' + ew_lastName);
            FocusOption(lname);
            return false
        }
    }
    if (address1 && !address1.disabled) {
        if (address1.value == "") {
            alert(ew_RequiredMessage + ' ' + ew_address1);
            FocusOption(address1);
            return false
        }
    }
    if (phone && !phone.disabled) {
        if (ew_fldPhoneRequired && phone.value == "") {
            alert(ew_RequiredMessage + ' ' + ew_phone);
            FocusOption(phone);
            return false
        }
        if (ew_fldPhoneCheck && !CheckPhone(phone.value)) {
            alert(ew_InvalidMessage + ' ' + ew_phone);
            FocusOption(phone);
            return false
        }
    }
    if (city && !city.disabled) {
        if (city.value == "") {
            alert(ew_RequiredMessage + ' ' + ew_city);
            FocusOption(city);
            return false
        }
    }
    if (zip && !zip.disabled) {
        if (zip.value == "") {
            alert(ew_RequiredMessage + ' ' + ew_zip);
            FocusOption(zip);
            return false
        }
    }
    if (country && !country.disabled) {
        if ((country.type == "select-one" && country.selectedIndex <= 0) || (country.type != "select-one" && country.value == "")) {
            alert(ew_RequiredMessage + ' ' + ew_country);
            FocusOption(country);
            return false
        }
    }
    if (state && !state.disabled) {
        if (ew_fldStateCheck) {
            if ((state.type == "select-one" && state.selectedIndex <= 0) || (state.type != "select-one" && state.value == "")) {
                alert(ew_RequiredMessage + ' ' + ew_fldState);
                FocusOption(state);
                return false
            }
        }
    }
    if (email) {
        if (email.value == "") {
            alert(ew_RequiredMessage + ' ' + ew_email);
            FocusOption(email);
            return false
        } else if (!CheckEmail(email.value)) {
            alert(ew_InvalidMessage + ' ' + ew_email);
            FocusOption(email);
            return false
        }
    }
    if (custom) {
        if (custom.value.length > 255) {
            alert(ew_InvalidMessage + ' ' + ew_custom);
            FocusOption(custom);
            return false
        }
    }
    return true
}
function CheckEmail(elementValue) {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
    return emailPattern.test(elementValue)
}
function CheckPhone(elementValue) {
    var p = new RegExp(ew_fldPhoneRegExp);
    return p.test(elementValue)
}
