﻿
/*************************************************
Splash pages Omniture Tracking
*************************************************/
if ("undefined" == typeof siteCatalystTracking) {
    var siteCatalystTracking = new Object();
};

var siteCatalystTracking = {
    track: function (obj, propList, custom_link_type) {

        // Default link tracking type if not present
        custom_link_type = custom_link_type ? custom_link_type : 'o';

        if (BusinessTracking.isOmnitureEnabled()) {

            // Clear variables
            s.linkTrackVars = '';
            s.linkTrackEvents = 'None';

            // Loop thru propList & concatenate
            for (prop in propList) {

                s.linkTrackVars += prop + ",";
                s[prop] = propList[prop];
            }
            s.tl(obj, custom_link_type, '');
        }
    }
};


/*************************************************
Tracking
*************************************************/

//Business Intelligence API
var BusinessTracking = {

    _cleanProductId: function (prodId) {
        var newProdId = (typeof prodId == undefined || prodId == null) ? "" : prodId;
        newProdId = $.trim(newProdId);
        if (newProdId.charAt(0) == ";") { newProdId = newProdId.substr(1); }
        return newProdId;
    },

    isOmnitureEnabled: function () {
        return (typeof (s) != "undefined");
    },

    extendPageViewData: function () {
        if (BusinessTracking.isOmnitureEnabled()) {
            if (!s.eVar6) {
                var xboxInfo = ";" + getCookie('xbox_info') + ";"; // ";t=3;x=foo;"
                var subscriptionTier = RegExp(";t=([0-9]+);").exec(xboxInfo);
                if ((subscriptionTier) && (subscriptionTier[1])) {
                    s.eVar6 = subscriptionTier[1]; // "3"
                }
                else {
                    s.eVar6 = "unknown";
                }
                s.prop6 = s.eVar6;
            }
        }
    },

    recordInPageNavClick: function (data) {
        if (BusinessTracking.isOmnitureEnabled()) {
            s.events = "";
            data = data.toLowerCase();

            var prev = s.pageName;
            s.pageName = prev + "/" + data;
            s.t();
            s.pageName = prev;
        }
    },

    recordHeroClick: function (data) {
        if (BusinessTracking.isOmnitureEnabled()) {
            data += ":" + s.pageName;
            data = data.toLowerCase();
            s.events = 'event23';
            s.products = ";" + data;
            s.eVar4 = data;

            s.linkTrackEvents = 'event23';
            s.linkTrackVars = 'events,eVar4,products';
            s.tl(true, 'o', 'recordHeroClick');
        }
    },

    recordToutClick: function (data) {
        if (BusinessTracking.isOmnitureEnabled()) {
            data = data.toLowerCase();
            s.events = 'event23';
            s.products = ";" + data;
            s.eVar4 = data;

            s.linkTrackEvents = 'event23';
            s.linkTrackVars = 'events,eVar4,products';
            s.tl(true, 'o', 'recordToutClick');
        }
    },

    recordJoinLive: function (catguid) {
        if (BusinessTracking.isOmnitureEnabled()) {
            s.products = ";" + catguid;
            s.events = 'event2';
            s.eVar32 = catguid;
            s.linkTrackEvents = 'event2';
            s.linkTrackVars = 'events,eVar32,products';
            s.tl(true, 'o', 'recordJoinLive');
        }
    },

    recordProductView: function (catId, prodId) {

        //ternary to set up default empty strings if a parameter is undefined or null
        var currCatId = (typeof catId == undefined || catId == null) ? "" : catId;
        var currProdId = BusinessTracking._cleanProductId(prodId);

        var product = currCatId + ';' + currProdId;

        if (BusinessTracking.isOmnitureEnabled()) {
            s.products = s.products ? s.products + ',' + product : product;

            if (s.events.indexOf("prodView") == -1) {
                s.events = s.events ? s.events + ',prodView' : 'prodView';
            }
        }
    },

    recordCartAdd: function (catId, prodId) {

        //ternary to set up default empty strings if a parameter is undefined or null
        var currCatId = (typeof catId == undefined || catId == null) ? "" : catId;
        var currProdId = BusinessTracking._cleanProductId(prodId);

        if (BusinessTracking.isOmnitureEnabled()) {
            s.products = currCatId + ';' + currProdId + ';';
            s.events = 'scAdd';
            s.linkTrackEvents = 'scAdd';
            s.linkTrackVars = 'events,products';
            s.tl(true, 'o', 'recordCartAdd');
        }
    },

    recordPreOrder: function (prodId) {
        if (BusinessTracking.isOmnitureEnabled()) {
            s.products = ';' + BusinessTracking._cleanProductId(prodId);
            s.linkTrackVars = 'events,products';
            s.linkTrackEvents = 'event32';
            s.events = 'event32';
            s.tl(true, 'o', 'preorder link');
        }
    },

    recordBuyNow: function (prodId) {
        if (BusinessTracking.isOmnitureEnabled()) {
            s.products = ';' + BusinessTracking._cleanProductId(prodId);
            s.linkTrackVars = 'events,products';
            s.linkTrackEvents = 'event2';
            s.events = 'event2';
            s.tl(true, 'o', 'intent to purchase click');
        }
    },

    recordBuyFromRetailer: function (retailerName, prodId) {
        if (BusinessTracking.isOmnitureEnabled()) {
            s.products = ';' + BusinessTracking._cleanProductId(prodId);
            s.linkTrackVars = 'eVar36,events,products';
            s.linkTrackEvents = 'event16';
            s.eVar36 = retailerName.toLowerCase();
            s.events = 'event16';
            s.tl(true, 'e', 'exit to ' + retailerName);
        }
    },

    recordAutoRenewalSaveLink: function (linkName) {
        if (BusinessTracking.isOmnitureEnabled()) {
            s.events = 'event23';
            s.eVar46 = linkName;
            s.linkTrackEvents = 'event23';
            s.linkTrackVars = 'events,eVar46';
            s.tl(true, 'o', 'recordAutoRenewalSaveLink');
        }
    },

    recordAutoRenewalOffer: function (offerName) {
        if (BusinessTracking.isOmnitureEnabled()) {
            s.events = 'event23';
            s.eVar46 = offerName;
            s.linkTrackEvents = 'event23';
            s.linkTrackVars = 'events,eVar46';
            s.tl(true, 'o', 'recordAutoRenewalOffer');
        }
    },

    recordAutoRenewalPollAnswer: function (answer) {
        if (BusinessTracking.isOmnitureEnabled()) {
            s.events = 'event23';
            s.eVar49 = answer;
            s.linkTrackEvents = 'event23';
            s.linkTrackVars = 'events,eVar49';
            s.tl(true, 'o', 'recordAutoRenewalPollAnswer');
        }
    },

    recordIntentToPurchase: function (prodId) {
        if (BusinessTracking.isOmnitureEnabled()) {
            s.products = ';' + BusinessTracking._cleanProductId(prodId);
            s.linkTrackVars = 'events,products';
            s.linkTrackEvents = 'event2';
            s.events = 'event2';
            s.tl(true, 'o', 'intent to purchase click');
        }
    },

    _eventGateCheck: function (n) {

        if (BusinessTracking.isOmnitureEnabled()) {
            var event_gate = s.getAndPersistValue('', 's_egate', 0);
            event_gate = event_gate == '' ? 50 : event_gate;
            if (n > event_gate) {
                s.events = s.events ? s.events + ",event" + n : "event" + n;
                s.getAndPersistValue(n, 's_egate', 0);
            }
        }
    },

    trackEvents: function (e, a, b, c) {

        var event_gate = 50;

        switch (e) {

            case 'signup_start':
                BusinessTracking._eventGateCheck(51);
                break;
            case 'xuid_create':
                BusinessTracking._eventGateCheck(52);
                //s_t.eVar23 = a;  // Records if user is signed in: true/false
                break;
            case 'signin_success':
                BusinessTracking._eventGateCheck(53);
                if (BusinessTracking.isOmnitureEnabled()) {
                    s.eVar34 = b;
                    s.eVar35 = c;
                }
                break;
            case 'membership_selection':
                BusinessTracking._eventGateCheck(54);
                if (BusinessTracking.isOmnitureEnabled()) {
                    s.eVar40 = a;
                }
                break;
            case 'billing_info':
                BusinessTracking._eventGateCheck(55);
                break;
            case 'cc_info':
                BusinessTracking._eventGateCheck(56);
                break;
            case 'complete_purchase_page':
                BusinessTracking._eventGateCheck(57);
                break;
            case 'cc interstitial':
                BusinessTracking._eventGateCheck(58);
                break;
            case 'gold_upgrade_success':
                BusinessTracking._eventGateCheck(59);
                break;
        }
    },

    trackValidationError: function (errString) {
        if (BusinessTracking.isOmnitureEnabled()) {
            s.eVar41 = errString;
            s.linkTrackVars = 'eVar41';
            s.tl(true, 'o', 'trackValidationError');
        }
    },

    trackAuxiliaryPage: function (pageName) {
        if (BusinessTracking.isOmnitureEnabled()) {
            s.eVar42 = pageName;
            s.linkTrackVars = 'eVar42';
            s.tl(true, 'o', 'trackAuxiliaryPage');
        }
    }

};

