var ewppLang = YAHOO.lang;
var ewppJSON = YAHOO.lang.JSON;
var ewppCookie = YAHOO.util.Cookie;
var ewppEvent = YAHOO.util.Event;
var ewppDom = YAHOO.util.Dom;
var ewpp_shippingType = 2;
var ewpp_taxType = 2;
var nItems = 0;
var total = 0;
var totalwt = 0;
var shipcost = 0;
var handlecost = 0;
var taxcost = 0;
var discountcart = 0;
var nCookies = 0;
var arCookies = new Array();

function ewpp_Language(obj) {
    this.obj = obj;
    this.Phrase = function (id) {
        return this.obj[id.toLowerCase()]
    }
}
function ewpp_ItemBase() {
    this.hidden = "";
    this.vars = {};
    this.addHidden = function (name, val) {
        this.vars[name] = val
    };
    this.renderHidden = function () {
        this.hidden = "";
        for (name in this.vars) this.hidden += "<input type=\"hidden\" name=\"" + name + "\" value=\"" + HTMLEncode(this.vars[name]) + "\">"
    };
    this.clear = function () {
        this.hidden = "";
        this.vars = {}
    }
}
function ewpp_CartItem() {
    this.itemnumber = "";
    this.itemname = "";
    this.amt = 0;
    this.qty = 0;
    this.handling = 0;
    this.tax = 0;
    this.on0 = "";
    this.on1 = "";
    this.os0 = "";
    this.os1 = "";
    this.on2 = "";
    this.on3 = "";
    this.on4 = "";
    this.on4 = "";
    this.on6 = "";
    this.os2 = "";
    this.os3 = "";
    this.os4 = "";
    this.os5 = "";
    this.os6 = "";
    this.discounttype = -1;
    this.shiptype = -1;
    this.taxtype = -1;
    this.wt = 0
}
function ewpp_ShipItem() {
    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 = ""
}
function ewpp_ShopCartItem(ci) {
    for (p in ci) this[p] = ci[p];
    this.option = "";
    this.price = "";
    this.quantity = "";
    this.quantity1 = "";
    this.discount = "";
    this.subtotal = "";
    this.remove = ""
}
ewpp_ShopCartItem.prototype = new ewpp_ItemBase;

function ewpp_ShopCartSummary() {
    this.subtotal = "";
    this.total = "";
    this.shipping = "";
    this.handling = "";
    this.tax = "";
    this.grandtotal = "";
    this.discount = "";
    this.nTotal = 0;
    this.nShipping = 0;
    this.nHandling = 0;
    this.nTax = 0;
    this.nGrandtotal = 0;
    this.nWeight = 0;
    this.nDiscount = 0;
    this.nSubTotal = 0
}
ewpp_ShopCartSummary.prototype = new ewpp_ItemBase;

function ewpp_ShipView() {
    this.usePayPalStoredShippingAddress = "";
    this.firstname = "";
    this.lastname = "";
    this.address1 = "";
    this.address2 = "";
    this.city = "";
    this.zip = "";
    this.country = "";
    this.state = "";
    this.email = "";
    this.custom = "";
    this.cntcustom = 0;
    this.phone = "";
    this.shipmethod = "";
    this.discountcode = "";
    this.ppaddr = ""
}
ewpp_ShipView.prototype = new ewpp_ItemBase;
var shipdetails = new ewpp_ShipItem();

function InitCart() {
    if (typeof(EWPP_PAGE_ID) != "undefined") {
        if (EWPP_PAGE_ID.toLowerCase() == "finish" || EWPP_PAGE_ID.toLowerCase() == "pdt") {
            ClearCart()
        } else if (EWPP_PAGE_ID.toLowerCase() == "list" || EWPP_PAGE_ID.toLowerCase() == "view") {
            var forms = ewppDom.getElementsByClassName("ewItemForm", "FORM", document.body);
            for (var i = 0; i < forms.length; i++) UpdatePrice(forms[i])
        }
    }
    LoadCart();
    if (document.getElementById(ewpp_cartView0) || document.getElementById(ewpp_cartView1) || document.getElementById(ewpp_cartView2)) CartView();
    if (document.getElementById(ewpp_shipView1)) ShipView(1);
    if (document.getElementById(ewpp_shipView2)) ShipView(2)
}
function InitMenu() {
    if (document.getElementById(EWPP_MENUBAR_ROOTMENU_ID)) ewpp_RootMenu = new Spry.Widget.MenuBar(EWPP_MENUBAR_ROOTMENU_ID, {
        imgRight: EWPP_MENUBAR_RIGHTHOVER_IMAGE,
        imgRight: EWPP_MENUBAR_DOWNHOVER_IMAGE
    });
    if (document.getElementById(EWPP_MENUBAR_ROOTCAT_ID)) ewpp_RootCat = new Spry.Widget.MenuBar(EWPP_MENUBAR_ROOTCAT_ID, {
        imgRight: EWPP_MENUBAR_RIGHTHOVER_IMAGE,
        imgRight: EWPP_MENUBAR_DOWNHOVER_IMAGE
    })
}
ewppEvent.onDOMReady(InitMenu);
ewppEvent.onDOMReady(InitCart);

