/****************************************
 * Sprint Analytics Control File
 * Designed and Developed by Numeric Analytics
 *
 * Lead Developer: Jason Eves jasone@numericanalytics.com
 *
 *
 * Purpose:  This code is meant to control
 * the various aspects of web analytics for
 * Sprint.com
 *
 * Change History
 *
 * Create Date 11.5.08
 *
 * Version 1.0
 * Functionality Present -
 * Logic for Omniture's Site Catalyst Web Analytic
 * data capture
 *
 * Logic for TeaLeaf Customer Experience Management
 * Software for use with Rich Media
 *
 * Logic for Voice of Customer survey system
****************************************/
/*
 * Interim solution to defining g-code functions so that g-code removal will not cause errors
 * This should only be for spde apps
 */
 if((typeof Analytics != 'undefined') && Analytics.MetricData.appId && Analytics.MetricData.appId != 'eComStore'){
 	s_gs = s_co = function(x){}
 }

//processing time test
//var start = new Date();
//document.write(start.getTime());

/*Web Analytics Data Capture - Omniture Site Catalyst*/

/*
 * Handle generic data object which stores the metric data to be captured
 */
 //test for the Analytics scoped objects, if undefined, then create it.

if(typeof Analytics == "undefined"){
	Analytics = new Object;
	//if no generic data object exists, then create one
	Analytics.MetricData = {};
}

/*Global framework settings */
/* Analytics.bKillFramework is an emergency kill switch
 * It is meant to be used to for things like errors being thrown in the production env.
 * set this to true for total removal of framework functionality
 * including web analytics, VOC - survey code, and CEM - tealeaf tracking
 */