$(document).ready(function () {

    //assign handlers to those elements with a data attribute
    var inpageAttrName = "data-inpagenav";
    $("[" + inpageAttrName + "]").each(function () {

        $(this).click(function () {
            BusinessTracking.recordInPageNavClick($(this).attr(inpageAttrName));
        });

    });

    var heroAttrName = "data-hero-metro";
    $("[" + heroAttrName + "]").each(function () {

        $(this).click(function () {
            BusinessTracking.recordHeroClick($(this).attr(heroAttrName));
        });

    });

    var toutAttrName = "data-tout";
    $("[" + toutAttrName + "]").each(function () {

        $(this).click(function () {
            BusinessTracking.recordToutClick($(this).attr(toutAttrName));
        });

    });

    var joinLiveAttrName = "data-joinLive";
    $("[" + joinLiveAttrName + "]").each(function () {
        $(this).click(function () {
            BusinessTracking.recordJoinLive($(this).attr(joinLiveAttrName));
        });
    });
    
    var autoRenewSaveAttrName = "data-arsave";
    $("[" + autoRenewSaveAttrName + "]").each(function () {
        $(this).click(function () {
            BusinessTracking.recordAutoRenewalSaveLink($(this).attr(autoRenewSaveAttrName));
        });
    });
    
    var autoRenewOfferAttrName = "data-aroffer";
    $("[" + autoRenewOfferAttrName + "]").each(function () {
        $(this).click(function () {
            BusinessTracking.recordAutoRenewalOffer($(this).attr(autoRenewOfferAttrName));
        });
    });

    var preOrderAttrName = "data-preorder";
    $("[" + preOrderAttrName + "]").each(function () {
        $(this).click(function () {
            BusinessTracking.recordPreOrder($(this).attr(preOrderAttrName));
        });
    });

    var buyNowAttrName = "data-buynow";
    $("[" + buyNowAttrName + "]").each(function () {
        $(this).click(function () {
            BusinessTracking.recordBuyNow($(this).attr(buyNowAttrName));
        });
    });

    var retailerSelectedAttrName = "data-retailer";
    $("[" + retailerSelectedAttrName + "]").each(function () {
        $(this).click(function () {
            BusinessTracking.recordBuyFromRetailer($(this).attr(retailerSelectedAttrName), $(this).attr("data-productId"));
        });
    });
});


