
var omnitureStandard = function() {
	var URL = window.location.href;
	var propArray = new Array(30);
	var eVarArray = new Array(44);
	var events = "";
	var omnitureCookie = "";
	return {
		getOmniStandardValues : function() {
			// get evars
			if(document.getElementById("omniEvars") && document.getElementById("omniEvars").value != "") {
				// put values into Array for sorting
				var standardEvarArray = document.getElementById("omniEvars").value.split(',');
				for(var e = 0; e < standardEvarArray.length; e++) {
					standardEvarArray[e] = standardEvarArray[e].replace(/^\s+|\s+$/g,"");
					var equalIndex = standardEvarArray[e].indexOf('=');
					var eVarIndex = standardEvarArray[e].substring(0, equalIndex);
					var eVarValue = standardEvarArray[e].substring(equalIndex + 1);
					eVarArray[eVarIndex] = eVarValue;
				}
			}
			// get props
			if(document.getElementById("omniProps") && document.getElementById("omniProps").value != "") {	
				// put values into Array for sorting
				var standardPropArray = document.getElementById("omniProps").value.split(',');
				for(var p = 0; p < standardPropArray.length; p++) {
					standardPropArray[p] = standardPropArray[p].replace(/^\s+|\s+$/g,"");
					var equalIndex = standardPropArray[p].indexOf('=');
					var propIndex = standardPropArray[p].substring(0, equalIndex);
					var propValue = standardPropArray[p].substring(equalIndex + 1);
					propArray[propIndex] = propValue;
				}
			}
			// get events
			if(document.getElementById("omniEvents") && document.getElementById("omniEvents").value != "") {
				// put values into Array for sorting
				var standardEventArray = document.getElementById("omniEvents").value.split(',');
				for(var v = 0; v < standardEventArray.length; v++) {
					if(events != "") events += "," + standardEventArray[v].replace(/^\s+|\s+$/g,"");
					else if(events == "") events += standardEventArray[v].replace(/^\s+|\s+$/g,"");
				}
			}
			if(document.getElementById("omniProduct")) { // from HWS, search, and res
				s.products = document.getElementById("omniProduct").value;
			}
			if(document.getElementById("omniState")) { // from res step 6
				s.state = document.getElementById("omniState").value;
			}
			if(document.getElementById("omniZip")) { // from res step 6
				s.zip = document.getElementById("omniZip").value;
			}
			if(document.getElementById("omniPurchaseId")) { // from res step 6
				s.purchaseID = document.getElementById("omniPurchaseId").value;
			}
			// If page is the 404 errror
	       	if(URL.match("invalidPath") != null) {
	           	s.pageType = "errorPage";
	       	}       	
	       	else if(URL.match("/city-guide/city-insider.mi") != null || URL.match("/city-guide/city-attractions.mi") != null) {
	           	events += ",event34";
	       	}    	
	    	else if(URL.match("/specials/mesSearchResults") != null) { // from DEALS
				events += ",event21";
	    	}
	    	else if(URL.match("/travelagents") != null) { // from travel agents
				eVarArray[28] = document.getElementById('iata').value;
	    	}
	    	if(URL.match("/grouppartners") != null) { // from group partners	    		
				eVarArray[28] = document.getElementById('iata').value;
	    	}     	
	       	// if tracking impression link is on page
	       	if(document.getElementById("omniture-impression")) {
	    		var trackingLinkId = "";
	        	var trackingLink = document.getElementById("omniture-impression");
	        	if(trackingLink.href && trackingLink.href.indexOf("vsstart/clickcounter/") != -1) {
	        		var trackingLinkStart = trackingLink.href.indexOf("vsstart/clickcounter/");
	        		var trackingLinkEnd = trackingLink.href.indexOf("/vsend");
					trackingLinkId = trackingLink.href.substring(trackingLinkStart + 21, trackingLinkEnd);
	        	}        	
	        	if(trackingLinkId != "") {
	        		if(trackingLinkId.match("hws-weekend-rate") != null) {
						eVarArray[1] = trackingLinkId.substring(trackingLinkId.indexOf("hws-") + 4, trackingLinkId.indexOf("_"));
						eVarArray[19] = trackingLinkId.substring(trackingLinkId.indexOf("_") + 1, trackingLinkId.lastIndexOf("_"));
						//s.products and s.prop7 are set on all hws pages -- if not then must set here
					} else {
						eVarArray[1] = trackingLinkId;
					}
					events += ",event28";
				}
	        } 
	        if(document.getElementById("omniture-impression-flash")) {
	        	var trackingFlashId = "";
	        	var trackingFlash = document.getElementById("omniture-impression-flash");
	        	if(trackingFlash.value && trackingFlash.value != "") {
	        		trackingFlashId = trackingFlash.value;
	        	}
	        	if(trackingFlashId != "") {
					eVarArray[1] = trackingFlashId;
					events += ",event28";
				}
	        }
		},
		returnOmnitureCookie : function() {
			return omnitureCookie;
		},
		processOmniCookie : function() {
	       	var omnitureCookie = omnitureStandard.getOmniCookie("omniData");
	       	if (omnitureCookie.length > 0) {
	            if (omnitureCookie.match("omniLinkClick") != null) {
	            	// for now event2 trumps event28
	            	if(events.indexOf("event28") != -1) {
	            	  	events = events.replace(/event28/,"event2");
	            	} else {
		        	    events += ",event2";
		        	}                    
	            	var linkClicked = omnitureCookie.substring(omnitureCookie.indexOf("omniLinkClick"));
	            	linkClicked = linkClicked.substring(0, linkClicked.indexOf("&") + 1);
	            	if(linkClicked.match("hws-weekend-rate") != null) {
	            		eVarArray[1] = linkClicked.substring(linkClicked.indexOf("hws-") + 4, linkClicked.indexOf("_"));
	            		eVarArray[19] = linkClicked.substring(linkClicked.indexOf("_") + 1, linkClicked.lastIndexOf("_"));
	            		propArray[7] = linkClicked.substring(linkClicked.lastIndexOf("_") + 1, linkClicked.indexOf("&"));
	            		//s.products is set on step2 of res -- if not then must set here
	            	} else {
	    	        	eVarArray[1] = linkClicked.substring(linkClicked.indexOf("omniLinkClick") + 13, linkClicked.indexOf("&"));
	            	}
	            	omnitureCookie = omnitureCookie.replace(linkClicked, "");
	            }else{
				//Process a click on the Carousel on the homepage, then remove after reading data from cookie
				if(omnitureCookie.match("loc=carousel")){
					events += ",event2";
				}				
				if(omnitureCookie.indexOf("Carousel Click")!=-1){
					var moduleIndex = omnitureCookie.indexOf("Carousel Click");
            		var moduleData = omnitureCookie.substring(moduleIndex, omnitureCookie.indexOf("*",moduleIndex+1));
            		omnitureCookie = omnitureCookie.replace((moduleData + "*"), "");
	            }
	            document.cookie = "omniData=" + omnitureCookie + ";path=/";
	            }
	            //Process non-VSStart link tracking cookie. IF "uri" is not in cookie then do nothing.
	            if(omnitureCookie.indexOf("uri") > -1){
		            var startLinkIndex = (omnitureCookie.indexOf("uri"));
		            var endLinkIndex = omnitureCookie.indexOf("*",startLinkIndex+1);
		            var omnitureCookieValue = omnitureCookie.substring(startLinkIndex,endLinkIndex);
		            eVarArray[1] = omnitureCookieValue;
		            if(events.indexOf("event28") != -1) {
	            	  	events = events.replace(/event28/,"event2");
	            	} else {
		        	    events += ",event2";
		        	}     
		            //Remove link data from cookie to prevent pollution of data when a search is done from flash-card
		            if(!omnitureCookieValue.match("Expand Quick View: View My Account")){
		            	omnitureCookie = omnitureCookie.replace((omnitureCookieValue + "*"), ""); 
		            }
		            document.cookie = "omniData=" + omnitureCookie + ";path=/";
	            }
	        }
		},
		getOmniCookie : function(name) {
			if (document.cookie.length > 0) {
				var beginCookie = document.cookie.indexOf(name + "=");
				if (beginCookie != -1) {
		       		beginCookie += (name.length + 1);
		   			var endCookie = document.cookie.indexOf(";",beginCookie);
		   			if (endCookie == -1) endCookie = document.cookie.length;
		   			return unescape(document.cookie.substring(beginCookie,endCookie));
	   			}
			}
			return "";
		},
		clearOmniCookie : function() {
			document.cookie = "omniData=;path=/";			
		},
		setOmniEvents : function() {
			if(events != ""){
				while(events.indexOf(',') == 0){
					events = events.substring(1);
				}
			}
			s.events = events;
			// if MARSHA code exists in URL and appropiate variables have not been set
			if(s.events.match("prodView") == null && document.getElementById("omniStandardProp7") && document.getElementById("omniStandardProp7").value != "") {
				if(s.events != "")s.events += ",prodView";
				else s.events = "prodView";
				s.products = ";" + document.getElementById("omniStandardProp7").value.toUpperCase();
				// set props method has not been called until after this method
				propArray[7] = document.getElementById("omniStandardProp7").value.toUpperCase();
			}
		},
		// 3,4,6,8,10,19,24,25,26,28 are not set by eBiz
		setOmniProps : function() {
			s.prop1 = propArray[1];
			s.prop2 = propArray[2];			
			s.prop5 = propArray[5];
			s.prop7 = propArray[7];
			s.prop9 = propArray[9];
			s.prop11 = propArray[11];
			s.prop12 = propArray[12];
			s.prop13 = propArray[13];
			s.prop14 = propArray[14];
			s.prop15 = propArray[15];
			s.prop16 = propArray[16];
			s.prop17 = propArray[17];
			s.prop18 = propArray[18];
			s.prop20 = propArray[20];
			s.prop21 = propArray[21];
			s.prop22 = propArray[22];
			s.prop23 = propArray[23];
			s.prop27 = propArray[27];
			s.prop29 = propArray[29];
			s.prop43 = propArray[43];
		},
		// 3,7,15-18,20,21,30,31,32,35,36,42,43 not set by eBiz
		setOmniEvars : function() {
			s.eVar1 = eVarArray[1];
			s.eVar2 = eVarArray[2];
			s.eVar4 = eVarArray[4];
			s.eVar5 = eVarArray[5];
			s.eVar6 = eVarArray[6];
			s.eVar8 = eVarArray[8];
			s.eVar9 = eVarArray[9];
			s.eVar10 = eVarArray[10];
			s.eVar11 = eVarArray[11];
			s.eVar12 = eVarArray[12];
			s.eVar13 = eVarArray[13];
			s.eVar14 = eVarArray[14];
			s.eVar19 = eVarArray[19];
			s.eVar22 = eVarArray[22];
			s.eVar23 = eVarArray[23];
			s.eVar24 = eVarArray[24];
			s.eVar25 = eVarArray[25];
			s.eVar26 = eVarArray[26];
			s.eVar27 = eVarArray[27];
			s.eVar28 = eVarArray[28];
			s.eVar29 = eVarArray[29];
			s.eVar33 = eVarArray[33];
			s.eVar34 = eVarArray[34];
			s.eVar37 = eVarArray[37];
			s.eVar38 = eVarArray[38];
			s.eVar39 = eVarArray[39];
			s.eVar40 = eVarArray[40];
			s.eVar41 = eVarArray[41];
		},
		setEvarArrayValue : function(index, value) {
			eVarArray[index] = value;
		},
		setPropArrayValue : function(index, value) {
			propArray[index] = value;
		},
		setEventValue : function(value) {
			events += value;
		},
		getQStringParameter : function( name ){
		  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
		  var regexS = "[/i\\?&]"+name+"=([^&#]*)";
		  var regex = new RegExp( regexS );
		  var results = regex.exec( window.location.href );
		  if( results == null )
			return "";
		  else
			return results[1];
		},
		getSAccount : function() {
			var theHotelURL = window.location.href;
			var sMarsha= document.getElementById("omniSuiteMARSHACode").value;
			var theReportEnvironment = document.getElementById("siteTrackingReportSuite").value;
			if(theReportEnvironment == "" || theReportEnvironment == "prod"){
				theReportEnvironment = "";
			}
			var suiteCountry = document.getElementById("omniSiteLocale").value;
			var globalSiteLanguage = document.getElementById("omniglobalSiteLanguage").value;
			suiteCountry = suiteCountry.toLowerCase();
			if(suiteCountry == 'gb') {
				suiteCountry = 'uk';
			}
			var s_account = "marriottglobal" + theReportEnvironment;
			//If there is a MARSHA code present and the user is in the Hotel Websites Section
			if(sMarsha != "" && theHotelURL.match("/hotels/") !=null) {
			   s_account=s_account + ",marriott"+sMarsha+theReportEnvironment;
			}
			if(suiteCountry != "" && suiteCountry != 'us' && globalSiteLanguage != "es"){
				s_account = s_account + ",marriott" + suiteCountry + theReportEnvironment;
			}else if(suiteCountry == "" && globalSiteLanguage == "es"){
				//site is LACA
				s_account = s_account + ",marriottla" + theReportEnvironment;
			}
			return s_account;	
	  	}
	}
}();