Analytics.bKillFramework = false;
if(!Analytics.bKillFramework){
 /*
  * Analytics.bWebAnalyticsDormant is a switch to make the web analytics
  * lie dormant. Thus no calls to the metric storage servers will be made
  * some supporting functionality will still take place in order for AJAX helper
  * functions to still function properly for example
  */
Analytics.bWebAnalyticsDormant = false;
/*
 * Analytics.bVOCDormant is a switch to make the VOC/survey code dormant
 * This will turn off all survey code for the site.
 */
Analytics.bVOCDormant = false;

 
 /*
  * dormantErrorHandler snippet
  */
  Analytics.dormantErrorHandler = function(msg,url,line_num){
  
  	if( url.toLowerCase().indexOf('/assets/scripts/analytics') >= 0){
  		return true;
  	}
  	return false;
  }
  if(Analytics.bWebAnalyticsDormant){
  	onerror = Analytics.dormantErrorHandler;
  }

/*new object to handle the data manipulation and business logic for loading metrics
 * this object packages the data to be tracked before sending it to the specific web
 * analytics tool for tracking (Omniture's Site Catalyst)
 */
   
Analytics.DataCompiler = new Object;

//helper function to add onclick events to dom elements
Analytics.DataCompiler.addOnClickEvent = function(func, El){
	try{
		if(El.attachEvent){
			El.attachEvent("onclick",func);
		}
		if(El.addEventListener){
			El.addEventListener("click",func,false);
		}
		return this;
	}catch(e){}
}
//helper function to add onblur events to dom elements
Analytics.DataCompiler.addOnBlurEvent = function(func, El){
	try{
		if(El.attachEvent){
			El.attachEvent("onblur",func);
		}
		if(El.addEventListener){
			El.addEventListener("blur",func,false);
		}
		return this;
	}catch(e){}
}
//helper function to add onchange events to dom elements
Analytics.DataCompiler.addOnChangeEvent = function(func, El){
	try{
		if(El.attachEvent){
			El.attachEvent("onchange",func);
		}
		if(El.addEventListener){
			El.addEventListener("change",func,false);
		}
		return this;
	}catch(e){}
}
//helper function to add onmouseover events to dom elements
Analytics.DataCompiler.addOnMouseOutEvent = function(func, El){
	try{
		if(El.attachEvent){
			El.attachEvent("onmouseout",func);
		}
		if(El.addEventListener){
			El.addEventListener("mouseout",func,true);
		}
		return this;
	}catch(e){}
}

//helper function to get an element by attribute and substring 
Analytics.DataCompiler.getElementsByAttributeSubstring = function(oElm, strTagName, strAttributeName, strAttributeValue){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	var oAttributeValue = (typeof strAttributeValue != "undefined")? new RegExp("^" + strAttributeValue) : null;
	var oCurrent;
	var oAttribute;
	for(var i=0; i<arrElements.length; i++){
		oCurrent = arrElements[i];
		oAttribute = oCurrent.getAttribute && oCurrent.getAttribute(strAttributeName);
		
		//munge the function types for IE
		if(typeof oAttribute == 'function'){
			oAttribute = oAttribute.toString();
			var from = oAttribute.indexOf('{') + 2;
			var length = oAttribute.length - 1 - from;
			oAttribute = oAttribute.substr(from, length);
		}
		
		if(typeof oAttribute == "string" && oAttribute.length > 0){
			if(typeof strAttributeValue == "undefined" || (oAttributeValue && oAttributeValue.test(oAttribute))){
				var arrLength = arrReturnElements.length;
				if(arrLength > 0){
					arrReturnElements[arrLength+1] = oCurrent;
				}else{
					arrReturnElements[0] = oCurrent;
				}
			}
		}
	}
	return arrReturnElements;
}
//helper function to get element by classname and some string
Analytics.DataCompiler.getElementsByClassName = function(strClass, strTag, objContElm) {
	strTag = strTag || "*";
	objContElm = objContElm || document;
	var objColl = objContElm.getElementsByTagName(strTag);
	if (!objColl.length && strTag == "*" && objContElm.all)
		objColl = objContElm.all;
	var arr = new Array();
	var delim = strClass.indexOf('|') != -1 ? '|' : ' ';
	var arrClass = strClass.split(delim);
	for ( var i = 0, j = objColl.length; i < j; i++) {
		var arrObjClass = objColl[i].className.split(' ');
		if (delim == ' ' && arrClass.length > arrObjClass.length)
			continue;
		var c = 0;
		comparisonLoop: for ( var k = 0, l = arrObjClass.length; k < l; k++) {
			for ( var m = 0, n = arrClass.length; m < n; m++) {
				if (arrClass[m] == arrObjClass[k])
					c++;
				if ((delim == '|' && c == 1)
						|| (delim == ' ' && c == arrClass.length)) {
					arr.push(objColl[i]);
					break comparisonLoop;
				}
			}
		}
	}
	return arr;
}
//helper function to parse queryString for value
Analytics.DataCompiler.queryStringToHash = function(str,returnDesired){
		try{
			var qs=[];
		for(var z=0;z<str.split('?').length;z++){
			var a=str.indexOf("?")>-1?str.split("?")[z].split("&"):str.split("&");
			for(var x=0;x<a.length;x++){
				var b=a[x].split("=");
				qs[b[0].toLowerCase()]=b[1];
				
				if(returnDesired.toLowerCase() == b[0].toLowerCase()){
					return b[1];
				}
			}
		}
			return qs;
		}catch(e){}
	}
// To cover IE 5.0's lack of the psh method
/*Array.prototype.push = function(value) {
	this[this.length] = value;
}*/
//helper function to read cookie values
Analytics.DataCompiler.readCookie = function(name){
	try{
		var name=name+"=";
		var ca=document.cookie.split(';');
		for(var i=0;i < ca.length;i++){
			var c=ca[i];
			while(c.charAt(0)==' '){c=c.substring(1,c.length)};
			if(c.indexOf(name)==0){return c.substring(name.length,c.length)};
		}
		return null;
	}catch(e){}
}
//helper function to set cookies
Analytics.DataCompiler.setCookie = function(name,value){
	try{
		document.cookie=name+"="+value+"; path=/";
	}catch(e){}
}
Analytics.loadScriptLibrary = function(src, olFunction) { 
	var library = document.createElement('script');
	library.type = 'text/javascript'; 
	library.src = src;
	if(typeof olFunction == 'function') {
		if(library.addEventListener) {
		library.addEventListener("load",olFunction,false);
		} else {
			olFunIE = olFunction.toString();
			var from = olFunIE.indexOf('{') + 1;
			var length = olFunIE.length - 1 - from;
			olFunIE = olFunIE.substr(from, length);
			library.onreadystatechange = function () {
				if (library.readyState == 'complete' || library.readyState == 'loaded') {
				eval(olFunIE);
				}
			}
		}
	}
	document.getElementsByTagName('head')[0].appendChild(library);
}

Analytics.DataCompiler.getElementTextByTag = function(tag){
	var	aElementReferences = document.getElementsByTagName(tag);
	var aElementTextValues = new Array();

	for(var j=0;j<aElementReferences.length;j++){
		aElementTextValues.push(aElementReferences[j].innerText);
	}
	return aElementTextValues;

}
//helper function to take in an MDN and return the deviceId and subId associated with it
Analytics.DataCompiler.getMDNrelations = function(MDN){
	var aResults = new Array();	
	aResults[0] = '';
	aResults[1] = '';
	try{
		MDN = MDN.replace(/-/g,'');//strip the dashes out of the number
		var objRelationships = Analytics.DataCompiler.getData("mdnRelationship",Analytics.MetricData);
		
		for(var g=0;g<objRelationships.relationLength;g++){
			if(MDN == eval('objRelationships.mdn'+g)){
				aResults[0] = eval('objRelationships.deviceId'+g);
				aResults[1] = eval('objRelationships.subId'+g);
				break;
			}
		}
	}catch(e){}
		
	return aResults;
}

//getter function to return value of the variable data in Analytics.MetricData
Analytics.DataCompiler.getData = function(varName,dataObj){
	if(dataObj[varName] == "undefined"){
		return null;
	}else{
		return dataObj[varName];
	}
}

//setter function to add name value pairs to the Analytics.MetricData object
Analytics.DataCompiler.setData = function(varName,varValue,dataObj){
	dataObj[varName] = varValue;
}

//method to get the appId
Analytics.DataCompiler.getAppId = function(){
	var appId = "NA";
	//run through various routines until an appId is found
	//check for a .html page in the url - indicates it is the CMS/Teamsite content
	if(location.href.indexOf("htm") >= 0 || location.pathname.indexOf(".") < 0){
		appId = "CMS";
	}
	
	if(location.href.indexOf("/landings/") >= 0 ){
		appId = "CMS";
	}
	
	return appId;
}

//method to get the current action
Analytics.DataCompiler.getAction = function(){
	//run through various routines until an action is found
	return location.pathname;
}

Analytics.DataCompiler.initializeMetricData = function(dataObj){
	//set the data
	this.setData("appId",this.getAppId(),dataObj);
	this.setData("action",this.getAction(),dataObj);
	this.setData("currentHost",location.host,dataObj);
	if(location.host.toLowerCase().indexOf('test.sprint.com') < 0 && (location.host.toLowerCase().indexOf('sprint.com') >= 0 
																			|| location.host.toLowerCase().indexOf('sprintnextel.com') >= 0 
																			|| location.host.toLowerCase().indexOf('nextelpartners.com') >= 0 ) ){
		this.setData("environment",'prod',dataObj);
	}
}

//method to load the appropriate application data for metric tracking
Analytics.DataCompiler.loadMetricData = function(dataObj){
	/*modify the currentHost for the MetricData to include the correct references to file locations
	 * if there is no currentHost defined, then a mapped reference is to be used /assets....for example.  Used in eComStore app
	 * so don't add the // reference.
	 */
	if(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData).length > 0){
		Analytics.DataCompiler.setData("currentHost","//"+Analytics.DataCompiler.getData("currentHost",Analytics.MetricData),Analytics.MetricData);
	}
	//non app specific settings
	dataObj["server"] = location.host;

	//switch case the possible appIds to load the appropriate data.
	switch(Analytics.DataCompiler.getData("appId",Analytics.MetricData)){
		case "Search":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/search/search.js', Analytics.loadNumericFramework);
			break;
		case "eCareUSC":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/eCare/eCareUSC.js', Analytics.loadNumericFramework);
			break;
		case "eCareSSO":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/eCare/eCareSSO.js', Analytics.loadNumericFramework);
			break;
		case "eCareChPl":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/eCare/eCareChPl.js', Analytics.loadNumericFramework);
			break;
		case "eCareSPO":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/eCare/eCareSPO.js', Analytics.loadNumericFramework);
			break;
		case "eCareReg":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/eCare/eCareReg.js', Analytics.loadNumericFramework);
			break;
		case "eCareATG":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/eCare/ecareatg.js', Analytics.loadNumericFramework);
			break;			
		case "DigLouDL":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/DigLou/DigLouDL.js', Analytics.loadNumericFramework);
			break;
		case "BuzzComm":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/BuzzComm/BuzzComm.js', Analytics.loadNumericFramework);
			break;
		case "Support":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/Support/Support.js', Analytics.loadNumericFramework);
			break;
		case "DLTextMessaging":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/DigLou/DigLouTM.js', Analytics.loadNumericFramework);
			break;
		case "DigLouZW":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/DigLou/DigLouZW.js', Analytics.loadNumericFramework);
			break;
		case "DigLouGA":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/DigLou/DigLouGA.js', Analytics.loadNumericFramework);
			break;
		case "DigLouBG":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/DigLou/DigLouBG.js', Analytics.loadNumericFramework);
			break;
		case "DigLouMP":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/DigLou/DigLouMP.js', Analytics.loadNumericFramework);
			break;
		case "DigLouFU":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/DigLou/DigLouFU.js', Analytics.loadNumericFramework);
			break;
		case "DigLouCV":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/DigLou/DigLouCV.js', Analytics.loadNumericFramework);
			break;
		case "SurveyBurke":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/Survey/SurveyBurke.js', Analytics.loadNumericFramework);
			break;
		case "eComStore":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/eCom/eComStore.js', Analytics.loadNumericFramework);
			break;
		case "CMS":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/CMS/CMS.js', Analytics.loadNumericFramework);
			break;
		case "CovTool":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/CoverageTool/CovTool.js', Analytics.loadNumericFramework);
			break;
		case "ChatCnxtns":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/Chat/ChatCnxtns.js', Analytics.loadNumericFramework);
			break;
		case "ChatInQ":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/Chat/ChatInQ.js', Analytics.loadNumericFramework);
			break;
		case "MobileSync":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/MobileSync/MobileSync.js', Analytics.loadNumericFramework);
			break;			
		case "SapientWelcome":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/Sapient/SapientWelcome.js', Analytics.loadNumericFramework);
			break;
		case "MinisiteLanding":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/Minisites/MinisiteLanding.js', Analytics.loadNumericFramework);
			break;			
		case "Landings":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/Landings/Landings.js', Analytics.loadNumericFramework);
			break;
		case "StoreLocatorMaps":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/StoreLocator/StoreLocatorMaps.js', Analytics.loadNumericFramework);
			break;
		case "StoreLocatorAppt":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/StoreLocator/StoreLocatorAppt.js', Analytics.loadNumericFramework);
			break;
		case "TeleNav":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/TeleNav/TeleNav.js', Analytics.loadNumericFramework);
			break;
		case "FamilyLocator":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/FamilyLocator/FamilyLocator.js', Analytics.loadNumericFramework);
			break;
		case "iGoogleWidget":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/iGoogleWidget/iGoogleWidget.js', Analytics.loadNumericFramework);
			break;
		case "FacebookWidget":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/FacebookWidget/FacebookWidget.js', Analytics.loadNumericFramework);
			break;
		case "BuyBack":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/BuyBack/BuyBack.js', Analytics.loadNumericFramework);
			break;
		case "eCenter":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/ecenter/ecenter.js', Analytics.loadNumericFramework);
			break;
		case "ChatTalisma":
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/Chat/chattalisma.js', Analytics.loadNumericFramework);
			break;
	}

}

