var O = (function() { var account = s_account || '', // <== fill this in with default s_account instance = s || s_gi(account); /** * Description * @method init * @return */ function init() { // if you need to do anything on init, add it here. } /** * Clears the tracking vars to prevent double tracking on instances when the page doesn't reload */ function clearVars() { for (var i=0; i < 75; i++) { s['prop'+i]=''; s['eVar'+i]=''; if(i<=5) s['hier'+i]=''; } var svarArr = ['pageName','channel','products','events','campaign','purchaseID','state','zip','server','linkName']; for (var i=0; i < svarArr.length ; i++) { s[svarArr[i]]=''; } } /** * Sets values to local instance of `s`. * @method set * @param {String} key * @param {String} [val] * @return */ function set(key, val) { if (typeof key === 'object' && typeof val === 'undefined') { val = key; for (var prop in val) { if (val.hasOwnProperty(prop)) { set(prop, val[prop]); } } } else { instance[key] = val; } } /** * Retrieves values stored on local instance of `s`. * @method get * @param {String} key * @return MemberExpression */ function get(key) { return instance[key]; } /** * Trigger for s.t(); * @method trackPageLoad * @return */ function trackPageLoad() { console.groupCollapsed('[Omniture] page loaded'); console.log('s object: ', s); console.groupEnd(); instance.t(); } /** * Trigger for s.tl(); * @method trackClick * @param el * @param event * @return */ function trackClick(el, event, callback) { console.groupCollapsed('[Omniture] click tracked'); if (typeof el === 'string') { el = $('[href="' + el + '"]').get(0); } set('referrer', window.location.href); if (!!callback) { instance.tl(el, 'o', event, null, callback); } else { instance.tl(el, 'o', event); } console.log('Element: ', el); console.log('Event/LinkName: ', event); console.log('External link: ', utils.isExternalLink($(el).attr('href'))); console.log('s_objectID: ', data('s_objectID')); console.log(s); console.groupEnd(); } /** * Overrides local instance with new a `s` variable. * @method clearProps * @return */ function clearProps() { instance = s_gi(account); } return { init: init, s: instance, set: set, get: get, trackPageLoad: trackPageLoad, trackClick: trackClick, clearProps: clearProps, clearVars: clearVars }; })(); // Usages // Init O.init(); // Set values O.set('event', 'event5'); // single value O.set({ // multi value 'prop1': 'foo', 'prop2': 'bar' }); // Get values var prop2 = O.get('prop2'); // Click tracking $('a.foo').click(function(e) { omniture.set({ eVar1: 'Expert Blogs', eVar3: location.pathname, linkTrackVars: 'events,eVar1,eVar2,eVar3,eVar8,eVar17,eVar18,eVar31,eVar32,eVar34,eVar39,eVar56,eVar60,eVar62,eVar63,eVar68,channel', events: 'event3', linkTrackEvents: 'event3' }); omniture.trackClick(e.currentTarget, 'event3'); }); // Track page loaad O.trackPageLoad();