/* Setting the values required for scode.js */ var aSiteName = Drupal.settings.server_variables.site_name; if ( typeof WMG.OmnitureConfig.omniConfig.linkInternalFilters === "undefined") { var linkInternalFilters = "javascript:," + WMG.basePath; } else { var linkInternalFilters = WMG.OmnitureConfig.omniConfig.linkInternalFilters; } var s_account = WMG.OmnitureConfig.omniConfig.omnitureString; if ( typeof WMG.OmnitureConfig.omniConfig.fbAppId !== "undefined") { s_fbd_appId = WMG.OmnitureConfig.omniConfig.fbAppId; } /* selectorMap to define the category selectors and category pages' regex */ var OmnitureMapping = function() { var selectorMap = { blogDetail : { category : '.node-type-blog #main .views-field-field-blog-category .field-content', authorName : '.node-type-blog #main .views-field-name' }, discussionDetail : { category : '.node-type-forum #main .views-field-term-node-tid .field-content' }, discussionCategory : { category : '.node-type-forum #main .views-field-taxonomy-forums .field-content', proCategoryRegex : /^\/(forum|discussion|forums|discussions|talk)\/category\/pro$/, fanCategoryRegex : /^\/(forum|discussion|forums|discussions|talk)\/category\/fan$/ }, photoCategory : { category : '.page-photo .view-categories a.active', proCategoryRegex : /^\/photo\/category\/pro$/, fanCategoryRegex : /^\/photo\/category\/fan$/ }, videoCategory : { category : '.page-video .view-categories a.active', proCategoryRegex : /^\/video\/category\/pro$/, fanCategoryRegex : /^\/video\/category\/fan$/ } }; /* To extend and override the selectorMap values defined above */ var setSelectorMap = function(inputMap) { if ( typeof inputMap !== "undefined") { selectorMap = jQuery.extend(true, selectorMap, inputMap); } }; return { selectorMap : selectorMap, setSelectorMap : setSelectorMap }; }(); /* To determine the category name in the category landing pages */ var determineCategory = function(categorySelector, proCategoryRegex, fanCategoryRegex) { var aCategory; var path = location.pathname; var pathArray = path.split("/"); var categoryNameFromUrl = pathArray[3]; if (proCategoryRegex.test(path) || fanCategoryRegex.test(path)) { aCategory = "All"; return aCategory; } else { var aCategory = categoryNameFromUrl; return aCategory; } }; OmnitureMapping.mapDefault = function(s, selObj, config) { }; /* To set page specific omniture values using OmnitureMapping object */ OmnitureMapping.mapBlogLanding = function(s, selObj, config) { s.prop24 = config.artistName + ":" + selObj.channel; return s; }; OmnitureMapping.mapBlogDetail = function(s, selObj, config) { var getMonthName = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'); /* Retrieving the necessary values to populate omniture in Blog Detail */ var aBlogTitle = Drupal.settings.server_variables.page_title; var aBlogCategory = jQuery(OmnitureMapping.selectorMap.blogDetail.category).text(); var createDate = ""; if ( typeof Drupal.settings.server_variables.entity_create_date !== "undefined") { var date = new Date(Drupal.settings.server_variables.entity_create_date * 1000); createDate = getMonthName[date.getMonth()] + " " + date.getDate() + ", " + date.getFullYear(); } aBlogDate = createDate; aBlogAuthor = jQuery(OmnitureMapping.selectorMap.blogDetail.authorName).text(); s.pageName += ":" + aBlogTitle; s.prop23 = config.artistName + ":" + aBlogAuthor; s.prop24 = config.artistName + ":" + selObj.channel; s.prop25 = config.artistName + ":" + aBlogTitle; s.prop26 = aBlogDate; s.prop27 = config.artistName + ":Blog:" + aBlogCategory; return s; }; OmnitureMapping.mapPhotoDetail = function(s, selObj, config) { aPhotoTitle = Drupal.settings.server_variables.page_title; s.pageName += ":" + aPhotoTitle; return s; }; OmnitureMapping.mapVideoDetail = function(s, selObj, config) { aVideoTitle = Drupal.settings.server_variables.page_title; s.pageName += ":" + aVideoTitle; s.prop5 = aVideoTitle; return s; }; OmnitureMapping.mapTrackDetail = function(s, selObj, config) { aTrackTitle = Drupal.settings.server_variables.page_title; s.pageName += ":" + aTrackTitle; s.prop3 = aTrackTitle; return s; }; OmnitureMapping.mapAlbumDetail = function(s, selObj, config) { aAlbumTitle = Drupal.settings.server_variables.page_title; s.pageName += ":" + aAlbumTitle; s.prop4 = aAlbumTitle; return s; }; OmnitureMapping.mapDiscussionDetail = function(s, selObj, config) { aDiscussionTitle = Drupal.settings.server_variables.page_title; aDiscussionCategory = jQuery(OmnitureMapping.selectorMap.discussionDetail.category).text(); s.pageName += ":" + aDiscussionTitle; s.prop28 = config.artistName + ":" + selObj.channel + ":" + aDiscussionCategory; s.prop29 = config.artistName + ":" + selObj.channel + ":" + aDiscussionTitle; return s; }; OmnitureMapping.mapDiscussionCategory = function(s, selObj, config) { var categorySelector = OmnitureMapping.selectorMap.discussionCategory.category; var proCategoryRegex = OmnitureMapping.selectorMap.discussionCategory.proCategoryRegex; var fanCategoryRegex = OmnitureMapping.selectorMap.discussionCategory.fanCategoryRegex; var aDiscussionCategory = determineCategory(categorySelector, proCategoryRegex, fanCategoryRegex); s.pageName += ":" + aDiscussionCategory; return s; }; OmnitureMapping.mapDiscussionCreate = function(s, selObj, config) { }; OmnitureMapping.mapPhotoCategory = function(s, selObj, config) { var categorySelector = OmnitureMapping.selectorMap.photoCategory.category; var proCategoryRegex = OmnitureMapping.selectorMap.photoCategory.proCategoryRegex; var fanCategoryRegex = OmnitureMapping.selectorMap.photoCategory.fanCategoryRegex; var aPhotoCategory = determineCategory(categorySelector, proCategoryRegex, fanCategoryRegex); s.pageName += ":" + aPhotoCategory; return s; }; OmnitureMapping.mapVideoCategory = function(s, selObj, config) { var categorySelector = OmnitureMapping.selectorMap.videoCategory.category; var proCategoryRegex = OmnitureMapping.selectorMap.videoCategory.proCategoryRegex; var fanCategoryRegex = OmnitureMapping.selectorMap.videoCategory.fanCategoryRegex; var aVideoCategory = determineCategory(categorySelector, proCategoryRegex, fanCategoryRegex); s.pageName += ":" + aVideoCategory; return s; }; /* To handle omniture for Login page when the url is /user and no user is logged in */ OmnitureMapping.mapUserAccount = function(s, selObj, config) { if (jQuery('body.not-logged-in').length > 0) { s.pageName = config.artistName + ": Login"; s.channel = config.artistName + ": Login"; s.hier1 = config.artistName + "|site|Login"; } return s; }; /* To set pagetype for 403 and 404 pages */ OmnitureMapping.mapPageNotFound = function(s, selObj, config) { s.pageType = "errorPage"; return s; }; OmnitureMapping.mapNotAuthorized = function(s, selObj, config) { s.pageType = "notauthorizedPage"; return s; }; /* To handle pagemap using regex and calling the respective omniture mapping functions */ var OmniPrep = function() { var pageName = ""; var sVar = ""; /* Omniture Config Variable which has the site specific details. This will be overriden locally in every site */ var config = { artistName : "", labelName : "", subLabelName : "", omnitureString : "", serverVars : { }, messageSelector : "#messages-region .messages", registrationMessages : { registration : "A welcome message with further instructions has been sent to your e-mail address.", oneTimeLogIn : "You have just used your one-time login link. It is no longer necessary to use this link to log in. Please change your password.", profileSave : "The changes have been saved.", SocialRegistration : "An email has been sent to you with confirmation instructions.", FacebookRegistration : "Registration successful. You are now logged in." } }; var EventMapping = { mapBlogEvent : function(s, eventObj, eventVal, eventDescription) { var r = s_gi(s_account); var eventVariable14 = eventObj.eventVar14; r.linkTrackVars = 'events,prop12,prop25,prop27,eVar12,eVar14,eVar25,eVar27'; r.linkTrackEvents = eventVal; r.prop12 = r.eVar12 = s.prop12; r.eVar14 = eventVariable14; r.prop25 = r.eVar25 = s.prop25; r.prop27 = r.eVar27 = s.prop27; r.events = eventVal; r.tl(this, 'o', eventDescription); }, mapDiscussionEvent : function(s, eventObj, eventVal, eventDescription) { var r = s_gi(s_account); var eventVariable14 = eventObj.eventVar14; r.linkTrackVars = 'events,prop12,prop28,prop29,eVar12,eVar14,eVar28,eVar29'; r.linkTrackEvents = eventVal; r.prop12 = r.eVar12 = s.prop12; r.eVar14 = eventVariable14; r.prop28 = r.eVar28 = s.prop28; r.prop29 = r.eVar29 = s.prop29; r.events = eventVal; r.tl(this, 'o', eventDescription); }, mapPhotoEvent : function(s, eventObj, eventVal, eventDescription) { var r = s_gi(s_account); var eventVariable14 = eventObj.eventVar14; r.linkTrackVars = 'events,prop12,eVar12,eVar14'; r.linkTrackEvents = eventVal; r.prop12 = s.prop12; r.eVar12 = s.prop12; r.eVar14 = eventVariable14; r.events = eventVal; r.tl(this, 'o', eventDescription); }, mapVideoEvent : function(s, eventObj, eventVal, eventDescription) { var r = s_gi(s_account); var eventVariable14 = eventObj.eventVar14; r.linkTrackVars = 'events,prop5,prop12,eVar6,eVar12,eVar14'; r.linkTrackEvents = eventVal; r.prop5 = s.prop5; r.eVar6 = s.prop5; r.prop12 = s.prop12; r.eVar12 = s.prop12; r.eVar14 = eventVariable14; r.events = eventVal; r.tl(this, 'o', eventDescription); }, mapUserEvent : function(s, eventObj, eventVal, eventDescription) { var r = s_gi(s_account); var eventVariable14 = eventObj.eventVar14; r.linkTrackVars = 'events,prop12,eVar12,eVar14'; r.linkTrackEvents = eventVal; r.prop12 = s.prop12; r.eVar12 = s.eVar12; r.eVar14 = eventVariable14; r.events = eventVal; r.tl(this, 'o', eventDescription); } }; /* This is primarily used for Comment & Create */ var eventsConfig = { blog : { eventMapping : EventMapping.mapBlogEvent, eventContentDesc : "Create Blog Post", eventCommentDesc : "Blog Comment", eventContentVal : "event12", eventCommentVal : "event19", eventVar14 : "blog" }, discussion : { eventMapping : EventMapping.mapDiscussionEvent, eventContentDesc : "Create Discussion Topic", eventCommentDesc : "Messageboard Comment", eventContentVal : "event12", eventCommentVal : "event19", eventVar14 : "messageboard" }, photo : { eventMapping : EventMapping.mapPhotoEvent, eventContentDesc : "Submit Photo", eventCommentDesc : "Photo Comment", eventContentVal : "event7", eventCommentVal : "event19", eventVar14 : "photo" }, video : { eventMapping : EventMapping.mapVideoEvent, eventContentDesc : "Submit Video", eventCommentDesc : "Video Comment", eventContentVal : "event7", eventCommentVal : "event19", eventVar14 : "video" }, user : { eventMapping : EventMapping.mapUserEvent, eventJoinSiteDesc : "Registration", eventLoginDesc : "Login", eventMListDesc : "Mailing List Signup", eventCommentDesc : "Profile Comment", eventCommentVal : "event19", eventVar14 : "profile" }, registration : { pageDesc : "Homepage", eventDesc : "Registration Email Sent", events : "event1" }, oneTimeLogIn : { pageDesc : "Edit Account", eventDesc : "One-Time Login", events : "event83" }, profileSave : { pageDesc : "Edit Account", eventDesc : "Password Save Success", events : "event84" }, SocialRegistration : { pageDesc : "Homepage", eventDesc : "Registration Success", events : "event1" }, FacebookRegistration : { pageDesc : "Homepage", eventDesc : "Registration Success", events : "event1" } }; /* Defining the pagemap values and needs to be overriden to handle url patterns for those pages that differ */ /* The values can be overridden using the function setPageMap defined below */ var pageMap = { home : { urlRegex : /^\/$/, channel : "Home", pageNameValue : "Homepage" }, blogLanding : { urlRegex : /^\/(blog|news|updates)/, channel : "Blog", propMapping : OmnitureMapping.mapBlogLanding }, blogDetail : { urlRegex : /^\/(blog|news|updates)\/[\s\S]*/, channel : "Blog", propMapping : OmnitureMapping.mapBlogDetail, eventKey : eventsConfig.blog }, blogCategory : { urlRegex : /^\/(blog|news|updates)\/category\/[\s\S]*/, channel : "Blog" }, videoLanding : { urlRegex : /^\/video/, channel : "Videos" }, videoDetail : { urlRegex : /^\/video\/[\s\S]*/, channel : "Videos", propMapping : OmnitureMapping.mapVideoDetail, eventKey : eventsConfig.video }, videoCategory : { urlRegex : /^\/video\/category\/[\s\S]*/, channel : "Videos", propMapping : OmnitureMapping.mapVideoCategory }, photoLanding : { urlRegex : /^\/photo/, channel : "Photos" }, photoDetail : { urlRegex : /^\/photo\/[\s\S]*/, channel : "Photos", propMapping : OmnitureMapping.mapPhotoDetail, eventKey : eventsConfig.photo }, photoCategory : { urlRegex : /^\/photo\/category\/[\s\S]*/, channel : "Photos", propMapping : OmnitureMapping.mapPhotoCategory }, musicLanding : { urlRegex : /^\/album/, channel : "Music" }, trackDetail : { urlRegex : /^\/music\/[\s\S]*/, channel : "Music", propMapping : OmnitureMapping.mapTrackDetail }, albumDetail : { urlRegex : /^\/album\/[\s\S]*/, channel : "Music", propMapping : OmnitureMapping.mapAlbumDetail }, toursUpcomingLanding : { urlRegex : /^\/tour/, channel : "Tours", pageNameValue : "Upcoming Tours" }, toursUpcomingDetail : { urlRegex : /^\/tour\/[\s\S]*/, channel : "Tours", pageNameValue : "Upcoming Tours" }, toursArchiveLanding : { urlRegex : /^\/tour-archives/, channel : "Tours", pageNameValue : "Past Tours" }, toursArchiveDetail : { urlRegex : /^\/tour-archives\/[\s\S]*/, channel : "Tours", pageNameValue : "Past Tours" }, communityLanding : { urlRegex : /^\/(community|community-landing)/, channel : "Community" }, discussionsLanding : { urlRegex : /^\/(forum|discussion|forums|discussions|talk)/, channel : "Discussions" }, discussionDetail : { urlRegex : /^\/(forum|discussion|forums|discussions|talk)\/[\s\S]*/, channel : "Discussions", propMapping : OmnitureMapping.mapDiscussionDetail, eventKey : eventsConfig.discussion }, discussionCategory : { urlRegex : /^\/(forum|discussion|forums|discussions|talk)\/category\/[\s\S]*/, channel : "Discussions", propMapping : OmnitureMapping.mapDiscussionCategory }, discussionCreate : { urlRegex : /^\/node\/add\/(forum|discussion|forums|discussions|talk)/, channel : "Discussions", propMapping : OmnitureMapping.mapDiscussionCreate }, memberDetail : { urlRegex : /^\/(member|user)(\/|)[\s\S]*/, channel : "Profile", propMapping : OmnitureMapping.mapUserAccount, eventKey : eventsConfig.user }, membersLanding : { urlRegex : /^\/member$/, channel : "Members" }, editProfile : { urlRegex : /^\/user\/[\s\S]*\/edit-profile$/, channel : "Account", pageNameValue : "Edit Profile" }, editAccount : { urlRegex : /^\/user\/[\s\S]*\/edit$/, channel : "Account", pageNameValue : "Edit Account" }, canadaHome : { urlRegex : /^\/ca/, channel : "Canada" }, canadaFrenchHome : { urlRegex : /^\/ca-fr/, channel : "Canada (FRANCAIS)" }, australiaHome : { urlRegex : /^\/au/, channel : "Australia" }, brasilHome : { urlRegex : /^\/br/, channel : "Brasil" }, germanyHome : { urlRegex : /^\/de/, channel : "Germany" }, franceHome : { urlRegex : /^\/fr/, channel : "France" }, italyHome : { urlRegex : /^\/it/, channel : "Italy" }, japanHome : { urlRegex : /^\/jp/, channel : "Japan" }, upload : { urlRegex : /^\/upload/, channel : "Content", pageNameValue : "Content Submission" }, login : { urlRegex : /^\/user\/login/, channel : "Login" }, resetPassword : { urlRegex : /^\/user\/(reset|password)[\s\S]*/, channel : "Reset Password" }, about : { urlRegex : /^\/about/, channel : "Biography" }, contactUs : { urlRegex : /^\/contact-us/, channel : "Contact Us" }, chat : { urlRegex : /^\/chat/, channel : "Chat" }, pageNotFound : { pageNameValue : "Page Not Found", propMapping : OmnitureMapping.mapPageNotFound }, notAuthorized : { pageNameValue : "Not Authorized", propMapping : OmnitureMapping.mapNotAuthorized }, def : { channel : Drupal.settings.server_variables.page_title } }; var events = { joinSite : function(s) { var r = s_gi(s_account); r.linkTrackVars = 'events,prop12,eVar12,eVar43'; r.linkTrackEvents = 'event1'; r.prop12 = r.eVar12 = Drupal.settings.server_variables.entity_id; if (Drupal.settings.server_variables.target_user_provider) { r.eVar43 = Drupal.settings.server_variables.target_user_provider; } else { r.eVar43 = "Site"; } r.events = 'event1'; r.tl(this, 'o', eventsConfig.user.eventJoinSiteDesc); }, login : function(s) { var r = s_gi(s_account); r.linkTrackVars = 'events,prop12,eVar12'; r.linkTrackEvents = 'event2'; r.prop12 = r.eVar12 = s.prop12; r.events = 'event2'; r.tl(this, 'o', eventsConfig.user.eventLoginDesc); }, mailingListSignup : function(s) { var r = s_gi(s_account); r.linkTrackVars = 'events,prop1,eVar4'; r.linkTrackEvents = 'event3'; r.prop1 = r.eVar4 = s.prop1; r.events = 'event3'; r.tl(this, 'o', eventsConfig.user.eventMListDesc); }, create : function(s) { var selObj = pageMap[pageName]; if ( typeof selObj.eventKey !== "undefined") { var eventObj = selObj.eventKey; var eventDescription = eventObj.eventContentDesc; var eventVal = eventObj.eventContentVal; eventObj.eventMapping.call(this, s, eventObj, eventVal, eventDescription); } }, comment : function(s) { var selObj = pageMap[pageName]; if ( typeof selObj.eventKey !== "undefined") { var eventObj = selObj.eventKey; var eventDescription = eventObj.eventCommentDesc; var eventVal = eventObj.eventCommentVal; eventObj.eventMapping.call(this, s, eventObj, eventVal, eventDescription); } }, search : function() { /* Configuration for Search not available yet. */ } }; // variable for custom event tracking var customOmniVars = {}; var omniVars = {}; var omniDescription; // Temp value holder for event /* This is to set Up the prepVariables - private */ var setUp = function(s) { pageName = determinePage(); /* Populate the default omniture values like channel, pagename etc. if the page is not a 403 or 404 */ if (pageName != "pageNotFound" && pageName != "notAuthorized") { s = populate(s, pageName); }; /* To call the respective Mapping functions to those pages which has additional omniture variables * like prop24, prop28 etc. */ var lConfig = config; if ( typeof pageMap[pageName].propMapping !== "undefined") { if ( typeof pageName !== "undefined" && typeof pageMap[pageName].propMapping === "function") { var selObj = pageMap[pageName]; s = pageMap[pageName].propMapping.call(this, s, selObj, lConfig); } }; /* For event handling when a comment/content is posted */ handleEvents(s, pageName); /* For Device Specific Tracking */ s = populateDeviceDetails(s); /* For Registration Tracking */ s = registrationTracking(s); /* Set Referrer for Splash Page */ s = setReferrer(s); return s; }; /* To determine the pageName value based on the url regex pattern defined in the pagemap above */ var determinePage = function() { var path = location.pathname; /* checking for 404 pages */ jQuery.each(pageMap, function(k, v) { if ( typeof v.urlRegex !== "undefined") { if (v.urlRegex.test(path)) { pageName = k; } } else { if (v.pageNameValue == Drupal.settings.server_variables.page_title) { pageName = k; } } }); if (pageName == "") { pageName = "def"; } return pageName; }; /* To populate the default omniture variables like pagename, channel, hier etc. */ var populate = function(s, pageName) { if ( typeof pageName !== "undefined") { var currObj = pageMap[pageName]; var aUserId = ""; if ( typeof Drupal.settings.server_variables.user_id !== "undefined") { aUserId = 'gardens' + Drupal.settings.server_variables.user_id; s.prop12 = aUserId; /*if user is defined is use prop12*/ } if ( typeof currObj.pageNameValue === "undefined") { s.pageName = config.artistName + ":" + currObj.channel; } else { s.pageName = config.artistName + ":" + currObj.pageNameValue; } s.channel = config.artistName + ":" + currObj.channel; s.server = config.artistName + ":Site"; s.hier1 = config.artistName + "|Site|" + currObj.channel; s.prop1 = config.artistName; s.prop2 = config.labelName; s.prop49 = config.platform; s.eVar49 = config.template; if (config.subLabelName != "") { s.prop6 = config.labelName + ":" + config.subLabelName; } } return s; }; /* Event tracking when comments/content is posted using server variables */ var handleEvents = function(s, pageName) { var selObj = pageMap[pageName]; switch (Drupal.settings.server_variables.action) { // action is insert when a node/comment is posted case "insert": // To check whether a node/comment is posted with the server variables switch (Drupal.settings.server_variables.entity_type) { case "node": events.create(s, selObj); break; case "file": events.create(s, selObj); break; case "comment": events.comment(s, selObj); break; case "user": events.joinSite(s); break; } break; } }; /*Registration Tracking*/ var registrationTracking = function(s) { /*Write Your code*/ if (jQuery(config.messageSelector).length > 0) { var messageDisplayed = jQuery.trim(jQuery(config.messageSelector)[0].childNodes[2].data); if (messageDisplayed.length > 0) { jQuery.each(config.registrationMessages, function(eventName, value) { if (value === messageDisplayed) { if (eventName !== "profileSave") { if (((value === "An email has been sent to you with confirmation instructions.") || (value === "Registration successful. You are now logged in.")) && (Drupal.settings.server_variables.action === "insert")) { var providerval = jQuery.cookie("providervalue"); s.pageName = config.artistName + ":" + eventsConfig[eventName].pageDesc + ": " + providerval + " " + eventsConfig[eventName].eventDesc; s.events = eventsConfig[eventName].events; } else { s.pageName = config.artistName + ":" + eventsConfig[eventName].pageDesc + ":" + eventsConfig[eventName].eventDesc; s.events = eventsConfig[eventName].events; } } else { if (Drupal.settings.server_variables.entity_type == "user") { s.pageName = config.artistName + ":" + eventsConfig[eventName].pageDesc + ":" + eventsConfig[eventName].eventDesc; s.events = eventsConfig[eventName].events; } } } }); } } return s; }; /*Populate Device Details*/ var populateDeviceDetails = function(s) { var orientation = "landscape", $window = jQuery(window), height = $window.height(), width = $window.width(), device = "desktop", dpr = window.devicePixelRatio || 1; //Will rely on the defaults if matchmedia is absent. if (window.matchMedia) { /*Orientation*/ if (window.matchMedia("(orientation: portrait)").matches) { orientation = "portrait"; } /*Device - Based on the resolution primarily. Cascading conditions*/ if (window.matchMedia("(min-width: 768px)").matches) { device = "tablet"; } if (window.matchMedia("(min-width: 1024px)").matches) { device = "desktop"; } if (window.matchMedia("(min-width: 1370px)").matches) { device = "large desktop"; } if (window.matchMedia("(max-width: 480px)").matches) { device = "mobile"; } /* Tweeners - Use orientation to differentiate between tablet & mobile */ if (window.matchMedia("(min-width: 481px) and (max-width:700px) and (orientation:portrait)").matches) { device = "tablet"; } if (window.matchMedia("(min-width: 481px) and (max-width:700px) and (orientation:landscape)").matches) { device = "mobile"; } } // In the absense of the viewport tag, measure it as non RWD if (jQuery('meta[name="viewport"]').length === 0) { device = "not RWD"; } s.eVar62 = device; s.eVar63 = width + "w x " + height + "h (" + dpr + "x)"; s.eVar64 = orientation; return s; }; var setReferrer = function(s) { var ref = jQuery.urlParam("ref"); if ( typeof (ref) !== "undefined") { s.referrer = decodeURIComponent(ref); } return s; }; /* Generic Event Handler. Should be used for custom link tracking */ var omniCustomLink = function(omniVars, description) { var s = s_gi(s_account); if ( typeof omniVars === "string") { s.linkTrackVars = 'events'; s.linkTrackEvents = omniVars; s.events = omniVars; } else { s.linkTrackVars = Object.keys(omniVars); s = jQuery.extend(s, omniVars); } s.tl(this, 'o', description); }; /* LiveFyre Omniture */ var liveFyreOmniture = function(liveFyreContainer) { var loadMoreCounter = 1; var $liveFyreContainer = jQuery(liveFyreContainer); $liveFyreContainer.find('.hub-list-more').click(function() { s.tl(this, 'o', s.pageName + " : Livefyre : Load More " + loadMoreCounter); loadMoreCounter++; }); $liveFyreContainer.delegate('article .content-header-inner,article .content-header + div,article .content-body-main', 'click', function() { var content = jQuery(this).parents('article').attr('data-content-id'); s.tl(this, 'o', s.pageName + " : Livefyre : Content Focus : " + content); }); $liveFyreContainer.delegate('.lf-share .lf-twitter', 'click', function() { s.tl(this, 'o', s.pageName + " : Livefyre : Content Share Intent : Twitter"); }); $liveFyreContainer.delegate('.lf-share .lf-facebook', 'click', function() { s.tl(this, 'o', s.pageName + " : Livefyre : Content Share Intent : Facebook"); }); }; /* To override the pageMap values locally in the site */ var setPageMap = function(inputMap) { if ( typeof inputMap !== "undefined") { pageMap = jQuery.extend(true, pageMap, inputMap); } }; // Functions for custom omniture event tracking var resetOmniVars = function() { omniVars = {}; omniVars.prop1 = s.prop1; omniVars.eVar4 = s.eVar4; }; var includeWidgetJS = function() { // facebook include ( function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/en_US/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); // Twitter include ! function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], p = /^http:/.test(d.location) ? 'http' : 'https'; if (!d.getElementById(id)) { js = d.createElement(s); js.id = id; js.src = p + '://platform.twitter.com/widgets.js'; fjs.parentNode.insertBefore(js, fjs); } }(document, 'script', 'twitter-wjs'); }; var handleClickEvents = function(eventTrackSelecTors) { var noOfSelectors = eventTrackSelecTors.length; for (var i = 0; i < noOfSelectors; i++) { clickEventElement = eventTrackSelecTors[i]; if (clickEventElement === '.sc-play') { jQuery(clickEventElement).live('click', function() { resetOmniVars(); var _songTitle = customOmniVars.scPlayer.songTitle; omniDescription = s.pageName + ' ' + customOmniVars.scPlayer.description; omniVars.prop3 = s.prop1 + ' ' + _songTitle; omniVars.events = 'event16'; s.linkTrackEvents = 'event16'; omniCustomLink(omniVars, omniDescription); }); } else { jQuery(clickEventElement).click(function() { resetOmniVars(); var $this = jQuery(this); elementKey = $this.attr('id').trim(); omniDescription = s.pageName + ':' + customOmniVars.EventDescription[elementKey]; s.linkTrackEvents = ''; omniCustomLink(omniVars, omniDescription); }); } } }; var setFbCallback = function(description) { resetOmniVars(); jQuery.getScript('http://connect.facebook.net/en_US/all.js', function() { FB.init({ appId : customOmniVars.fbAppID, status : true, cookie : true, xfbml : true }); FB.XFBML.parse(document); FB.Event.subscribe('edge.create', function(response) { omniDescription = s.pageName + ' ' + description; OmniPrep.omniCustomLink(omniVars, omniDescription); }); }); }; var setTwttrCallback = function() { resetOmniVars(); omniDescription = s.pageName + ' ' + customOmniVars.EventDescription['tweet']; OmniPrep.omniCustomLink(omniVars, omniDescription); }; /* To override the omniture config values - site specific like artist name, label name etc. */ var init = function(uConfig) { if ( typeof config !== "undefined") { jQuery.extend(config, uConfig); } jQuery.extend(customOmniVars, WMG.OmnitureConfig.customOmniConfig); handleClickEvents(customOmniVars.clickEventElement); var fbDescription = customOmniVars.EventDescription['flike']; var twDescription = customOmniVars.EventDescription['tweet']; if (fbDescription != '' || typeOf(fbDescription) != undefined) { setFbCallback(fbDescription); } jQuery.getScript("http://platform.twitter.com/widgets.js", function() { var twDescription = customOmniVars.EventDescription['tweet']; if (twDescription != '' || typeOf(twDescription) != 'undefined') { twttr.events.bind('tweet', setTwttrCallback); } }); }; return { init : init, setPageMap : setPageMap, setUp : setUp, omniCustomLink : omniCustomLink, liveFyreOmniture : liveFyreOmniture, events : events }; }();