﻿var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

var omniture = {
    clearAllVars: function() {
        s.events = "";
        s.products = "";
    },

    concatCommaVar: function(cvar, value) {
        if (s[cvar] != undefined && s[cvar] != '')
            s[cvar] += "," + value;
        else
            s[cvar] = value;
    },

    addEvent: function(event) {
        this.concatCommaVar("events", event)
    },

    addProduct: function(product) {
        this.concatCommaVar("products", product)
    },
    
    setPurchaseID: function(purchaseID) {
        s.purchaseID = purchaseID;
    }
};

var analytics = {
    getProductName: function(product) {
        return product.IssueDate + " " + product.Name + " (" + product.SKU + ")";
    },

    enumOrderProducts: function(order, action) {
        for (var i = 0; i < order.LineItems.length; i++) {
            var item = order.LineItems[i];

            action(item);

            for (var j = 0; j < item.ChildLineItems.length; j++)
                action(item.ChildLineItems[j]);
        }
    },

    productViewed: function(product) {
        var name = this.getProductName(product);

        pageTracker._trackEvent('Products', 'Viewed', name);

        omniture.addEvent("prodView");
        omniture.addProduct(product.Category + ";" + name);
    },

    textSearch: function(searchTerm, location) {
        if (location != null)
            location = location + "/";
        else
            location = "";

        pageTracker._trackEvent("Search", location + "FreeTextSearch", searchTerm);
        s.eVar2 = searchTerm;
    },

    categorySelect: function(categoryName, location) {
        if (location != null)
            location = location + "/";
        else
            location = "";

        pageTracker._trackEvent("Search", location + "CategorySearch", categoryName);
        s.eVar3 = categoryName;
    },

    productSearchSelect: function(product) {
        var name = this.getProductName(product);

        pageTracker._trackEvent("Search", "ProductSelected", name);
        s.eVar4 = name;
    },

    productAddToCart: function(product) {
        var name = this.getProductName(product);

        pageTracker._trackEvent("Product", "AddedToCart", name);

        omniture.clearAllVars();
        omniture.addEvent("scAdd");
        omniture.addProduct(product.Category + ";" + name);
    },

    productRemoveFromCart: function(product) {
        var name = this.getProductName(product);

        pageTracker._trackEvent("Product", "RemovedFromCart", name);

        omniture.clearAllVars();
        omniture.addEvent("scRemove");
        omniture.addProduct(product.Category + ";" + name);
    },

    proceedToCheckout: function(products) {
        pageTracker._trackEvent("Order", "BeginCheckout");

        omniture.addEvent("scCheckout");
        for (var i = 0; i < products.length; i++) {
            var name = this.getProductName(products[i]);
            omniture.addProduct(products[i].Category + ";" + name);
        }
    },

    orderPlaced: function(order) {
        pageTracker._addTrans(order.OrderId, "", order.Total, order.Tax, order.Shipping, order.ShipCity, order.ShipState, order.ShipCountry);

        var getProductName = this.getProductName;
        var sawFrame = false;
        this.enumOrderProducts(order, function(product) {
            if (product.Name.indexOf("Frame") >= 0) {
                sawFrame = true;

                if (product.Name.indexOf("Double") >= 0) {
                    omniture.addEvent("event4");
                    omniture.addEvent("event5");
                }
                else
                    omniture.addEvent("event3");
            } else {
                var name = getProductName(product);

                pageTracker._addItem(order.OrderId, product.SKU, product.Name, "", product.UnitPrice, product.Quantity);
                omniture.addProduct(product.Category + ";" + name + ";" + product.Quantity + ";" + product.UnitPrice);
            }
        });

        if (!sawFrame)
            omniture.addEvent("event2");

        if (order.Discount > 0)
            omniture.addEvent("event6"); // Coupon applied event

        pageTracker._trackTrans();
        omniture.addEvent("purchase");
        omniture.setPurchaseID(order.OrderId);
    }
};