// if appId NOT found then initialize the MetricData object with required data
if(Analytics.DataCompiler.getData("appId",Analytics.MetricData) == null){
	 Analytics.DataCompiler.initializeMetricData(Analytics.MetricData);
}

/*Initialize web analytics tracking framework to
 * handle data translation and business rules for
 * pushing data into Omniture's Site Catalyst.
 * This is where the s_code.js file is utilized
 */

Analytics.metricTranslation = function(){
	for(var propertyName in Analytics.MetricData){
		Analytics._numeric_.setProperty(propertyName,Analytics.MetricData[propertyName]);
	}
		Analytics._numeric_.analyticsCallBack();
	}
Analytics.loadNumericFramework = function(){
	if(!Analytics.bWebAnalyticsDormant){		
		Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/_numeric_.js');
	}
}
//method to initialize the web tracking process
Analytics.init = function(){
	//load the metric data for tracking
	if(typeof s_account == 'undefined'){
		Analytics.DataCompiler.loadMetricData(Analytics.MetricData);
	}
	if(!Analytics.bWebAnalyticsDormant){
		if(typeof s_account == 'undefined'){
			//Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/_numeric_.js');
		}else{//need to put a delay in loading the script if s_account is defined as old G-code is running and error happen with G-code and H-code
			var myIntervalIndex = 0;
			loadFunc = function(){
				if(myIntervalIndex > 2){
					Analytics.DataCompiler.loadMetricData(Analytics.MetricData);
					
				/*	Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/web/_numeric_.js');*/
					myIntervalIndex = "undefined";
					clearInterval(myInterval);
				}
				myIntervalIndex++;
			}
			var myInterval = setInterval('loadFunc()',500);
		}
	}
}






