﻿var omnitureScriptManager = { defaults: {}, events: [],

a: function(a) { this.addEvent(a) },

addEvent: function(a) {
this.events[this.events.length] =
{ autoAppendInnerText: a.a,
    autoAppendInnerTextMaxLength: a.b,
    account: a.c,
    channel: a.d,
    data: a.e,
    disablePageNamePrepend: a.f,
    clientSelector: a.g,
    eventCode: a.h,
    eventId: a.i,
    eventName: a.j,
    eventType: a.k,
    pageName: a.l,
    postCallback: a.m,
    preCallback: a.n,
    server: a.o,
    linkTrackVars: (a.p ? a.p : {})}
},

cleanText: function(a) {
return (a ? a.replace(/,/g, '') : a) 
},

resetEvents: function() {
for (var i = 0; i < this.events.length; i++) { 
var a = jQuery(this.events[i].clientSelector).unbind(this.events[i].eventType, this.events[i].eventHandler); this.setEvent(this.events[i]) } },

setAjaxEndRequest: function() { if (Sys) { Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function() { omnitureScriptManager.resetEvents() }) } }, setEvent: function(e) { if (e.clientSelector) { if (!e.eventType) { e.eventType = 'click' } jQuery(e.clientSelector).bind(e.eventType, e.eventHandler = function(a) { var b = (e.eventName ? e.eventName : omnitureScriptManager.defaults.eventName); var c = ''; if (e.autoAppendInnerText) { c = jQuery(this).text(); if (e.autoAppendInnerTextMaxLength > 0 && c.length > e.autoAppendInnerTextMaxLength) { c = c.substr(0, e.autoAppendInnerTextMaxLength) } b += ' ' + c } if (!e.disablePageNamePrepend) { var d = (e.pageName ? e.pageName : omnitureScriptManager.defaults.pageName); b = d + ': ' + b } omnitureScriptManager.trackEvent(this, { account: (e.account ? e.account : omnitureScriptManager.defaults.account), channel: (e.channel ? e.channel : omnitureScriptManager.defaults.channel), data: e.data, event: a, eventCode: (e.eventCode ? e.eventCode : omnitureScriptManager.defaults.eventCode), eventName: b, pageName: (e.pageName ? e.pageName : omnitureScriptManager.defaults.pageName), postCallback: (e.postCallback ? e.postCallback : omnitureScriptManager.defaults.postCallback), preCallback: (e.preCallback ? e.preCallback : omnitureScriptManager.defaults.preCallback), server: (e.server ? e.server : omnitureScriptManager.defaults.server), linkTrackVars: omnitureScriptManager.setTextTokens(e.linkTrackVars, c) }) }) } else if (e.eventId) { var f = (e.pageName ? e.pageName : this.defaults.pageName); var g = (e.eventName && e.eventName.indexOf(f) > -1 ? e.eventName : f + ': ' + e.eventName); e.account = (e.account ? e.account : this.defaults.account); e.channel = (e.channel ? e.channel : this.defaults.channel); e.eventCode = (e.eventCode ? e.eventCode : this.defaults.eventCode); e.eventName = g, e.pageName = f; e.postCallback = (e.postCallback ? e.postCallback : this.defaults.postCallback); e.preCallback = (e.preCallback ? e.preCallback : this.defaults.preCallback); e.server = (e.server ? e.server : this.defaults.server) } },


setLinkTrackVars: function(a) {
if (a) {
    for (var b in a) {
        s.linkTrackVars += ',' + b;
        s[b] = this.cleanText(a[b]);
        if (b.indexOf('prop') > -1) {
            var c = b.replace('prop', 'eVar');
            s.linkTrackVars += ',' + c; s[c] = this.cleanText(a[b])
        } 
    } 
} 
},


setTextTokens: function(a, b) {
var c = {};
if (a) {
    for (var d in a) { c[d] = a[d].replace('[TEXT]', b) } 
} return c
},


initialize: function(a, b) {
try {
    if (b) {
        this.defaults = b; if (b.preCallback) { b = b.preCallback(a, b) }
        if (s) {
            s.pageName = this.cleanText(b.pageName);
            s.channel = b.channel;
            s.server = b.server;
            s.linkTrackEvents = b.pageEventCode;
            s.events = s.linkTrackEvents;
            s.linkInternalFilters += b.linkInternalFilters;
            this.setLinkTrackVars({ prop2: this.cleanText(b.eventName) });
            this.setLinkTrackVars(b.defaultLinkTrackVars); 
            this.setLinkTrackVars(b.linkTrackVars);
            if (!b.disablePageImpression) { var c = s.t(); if (c) { document.write(c) } } 
        } 
    }
    for (var i = 0; i < this.events.length; i++) { this.setEvent(this.events[i]) } this.setAjaxEndRequest();
    if (b && b.postCallback) {
        return b.postCallback(a, b)
    } 
} 
catch (ex) { } },





    trackEvent: function(a, b) {
        if (b) {
            try {
                if (b.preCallback) { b = b.preCallback(a, b) } if (b.account) { s = s_gi(b.account) }
                else { s = s_gi(s_account) }
                s.channel = b.channel;
                //        s.pageName = this.cleanText(b.pageName); 
                s.server = b.server;
                s.linkTrackVars = 'channel,server,events';
                s.linkTrackEvents = b.eventCode;
                s.events = s.linkTrackEvents;

                //        if (b.eventName)
                //        { this.setLinkTrackVars({ prop2: this.cleanText(b.eventName) }) }

                this.setLinkTrackVars(this.defaults.defaultLinkTrackVars);
                this.setLinkTrackVars(b.linkTrackVars); 
                s.tl(this, 'o', b.eventName);
                if (b.postCallback) { return b.postCallback(a, b) }
            } catch (ex) { }
        }
    },

    trackEventById: function(a) 
    {
        if (a && a.length > 0) 
        {
            for (var i = 0; i < this.events.length; i++) 
            {
                if (this.events[i].eventId == a) 
                    {
                        this.trackEvent(null, this.events[i]); 
                        break
                    } 
            } 
        }
     } 
};