var _____WB$wombat$assign$function_____ = function(name) {return (self._wb_wombat && self._wb_wombat.local_init && self._wb_wombat.local_init(name)) || self[name]; }; if (!self.__WB_pmw) { self.__WB_pmw = function(obj) { this.__WB_source = obj; return this; } } { let window = _____WB$wombat$assign$function_____("window"); let self = _____WB$wombat$assign$function_____("self"); let document = _____WB$wombat$assign$function_____("document"); let location = _____WB$wombat$assign$function_____("location"); let top = _____WB$wombat$assign$function_____("top"); let parent = _____WB$wombat$assign$function_____("parent"); let frames = _____WB$wombat$assign$function_____("frames"); let opener = _____WB$wombat$assign$function_____("opener"); ////////////////////////////////////////////////////////////////////////////////////// // Omniture Wrapper // Written By: Michael Johns mjohns(at)ea.com // Date: 04/06 // // Purpose: the following wrapper was created to abstract business names from logical // names. This eliminates the touching of every Omniture call if for some reason the // use of props, evars or events change. It also creates a means to select the type // of reporting desired (custom link or Psuedo HTTP request). // ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// // Global Variables and Array declarations ////////////////////////////////////////////////////////////////////////////////////// var prefix = "s_ea.";//object name var eventArr = "eventsAssignmentArray"; var addValuesArr = "additionalValuesAssignmentArray"; var eventsAssignmentArray = new Array(); var propsAssignmentArray = new Array(); var evarsAssignmentArray = new Array(); var additionalValuesAssignmentArray = new Array(); var trackingItems = new Array(4); trackingItems[ 0 ] = "props"; trackingItems[ 1 ] = "evars"; trackingItems[ 2 ] = "events"; trackingItems[ 3 ] = "additionalValues"; var eventString = "";// holds the events ////////////////////////////////////////////////////////////////////////////////////// // Function setOmniValues // // Description: This function separates the business names from the logical // and takes in all the possible values associated with custom links and // standard HTTP requests. It will populate and evaluate the params being // passed in and map to appropriate Omniture values. // // link - "this" passes link object // // type - type of link (mandatory for custom link reporting) // 'o' for Custom Link // 'd' to include in the File Downloads report // 'e' to include in the Exit Links report // // linkName - without a Link Name, the link will be reported by URL // // props - list of props and values, example: // 'userid=prop1value,sitecode=prop2value' // *** never use actual param name, always the business name (userid instead of prop1) // *** See omnitureMapping function for business names (*not case sensitive) // // evars - list of evars and values, example: // 'userid=evar1value,sitecode=evar2value' // *** never use actual param name, always the business name (userid instead of evar1) // *** See omnitureMapping function for business names (*not case sensitive) // // events - list of events to trigger example: // 'successdownload,successregistration' // *** never use actual param name, always the business name (successdownload instead of event2) // *** See omnitureMapping function for business names (*not case sensitive) // // reportPageView - flag to report data as cutomlink (0) or a psuedo HTTP request (1) // // productDetails - list of products example: // 'categoryValue2; productName1 (id1),categoryValue2; productName2 (id2) // // additionalValues - used to report any additional values that need to be set example: // 'campaign=campaignValue,state=stateValue,zip=zipValue,cc=USD' // *** See omnitureMapping function for business names (*not case sensitive) // // pageName - used to override the pageName (s_ea.pageName) example: // 'myNewPageName' // *** if blank or null the pageName will not change // // Called By: external links // ////////////////////////////////////////////////////////////////////////////////////// function setOmniValues(link, type, linkName, props, evars, events, reportPageView, productDetails, additionalValues, pageName){ // re-intialize arrays/strings propsAssignmentArray.length = 0; evarsAssignmentArray.length = 0; eventsAssignmentArray.length = 0; additionalValuesAssignmentArray.length = 0; eventString = ""; // resets account info by reinitializing object var s_ea = s_gi(s_account); //check if pageName needs to be overridden if(isNotEmpty(pageName)) { s_ea.pageName = pageName; } // put raw split data in named arrays // example propsAssignmentArray --> userid=prop1value,sitecode=prop2value,brand=prop3value for (i = 0; i<=3; i++) { if(isNotEmpty(eval(trackingItems[ i ]))){ var chunk = eval(trackingItems[ i ]); var currArrayName = trackingItems[ i ] + "AssignmentArray"; eval(currArrayName + " = chunk.split(',')"); // split assigned values into two-dimensional array // DO NOT need to do anything to events since values are driven by // evar and events are only comma "," delimited if( currArrayName != eventArr){ var currArraySegmentedName = trackingItems[ i ] + "Array"; for (var j=0; j < eval(currArrayName).length; j++) { // example of currArraySegmentedName --> userid,prop1value currArraySegmentedName = eval(currArrayName)[ j ].split("="); // convert business names to omniture names // example --> userid switched to prop1 currArraySegmentedName[ 0 ] = omnitureMapping(currArraySegmentedName[ 0 ], trackingItems[ i ]); // swapping in array example --> userid=prop1Value becomes prop1,prop1Value eval(currArrayName)[ j ] = currArraySegmentedName; } }else{ for (var j=0; j < eval(currArrayName).length; j++) { // for event array example --> successdownload set to event2 // also builds up string of events for assignment to // _ea.linkTrackEvents and s_ea.events eventString += eval(currArrayName)[ j ] = omnitureMapping(eval(currArrayName)[ j ], trackingItems[ i ]); if(j < eval(currArrayName).length - 1){ eventString += ","; } } } // set individual variable assignment if( currArrayName != eventArr){ assignValuestoParams(i); } } } //get events if any var currEvents = assignEvents(reportPageView); //assign to s_ea.linkTrackVars assignLinkTrackVars(reportPageView, currEvents, productDetails); //assign to s_ea.products assignProducts(reportPageView, productDetails); //call appropriate reporting function reportData(link, type, linkName, reportPageView); }; ////////////////////////////////////////////////////////////////////////////////////// // Function assignEvents // // Description: Assigns new values from array to s_ea.linkTrackEvents and // s_ea.events variable based on the type of reporting selected. // // reportPageView - flag to report data as cutomlink (0) or a psuedo HTTP request (1) // // returns: "None" or "events" // // Called By: setOmniValues // ////////////////////////////////////////////////////////////////////////////////////// function assignEvents(reportPageView){ s_ea.linkTrackEvents = "None"; s_ea.events = ""; if((reportPageView)&&(eventsAssignmentArray.length > 0)){ s_ea.events = eventString; return "None"; } if((!reportPageView)&&(eventsAssignmentArray.length > 0)){ s_ea.linkTrackEvents = eventString; s_ea.events = eventString; return "events"; } return "None"; }; ////////////////////////////////////////////////////////////////////////////////////// // function reportData // // Description: calls the appropriate function: // s_ea.t() psuedo HTTP request or s_ea.tl() Custom Link // to trigger the correct type of reporting // // link - "this" passes link object // // type - type of link (mandatory for custom link reporting) // 'o' for Custom Link // 'd' to include in the File Downloads report // 'e' to include in the Exit Links report // // linkName - without a Link Name, the link will be reported by URL // // reportPageView - flag to report data as cutomlink (0) or a psuedo HTTP request (1) // // Called By: setOmniValues // ////////////////////////////////////////////////////////////////////////////////////// function reportData(link, type, linkName, reportPageView){ if(reportPageView){ s_ea.t(); }else{ s_ea.tl(link, type, linkName); } }; ////////////////////////////////////////////////////////////////////////////////////// // Function assignProducts // // Description: sets s_ea.products to actual product data // // reportPageView - flag to report data as cutomlink (0) or a psuedo HTTP request (1) // // productDetails - string containg product details // // Called By: setOmniValues // ////////////////////////////////////////////////////////////////////////////////////// function assignProducts(reportPageView, productDetails){ s_ea.products = ""; if(isNotEmpty(productDetails)){ s_ea.products = productDetails; } }; ////////////////////////////////////////////////////////////////////////////////////// // Function assignLinkTrackVars // // Description: Assigns new values from arrays to s_ea.linkTrackVars variable // // reportPageView - flag to report data as cutomlink (0) or a psuedo HTTP request (1) // // currEvents - string containg "None" or "events" set by assignEvents() // // productDetails - string of product details passed in from link // // Called By: setOmniValues // ////////////////////////////////////////////////////////////////////////////////////// function assignLinkTrackVars(reportPageView, currEvents, productDetails){ if(reportPageView){ //props and evars do NOT needs to be set since s_ea.t() sends everything (props/evars) s_ea.linkTrackVars = "None"; }else{ var currProps = getLinkTrackVarsValues("propsAssignmentArray"); var currEvars = getLinkTrackVarsValues("evarsAssignmentArray"); var currAdditionalValues = getLinkTrackVarsValues("additionalValuesAssignmentArray"); if(isNotEmpty(productDetails)){ currProductDetails = "products"; }else{ currProductDetails = "None"; } s_ea.linkTrackVars = buildLinkTrackVarsValues(currProps, currEvars, currAdditionalValues, currEvents, currProductDetails); } }; ////////////////////////////////////////////////////////////////////////////////////// // Function buildLinkTrackVarsValues // // Description: compiles new values from arrays to be assigned to s_ea.linkTrackVars // variable // // currProps - string of props being reported // currEvars - string of evars being reported // currAdditionalValues - string of aditional values being reported // currEvents - string "None" or "events" // currProductDetails - string "None" or "products" // // Called By: assignLinkTrackVars // // Returns: arr (aggregated array of all values for linkTrackVars) // ////////////////////////////////////////////////////////////////////////////////////// function buildLinkTrackVarsValues(currProps, currEvars, currAdditionalValues, currEvents, currProductDetails){ var arr = new Array(); if(currProps != "None") arr.push(currProps); if(currEvars != "None") arr.push(currEvars); if(currAdditionalValues != "None") arr.push(currAdditionalValues); if(currEvents != "None") arr.push(currEvents); if(currProductDetails != "None") arr.push(currProductDetails); if(arr.length == 0) { return 'None'; } else { return arr.join(","); } }; ////////////////////////////////////////////////////////////////////////////////////// // Function getLinkTrackVarsValues // // Description: pulls and assigns new values from arrays to s_ea.linkTrackVars variable // // arrayName - name of array to be used to pull values from // // Called By: assignLinkTrackVars // // Returns: linkTrackVarsValues (string of all values for linkTrackVars) // ////////////////////////////////////////////////////////////////////////////////////// function getLinkTrackVarsValues(arrayName){ if(eval(arrayName).length > 0){ linkTrackVarsValues = ""; // populate s_ea.s_linkTrackVars with array data for (var i=0; i < eval(arrayName).length; i++) { linkTrackVarsValues += eval(arrayName)[i][0]; // need to add "," between values except last one if(i < eval(arrayName).length - 1){ linkTrackVarsValues += ","; } } }else{ linkTrackVarsValues = "None"; } return linkTrackVarsValues; }; ////////////////////////////////////////////////////////////////////////////////////// // Function assignValuestoParams // // Description: resolves values from array and assigns to appropriate omniture variable // // Called By: setOmniValues // ////////////////////////////////////////////////////////////////////////////////////// function assignValuestoParams(arrayPos){ var currMultiDimArrayName = eval(trackingItems[ arrayPos ] + "AssignmentArray"); var arrName = trackingItems[ arrayPos ] + "AssignmentArray"; for (var m=0; m < currMultiDimArrayName.length; m++) { // assigns value to params example --> s_ea.prop1 = prop1Value eval(prefix + currMultiDimArrayName[m][0] + "= currMultiDimArrayName[m][1]"); } }; ////////////////////////////////////////////////////////////////////////////////////// // Function isNotEmpty // // Checks if the string is null or contains spaces only // // val - any string/array // // Called By: setOmniValues, assignProducts, assignLinkTrackVars // // Returns: true or false // ////////////////////////////////////////////////////////////////////////////////////// function isNotEmpty(val){ re = /^ *$/ if(re.exec(val)||(val == null)){ return false; }else{ return true; } }; //////////////////////////////////////////////////////////////////////////////////////// // Function omnitureMapping // // Description: Remaps business names to omniture names or returns "notFound" // // currValue - current array being populated: // propsAssignmentArray // evarsAssignmentArray // additionalValuesAssignmentArray // eventsAssignmentArray // // typeOfValue - type of array value being passed in // "props" // "evars"; // "events"; // "additionalValues"; // // Called By: setOmniValues // // Returns: Omniture logical value of parameter // ////////////////////////////////////////////////////////////////////////////////////// function omnitureMapping(currValue, typeOfValue){ currValue = currValue.toLowerCase(); var lookupTable = new Array(); // eVars if(typeOfValue == "evars"){ lookupTable["userid"] = "eVar1"; lookupTable["sitecode"] = "eVar2"; lookupTable["game"] = "eVar3"; lookupTable["newslettertype"] = "eVar4"; lookupTable["intcmp"] = "eVar5"; lookupTable["registrationlevel"] = "eVar6"; lookupTable["supporteventtype"] = "eVar7"; lookupTable["downloadtype"] = "eVar8"; lookupTable["gamespecifictype"] = "eVar9"; lookupTable["registrationtype"] = "eVar10"; lookupTable["purchaseintentaction"] = "eVar11"; lookupTable["entitlementtype"] = "eVar15"; } //sProps if(typeOfValue == "props"){ lookupTable["userid"] = "prop1"; lookupTable["sitecode"] = "prop2"; lookupTable["brand"] = "prop3"; lookupTable["franchise"] = "prop4"; lookupTable["game"] = "prop5"; lookupTable["platform"] = "prop6"; lookupTable["longpagename"] = "prop7"; lookupTable["registrationlevel"] = "prop8"; lookupTable["gamespecifictrafficvalue"] = "prop9"; lookupTable["contenttitle"] = "prop10"; lookupTable["territory"] = "prop11"; lookupTable["language"] = "prop12"; lookupTable["contentmediatype"] = "prop13"; lookupTable["contentcategory"] = "prop14"; lookupTable["contentbucket"] = "prop15"; lookupTable["contenttype"] = "prop16"; } //events if(typeOfValue == "events"){ //custom events below lookupTable["successdownload"] = "event2"; lookupTable["successregistration"] = "event3"; lookupTable["successentitlementexpiration"] = "event5"; lookupTable["successentitlement"] = "event6"; lookupTable["successgamespecific"] = "event9"; lookupTable["successsupport"] = "event11"; lookupTable["successfindastore"] = "event12"; lookupTable["successpurchaseintent"] = "event15"; lookupTable["successnewsletter"] = "event16"; lookupTable["successcancelsubscription"] = "event17"; // standard events below lookupTable["successproductview"] = "prodView"; lookupTable["successscopen"] = "scOpen"; lookupTable["successscadd"] = "scAdd"; lookupTable["successsccheckout"] = "scCheckout"; lookupTable["successpurchase"] = "purchase"; } //additionalvalues if(typeOfValue == "additionalValues"){ lookupTable["zip"] = "zip"; lookupTable["campaign"] = "campaign"; lookupTable["state"] = "state"; lookupTable["usd"] = "USD"; lookupTable["charset"] = "charSet"; lookupTable["purchaseid"] = "purchaseID"; } var omniValue = lookupTable[currValue]; if (omniValue == null){ omniValue = "notFound"; } return omniValue; }; ////////////////////////////////////////////////////////////////////////////////////// // Function buildContentType // // Description: eturns "notFound" // // content_type_media - top level categorization of content type // // content_type_classification - combined (with ::) secondary and ternary level // categorization of content type // // content_type_title - title of content type // // content_type - aggregate of content_type_media, content_type_classification (split) // and content_type_title (colon delimited) // // Called By: various dynamic page components // // Calls: setOmniValues with 3 pieces of content type categorization and title // or "Unset" if DCR does not pass in valid parameters. ////////////////////////////////////////////////////////////////////////////////////// function buildContentType(content_type_media, content_type_classification, content_type_title){ if((content_type_media == "") || (!isNotEmpty(content_type_media)) || (content_type_media == "undefined")){ content_type_media = "Unset"; } if((!isNotEmpty(content_type_title)) || (content_type_title == "undefined")){ content_type_title = "Unset"; } if((content_type_classification == "") || (content_type_classification == "undefined")){ classification_category = "Unset"; classification_subcategory = "Unset"; } else { var ct_pieces = content_type_classification.split("::"); classification_category = ct_pieces[0]; classification_subcategory = ct_pieces[1]; } setOmniValues('','','','contentmediatype='+content_type_media+',contentcategory='+classification_category+',contentbucket='+classification_subcategory+',contenttitle='+content_type_title+',contenttype='+content_type_media+' : '+classification_category+' : '+classification_subcategory+' : '+content_type_title,'', '', 1) }; ////////////////////////////////////////////////////////////////////////////////////// // Function checkAllValues // // Description: utility function to be called via address bar: // javascript:checkAllValues(); // which alerts the current values // // Called by: address bar (utility function) // ////////////////////////////////////////////////////////////////////////////////////// function checkAllValues(){ var allParamsAvail = ""; for (i = 1; i<=20; i++) { allParamsAvail += '\n prop'+i+':' + eval("s_ea.prop"+i) + ' <----> eVar'+i+':' + eval("s_ea.eVar"+i); } allParamsAvail += '\n\n'; allParamsAvail += '\n\n s_ea.linkTrackEvents:'+s_ea.linkTrackEvents; allParamsAvail += '\n\n'; allParamsAvail += '\n\n s_ea.linkTrackVars:'+s_ea.linkTrackVars; allParamsAvail += '\n\n'; allParamsAvail += '\n\n s_ea.events:'+s_ea.events; allParamsAvail += '\n\n'; allParamsAvail += '\n\n s_ea.products:'+s_ea.products; allParamsAvail += '\n\n'; allParamsAvail += '\n\n s_ea.state:'+s_ea.state; allParamsAvail += '\n\n'; allParamsAvail += '\n\n s_ea.zip:'+s_ea.zip; allParamsAvail += '\n\n'; allParamsAvail += '\n\n s_ea.campaign:'+s_ea.campaign; allParamsAvail += '\n\n'; allParamsAvail += '\n\n s_ea.pageName:'+s_ea.pageName; alert(allParamsAvail); } ; ////////////////////////////////////////////////////////////////////////////////////// // END OF CODE ////////////////////////////////////////////////////////////////////////////////////// } /* FILE ARCHIVED ON 20:47:58 Dec 12, 2006 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 18:53:21 Jun 02, 2024. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). */ /* playback timings (ms): captures_list: 0.679 exclusion.robots: 0.066 exclusion.robots.policy: 0.058 esindex: 0.01 cdx.remote: 11.654 LoadShardBlock: 67.775 (3) PetaboxLoader3.datanode: 76.141 (4) load_resource: 64.345 PetaboxLoader3.resolve: 41.53 */