/** * Google analytics tracking class and object */ elation.extend('googleanalytics', function(args) { this.GAalerts = Number(args.GAalerts); this.trackingcode = args.trackingcode; this.cobrand = args.cobrand; this.query = args.query; this.pagegroup = args.pagegroup; this.pagetype = args.pagetype; this.status = args.status; this.total = args.total; this.category = args.category; this.subcategory = args.subcategory; this.city = args.city; this.state = args.state; this.country = args.country; this.pagenum = args.pagenum; this.filters = args.filters; this.version = args.version; this.store_name = args.store_name; this.alpha = args.alpha; this.browse_nodename = args.browse_nodename; this.browse_nodetype = args.browse_nodetype; this.clickoutsource = 0; this.myfindspanel = ''; this.mouseovertype = ''; this.mouseovereventenable = 1; this.pageTracker = _gat._getTracker(this.trackingcode); this.pageTracker._setCookieTimeout("172800"); // campaign tracking expiration 2 days var self = this; var ignoredOrganics=['www.thefind.com', 'thefind', 'thefind.com', 'the find', 'glimpse', 'glimpse.com', 'www.glimpse.com', 'local.thefind.com', 'green.thefind.com', 'ww1.glimpse.com', 'shoptrue.com', 'shoptrue', 'coupons.thefind.com', 'shop.glimpse.com', 'ww1.thefind.com', 'www.shoptrue.com', 'reviews.thefind.com', 'visual.thefind.com', 'prices.thefind.com']; $TF.each(ignoredOrganics, function() {self.pageTracker._addIgnoredOrganic(this)}); var domainName = document.domain.match(/(\.(.+)\.com$)/gi); if(domainName == null) { domainName = document.domain.match(/(\.(.+)\.co\.uk$)/gi); } domainName = domainName[0]; if (this.cobrand=='local' || this.cobrand=='greenshopping' || this.cobrand=='visualbeta' || this.cobrand=='coupons' || this.cobrand=='thefind' || this.cobrand=='thefindww1' || this.cobrand=='reviews' || this.cobrand=='prices') { this.pageTracker._setDomainName(domainName); // set to '.thefind.com' or '.dev.thefind.com' this.pageTracker._setAllowLinker(true); this.pageTracker._setAllowHash(false); }else if (this.cobrand=='glimpse' || this.cobrand=='glimpseww1' || this.cobrand=='glimpseshop') { this.pageTracker._setDomainName(domainName); //set to '.glimpse.com' this.pageTracker._setAllowLinker(true); this.pageTracker._setAllowHash(false); }else if (this.cobrand=='shoptrue') { this.pageTracker._setDomainName(domainName); //set to '.shoptrue.com' this.pageTracker._setAllowLinker(true); this.pageTracker._setAllowHash(false); }else if (this.cobrand=='thefinduk') { this.pageTracker._setDomainName(domainName); //set to '.thefind.co.uk' this.pageTracker._setAllowLinker(true); this.pageTracker._setAllowHash(false); } // attach event handlers to various static links $TF("a.tf_search_item_link.tf_search_item_productimage_link").click(function () {if (!self.clickoutsource) self.clickoutsource = 1}); // product image $TF("a.tf_search_item_link.tf_seeit strong img").click(function () {if (!self.clickoutsource) self.clickoutsource = 2}); // merchant logo $TF("a.tf_search_item_link.tf_seeit").click(function () {if (!self.clickoutsource) self.clickoutsource = 3}); // VisitSite button $TF("a.tf_search_item_link.tf_seeit strong").click(function () {if (!self.clickoutsource) self.clickoutsource = 4}); // intervening blankspace $TF(".search_anchor_relatedqueries").each(function(n) {$TF(this).click(function() {self.trackEvent(['search', 'related_search', n+1])})}); $TF(".search_anchor_hotsearches").each(function(n) {$TF(this).click(function() {self.trackEvent(['links', self.pagetype, 'hot_searches', n+1])})}); $TF(".tf_info_iphonedownload").click(function() {self.trackEvent(['promo', 'bottom', 'iPhoneApp'])}); $TF(".tf_user_feedback_link").each(function(n) {$TF(this).click(function() {self.trackEvent(['links', self.pagetype, 'user_feedback', n+1])})}); $TF(".tf_about_results_link").each(function(n) {$TF(this).click(function() {self.trackEvent(['links', self.pagetype, 'about_these_search_results', n+1])})}); $TF(".link_icon_discover_same_product").each(function(n) {$TF(this).click(function() {self.trackEvent(['discover', 'same_product', self.category])})}); $TF(".link_icon_discover_similar_product").each(function(n) {$TF(this).click(function() {self.trackEvent(['discover', 'similar_product', self.category])})}); $TF(".search_anchor_suggestqueries").each(function(n) {$TF(this).click(function() {self.trackEvent(['links', 'recommendedSearches', this.innerHTML])})}); $TF("#tf_shoplikefriends_tellmorefriends").click(function() {self.trackEvent(['facebook', 'invite_friends'])}); $TF("#tf_shoplikefriends_becomefeaturedshopper").click(function() {self.trackEvent(['shoplike', 'become_featured_shopper'])}); //Links above first searchbox for products, coupons, reviews $TF("#tf_search_links_products").click(function() {self.trackEvent(['links', 'theWeb', 'products'])}); $TF("#tf_search_links_coupons").click(function() {self.trackEvent(['links', 'theWeb', 'coupons'])}); $TF("#tf_search_links_reviews").click(function() {self.trackEvent(['links', 'theWeb', 'reviews'])}); //Don't know if the below ever gets fired ... $TF('#tf_middle_bottom_merchantcenter').click(function() { self.trackEvent(['merchant_center', self.cobrand, self.pagetype]); self.trackEvent(['merchant_center', 'home_retailer', self.cobrand]); }); delete self; if (this.GAalerts) { $TF('body').append( '' ); $TF('#ga_tagbox').css('opacity', 0.9).click(function() {$TF(this).css('display', 'none')}); } this.displayTag = function(content) { $TF('#ga_tagbox').append(content+'
').css('display', 'block'); }; this.updatePageParameters = function(args) { this.pagenum = (args['filter[pagenum]'] || args['page'] || "1"); this.filters = args['brand']?'1':'0'; this.filters += args['color']?'1':'0'; this.filters += Number(args['coupons'])?'1':'0'; this.filters += Number(args['local'])?'1':'0'; this.filters += Number(args['green'])?'1':'0'; this.filters += Number(args['marketplaces'])?'1':'0'; this.filters += (args['filter[price][min]']||args['filter[price][max]']||args['price'])?'1':'0'; this.filters += Number(args['sale'])?'1':'0'; this.filters += args['store']?'1':'0'; this.filters += args['freeshipping']?'1':'0'; }; this.setCustomVar = function(index, name, value, opt_scope) { try { this.pageTracker._setCustomVar(index, name, value, opt_scope); if (this.GAalerts) this.displayTag('setCustomVar(' + index + ', ' + name + ', ' + value + ', ' + opt_scope + ')'); } catch (err) { if (this.GAalerts) this.displayTag("setCustomVar Error: " + err.description); } }; this.trackPageViewWrapper = function(pageurl) { try { this.pageTracker._trackPageview(pageurl); if (this.GAalerts) { this.displayTag('trackPageview('+pageurl+')'); } } catch (err) {if (this.GAalerts) this.displayTag("trackPageViewWrapper Error: " + err.description)} }; this.trackPageview = function() { var status = this.status; var total = this.total; var pagegroup = this.pagegroup; var pagetype = this.pagetype; var query = this.query.replace(/&/g, "+"); var errorPages = { 'B1':'noresults', 'B2':'noorganicresults', 'B3':'noresults', 'B4':'noresultscurrentmall', 'B5':'partialresults', 'S1':'serverexception', '404':'error_404'}; //console.log(this.pagetype); //special cases for myfinds and shoplikeme / shoplikefriends if(this.pagetype == 'myfinds') { return; } $TF.each(errorPages, function(k,v) { if (k==status && (status!='B3' || total=='0')) { query = pagetype+"-"+query; pagegroup = "error"; pagetype = v; } }); if (this.pagetype=='error_404') this.query = '?page='+document.location.href + '&from=' + document.referrer; //TODO!!: check above format with Srilatha -- does not report properly var pageurl = 'virt_'+pagegroup + '/'+this.cobrand; //console.log(this.pagetype); switch (this.pagetype) { case 'coupons_index': pageurl += '/'+pagetype; break; case 'coupons_browsemap': pageurl += '/'+pagetype; pageurl += '/'+this.alpha; break; case 'coupons_store': case 'store': pageurl += '/'+pagetype; pageurl += '/'+this.store_name; if (document.referrer && document.referrer.search('=') == -1) { pageurl += '/?qry='+this.store_name; } else { pageurl += '/?qry='+query; } pageurl += '&flt='+this.filters + '&pgn='+this.pagenum + '&ver='+this.version; break; case 'coupons_tag': pageurl += '/coupons'; // pagetype in GA should be 'coupons' pageurl += '/'+this.category + '/'+this.subcategory + '/?qry='+query + '&flt='+this.filters + '&pgn='+this.pagenum + '&ver='+this.version; break; case 'merchant-register': pageurl += '/upfront/email/'; break; case 'browse_homepage': pageurl = "/virt_result" + "/glimpse" + "/node" + "/"+this.browse_nodename + "/"+this.browse_nodetype; console.log(this); break; default: pageurl += '/'+pagetype; pageurl += '/'+this.category + '/'+this.subcategory + '/?qry='+query + '&flt='+this.filters + '&pgn='+this.pagenum + '&ver='+this.version; break; } if (this.GAalerts) this.displayTag('trackPageview('+pageurl+')'); try { this.pageTracker._trackPageview(pageurl); } catch (err) {if (this.GAalerts) this.displayTag("trackPageview Error: "+err.description)} }; this.trackEvent = function(args) { switch (args.length) { case 2: if (this.GAalerts) this.displayTag('trackEvent('+args[0]+','+args[1]+')'); try { this.pageTracker._trackEvent(args[0], args[1]); } catch (err) {if (this.GAalerts) this.displayTag("trackEvent Error: "+err.description)} break; case 3: if (this.GAalerts) this.displayTag('trackEvent('+args[0]+','+args[1]+','+args[2]+')'); try { this.pageTracker._trackEvent(args[0], args[1], args[2]); } catch (err) {if (this.GAalerts) this.displayTag("trackEvent Error: "+err.description)} break; case 4: if (this.GAalerts) this.displayTag('trackEvent('+args[0]+','+args[1]+','+args[2]+','+args[3]+')'); try { this.pageTracker._trackEvent(args[0], args[1], args[2], Number(args[3])); } catch (err) {if (this.GAalerts) this.displayTag("trackEvent Error: "+err.description)} break; } }; this.trackClickout = function(args) { this.trackEvent([args.event[0], args.event[1], args.event[2] + args.event[3]]); this.clickoutsource=0; this.myfindspanel=''; var orderID = Math.floor(Math.random()*1000000000000); if (this.GAalerts) { this.displayTag('addTrans('+orderID+','+args.trans[0]+','+args.trans[1]+',"","",'+this.city+','+this.state+','+this.country+')'); this.displayTag('addItem('+orderID+','+args.item[0]+','+args.item[1]+','+args.item[2]+','+args.item[3]+','+args.item[4]+')'); } try { this.pageTracker._addTrans(orderID, args.trans[0], args.trans[1], "", "", this.city, this.state, this.country); this.pageTracker._addItem(orderID, args.item[0], args.item[1], args.item[2], args.item[3], args.item[4]); this.pageTracker._trackTrans(); } catch (err) {if (this.GAalerts) this.displayTag("trackTrans Error: "+err.description)} }; this.trackPrivacySettings = function() { var perm = $TF('#user_privacy').val(); var permTxt = ''; switch (perm) { case '0': permTxt = 'everyone'; break; case '1': permTxt = 'friendsonly'; break; case '2': permTxt = 'justme'; break; } if (permTxt) { this.trackEvent(['permissions', 'shoplikeme', permTxt]); } }; }); TFHtmlUtilsGoogleAnalytics = elation.googleanalytics; /** * This is used for something apparently */ function TFHtmlUtilsPandoraLog() { this.mouseovertype = ""; }