/*Customer Experience Management - TeaLeaf*/
Analytics.CEM = new Object;
//Array which holds the appIds and actions of a request needing the SDK downloaded
Analytics.CEM.aDownloads = new Array;
Analytics.CEM.aDownloads[0] = new Array;
Analytics.CEM.aDownloads[0][0] = "";//0 index of array is the appId
Analytics.CEM.aDownloads[0][1] = ""//1 index of array is the action
Analytics.CEM.aDownloads[1] = new Array;
Analytics.CEM.aDownloads[1][0] = "";
Analytics.CEM.aDownloads[1][1] = "";
Analytics.CEM.aDownloads[2] = new Array;
Analytics.CEM.aDownloads[2][0] = "";
Analytics.CEM.aDownloads[2][1] = "";

//method to test the current request for TeaLeaf SDK download
Analytics.CEM.testDownloads = function(dataObj){
	var bDownload = false;
	//if the appId and action are in the download array, then return true
	for(var i=0; i<this.aDownloads.length; i++){
		if(dataObj.appId == this.aDownloads[i][0] && dataObj.action == this.aDownloads[i][1]){
			bDownload = true
			break;
		}
	}
	return bDownload;
}

//Run the SDK Test, if successful, then download SDK
if(Analytics.CEM.testDownloads(Analytics.MetricData)){
	//Add Scripts
	//alert("in SDK download");
}

