if (!Array.prototype.indexOf) { /* patch IE */ Array.prototype.indexOf = function(obj, start) { for (var i = (start || 0), j = this.length; i < j; i++) { if (this[i] === obj) { return i; } } return -1; } } function record(event, values, collect, opt, componentPath) { var options = {}; options.event = event; options.values = values; options.collect = collect; options.options= opt; options.componentPath = componentPath; // could use this hack to force old record() calls: options.componentPath = componentPath || CQ_Analytics.Sitecatalyst.frameworkComponents[0]; //add old record callbacks to after callbacks var f = function (callback) { return function(options) { callback.call(this, options.event, options.values); return false; }; }; for (var i = record.callbacks.length - 1; i >= 0; i--) { CQ_Analytics.registerAfterCallback(f(record.callbacks[i]), 150 - i); record.callbacks.pop(); } return CQ_Analytics.record(options); } record.callbacks = []; CQ_Analytics.registerAfterCallback(function(options) { if( $CQ.inArray( options.componentPath, CQ_Analytics.Sitecatalyst.frameworkComponents) < 0 ) return false; // component not in framework, skip SC callback CQ_Analytics.Sitecatalyst.saveEvars(); CQ_Analytics.Sitecatalyst.updateEvars(options); CQ_Analytics.Sitecatalyst.updateLinkTrackVars(); return false; }, 10); CQ_Analytics.registerAfterCallback(function(options) { if( $CQ.inArray( options.componentPath, CQ_Analytics.Sitecatalyst.frameworkComponents) < 0 ) return false; // component not in framework, skip SC callback s = s_gi("rei-testprod1"); if (s.linkTrackVars == "None") { s.linkTrackVars = "events"; } else { s.linkTrackVars = s.linkTrackVars + ",events"; } CQ_Analytics.Sitecatalyst.trackLink(options); return false; }, 100); CQ_Analytics.registerAfterCallback(function(options) { if( $CQ.inArray( options.componentPath, CQ_Analytics.Sitecatalyst.frameworkComponents) < 0 ) return false; // component not in framework, skip SC callback CQ_Analytics.Sitecatalyst.restoreEvars(); return false; }, 200); CQ_Analytics.adhocLinkTracking = "false"; CQ_Analytics.Sitecatalyst = { events: [], trackVars: [], settings: [], stores: CQ_Analytics.StoreRegistry.getStores(), getServiceUrl: function() { return "https://sitecatalyst.omniture.com/sc15/reports/index.html?a=Report.Standard&switch_accnt={REPORTSUITE}&r=Report.PageSummary&ssSession={SESSION}&jpj={JPJ}&rp=newpage|{PAGEID};page_type|;"; }, openServiceUrl: function() { var self = this; if (this.getServiceUrl() != "null") { var contentUrl = CQ.WCM.getContentUrl(); contentUrl = contentUrl.replace(/http:\/\/.*?\//, "/"); /*strip scheme*/ contentUrl = contentUrl.replace(/(.*?)\?.*/, "$1"); /*strip query*/ var url = CQ.HTTP.externalize('/libs/cq/analytics/deeplink.json?cfgPath=/etc/cloudservices/sitecatalyst/reidefault/reidefaul') url += "&path=" + CQ.HTTP.externalize(contentUrl); CQ.HTTP.get(url, function(options, success, response) { if (success) { var data = CQ.HTTP.eval(response); if (data) { var serviceUrl = self.getServiceUrl(); serviceUrl = serviceUrl.replace(/\{SESSION\}/gi, (data.ssSession ? data.ssSession : "")); serviceUrl = serviceUrl.replace(/\{JPJ\}/gi, (data.jpj ? data.jpj : "")); serviceUrl = serviceUrl.replace(/\{PAGEID\}/gi, (data.pageid ? data.pageid : "")); serviceUrl = serviceUrl.replace(/\{REPORTSUITE\}/gi, "rei-testprod1"); CQ.shared.Util.open(serviceUrl); } } }); } }, hasEvent: function(event) { var store = CQ_Analytics.StoreRegistry.getStore("eventdata"); var a = store.getProperty("events").split("\u2026"); var i = a.length; while (i--) { if (a[i] === event) { return true; } } return false; }, setEvar: function(evar, value) { if (evar.match(/^eventdata\.events\./)) { if (this.hasEvent(evar.replace(/.+\./, ""))) { this.events.push(value); this.updateLinkTrackEvents(); } } else if (value != '') { // set up direct references to datastores for use in expressions for (var store in this.stores) try { eval("var " + store + "=this.stores[store].data"); } catch(e) { } // evaluate expression using direct references to stores try { s[evar] = CQ_Analytics.Variables.replaceVariables(eval(value)); } catch(e) { console.log("Could not set " + evar + ": " + e); } if (this.trackVars.indexOf(evar) < 0) { this.trackVars.push(evar); } } }, updateLinkTrackEvents: function() { s.events = this.events.join(","); s.linkTrackEvents = s.events; }, updateLinkTrackVars: function() { s.linkTrackVars = this.trackVars.join(","); }, eraseTrackVars: function(saved) { for (var i = 0; i < this.trackVars.length; i++) { var evar = this.trackVars[i]; if (evar !== 'events') { if (saved) saved[evar] = s[evar]; delete s[evar]; } } this.trackVars = []; }, saveEvars: function() { var saved = { events: this.events, trackVars: this.trackVars, linkTrackVars: s.linkTrackVars, linkTrackEvents: s.linkTrackEvents }; //clear events cache this.events = []; this.eraseTrackVars(saved); this.settings.push(saved); }, restoreEvars: function() { var former = this.settings.pop(); this.events = former.events; delete former.events; this.trackVars = former.trackVars; delete former.trackVars; this.updateLinkTrackEvents(); this.eraseTrackVars(); for (var prop in former) { s[prop] = former[prop]; } }, stopTrackingTemporarily: function() { // Disable tracking temporarily, so automatic link tracking is bypassed var old_s = { trackDownloadLinks: s.trackDownloadLinks, trackExternalLinks: s.trackExternalLinks }; s.trackDownloadLinks = false; s.trackExternalLinks = false; (function() { for (var prop in old_s) { s[prop] = old_s[prop]; } }).defer(200); }, trackLink: function(options) { var obj = options.options.obj || "", linkType; var defaultLinkType = options.options.defaultLinkType || "o"; if (typeof obj.href !== 'undefined') linkType = s.lt(obj.href); linkType = linkType || defaultLinkType; var s_code = s.tl(obj, linkType, ""); if (s_code) document.write(s_code); this.stopTrackingTemporarily(); }, customTrack: function(obj) { var events = obj.getAttribute('adhocevents') || ""; var evars = obj.getAttribute('adhocevars') || ""; if (events || evars) { // set up direct references to datastores for use in expressions for (var store in this.stores) try { eval("var " + store + "=this.stores[store].data"); } catch(e) { } // evaluate evars using direct references to stores try { eval("evars = {" + evars + "}"); } catch(e) { } CQ_Analytics.Sitecatalyst.saveEvars(); try { var linkTrackVars = []; if (events.length > 0) { s.linkTrackEvents = s.events = events; linkTrackVars.push('events'); } for (var key in evars) { linkTrackVars.push(key); var value = "'" + escape(evars[key]) + "'"; this.setEvar(key, value); } if (linkTrackVars.length > 0) s.linkTrackVars = linkTrackVars.join(','); this.trackLink({options: { obj: obj }}); } finally { CQ_Analytics.Sitecatalyst.restoreEvars(); } } }, collect: function() { var elements = document.getElementsByTagName("*"); var evnts = {}; var alldata = {}; var eventdata = CQ_Analytics.StoreRegistry.getStore("eventdata"); for (var i = 0; i < elements.length; i++) { if (elements[i].getAttribute("record")) { var trackres = eval("record(" + elements[i].getAttribute("record") + ",true)"); var event = trackres[0]; evnts[event] = event; var data = trackres[1]; for (var j in data) { var store = eventdata; var prop = j.split('.'); if (j.indexOf('.') >= 0 && CQ_Analytics.StoreRegistry.getStore(prop[0])) { store = CQ_Analytics.StoreRegistry.getStore(prop[0]); prop = prop[1]; } store.setProperty(prop, data[j]); } } } var myevents = []; for (i in evnts) { myevents.push(i); } eventdata.setProperty("events", myevents.join("\u2026")); } }; var s_account = "rei-testprod1" var s = s_gi(s_account) /************************** CONFIG SECTION **************************/ s.fpCookieDomainPeriods = "2" s.dynamicAccountSelection=true s.currencyCode='USD' s.trackInlineStats=true s.eVar37='D=g' s.prop16='D=g' s.charSet='ISO-8859-1' s.linkTrackVars='None' s.linkTrackEvents='None' s.linkDownloadFileTypes='exe,zip,wav,mp3,mov,mpg,avi,wmv,pdf,doc,docx,xls,xlsx,ppt,pptx' s.trackDownloadLinks=true s.linkLeaveQueryString=false s.linkExternalFilters='' s.trackExternalLinks=true s.dynamicAccountList='reidev=psqa.rei.com;reiprod=www.rei.com,findout.rei.com,m.rei.com;reiqa2=qa.rei.com,qa01.rei.com,origin-qa.rei.com,qstage.rei.com,qfindout.rei.com;reitest=test.rei.com' s.linkInternalFilters='javascript:,rei.com' /* WARNING: Changing any of the below variables will cause drastic changes to how your visitor data is collected. Changes should only be made when instructed to do so by your account manager.*/ s.visitorNamespace = "recreationalequipmen" s.trackingServer = "omni.rei.com" s.trackingServerSecure = "somni.rei.com" CQ_Analytics.adhocLinkTracking = ""