//BECAUSE SOME PAGES DONT HAVE UTILITY.JS LETS DUPLICATE FUNCTIONS ... I DONT LIKE THIS
		
function getValue(str, pattern, delim) {
	var q_start = str.toLowerCase().indexOf(pattern.toLowerCase());
	var value = '';
	if (q_start != -1) {
		q_start = q_start + pattern.length;
		var q_end = str.indexOf(delim, q_start);
		if (q_end == -1) q_end = str.length;
		value = str.substring(q_start, q_end);
	}
	return unescape(value);
}

function readQueryString(name) {
	var url = window.location.href;
	url = url.replace(/\?/, '&');
	url = url.replace(/#/, '&');

	var pattern = '&' + name + '=';
	return getValue(url, pattern, '&');
}

function readCookie(name) {
	var cookie = unescape(document.cookie);
	cookie = '; ' + cookie;

	var pattern = '; ' + name + '=';
	return getValue(cookie, pattern, ';');
}

function eraseCookie(name) {
	//writeCookie(name, '', -1);
  var cookie_date = new Date ( );  // current date & time
  cookie_date.setTime ( cookie_date.getTime() - 1 );
  document.cookie = name += "=; expires=" + cookie_date.toGMTString() + "; path=/";
}


function writeCookie(name, value, days, path, domain) {

	var expires = '';
	if (days) {
		var date = new Date();
		date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
		var expires = 'expires=' + date.toGMTString() + ";"
	}
	path = 'path=' + path + ';';
	domain = ''; //domain=(!domain)?'':'domain='+domain+';'; //-- domain must have 2 dots in it
	document.cookie = name + '=' + escape(value) + ';' + expires + path + domain;
}

//END DUPLICATION



//BEGIN: double click post log in tag [dcpt] -->  Added 6/8 MR & JP
var dcptIntervalId = 0;
var dcptCounter = 0;
var dcptIntervalWait = 1000;
var dcptMaxCount = 3;
function write_doubleClickPostLoginTag(){
	dcptCounter = dcptCounter + 1;
	
	if(dcptCounter > dcptMaxCount){
		window.clearInterval(dcptIntervalId); //we haven't stopped the interval in dcptMaxCount times so stop it now
	}

	if(document.body){
		window.clearInterval(dcptIntervalId); //now that we can add something to the body
		try{
			if(window["doubleClickPostLoginTagWritten"] != "true"){
				if(readCookie("userSessionCookie") == "true" && readCookie("userInfoCookie") != "" && readCookie("demarcationCookie") != ""){ //if logged in write the cookies
					var axel = Math.random() + "";
					var a = axel * 10000000000000;
					var dcptIframeSrc = "https://fls.doubleclick.net/activityi;src=2891872;type=total091;cat=trpos104;ord=" + a;
					
					var dcptIframe = document.createElement("iFrame");
					dcptIframe.id = "x3iFrame";
					dcptIframe.setAttribute("src", dcptIframeSrc);
					dcptIframe.setAttribute("style", "display:none;");
					document.body.appendChild(dcptIframe);
					window["doubleClickPostLoginTagWritten"] = "true";
				}		
			}
		}catch(e){
			//do nothing
		}
	}
	return;
}
dcptIntervalId = window.setInterval(write_doubleClickPostLoginTag,dcptIntervalWait);
//END: double click post log in tag [dcpt] -->



		
		
		//**** MOVE THIS BLOCK INTO EXTERNAL JS FILE ****///
		/*
		pzEvt_cat  - event calendar category
		pzEvt_m    - event calendar markets browsed
		pzGQ_p     - property in which inventory was displayed could be calendar or select room
		pzGQ_m     - market in which inventory was displayed
		pzBR_p     - property where a room was booked
		pzBR_m     - market where a room was booked
		p_pzB      - property browsed, will capture for any page tagged
		m_pzB      - market browsed, will capture for any page tagged
		p_pzG			 - property browsed gaming section
		m_pzG			 - property browsed gaming section
		p_pzD			 - property browsed dining section	
		m_pzD			 - property browsed dining section
		PZN_eventsBrowsed      - browsed event
		PZN_subcategoryBrowsed - browsed event sub category
		PZN_browsedSlotType    - type of game
		PZN_lastSlotBrowsed	   - browsed slot game type
		PZN_browsedTableType   - type of game
		PZN_lastTableBrowsed   - browsed table game type
		PZN_cuisine            - browsed cuisine
		PZN_priceCategory      - browsed cuisine price category
		PZN_pznprop            - browsed property code for events, dining and gaming
		PZN_pznmkt	           - browsed market code for events, dining and gaming
		*/
		
		function getLastPropertyBrowsed(){return getPZNlastvalue('p_pzB');}		
		function getPropertiesBrowsed(){return getPZNvalues('p_pzB');}		
		
		function getLastMarketBrowsed(){return getPZNlastvalue('m_pzB');}		
		function getMarketsBrowsed(){return getPZNvalues('m_pzB');}	
		
		function getLastGetQuoteProperty(){return getPZNlastvalue('pzGQ_p');}		
		function getGetQuoteProperties(){return getPZNvalues('pzGQ_p');}		
		
		function getLastGetQuoteMarket(){return getPZNlastvalue('pzGQ_m');}		
		function getGetQuoteMarkets(){return getPZNvalues('pzGQ_m');}		
		
		function getLastBookRoomProperty(){return getPZNlastvalue('pzBR_p');}		
		function getBookRoomProperties(){return getPZNvalues('pzBR_p');}		
		
		function getLastBookRoomMarket(){return getPZNlastvalue('pzBR_m');}
		function getBookRoomMarkets(){return getPZNvalues('pzBR_m');}
		
		function getLastEventCalendarCategory(){return getPZNlastvalue('pzEvt_cat');}
		function getEventCalendarCategories(){return getPZNvalues('pzEvt_cat');}
		
		function getLastEventCalendarMarket(){return getPZNlastvalue('pzEvt_m');}
		function getEventCalendarMarkets(){return getPZNvalues('pzEvt_m');}
		
		function getLastGamingProperty(){return getPZNlastvalue('p_pzG');}
		function getGamingProperties(){return getPZNvalues('p_pzG');}
		
		function getLastGamingMarket(){return getPZNlastvalue('m_pzG');}
		function getGamingMarkets(){return getPZNvalues('m_pzG');}
		
		function getLastDiningProperty(){return getPZNlastvalue('p_pzD');}
		function getDiningProperties(){return getPZNvalues('p_pzD');}
		
		function getLastDiningMarket(){return getPZNlastvalue('m_pzD');}
		function getDiningMarkets(){return getPZNvalues('m_pzD');}
		function getDomProp(){return getPZNlastvalue('PZN_dp');}
		function getDomMarket()
		{
			var trDomProp = getDomProp();
			if(trDomProp=='') return 'undefined';
			var marketMap = getMarketCodeMap();
			var domMarket = marketMap[trDomProp.toUpperCase()];
			return domMarket;
		}
		
		function getPastBookRoom(){return getPZNlastvalue('PZN_pastbook');}
		function getPZN_eventsBrowsed(){return getPZNlastvalue('PZN_eventsBrowsed');}
		function getPZN_subcategoryBrowsed(){return getPZNlastvalue('PZN_subcategoryBrowsed');}
		function getPZN_browsedSlotType(){return getPZNlastvalue('PZN_browsedSlotType');}
		function getPZN_lastSlotBrowsed(){return getPZNlastvalue('PZN_lastSlotBrowsed');}
		function getPZN_browsedTableType(){return getPZNlastvalue('PZN_browsedTableType');}
		function getPZN_lastTableBrowsed(){return getPZNlastvalue('PZN_lastTableBrowsed');}
		function getPZN_cuisine(){return getPZNlastvalue('PZN_cuisine');}
		function getPZN_priceCategory(){return getPZNlastvalue('PZN_priceCategory');}
		function getPZN_pznprop(){return getPZNlastvalue('PZN_pznprop');}
		function getPZN_pznmkt(){return getPZNlastvalue('PZN_pznmkt');}
		
		function getRecommendationType(){return readCookie('PZN_userRecommendationType');}
		function getDomProp(){return getPZNlastvalue('PZN_dp');}
		function getPastBookRoom(){return getPZNlastvalue('PZN_pastbook');}
		
		function getIsLoggedIn()
		{
			var usersessioncookie = isCookieExist('userSessionCookie');
			return (usersessioncookie=='true');
		}
		
		
		///***===> COOKIES NEEDED AT LOG IN ///====>
		/// DOM PROP
		/// LAST BOOKING PROPERTY
		///
		
		function pzn_debug(msg)
		{
			if(readQueryString('de_bug')!=''||readQueryString('debug')!=='')
				alert(msg);
		}
		
		
		function getPZNlastvalue(groupname)
		{
			var a = getPZNvalues(groupname);
			if(a==null) return '';
			return a[0];
			return '';
		}
		
		function getPZNvalues(groupname)  //returns array
		{
			//{}p_pzB[]No Property Code[][]No Property Code[]{}m_pzB[][][][]
			
			var section_delim = '[';
			var value_delim = ']';
			var pzn_cookie = readCookie('pzn_cookie'); 
			var pzn_cookie_sections = pzn_cookie.split(section_delim);
			var pzn_cookie_sections_count = pzn_cookie_sections.length;
			var pzn_cookie_values = new Array();
			var pzn_cookie_found = false;
			for(i=0;i<pzn_cookie_sections_count;i++)
			{
				//test first index since that is the name, if found then grab values array
				if(pzn_cookie_sections[i].substring(0,groupname.length)==groupname)
				{
					pzn_cookie_found = true;
					pzn_cookie_values = pzn_cookie_sections[i].split(value_delim);
					
					var ret_array = new Array();
					for(j=1;j<pzn_cookie_values.length;j++)
					{
						if(pzn_cookie_values[j]!=null&&pzn_cookie_values[j]!='')
						{
							ret_array[ret_array.length] = pzn_cookie_values[j];
						}
					}
					return ret_array;
				}
			}
		}
		
		function isSessionStart()
		{
			var refer = document.referrer;
			var host = document.location.host;
			
			return (refer=='' || refer.indexOf(host)==-1);
		}
		
		function isPersonalized()
		{
			var recommendationType = getRecommendationType();
			var forcevalue = readQueryString('force');
			if(forcevalue!='') recommendationType='';
			if(recommendationType=='') recommendationType=genRecommendationType(forcevalue); //cookie doesn't exist so we will create it
	
			var catA = 'ABCDEFGHIJKL';
			if(catA.indexOf(recommendationType)>-1)
			{
				//not
				return false;
			}
			else
			{
				//yes
				return true;
			}
		}
		
		function genRecommendationType(forcevalue)
		{
			if(forcevalue!='')
			{
				writeCookie('PZN_userRecommendationType',forcevalue,120,'/','');
				return forcevalue;
			}
			
			var arr = new Array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X');
			var rnd = Math.floor(Math.random()*arr.length);
			if(arr.length<rnd) rnd = 0; //SHOULD NEVER HAPPEN BUT JUST INCASE
			var val = arr[rnd];
			writeCookie('PZN_userRecommendationType',val,120,'/','');
			return val;
		}
		
//******************MOVED FROM PZNHTM************************//

	function writePzCookie(groupname,value,valuecount)
	{
		valuecount = valuecount +1;

		pzn_debug('writePzCookie paramas .. groupname: ' + groupname + ' / value: ' + value + ' / valuecount: ' + valuecount);
		
		if(readQueryString('clear')=='y'){ writeCookie('pzn_cookie','',120,'/',''); return;}
		
		if(groupname==''||value==null)return;
		
		//get the pzn_cookie
		var section_delim = '[';
		var value_delim = ']';
		var pzn_cookie = readCookie('pzn_cookie'); 
		var pzn_cookie_sections = pzn_cookie.split(section_delim);
		var pzn_cookie_sections_count = pzn_cookie_sections.length;
		var pzn_cookie_values = new Array();
		var pzn_cookie_found = false;
		
		pzn_debug('writePzCookie count: ' + pzn_cookie_sections_count);

		//find group name and get values
		for(i=0;i<pzn_cookie_sections_count;i++)
		{
			//test first index since that is the name, if found then grab values array
			if(pzn_cookie_sections[i].substring(0,groupname.length)==groupname)
			{
				pzn_cookie_found = true;
				pzn_cookie_values = pzn_cookie_sections[i].split(value_delim);

				if(pzn_cookie_values[1]==value) return; //the last value writen is the same
			
				//build a temp array
				var tmp_array = new Array();
				for(j=0;j<valuecount;j++)
				{	
					tmp_array[j]=pzn_cookie_values[j];
				}
								
				for(j=1;j<(valuecount-1);j++)//start at 1 since 0 is name and -1 on len since we are dropping it
				{
					pzn_cookie_values[j+1]=tmp_array[j];
				}
				pzn_debug('temp array::' + tmp_array);
				pzn_debug('cookievalues::' + pzn_cookie_values);
					
				//now simply just add the value to index 1 since it will be the newest
				pzn_cookie_values[1] = value;
				
				//put the section back together
				pzn_cookie_sections[i] = pzn_cookie_values.join(value_delim);
				break;
			}
		}
		
		if(pzn_cookie_found==false) // we didn't find the section so we need to add the value that was passed
		{
			pzn_cookie_sections[pzn_cookie_sections.length] = groupname + value_delim + value;
		}
		
		//put all sections back together
		pzn_cookie = pzn_cookie_sections.join(section_delim);
		
		//write the cookie
		pzn_debug('cookie = = '+pzn_cookie);
		deletEexistingCookies();
		writeCookie('pzn_cookie',pzn_cookie,120,'/','');
		return;
	}
function deletEexistingCookies()
{
 eraseCookie('PZN_eventsBrowsed');
 eraseCookie('PZN_subcategoryBrowsed');
 eraseCookie('PZN_browsedSlotType');
 eraseCookie('PZN_lastSlotBrowsed');
 eraseCookie('PZN_browsedTableType');
 eraseCookie('PZN_lastTableBrowsed');
 eraseCookie('PZN_tableType');
 eraseCookie('PZN_cuisine');
 eraseCookie('PZN_priceCategory');
 eraseCookie('PZN_pznprop');
 eraseCookie('PZN_pznmkt');
}

//******************OLD PZN*********************************//



var pznCookieParam = '';
// This function will store the user browsed event category &
// subcategory in the cookie

function updateEventPznCookie() {return '';} //just keep it around

function saveBrowsedEvents(category,subcategory)
{
 category = escape(category);
 subcategory = escape(subcategory);
 local_createCookie('PZN_eventsBrowsed',category);
 local_createCookie('PZN_subcategoryBrowsed',subcategory);
 return '';
}

// This function will store the user browsed gaming -Slot or table and the corresponding
// game type.

function saveBrowsedGaming(gameCategory,gameType)
{
	gameCategory = findGameCateg(gameCategory);
 	// This is to identify whether slot or table is browsed
 	// At any given instance any one should be there in the cookie
 	if(gameCategory!=null && gameCategory=='Slot')
 	{
 		local_createCookie('PZN_browsedSlotType','yes');
 		local_createCookie('PZN_lastSlotBrowsed',gameType);
 		local_deleteCookie('PZN_browsedTableType');
 		local_deleteCookie('PZN_lastTableBrowsed');
 	}
 	else if(gameCategory!=null && gameCategory=='Table')
 	{
 		local_createCookie('PZN_browsedTableType','yes');
 		local_createCookie('PZN_lastTableBrowsed',gameType);
 		local_deleteCookie('PZN_browsedSlotType');
 		local_deleteCookie('PZN_lastSlotBrowsed');
 	}
 	return '';
}

function findGameCateg(categ)
{
	var returnval = categ;
	if(categ!=null)
	{
		var tablepos = categ.search(/keno|poker|bingo|table/gi);
		if(tablepos >0 )
			returnval='Table';			
		var slotpos = categ.search(/slot/gi);
		if(slotpos >0 )
			returnval='Slot';	
	}
	return returnval;
}

function slotFinderBrowsed()
{
	local_createCookie('PZN_browsedSlotType','yes');
 	local_deleteCookie('PZN_browsedTableType');
 	local_deleteCookie('PZN_lastTableBrowsed');
 	return '';
}

function tableFinderBrowsed()
{
	local_createCookie('PZN_browsedTableType','yes');
 	local_deleteCookie('PZN_browsedSlotType');
 	local_deleteCookie('PZN_lastSlotBrowsed');
 	return '';
 }

// To store user browsed cuisine & pricecateg
function saveBrowsedDining(cuisine,priceCateg)
{
 		local_createCookie('PZN_cuisine',cuisine);
 		local_createCookie('PZN_priceCategory',priceCateg);
 		return '';
}

function saveDiningDetails(cuisine,priceCateg,mktCode,propCode)
{
	local_createCookie('PZN_cuisine',cuisine);
 	local_createCookie('PZN_priceCategory',priceCateg);
	pznI_CookieWriter('PZN_pznmkt',"D",mktCode);
	pznI_CookieWriter('PZN_pznprop',"D",propCode);
	return '';
}

// This function will add the cookie
function local_createCookie(varName,value)
{
	writePzCookie(varName,value,1); //this will write the propert pzn cookie
}

// This function will delete the cookie
function local_deleteCookie(varName)
{
	 writePzCookie(varName,'',1);
}

function getMarketCode(propcode) //still need because some market codes don't really exist
{
	var mktcode='';
	var mktMap = new Object();
	mktMap['ATL']='ACM';
	mktMap['BAC']='ACM';
	mktMap['CAC']='ACM';
	mktMap['SAC']='ACM';
	mktMap['AKC']='ARM';
	mktMap['BIL']='BIL';
	mktMap['LAD']='BZM';
	mktMap['UBC']='BZM';
	mktMap['RIN']='CAM';
	mktMap['JOL']='CHM';
	mktMap['GBI']='GCM';
	mktMap['NOR']='GCM';
	mktMap['COU']='IAM';
	mktMap['HBR']='IAM';
	mktMap['UEL']='INM';
	mktMap['UHA']='JOM';
	mktMap['NKC']='KCM';
	mktMap['TOP']='KSM';
	mktMap['LAU']='LAU';
	mktMap['BLV']='LVM';
	mktMap['CLV']='LVM';
	mktMap['FLV']='LVM';
	mktMap['ILV']='LVM';
	mktMap['LAS']='LVM';
	mktMap['PHV']='LVM';
	mktMap['PLV']='LVM';
	mktMap['RLV']='LVM';
	mktMap['CHE']='NCM';
	mktMap['GTU']='NMM';
	mktMap['STU']='NMM';
	mktMap['UTU']='NMM';
	mktMap['CCR']='PAM';
	mktMap['HLT']='RNO';
	mktMap['REN']='RNO';
	mktMap['TAH']='RNO';
	mktMap['MET']='SIM';
	mktMap['STL']='SLM';
	mktMap['WCL']='WCM';
	
	
	if(propcode!=null && propcode!='')
	{
		mktcode = mktMap[propcode];
	}
	return mktcode;
}
function pznI_CookieWriter(name, prefix, value)
{
		prefix = '|' + prefix;
		var savedValue = getPZNlastvalue(name);
		if(savedValue!='')
		{
			var ind = savedValue.indexOf(prefix);
			if(ind > -1)
			{
				var end = ind+5;
				var str = savedValue.substring(ind,end);
			
				if(str!=null && value!=null && value.length==5)//cookie created from Java Side
				{
					savedValue = savedValue.replace(str,value);		
			
				}
				if(str!=null && value!=null && value.length==3)// cookie created from jsp side
				{
					savedValue = savedValue.replace(str,prefix+value);		
			
				}

			}
			else
			{
				savedValue = savedValue + prefix+value;
			
			}
		}
		else
		{
			//savedValue = prefix+value;
			savedValue = value;
		}
		writePzCookie(name,savedValue,1);
	}  