function SameCartItem(item1, item2) {
    if (item1.itemnumber != item2.itemnumber) return false;
    if (item1.itemname != item2.itemname) return false;
    for (var i = 0; i <= 6; i++) {
        if (item1['on' + i] != item2['on' + i]) return false;
        if (item1['os' + i] != item2['os' + i]) return false
    }
    return true
}
function SameCartItemNo(item1, item2) {
    return (item1.itemnumber == item2.itemnumber)
}
function LoadCart() {
    var cookieStr, cookieValue;
    nItems = ReadCookie(ewpp_cntCookie);
    if (nItems == "" || nItems == null) nItems = 0;
    nCookies = (nItems > 0) ? (parseInt((nItems - 1) / ewpp_itemsPerCookie) + 1) : 0;
    for (var i = 0; i < nCookies; i++) {
        cookieStr = ewpp_cartCookie + i + 1;
        cookieValue = ReadCookie(cookieStr);
        if (cookieValue == "" || cookieValue == null) {
            nCookies = i;
            break
        }
        arCookies[i] = ewppJSON.parse(cookieValue)
    }
    cookieStr = ewpp_shipCookie;
    cookieValue = ReadCookie(cookieStr);
    if (cookieValue != "" && cookieValue != null) shipdetails = ewppJSON.parse(cookieValue)
}
function ClearCart() {
    WriteCookie(ewpp_cntCookie, 0, eval(ewpp_cartExpire), ewpp_cartPath)
}
function CheckItemQty(cartid, itemno, itemname, itemqty) {
    if (!EWPP_CHECK_ITEM_COUNT) return true;
    var qty = parseInt(itemqty);
    if (itemno != "") {
        var item;
        var ci = new ewpp_CartItem();
        ci.itemnumber = itemno;
        for (var i = 1; i <= nItems; i++) {
            if (i != cartid) {
                item = ReadItemFromCart(i);
                if (item) {
                    if (SameCartItemNo(ci, item)) qty += parseInt(item.qty)
                }
            }
        }
        var wrkqty = getItemCount(itemno);
        if (wrkqty == null) {
            return false
        } else if (qty > wrkqty) {
            var msg = ewppLanguage.Phrase("ItemQtyExceedMessage");
            msg = msg.toString().replace("%i", itemname);
            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 = ewpp_CreateXMLHttp();
    if (!xmlHttp) return;
    url = ewpp_urlQuery + '?sid=' + encodeURIComponent(EWPP_SESSION_ID);
    url += '&item=' + encodeURIComponent(itemnumber);
    xmlHttp.open('get', url, false);
    try {
        xmlHttp.send(null);
        if (xmlHttp.status == 200 && xmlHttp.responseText) {
            return parseInt(xmlHttp.responseText)
        } else {
            msg = ewppLanguage.Phrase("ItemCountServerStatus");
            msg = msg.toString().replace("%i", itemnumber);
            msg = msg.toString().replace("%s", xmlHttp.status);
            alert(msg);
            return null
        }
    } catch (e) {
        msg = ewppLanguage.Phrase("ItemCountServerError");
        msg = msg.toString().replace("%i", itemnumber);
        msg = msg.toString().replace("%e", e.description);
        alert(msg);
        return null
    }
}
function getDiscount(code) {
    var msg;
    var xmlHttp = ewpp_CreateXMLHttp();
    if (!xmlHttp) return;
    url = ewpp_urlQuery + '?sid=' + encodeURIComponent(EWPP_SESSION_ID);
    url += '&code=' + encodeURIComponent(code);
    xmlHttp.open('get', url, false);
    try {
        xmlHttp.send(null);
        if (xmlHttp.status == 200 && xmlHttp.responseText) {
            return xmlHttp.responseText
        } else {
            return 0
        }
    } catch (e) {
        return 0
    }
}
function ewpp_CreateXMLHttp() {
    var http, i;
    try {
        http = new XMLHttpRequest()
    } catch (e) {
        var msxml_progid = ['Microsoft.XMLHTTP', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];
        for (i = 0; i < msxml_progid.length; ++i) {
            try {
                http = new ActiveXObject(this._msxml_progid[i]);
                break
            } catch (e1) {}
        }
    } finally {
        return http
    }
}
function AddItemToCart(f) {
    var itemname = (f.elements[ewpp_fldItemName]) ? f.elements[ewpp_fldItemName].value : "";
    var itemnumber = (f.elements[ewpp_fldItemNumber]) ? f.elements[ewpp_fldItemNumber].value : "";
    var itemqty = (f.elements[ewpp_fldQuantity]) ? f.elements[ewpp_fldQuantity].value : 1;
    if (!CheckItemQty(0, itemnumber, itemname, itemqty)) {
        var elem = f.elements[ewpp_fldQuantity];
        if (elem && elem.type != "hidden") {
            elem.focus();
            elem.select()
        }
        return
    }
    var arOptions = [];
    if (nItems >= ewpp_maxCartItems && ewpp_maxCartItems > 0) {
        alert(ewppLanguage.Phrase("CartFullMessage"))
    } else {
        var ci = new ewpp_CartItem();
        var on, os;
        for (var i = 0; i <= 6; i++) {
            ci["on" + i] = "";
            ci["os" + i] = "";
            var on = (f.elements["on" + i + "d"]) ? f.elements["on" + i + "d"].value : "";
            var os = (f.elements["os" + i + "d"]) ? OptionValue(f.elements["os" + i + "d"]) : "";
            if (on != "" && os != "") {
                ci["on" + i] = on;
                ci["os" + i] = RemovePrice(os)
            }
        }
        ci.itemnumber = (f.elements[ewpp_fldItemNumber]) ? f.elements[ewpp_fldItemNumber].value : "";
        ci.itemname = (f.elements[ewpp_fldItemName]) ? f.elements[ewpp_fldItemName].value : "";
        ci.amt = (f.elements[ewpp_fldAmount]) ? f.elements[ewpp_fldAmount].value : 0;
        ci.qty = (f.elements[ewpp_fldQuantity]) ? f.elements[ewpp_fldQuantity].value : 1;
        ci.handling = (f.elements[ewpp_fldHandling]) ? f.elements[ewpp_fldHandling].value : 0;
        ci.tax = (f.elements[ewpp_fldTax]) ? f.elements[ewpp_fldTax].value : 0;
        ci.discounttype = (f.elements[ewpp_fldDiscountType]) ? f.elements[ewpp_fldDiscountType].value : "";
        ci.shiptype = (f.elements[ewpp_fldShipType]) ? f.elements[ewpp_fldShipType].value : "";
        ci.taxtype = (f.elements[ewpp_fldTaxType]) ? f.elements[ewpp_fldTaxType].value : "";
        ci.wt = (f.elements[ewpp_fldWeight]) ? f.elements[ewpp_fldWeight].value : 0;
        if (ci.itemname != "") {
            ProcessCartItem(ci);
            if (ewpp_showCartAddMsg) alert(ewppLanguage.Phrase("CartAddMessage"));
            ReloadCurrentPage()
        } else {
            alert(ewppLanguage.Phrase("EmptyItemMessage"))
        }
    }
}
function ProcessCartItem(ci) {
    for (var i = 1; i <= nItems; i++) {
        if (UpdateCartItem(i, ci)) return true
    }
    nItems++;
    WriteItemToCart(nItems, ci);
    WriteCookie(ewpp_cntCookie, nItems, eval(ewpp_cartExpire), ewpp_cartPath);
    return true
}
function UpdateCartQuantity(f) {
    for (var i = nItems; i >= 1; i--) {
        var qty = (f.elements[ewpp_fldQuantity + "_" + i]) ? f.elements[ewpp_fldQuantity + "_" + i].value : 1;
        UpdateQuantity(i, qty)
    }
    ReloadCurrentPage()
}
function UpdateItemQuantity(i, qty) {
    UpdateQuantity(i, qty);
    ReloadCurrentPage()
}
function UpdateQuantity(i, qty) {
    var ci = ReadItemFromCart(i);
    if (ci) {
        var itemnumber = ci.itemnumber;
        var itemname = ci.itemname;
        if (!CheckItemQty(i, itemnumber, itemname, qty)) return;
        ci.qty = IntValue(qty);
        if (ci.qty == 0) {
            RemoveItemFromCart(i)
        } else {
            WriteItemToCart(i, ci)
        }
    }
}
function UpdateCartItem(i, item) {
    var ci = ReadItemFromCart(i);
    if (ci) {
        if (SameCartItem(ci, item)) {
            ci.amt = item.amt;
            ci.qty = 1;
            WriteItemToCart(i, ci);
            return true
        }
    }
    return false
}
function RemoveItemFromCart(i) {
    if (!ewpp_showCartRemoveMsg || (ewpp_showCartRemoveMsg && confirm(ewppLanguage.Phrase("CartRemoveMessage")))) {
        var item;
        for (var idx = i; idx < nItems; idx++) {
            item = ReadItemFromCart(idx + 1);
            if (item) WriteItemToCart(idx, item)
        }
        WriteCookie(ewpp_cntCookie, nItems - 1, eval(ewpp_cartExpire), ewpp_cartPath);
        var cookieStr = ewpp_cartCookie + nItems;
        DeleteCookie(cookieStr, "/");
        nItems--;
        ReloadCurrentPage()
    }
}
function ReloadCurrentPage() {
    var cookieStr, cookieValue;
    for (var i = 0; i < nCookies; i++) {
        cookieValue = ewppJSON.stringify(arCookies[i]);
        cookieStr = ewpp_cartCookie + i + 1;
        WriteCookie(cookieStr, cookieValue, eval(ewpp_cartExpire), ewpp_cartPath)
    }
    CartView();
    Spry.Data.updateAllRegions()
}
function ReadItemFromCart(i) {
    var cookieIdx = parseInt((i - 1) / ewpp_itemsPerCookie) + 1;
    var cookieOffset = (i - 1) % ewpp_itemsPerCookie;
    var item;
    if (nCookies >= cookieIdx) item = arCookies[cookieIdx - 1][cookieOffset];
    return item
}
function WriteItemToCart(i, item) {
    var cookieIdx, cookieOffset;
    cookieIdx = parseInt((i - 1) / ewpp_itemsPerCookie) + 1;
    if (nCookies < cookieIdx) {
        nCookies += 1;
        cookieIdx = nCookies;
        arCookies[cookieIdx - 1] = [
            []
        ];
        cookieOffset = 0
    } else {
        cookieOffset = (i - 1) % ewpp_itemsPerCookie
    }
    arCookies[cookieIdx - 1][cookieOffset] = item
}
function ReadCookie(name) {
    if (ewpp_useCookie) {
        return ewppCookie.get(name)
    } else {
        return ewpp_storageEngine.getItem(name)
    }
}
function WriteCookie(name, value, aexpires, apath) {
    if (ewpp_useCookie) {
        ewppCookie.set(name, value, {
            path: apath,
            expires: aexpires
        })
    } else {
        ewpp_storageEngine.setItem(name, value)
    }
}
function DeleteCookie(name, apath, adomain) {
    if (ewpp_useCookie) {
        if (ewppCookie.exists(name)) ewppCookie.remove(name, {
            path: apath,
            domain: adomain
        })
    } else {
        if (ewpp_storageEngine.hasKey(name)) ewpp_storageEngine.removeItem(name)
    }
}
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 <= EWPP_DEFAULT_FRAC_DIGITS; i++) {
        base = base * 10
    }
    amt = (typeof(amt) != "undefined") ? amt.toString().replace(/\$|\,/g, '') : "0";
    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 < EWPP_DEFAULT_FRAC_DIGITS; 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)) + EWPP_DEFAULT_MON_THOUSANDS_SEP + amt.substring(amt.length - (4 * i + 3))
    }
    outstr = ((sign) ? '' : '-') + EWPP_DEFAULT_CURRENCY_SYMBOL + amt;
    if (EWPP_DEFAULT_FRAC_DIGITS > 0) outstr += EWPP_DEFAULT_MON_DECIMAL_POINT + 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 = "";
    for (var i = 0; i <= 6; i++) {
        if (item['on' + i] != "" && item['os' + i] != "") {
            if (str != "") str += ewpp_optionDelim + " ";
            str += item['on' + i] + ewpp_optionSep + item['os' + i]
        }
    }
    return str
}
function SetupOptions(f) {
    for (var i = 0; i <= 6; i++) {
        if (f.elements['on' + i]) f.elements['on' + i].value = (f.elements['on' + i + 'd']) ? f.elements['on' + i + 'd'].value : "";
        if (f.elements['os' + i]) f.elements['os' + i].value = (f.elements['os' + i + 'd']) ? RemovePrice(OptionValue(f.elements['os' + i + 'd'])) : ""
    }
    return true
}
function CheckCart(f) {
    for (var i = 1; i <= nItems; i++) {
        var ci = ReadItemFromCart(i);
        if (ci) {
            var qty = ci.qty;
            var itemnumber = ci.itemnumber;
            var itemname = ci.itemname;
            if (!CheckItemQty(i, itemnumber, itemname, qty)) return false
        }
    }
    if (total <= 0) {
        alert(ewppLanguage.Phrase("InvalidAmount"));
        return false
    }
    if (Confirm_Submitting(f)) {
        var el;
        var str = "";
        for (var i = 0; i < f.elements.length; i++) {
            el = f.elements[i];
            if (el.type == "hidden") {
                if (str != "") str += "&";
                str += el.name + "=" + encodeURIComponent(el.value)
            }
        }
        var xmlHttp = ewpp_CreateXMLHttp();
        if (xmlHttp) {
            var url = ewpp_urlQuery + '?order=1&sid=' + encodeURIComponent(EWPP_SESSION_ID);
            xmlHttp.open('POST', url, false);
            xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            xmlHttp.send(str)
        }
        return true
    }
    return false
}
function RoundNumber(num, dgt) {
    var newnum = Math.round(num * Math.pow(10, dgt)) / Math.pow(10, dgt);
    return newnum
}
function UpdatePrice(f) {
    var el = f.elements[ewpp_fldAmountBase];
    if (!el) return;
    var amt = el.value;
    for (var i = 0; i < 7; i++) {
        c = (f.elements['os' + i + 'd']) ? f.elements['os' + i + 'd'] : f.elements['os' + i];
        if (c) amt = OptionPrice(amt, OptionValue(c))
    }
    amt = RoundNumber(amt, EWPP_DEFAULT_FRAC_DIGITS);
    el = f.elements[ewpp_fldAmount];
    if (el) el.value = amt;
    var id = f.elements[ewpp_fldID].value;
    var e = document.getElementsByName(ewpp_divAmountName + id);
    for (var i = 0; i < e.length; i++) e[i].innerHTML = FormatCurrency(amt)
}
function RemovePrice(value) {
    var i, p;
    if (ewppLang.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 (ewppLang.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) {
    for (var i = 0; i <= 6; i++) {
        if (!CheckOption(f, 'on' + i + 'd', 'os' + i + 'd', 'or' + i, ewppLanguage.Phrase("OptionMessage"))) return false
    }
    return true
}
function CheckQty(f) {
    var q = 0;
    var obj = f.elements[ewpp_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(ewppLanguage.Phrase("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 (CheckQty(f) && CheckOptions(f)) AddItemToCart(f);
    return false
}
function SubmitItem(f) {
    if (CheckOptions(f)) {
        SetupOptions(f);
        return true
    }
    return false
}
function SubmitShipping(f) {
    if (CheckShipping(f)) {
        AddShipping(f);
        return true
    }
    return false
}
function AddShipping(f) {
    var cookieStr, cookieValue;
    var ppad = f.ppad;
    var fname = f.elements[ewpp_fldFirstName];
    var lname = f.elements[ewpp_fldLastName];
    var address1 = f.elements[ewpp_fldAddress1];
    var address2 = f.elements[ewpp_fldAddress2];
    var city = f.elements[ewpp_fldCity];
    var state = f.elements[ewpp_fldState];
    var zip = f.elements[ewpp_fldZip];
    var country = f.elements[ewpp_fldCountry];
    var email = f.elements[ewpp_fldEmail];
    var shipmethod = f.elements[ewpp_fldShipMethod];
    var custom = f.elements[ewpp_fldCustom];
    var phone = f.elements[ewpp_fldPhone];
    var discountcode = f.elements[ewpp_fldDiscountCode];
    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;
    if (discountcode) shipdetails.discountcode = discountcode.value;
    cookieStr = ewpp_shipCookie;
    cookieValue = ewppJSON.stringify(shipdetails);
    WriteCookie(cookieStr, cookieValue, eval(ewpp_cartExpire), ewpp_cartPath);
    return true
}
function GetCurrentPath() {
    var href = location.href;
    var idx = href.lastIndexOf("/");
    return (idx > -1) ? href.substring(0, idx + 1) : ""
}
function RedirectTo(page) {
    window.location = GetCurrentPath() + page
}
function ShipViewCheckBoxView(type, name, val) {
    var outstr = "";
    if (type == 1 || (type == 2 && val == "1")) {
        outstr += "<p><label><input type=\"hidden\" name=\"" + name + "\"  onload=\"UpdateShipView(this.checked)\"";
        if (val == "1") outstr += " checked=\"checked\"";
        if (type == 2 && val == "1") outstr += " disabled=\"disabled\"";
        outstr += ">" + "</label></p>"
    }
    return outstr
}
function UpdateShipView(bool) {
    if (EWPP_USE_PAYPAL) {
        var elems = ewppDom.getElementsByClassName("ewShipAddress", "TR", document.getElementById(ewpp_shipView1));
        var i, elem;
        for (i = 0; i < elems.length; i++) {
            elem = elems[i];
            elem.style.display = (bool) ? "none" : ""
        }
    }
}
function TextView(sv, type, name, val, size, maxlen, disable) {
    var outstr = "";
    if (type == 1) {
        outstr += HTMLEncode(val)
    } else {
        if (name == "night_phone") {
            if (EWPP_USE_PAYPAL) {
                if (sv && disable != "1") {
                    var ar = val.split(ewpp_fldPhoneSep);
                    if (ar.length == 3) {
                        sv.addHidden("night_phone_a", ar[0]);
                        sv.addHidden("night_phone_b", ar[1]);
                        sv.addHidden("night_phone_c", ar[2])
                    } else if (ar.length == 2) {
                        sv.addHidden("night_phone_a", ar[0]);
                        sv.addHidden("night_phone_b", ar[1]);
                        sv.addHidden("night_phone_c", "")
                    } else if (ar.length == 1) {
                        sv.addHidden("night_phone_a", "");
                        sv.addHidden("night_phone_b", val);
                        sv.addHidden("night_phone_c", "")
                    }
                }
            } else {
                sv.addHidden("night_phone_a", "");
                sv.addHidden("night_phone_b", val);
                sv.addHidden("night_phone_c", "")
            }
        } else {
            if (sv && (!EWPP_USE_PAYPAL || disable != "1")) sv.addHidden(name, val)
        }
        outstr += val
    }
    return outstr
}
function TextAreaView(sv, type, name, val, rows, cols, maxlen, disable) {
    var outstr = "";
    if (type == 1) {
        outstr += val
    } else {
        if (sv && disable != "1") sv.addHidden(name, 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(sv, type, name, val, list, statename, disable) {
    var outstr = "";
    var arval = ewpp_countryList;
    if (type == 1) {
        outstr += "<select style='width:280px' class=\'input\' name=\"" + name + "\"";
        if (statename != "") {
            outstr += " onchange=\"UpdateState(this.form." + statename + ",this.options[this.selectedIndex].value);\""
        }
        outstr += ">";
        outstr += "<option value=\"\">" + ewppLanguage.Phrase("PleaseSelect") + "</option>";
        for (var i = 0; i < arval.length; i++) {
            var country = arval[i];
            outstr += "<option value=\"" + HTMLEncode(country.CountryRegionId + "," + country.CountryId) + "\"";
            if (country.CountryRegionId + "," + country.CountryId == val) outstr += " selected=\"selected\"";
            outstr += ">" + country.CountryName + "</option>"
        }
        outstr += "</select>"
    } else {
        for (var i = 0; i < arval.length; i++) {
            var country = arval[i];
            if (country.CountryRegionId + "," + country.CountryId == val) {
                outstr = country.CountryName;
                if (disable != "1") sv.addHidden(name, country.CountryCode);
                break
            }
        }
    }
    return outstr
}
function StateSelectView(sv, type, name, val, list, ctry_value, disable) {
    var outstr = "",
        n = 0;
    var arval = ewpp_stateList;
    if (type == 1) {
        outstr += "<select style='width:280px' class=\'input\' name=\"" + name + "\"";
        outstr += ">";
        var ctryid = (ctry_value == "" || ctry_value == null) ? "" : ctry_value.split(",")[1];
        for (var i = 0; i < arval.length; i++) {
            var state = arval[i];
            if (state.StateCountryId == ctryid) {
                outstr += "<option value=\"" + HTMLEncode(state.StateCountryId + "," + state.StateId) + "\"";
                if (state.StateCountryId + "," + state.StateId == val) outstr += " selected=\"selected\"";
                outstr += ">" + state.StateName + "</option>";
                n++
            }
        }
        if (n == 0) outstr += "<option value=\"\">" + ewppLanguage.Phrase("StateNA") + "</option>";
        outstr += "</select>"
    } else {
        for (var i = 0; i < arval.length; i++) {
            var state = arval[i];
            if (state.StateCountryId + "," + state.StateId == val) {
                outstr = state.StateName;
                if (disable != "1") sv.addHidden(name, state.StateCode);
                break
            }
        }
        if (outstr == "") {
            outstr = ewppLanguage.Phrase("StateNA");
            sv.addHidden(name, "")
        }
    }
    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 = ewpp_stateList;
    for (var i = 0; i < arval.length; i++) {
        var state = arval[i];
        if (state.StateCountryId == ctry) {
            var length = obj.length;
            obj.options[length] = new Option(state.StateName, state.StateCountryId + "," + state.StateId, false, false)
        }
    }
    if (value != null) {
        for (var i = obj.length - 1; i >= 0; i--) {
            if (obj.options[i].value == value) {
                obj.selectedIndex = i;
                break
            }
        }
    }
    if (obj.length == 0) obj.options[0] = new Option(ewppLanguage.Phrase("StateNA"), "", false, false)
}
function ShipMethodSelectView(sv, type, name, val, list) {
    var outstr = "";
    var arval = ewpp_shipMethodList;
    if (type == 1) {
        if (list == "") {
            outstr = ""
        } else if (arval.length == 1) {
            var sm = arval[0];
            outstr += sm.ShippingMethod;
            sv.addHidden(name, sm.ShippingMethodId)
        } else {
            outstr += "<select name=\"" + name + "\">";
            for (var i = 0; i < arval.length; i++) {
                var sm = arval[i];
                outstr += "<option value=\"" + HTMLEncode(sm.ShippingMethodId) + "\"";
                if (sm.ShippingMethodId == val) outstr += " selected=\"selected\"";
                outstr += ">" + sm.ShippingMethod + "</option>"
            }
            outstr += "</select>"
        }
    } else {
        for (var i = 0; i < arval.length; i++) {
            var sm = arval[i];
            if (sm.ShippingMethodId == val) {
                outstr = sm.ShippingMethod;
                break
            }
        }
    }
    return outstr
}
function CalculateDiscountQty(dtype) {
    var totalqty = 0;
    var ci;
    for (var i = 1; i <= nItems; i++) {
        ci = ReadItemFromCart(i);
        if (ci) {
            if (ci.discounttype == dtype) totalqty += ci.qty * 1
        }
    }
    return totalqty
}
function CalculateDiscount(amt, dtype, qty) {
    if (!ewpp_discountList) return 0;
    var arDiscountType = ewpp_discountTypeList;
    var temp, dct;
    for (var i = 0; i < arDiscountType.length; i++) {
        temp = arDiscountType[i];
        if (temp.DiscountTypeId == dtype) {
            dct = temp;
            break
        }
    }
    if (!dct) return 0;
    var arDiscount = ewpp_discountList;
    for (var i = arDiscount.length - 1; i >= 0; i--) {
        dc = arDiscount[i];
        if (dc.DiscountTypeId == dtype) {
            if (qty >= parseFloat(dc.DiscountQuantity)) {
                if (dct.DiscountTypeBy == 0) {
                    return amt * parseFloat(dc.DiscountPercent) / 100
                } else if (dct.DiscountTypeBy == 1) {
                    return parseFloat(dc.DiscountAmount)
                }
            }
        }
    }
    return 0
}
function CalculateTax(ttype, ctry, state) {
    var taxpct = 0;
    var arCtry = ctry.split(",");
    if (arCtry.length == 2) {
        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 = ewpp_taxList;
    for (var i = 0; i < arTax.length; i++) {
        var tax = arTax[i];
        if (tax.TaxTypeId == ttype && tax.TaxRegionId == reg && tax.TaxCountryId == ctry && tax.TaxStateId == state) return (parseFloat(tax.TaxPercent / 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 == 2) {
        var regionid = arCtry[0];
        var ctryid = arCtry[1];
        var stateid;
        if (state == "" || state == null) stateid = -1;
        else stateid = state.split(",")[1];
        shipcost = GetShipcost(stype, smethod, regionid, ctryid, stateid, qty, amt, wt);
        while (shipcost == null) {
            if (stateid != -1) stateid = -1;
            else if (ctryid != -1) ctryid = -1;
            else if (regionid != -1) regionid = -1;
            shipcost = GetShipcost(stype, smethod, regionid, ctryid, stateid, 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 = ewpp_shipcostList0;
    else if (shipCalcType == 1) arShipcost = ewpp_shipcostList1;
    else if (shipCalcType == 2) arShipcost = ewpp_shipcostList2;
    else return 0;
    var lastshipcost = null;
    var last_wt_range = 0;
    for (var i = 0; i < arShipcost.length; i++) {
        var sc = arShipcost[i];
        if (sc.ShippingTypeId == stype && (sc.ShippingMethodId == smethod || smethod == -1)) {
            if (sc.ShippingRegionId == reg && sc.ShippingCountryId == ctry && sc.ShippingStateId == state) {
                var basecost = parseFloat(sc.ShippingBaseCost);
                var extracost = parseFloat(sc.ShippingExtraCost);
                if (shipCalcType == 1) {
                    var price_range = parseFloat(sc.ShippingPrice);
                    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(sc.ShippingWeight);
                    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(sc.ShippingQty);
                    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 = ewpp_shipTypeList;
    for (var i = 0; i < arShipType.length; i++) {
        var st = arShipType[i];
        if (st.ShippingTypeId == stype) return st.ShippingTypeCalcBy
    }
    return 0
}
function HTMLEncode(t) {
    if (t) {
        return t.toString().replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;")
    } else return ""
}
function HTMLDecode(t) {
    if (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, "/")
    } else return ""
}
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 CartView() {
    total = 0;
    totalwt = 0;
    shipcost = 0;
    handlecost = 0;
    taxcost = 0;
    discountcart = 0;
    var sci;
    var scis = new Array();
    for (var i = 1; i <= nItems; i++) {
        sci = CartItem(i);
        if (sci) {
            CartItem_Showing(sci);
            sci.renderHidden();
            scis.push(sci)
        }
    }
    var scs = CartFooter();
    if (scs) {
        CartSummary_Showing(scs);
        scs.renderHidden()
    }
    SetDataSetFromArray(dsShopCartItems, scis);
    if (scs) SetDataSetFromArray(dsShopCartSummary, new Array(scs))
}
function CartItem(i) {
    var ci = ReadItemFromCart(i);
    if (ci) {
        var wt = ci.wt;
        var amt = ci.amt;
        var qty = ci.qty;
        var dtype = ci.discounttype;
        var dqty = CalculateDiscountQty(dtype);
        var discount = CalculateDiscount(amt, dtype, dqty);
        var damt = parseFloat(amt) - discount;
        var subtotal = parseInt(qty) * parseFloat(damt);
        total += subtotal;
        totalwt += parseInt(qty) * parseFloat(wt);
        var sci = new ewpp_ShopCartItem(ci);
        sci.clear();
        sci.addHidden(ewpp_fldItemNumber + "_" + i, ci.itemnumber);
        sci.addHidden(ewpp_fldItemName + "_" + i, ci.itemname);
        sci.option = OptionString(ci);
        for (var j = 0; j <= 6; j++) {
            if (ci['on' + j] != "" && ci['os' + j] != "") {
                sci.addHidden("on" + j + "_" + i, ci['on' + j]);
                sci.addHidden("os" + j + "_" + i, ci['os' + j])
            }
        }
        var postItem;
        handlecost += parseFloat(ci.handling);
        sci.addHidden(ewpp_fldHandling + "_" + i, ci.handling);
        taxcost += CalculateTax(ci.taxtype, shipdetails.country, shipdetails.state) * subtotal;
        sci.price = FormatCurrency(amt);
        sci.addHidden(ewpp_fldAmount + "_" + i, RoundNumber(damt, EWPP_DEFAULT_FRAC_DIGITS));
        sci.quantity1 = "<input type=\"text\" size=\"" + ewpp_fldQuantitySize + "\" type=text name=\"" + ewpp_fldQuantity + "_" + i + "\" value=\"" + qty + "\" onkeypress=\"if (CheckEnter(event)) UpdateItemQuantity(" + i + ", this.value);\" onchange=\"UpdateItemQuantity(" + i + ", this.value);\">";
        sci.quantity = qty;
        if (document.getElementById(ewpp_cartView2)) sci.addHidden(ewpp_fldQuantity + "_" + i, qty);
        sci.discount = FormatCurrency(discount);
        sci.subtotal = FormatCurrency(subtotal);
        sci.remove = "<a href=\"javascript:RemoveItemFromCart(" + i + ")\">" + ewpp_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;
        var ci;
        if (ewpp_shippingType == 2) {
            shipcost = 0;
            for (var i = 1; i <= nItems; i++) {
                ci = ReadItemFromCart(i);
                if (ci && 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(amt, dtype, dqty);
                    var damt = amt - 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] += qty;
                        arShiptype[shipitem][2] += subtotal;
                        arShiptype[shipitem][3] += wt
                    }
                }
            }
            for (var i = 0; i < arShiptype.length; i++) {
                shipcost += CalculateShipCost(arShiptype[i][0], shipmethod, shipctry, shipstate, arShiptype[i][1], arShiptype[i][2], arShiptype[i][3])
            }
        }
        var grandtotal = total + shipcost;
        if (ewpp_HandlingCart > 0) handlecost += ewpp_HandlingCart;
        grandtotal += handlecost;
        if (ewpp_taxType == 3) {
            var taxpct = CalculateTax(ewpp_shippingTaxType, shipctry, shipstate);
            taxcost += (shipcost + handlecost) * taxpct
        }
        grandtotal += taxcost;
        var net = grandtotal;
        var discamt = 0;
        var discrate = 0;
        if (ewpp_taxType == 2 && document.getElementById(ewpp_cartView2)) {
            if (shipdetails.discountcode != "") {
                var discinfo = getDiscount(shipdetails.discountcode);
                if (discinfo != "" && discinfo.indexOf("|") > -1) {
                    ardiscinfo = discinfo.split("|");
                    discrate = parseFloat(ardiscinfo[0]);
                    if (ardiscinfo.length > 1) discamt = parseFloat(ardiscinfo[1]);
                    if (discrate > 0) {
                        discamt = total * discrate / 100;
                        net -= discamt
                    } else if (discamt > 0) {
                        net -= discamt
                    }
                    if (net < 0) net = 0
                }
            }
        }
        var scs = new ewpp_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);
        scs.handling = FormatCurrency(handlecost);
        scs.grandtotal = FormatCurrency(grandtotal);
        scs.nDiscount = discamt;
        scs.discount = FormatCurrency(discamt);
        scs.nNet = net;
        scs.net = FormatCurrency(net);
        if (discrate > 0) {
            scs.addHidden("discount_rate_cart", RoundNumber(discrate, EWPP_DEFAULT_FRAC_DIGITS))
        } else if (discamt > 0) {
            scs.addHidden("discount_amount_cart", RoundNumber(discamt, EWPP_DEFAULT_FRAC_DIGITS))
        }
        scs.addHidden(ewpp_fldHandlingCart, RoundNumber(shipcost + handlecost, EWPP_DEFAULT_FRAC_DIGITS));
        if (ewpp_taxType == 2 && taxcost > 0) scs.addHidden(ewpp_fldTaxCart, RoundNumber(taxcost, EWPP_DEFAULT_FRAC_DIGITS));
        scs.nWeight = totalwt;
        if (!EWPP_USE_PAYPAL) {
            scs.addHidden(ewpp_fldShipCost, RoundNumber(shipcost, EWPP_DEFAULT_FRAC_DIGITS));
            scs.addHidden(ewpp_fldTaxCost, RoundNumber(taxcost, EWPP_DEFAULT_FRAC_DIGITS));
            scs.addHidden(ewpp_fldHandleCost, RoundNumber(handlecost, EWPP_DEFAULT_FRAC_DIGITS));
            scs.addHidden(ewpp_fldNetPrice, RoundNumber(net, EWPP_DEFAULT_FRAC_DIGITS));
            scs.addHidden(ewpp_fldGrandTotal, RoundNumber(grandtotal, EWPP_DEFAULT_FRAC_DIGITS))
        }
        return scs
    }
    return false
}
function ShipView(type) {
    var sv = new ewpp_ShipView();
    if (ewppJSON.stringify(shipdetails) != "") {
        sv.ppaddr = shipdetails.ppad;
        if (EWPP_USE_PAYPAL) {
            sv.usePayPalStoredShippingAddress += ShipViewCheckBoxView(type, "ppad", sv.ppaddr);
            if (ewpp_useAddressOverride && type == 2 && sv.ppaddr == "0") sv.addHidden("address_override", "1")
        }
        sv.firstname = TextView(sv, type, ewpp_fldFirstName, shipdetails.fname, 20, 32, sv.ppaddr);
        sv.lastname = TextView(sv, type, ewpp_fldLastName, shipdetails.lname, 20, 64, sv.ppaddr);
        sv.address1 = TextView(sv, type, ewpp_fldAddress1, shipdetails.address1, 30, 100, sv.ppaddr);
        sv.address2 = TextView(sv, type, ewpp_fldAddress2, shipdetails.address2, 30, 100, sv.ppaddr);
        sv.phone = TextView(sv, type, ewpp_fldPhone, shipdetails.phone, 30, 100, sv.ppaddr);
        sv.city = TextView(sv, type, ewpp_fldCity, shipdetails.city, 30, 40, sv.ppaddr);
        sv.zip = TextView(sv, type, ewpp_fldZip, shipdetails.zip, 30, 32, sv.ppaddr);
        sv.country = CountrySelectView(sv, type, ewpp_fldCountry, shipdetails.country, ewpp_countryList, ewpp_fldState, "0");
        sv.state = StateSelectView(sv, type, ewpp_fldState, shipdetails.state, ewpp_stateList, shipdetails.country, "0");
        var smethod = ShipMethodSelectView(sv, type, ewpp_fldShipMethod, shipdetails.shipmethod, ewpp_shipMethodList);
        if (smethod == "") {
            sv.addHidden(ewpp_fldShipMethod, "-1")
        } else {
            sv.shipmethod = smethod;
            if (!EWPP_USE_PAYPAL && type == 2) sv.addHidden(ewpp_fldShipMethod, smethod)
        }
        sv.email = TextView(sv, type, ewpp_fldEmail, shipdetails.email, 30, 127, "0");
        if (EWPP_CUSTOM_AS_TEXTAREA) sv.custom = TextAreaView(sv, type, ewpp_fldCustom, shipdetails.custom, 4, 40, 255, "0");
        if (type == 1) {
            if (EWPP_CUSTOM_AS_TEXTAREA) sv.cntcustom = 255 - shipdetails.custom.length;
            if (EWPP_DISCOUNT_CODE) sv.discountcode = TextView(sv, type, ewpp_fldDiscountCode, shipdetails.discountcode, 30, 255, "0")
        } else if (type == 2) {
            if (smethod != "") {
                if (EWPP_CUSTOM_AS_TEXTAREA) {
                    scustom = shipdetails.custom;
                    if (scustom != "") scustom += "; ";
                    scustom += smethod;
                    sv.addHidden(ewpp_fldCustom, scustom)
                } else {
                    sv.addHidden(ewpp_fldCustom, smethod)
                }
            }
        }
    }
    Shipping_Showing(sv);
    sv.renderHidden();
    SetDataSetFromArray(dsShipView, new Array(sv));
    UpdateShipView(ewppJSON.stringify(shipdetails) != "" && shipdetails.ppad == "1")
}
function SetDataSetFromArray(ds, arr) {
    ds.unfilteredData = null;
    ds.filteredData = null;
    ds.data = [];
    ds.dataHash = {};
    var arrLen = arr.length;
    var row;
    for (var i = 0; i < arrLen; i++) {
        var row = Spry.Data.JSONDataSet.flattenObject(arr[i]);
        if (row.ds_RowID == undefined) row.ds_RowID = i;
        ds.dataHash[row.ds_RowID] = row;
        ds.data.push(row)
    }
}
