function cart(A) {
    this.totalItems = 0;
    this.totalPrice = 0;
    this.items = new Array();
    this.userEmail = A;
    this.ItemColumns = ["Image", "Name", "Price", "Options", "Quantity", "Total"];
    this.initialize = function () {
        if (!readCookie("simpleCart")) {
            this.totalItems = 0;
            this.totalPrice = 0
        } else {
            data = readCookie("simpleCart").split("&");
            this.totalItems = data[0] * 1;
            this.totalPrice = data[1] * 1;
            for (x = 2; x < (data.length); x++) {
                newItem = new item();
                itemData = data[x].split(",");
                i = 0;
                for (i = 0; i < itemData.length; i++) {
                    pair = itemData[i].split("=");
                    newItem.addValue(pair[0], pair[1])
                }
                if (!newItem.getValue("name") || !newItem.getValue("price") || !newItem.getValue("quantity")) {
                    alert("item must have price, name, and quantity!");
                    return false
                }
                this.items[x - 2] = newItem
            }
        }
        this.setUpEvents();
        this.updateCookie();
        this.updatePageElements();
        return
    };
    this.checkOutEvent = function () {
        simpleCart.checkOut();
        return false
    };
    this.emptyEvent = function () {
        simpleCart.empty();
        return false
    };
    this.setUpEvents = function () {
        var B = 0,
        C, D = getElementsByClassName("simpleCart_total");
        B = 0;
        D = getElementsByClassName("simpleCart_checkout");
        for (B = 0; B < D.length; B++) {
            C = D[B];
            if (C.addEventListener) {
                C.addEventListener("click", this.checkOutEvent, false)
            } else {
                if (C.attachEvent) {
                    C.attachEvent("onclick", this.checkOutEvent)
                }
            }
        }
        B = 0;
        D = getElementsByClassName("simpleCart_empty");
        for (B = 0; B < D.length; B++) {
            C = D[B];
            if (C.addEventListener) {
                C.addEventListener("click", this.emptyEvent, false)
            } else {
                if (C.attachEvent) {
                    C.attachEvent("onclick", this.emptyEvent)
                }
            }
        }
        return
    };
    this.add = function () {
        newItem = new item();
        var B = 0;
        for (B = 0; B < arguments.length; B++) {
            temp = arguments[B];
            data = temp.split("=");
            newItem.addValue(data[0], data[1])
        }
        if (!newItem.getValue("name") || !newItem.getValue("price")) {
            alert("Item must have name and price to be added to the cart!");
            return false
        }
        isnew = true;
        if (!newItem.getValue("quantity")) {
            newItem.addValue("quantity", 1)
        }
        this.totalItems = this.totalItems + newItem.getValue("quantity");
        B = 0;
        for (B = 0; B < this.items.length; B++) {
            tempItem = this.items[B];
            if (tempItem.equalTo(newItem)) {
                tempItem.addValue("quantity", (parseInt(tempItem.getValue("quantity")) + parseInt(newItem.getValue("quantity"))));
                this.totalPrice = this.totalPrice + parseFloat(tempItem.getValue("price"));
                isnew = false
            }
        }
        if (isnew) {
            this.items[this.items.length] = newItem;
            this.totalPrice = this.totalPrice + parseFloat(newItem.getValue("price"))
        }
        this.updateCookie();
        this.updatePageElements();
        return
    };
    this.addItem = function (C) {
        var B = 0;
        for (B = 0; B < this.items.length; B++) {
            var D = this.items[B];
            if (D.equalTo(C)) {
                D.addValue("quantity", parseInt(C.getValue("quantity")) + parseInt(D.getValue("quantity")));
                this.totalItems = this.totalItems + parseInt(C.getValue("quantity"));
                this.totalPrice = this.totalPrice + parseInt(C.getValue("quantity")) * parseFloat(C.getValue("price"));
                return
            }
        }
        this.items[this.items.length] = C;
        this.totalItems = this.totalItems + parseInt(C.getValue("quantity"));
        this.totalPrice = this.totalPrice + parseInt(C.getValue("quantity")) * parseFloat(C.getValue("price"));
        return
    };
    this.updateCookie = function () {
        cookieString = String(this.totalItems) + "&" + String(this.totalPrice);
        x = 0;
        for (x = 0; x < this.items.length; x++) {
            tempItem = this.items[x];
            cookieString = cookieString + "&" + tempItem.cookieString()
        }
        createCookie("simpleCart", cookieString, 30)
    };
    this.empty = function () {
        this.items = new Array();
        this.totalItems = 0;
        this.totalPrice = 0;
        this.updateCookie();
        this.updatePageElements();
        return false
    };
    this.deleteItem = function (C) {
        found = false;
        var B = new Array();
        for (x = 0; x < this.items.length; x++) {
            tempItem = this.items[x];
            if (tempItem.equalTo(C)) {
                found = true;
                this.totalItems = this.totalItems - parseFloat(tempItem.getValue("quantity"));
                this.totalPrice = this.totalPrice - parseFloat(tempItem.getValue("price"))
            }
            if (found) {
                if (x < (this.items.length - 1)) {
                    B[x] = this.items[x + 1]
                }
            } else {
                B[x] = this.items[x]
            }
        }
        this.items = B;
        this.updateCookie();
        this.updatePageElements();
        return false
    };
    this.options = function () {
        var B = 0;
        for (B = 0; B < this.items.length; B++) {
            var C = this.items[B];
            if (C.optionList()) {
                return true
            }
        }
        return false
    };
    this.updatePageElements = function () {
        var B = 0,
        D, E = getElementsByClassName("simpleCart_total");
        for (B = 0; B < E.length; B++) {
            D = E[B];
            D.innerHTML = this.returnTotalPrice()
        }
        B = 0;
        E = getElementsByClassName("simpleCart_quantity");
        for (B = 0; B < E.length; B++) {
            D = E[B];
            D.innerHTML = String(this.totalItems)
        }
        E = getElementsByClassName("simpleCart_items");
        for (B = 0; B < E.length; B++) {
            cartTable = E[B];
            newRow = document.createElement("div");
            var B = 0,
            C = 0;
            while (cartTable.childNodes[0]) {
                cartTable.removeChild(cartTable.childNodes[0])
            }
            for (B = 0; B < this.ItemColumns.length; B++) {
                if (this.ItemColumns[B] != "Options" || this.options()) {
                    tempCell = document.createElement("div");
                    tempCell.innerHTML = this.ItemColumns[B];
                    tempCell.className = "item" + this.ItemColumns[B];
                    newRow.appendChild(tempCell)
                }
            }
            newRow.className = "cartHeaders";
            cartTable.appendChild(newRow);
            B = 0;
            for (B = 0; B < this.items.length; B++) {
                tempItem = this.items[B];
                newRow = document.createElement("div");
                C = 0;
                for (C = 0; C < this.ItemColumns.length; C++) {
                    tempCell = document.createElement("div");
                    tempCell.className = "item" + this.ItemColumns[C];
                    if (this.ItemColumns[C] == "Image") {
                        if (tempItem.getValue("image")) {
                            tempCell.innerHTML = '<img src="' + tempItem.getValue("image") + '" />'
                        }
                    }
                    if (this.ItemColumns[C] == "Name") {
                        tempCell.innerHTML = tempItem.getValue("name")
                    } else {
                        if (this.ItemColumns[C] == "Price") {
                            tempCell.innerHTML = this.returnFormattedPrice(tempItem.getValue("price"))
                        } else {
                            if (this.ItemColumns[C] == "Options" && this.options()) {
                                tempCell.innerHTML = tempItem.optionList()
                            } else {
                                if (this.ItemColumns[C] == "Quantity") {
                                    tempCell.innerHTML = '<input type="text" onblur="simpleCart.updateQuantity(' + tempItem.functionString() + ",'new_quantity=' + this.value);return false;\"value=\"" + tempItem.getValue("quantity") + '" />'
                                } else {
                                    if (this.ItemColumns[C] == "Total") {
                                        tempCell.innerHTML = this.returnFormattedPrice(tempItem.getValue("quantity") * tempItem.getValue("price"))+'&nbsp;<a href="#" onclick="simpleCart.updateQuantity(' + tempItem.functionString() +',\'new_quantity=0\');return false;"value="' + tempItem.getValue('quantity') + '" /><img src="images/delete.gif" width="10" height="11" border="0" style="vertical-align:middle;margin:-3px 0 0 0" title="Delete" /></a>';
                                    }
                                }
                            }
                        }
                    }
                    newRow.appendChild(tempCell)
                }
                newRow.className = "itemContainer";
                cartTable.appendChild(newRow)
            }
            newRow = document.createElement("div");
            tempCell = document.createElement("div");
            tempCell.innerHTML = String(this.totalItems);
            tempCell.className = "totalItems";
            newRow.appendChild(tempCell);
            tempCell = document.createElement("div");
            tempCell.innerHTML = this.returnTotalPrice();
            tempCell.className = "totalPrice";
            newRow.appendChild(tempCell);
            newRow.className = "totalRow";
            cartTable.appendChild(newRow)
        }
        return false
    };
    this.returnTotalPrice = function () {
        return this.returnFormattedPrice(this.totalPrice)
    };
    this.returnFormattedPrice = function (B) {
        temp = Math.round(B * 100);
        change = String(temp % 100);
        if (change.length == 0) {
            change = "00"
        } else {
            if (change.length == 1) {
                change = "0" + change
            }
        }
        temp = String(Math.floor(temp / 100));
        //return "USD " + temp + "." + change
        return "USD " + temp 
    };
    this.updateQuantity = function () {
        newItem = new item();
        x = 0;
        for (x = 0; x < arguments.length; x++) {
            temp = arguments[x];
            data = temp.split("=");
            if (data[0] == "new_quantity") {
                var B = data[1]
            } else {
                newItem.addValue(data[0], data[1])
            }
        }
        if (B < 1) {
            this.deleteItem(newItem);
            return
        }
        newQuan = B - newItem.getValue("quantity");
        newItem.addValue("quantity", newQuan);
        this.addItem(newItem);
        this.updateCookie();
        this.updatePageElements();
        return false
    };
    this.checkOut = function () {
        if (this.totalItems == 0) {
            alert("Your cart is empty!");
            return false
        }
        var D = "scrollbars,location,resizable,status";
        var F, E = 0,
        G, C;
        var B = "https://www.paypal.com/cgi-bin/webscr?cmd=_cart&upload=1&business=" + this.userEmail + "&currency_code=USD&lc=US";
        C = 0;
        for (C = 0; C < this.items.length; C++) {
            tempItem = this.items[C];
            E = C + 1;
            B = B + "&item_name_" + E + "=" + tempItem.getValue("name") + "&item_number_" + E + "=" + E + "&quantity_" + E + "=" + tempItem.getValue("quantity") + "&amount_" + E + "=" + this.returnFormattedPrice(tempItem.getValue("price")) + "&no_shipping_" + E + "=0&no_note_" + E + "=1";
            if (tempItem.optionList()) {
                B = B + "&on0_" + E + "=Options&os0_" + E + "=" + tempItem.optionList()
            }
        }
        window.open(B, "paypal", D);
        return false
    }
}
function item() {
    this.names = new Array();
    this.values = new Array();
    this.addValue = function (B, C) {
        if (this.names.length != this.values.length) {
            alert("name and value array lengths do not match for this item!");
            return false
        }
        found = false;
        var A = 0;
        for (A = 0; A < this.names.length; A++) {
            if (this.names[A] == B) {
                this.values[A] = C;
                return
            }
        }
        if (!found) {
            this.names[this.names.length] = B;
            this.values[this.values.length] = C
        }
        return
    };
    this.getValue = function (A) {
        var B = 0;
        for (B = 0; B < this.names.length; B++) {
            if (A == this.names[B]) {
                return this.values[B]
            }
        }
        return null
    };
    this.equalTo = function (A) {
        if (this.getSize() != A.getSize()) {
            return false
        }
        var B = 0;
        for (B = 0; B < this.names.length; B++) {
            if (this.names[B] != "quantity" && (A.getValue(this.names[B]) != this.values[B])) {
                return false
            }
        }
        return true
    };
    this.getSize = function () {
        return this.names.length
    };
    this.cookieString = function () {
        returnString = "";
        var A = 0;
        returnString = this.names[A] + "=" + this.values[A];
        A = 1;
        for (A = 1; A < this.names.length; A++) {
            returnString = returnString + "," + this.names[A] + "=" + this.values[A]
        }
        return returnString
    };
    this.functionString = function () {
        returnString = "'";
        var A = 0;
        returnString = "'" + this.names[A] + "=" + this.values[A];
        A = 1;
        for (A = 1; A < this.names.length; A++) {
            returnString = returnString + "','" + this.names[A] + "=" + this.values[A]
        }
        returnString = returnString + "'";
        return returnString
    };
    this.optionList = function () {
        returnString = "";
        if (this.getSize() < 4) {
            return null
        }
        var A = 0;
        for (A = 0; A < this.names.length; A++) {
            if (this.names[A] != "quantity" && this.names[A] != "price" && this.names[A] != "name" && this.names[A] != "image") {
                returnString = returnString + this.names[A] + ":" + this.values[A] + ", "
            }
        }
        while (returnString.charAt(returnString.length - 1) == "," || returnString.charAt(returnString.length - 1) == " " || returnString.charAt(returnString.length) == ":") {
            returnString = returnString.substring(0, returnString.length - 1)
        }
        return returnString
    }
}
function createCookie(C, D, E) {
    if (E) {
        var B = new Date();
        B.setTime(B.getTime() + (E * 24 * 60 * 60 * 1000));
        var A = "; expires=" + B.toGMTString()
    } else {
        var A = ""
    }
    document.cookie = C + "=" + D + A + "; path=/"
}
function readCookie(B) {
    var D = B + "=";
    var A = document.cookie.split(";");
    for (var C = 0; C < A.length; C++) {
        var E = A[C];
        while (E.charAt(0) == " ") {
            E = E.substring(1, E.length)
        }
        if (E.indexOf(D) == 0) {
            return E.substring(D.length, E.length)
        }
    }
    return null
}
function eraseCookie(A) {
    createCookie(A, "", -1)
}
var getElementsByClassName = function (B, A, C) {
    if (document.getElementsByClassName) {
        getElementsByClassName = function (I, L, H) {
            H = H || document;
            var D = H.getElementsByClassName(I),
            K = (L) ? new RegExp("\\b" + L + "\\b", "i") : null,
            E = [],
            G;
            for (var F = 0, J = D.length; F < J; F += 1) {
                G = D[F];
                if (!K || K.test(G.nodeName)) {
                    E.push(G)
                }
            }
            return E
        }
    } else {
        if (document.evaluate) {
            getElementsByClassName = function (M, P, L) {
                P = P || "*";
                L = L || document;
                var F = M.split(" "),
                N = "",
                J = "http://www.w3.org/1999/xhtml",
                O = (document.documentElement.namespaceURI === J) ? J : null,
                G = [],
                D,
                E;
                for (var H = 0, I = F.length; H < I; H += 1) {
                    N += "[contains(concat(' ', @class, ' '), ' " + F[H] + " ')]"
                }
                try {
                    D = document.evaluate(".//" + P + N, L, O, 0, null)
                } catch(K) {
                    D = document.evaluate(".//" + P + N, L, null, 0, null)
                }
                while ((E = D.iterateNext())) {
                    G.push(E)
                }
                return G
            }
        } else {
            getElementsByClassName = function (O, R, N) {
                R = R || "*";
                N = N || document;
                var H = O.split(" "),
                Q = [],
                D = (R === "*" && N.all) ? N.all : N.getElementsByTagName(R),
                M,
                J = [],
                L;
                for (var I = 0, E = H.length; I < E; I += 1) {
                    Q.push(new RegExp("(^|\\s)" + H[I] + "(\\s|$)"))
                }
                for (var G = 0, P = D.length; G < P; G += 1) {
                    M = D[G];
                    L = false;
                    for (var F = 0, K = Q.length; F < K; F += 1) {
                        L = Q[F].test(M.className);
                        if (!L) {
                            break
                        }
                    }
                    if (L) {
                        J.push(M)
                    }
                }
                return J
            }
        }
    }
    return getElementsByClassName(B, A, C)
};
function createCart() {
    simpleCart.initialize();
    return
}
//var ElementCheckInterval = setInterval("simpleCart.updatePageElements()", 2000);
window.onload = createCart;