/*Voice of Customer - Burke/ProUse*/

Analytics.loadVOC = function(){
	if(!Analytics.bVOCDormant){
		try{
			Analytics.loadScriptLibrary(Analytics.DataCompiler.getData("currentHost",Analytics.MetricData)+'/assets/scripts/analytics/voc/surveyLogic.js');
		}catch(e){}
	}
}

/*if the app is supposed to be initialized automatically, then run the init() method
 * otherwise, it will get initiated with an event handler		
 */
 /*if(Analytics.DataCompiler.getData("appId",Analytics.MetricData) == "eComStore"){
 	Analytics.MetricData.environment = 'dev';
 }*/
		
if(Analytics.DataCompiler.getData("appId",Analytics.MetricData) != "eCareUSC" &&
			Analytics.DataCompiler.getData("appId",Analytics.MetricData) != "eCareChPl" &&
			 Analytics.DataCompiler.getData("appId",Analytics.MetricData) != "eCareSPO"){
	Analytics.init();
}else{
	//do nothing for now.
}
//this is for the eComStore app to call the init() method at the proper time.
/*if(Analytics.DataCompiler.getData("appId",Analytics.MetricData) == "eComStore"){
	Events.inQ("BodyLoad",Analytics.init);
}
*/
}//end of kill switch

/******** tealeaf *************/
(function(){
	var cn="TLTSID"; // the cookie name
	var flag="TLisset=true"; // name/value for the "flag" cookie
	var file='/tl/set_tl.html'; // path/filename for the file to point to on other domains
	var ck=document.cookie;
	// if "flag" is present, or cookie name is not in the cookie, abort
	if(ck.indexOf(flag)===-1 && ck.indexOf(cn+'=')!==-1){
		// array of domains for different environments 
		// each item is an array for 1 environment
		// each nested item is an object with the following properties:
		//		env: the string to match in location.host
		//		cookie: the value to set for the domain property of the "flag" cookie
		//		domain: the domain to use in the iframe src when passing the cookie to this domain
		var dms=[
			// L&P
			[
				{
					env:'ee.test.sprint.com',
					cookie:'.sprint.com',
					domain:'ee.test.sprint.com',
					forceHTTPS:false
				},
				{
					env:'noltest.nextel.com',
					cookie:'.nextel.com',
					domain:'noltest.nextel.com',
					forceHTTPS:false

				},
				{
					env:'ssoort.sprintpcs.com',
					cookie:'.sprintpcs.com',
					domain:'ssoort.sprintpcs.com',
					forceHTTPS:true

				}
			],
			// production (always add production last as it is a catch-all)
			[
				{
					env:'.sprint.com',
					cookie:'.sprint.com',
					domain:'www.sprint.com',
					forceHTTPS:false

				},
				{
					env:'.nextel.com',
					cookie:'.nextel.com',
					domain:'nextelonline.nextel.com',
					forceHTTPS:false

				},
				{
					env:'.sprintpcs.com',
					cookie:'.sprintpcs.com',
					domain:'manage.sprintpcs.com',
					forceHTTPS:true

				}
			]
		];
		var dset=-1; // which domain set is "active"
		var skip=-1; // which item is current domain in the "active" set
		for(var x=0, z=false; x<dms.length && !z; x++){
			for(var y=0; y<dms[x].length; y++){
				if(location.host.indexOf(dms[x][y].env)!=-1){
					dset=x;
					skip=y;
					z=true;
					break;
				}
			}
		}
		// if there was a domain match
		if(dset!==-1){
			var cProt=(location.protocol.indexOf('https')!==-1);
			var cs=ck.split(';');
			for(var x=0; x<cs.length; x++){
				var cur=cs[x].split('=');
				if(cur[0].replace(/^\s*/,'')==cn){
					for(var y=0; y<dms[dset].length; y++){
						var prot=(cProt||dms[dset][y].forceHTTPS)?'https':'http';  // maintain protocol
						if(y==skip){
							// set the "flag" cookie on the current domain
							document.cookie=flag+'; domain='+dms[dset][y].cookie+'; path=/';
						}
						else{
							document.writeln('<iframe src="'+prot+'://'+dms[dset][y].domain+file+'?'+cur[1]+'" width="1" height="1" scrolling="no" frameborder="no" style="display:none"></iframe>');
						}
					}					
					break;
				}
			}
		}		
	}	
})();



/*********** end tealeaf ***************/
