// start /site/portal_skins/DEFAULT/recentProducts.js - May 26, 2006 10:35 am GMT - pwg5,pwg7 - noesi - cache 2400

var ampSymbol = String.fromCharCode(38);
var rvp_number_of_products = 5;
var rvp_expirey_days = 7;
var rvp_expirey = new Date(); 
rvp_expirey.setTime(rvp_expirey.getTime() + (rvp_expirey_days*24*60*60*1000));
var rvp_general_base_url = "http://www.lastminute.com/lmn/pso/catalog/Product.jhtml?";
var rvp_hotels_base_url = "http://www.lastminute.com/lmn/hotels/new/pages/lmn_product.jhtml?";
var rvp_hotels_show_url = "http://www.lastminute.com/lmn/hotels/show.jhtml?"
var rvp_url_replacements = new Array(['$P',rvp_general_base_url],['$HP',rvp_hotels_show_url],['$A','PRODID'],['$B','CATID'],['$C','POSITION'],['$D','SPOS']);
var rvp_cookie_name = 'rvproducts';
var rvp_max_size = 3500;
function rvp_getValue(vName,myStr){myStr = myStr.split('t#')[0];vIndex = productURL.indexOf(vName);if (vIndex>-1)	value=myStr.slice(vIndex+vName.length+1);else return false;if(value.indexOf('&')>-1)value=value.split('&')[0];return value;}
function rvp_clear(){
//	expiry = new Date();expiry.setTime(expiry.getTime() - 1000);document.cookie = rvp_cookie_name + '=;expires=' + rvp_expirey.toGMTString() + ';path=/';if (document.location.href.indexOf('?')>-1) queryPrefix=ampSymbol; else queryPrefix = '?';document.location.href=document.location.href+queryPrefix+'set_rvp=false';
	recently_viewed('search','clear');
	recently_viewed('product','clear');
	if(rpuiElement = document.getElementById('rpui'))
		{
		myEl = document.createElement('p');
		myEl.innerHTML = '<strong>Your history has been cleared</strong>';
		rpuiElement.innerHTML = '';
		rpuiElement.appendChild(myEl);
		}
	}
  function rvp_clean(cookieVal) {
    if(!cookieVal)return null;
		var dynSessRe = new RegExp(';\\$sessionid\\$[^\\?]*(\\?)?','g');
		cleanedCookieVal = cookieVal.replace(dynSessRe,'$1');
    if (cookieVal != cleanedCookieVal) {
        recently_viewed('product','setCookie',null,null,null,test,null,cleanedCookieVal); 
    }
    return cleanedCookieVal;
  } 
function rvp_replace(myStr) {
	for (i=0;i < rvp_url_replacements.length;i++) {
		myStr=myStr.replace(rvp_url_replacements[i][1],rvp_url_replacements[i][0]);
	}
	return myStr;
}

function rpadd()
	{
	if(document.location.href.indexOf('test=true')>-1)var test=true;
	else var test=false;
	title = document.title;accommCode='';
	productURL = document.location.href;
	if (title!="" && title!="lastminute.com" && title!="lastminute.com - flights, holidays, hotels, travel, entertainment, gifts, experiences, sport, restaurants" && productURL.indexOf('set_rvp=false'==-1))
		{
		rvp_cookie=getCookie(rvp_cookie_name);
		var cookieVal = '';
		// get product type (one of hotel, general). If none found, return false
		if (productURL.indexOf('PRODID')!=-1) prodType='general';
		else if (productURL.indexOf('accommCode')!=-1) prodType = 'hotel';
		else if (productURL.indexOf('/find/')>-1 && productURL.indexOf('LMN-')>-1) prodType = 'SEO';
		else return false;
		if(test)alert('prodType = '+prodType);
		if (productURL.indexOf('intcmp=pers')>-1)
			{
			if(test)alert('Link from rvp - do not re-add product');
			return false;
			}
		// if product type is general, get the product ID and build prod url
		switch(prodType)
			{
			case 'general':idString='PRODID';break;
			case 'hotel':idString='accommCode';break;
			case 'SEO':idString='LMN-';break;
			}
		prodId = rvp_getValue(idString,productURL)
		if(test)alert('prodId = '+prodId);
		// if product type is hotel, get the accommCode and catId and build prod url
		if (prodType=='hotel'){catId = rvp_getValue('CATID',productURL);if(catId){productURL=rvp_hotels_show_url+'accommCode='+prodId;productURL+=ampSymbol+'CATID='+catId;}else return false;}
		productURL = rvp_replace(productURL);
		if(test)alert('productURL = '+productURL);
		// if a productURL has been built (not sure if it's possible for it to be empty anyway)
		if (productURL!='')
			{
			// create entry for cookie string
			productDetails=productURL+'t#'+title;
			if(test)alert('productDetails = '+productDetails);
			// if cookie exists create cookie string, else use productDetails
			if (rvp_cookie) {
				if(test)alert('Adding product details to cookie');
				// if newId already in cookie return false else build cookie string
				tempArray = rvp_cookie.split('#rvp#');
				products = rvp_cookie.split('#rvp#',rvp_number_of_products);
				var newSize = escape(productDetails).length + document.cookie.length - escape(rvp_cookie).length;		
				for (x=0; x < products.length; x++) {					
					oldProdId=rvp_getValue(idString,rvp_replace(products[x]));
					if(test)alert('old = '+oldProdId+'\nNew'+prodId);
					if (prodId!=oldProdId) {
						newSize += escape(products[x]).length + 9;
						if (newSize > rvp_max_size) {
							// document.writeln('Cookie size exceeded ' + x + ' proposed=' + newSize + ' previous=' + (newSize - products[x].length - 5));
							break;	
						}
						cookieVal+='#rvp#'+products[x];
					} else {											
						if(test)alert('product already in cookie');
						return false;
					}
				}
				cookieVal = productDetails+cookieVal;			
				if(test)alert('product added to cookie value');
			} else {
				if(test)alert('no items in cookie, or cookie does not exist. Creating');
				if (!(document.cookie && document.cookie != null && document.cookie.length > rvp_max_size)) {
					cookieVal=productDetails;				
				}
			}
			// set cookie on client
			if(test)alert(cookieVal);
			if (cookieVal && cookieVal.length > 0) recently_viewed('product','setCookie',null,null,null,test,null,cookieVal);
			if(test)alert('Cookie value set');
			
			}
		}
	}	
function rvp_makeHeader(container,text,color)
	{
	myElement = document.createElement('h3');
	myElement.className = "t3";
	myElement.style.margin='0 0 5px 0';
	myElement.style.styleFloat='left';
	myElement.style.cssFloat = 'left';
	myElement.style.color = color;
	myElement.innerHTML = text;
	container.appendChild(myElement);
	return myElement;
	}

function rvp_makeList(container,bottomMargin)
	{
	listElement = document.createElement("ul");
	listElement.className = 't2';
	listElement.style.clear = 'both';
	listElement.style.marginTop = '.5em';
	listElement.style.marginLeft = '1em';
	if(bottomMargin)listElement.style.marginBottom = '.5em';

	container.appendChild(listElement);
	return listElement;
	}

function rvp_makeListItem(listElement,itemLink,itemTitle)
	{
	listItemElement = document.createElement("li");
	listElement.appendChild(listItemElement);
	anchorElement = document.createElement("a");
	anchorElement.href = itemLink;
	anchorElement.innerHTML = itemTitle;
	listItemElement.appendChild(anchorElement);
	return listItemElement;
	}
function rvp_makeClear(container)
	{
  linkContainer = document.createElement("div");
	linkContainer.style.textAlign='right';
	linkContainer.innerHTML = '<br /><a href="javascript:rvp_clear()"><img style="vertical-align:middle" alt="" border="0" src="http://cdn.lastminute.com/site/ico_secondary_close.gif?skin=lastminute" /></a> <a href="javascript:rvp_clear()"><strong>Clear this list</strong></a>';
	container.appendChild(linkContainer);
	}
function rpdisplay()
	{
	displayRecent = false;
	displayProducts = true;
	if(document.location.href.indexOf('test=true')>-1)test=true;
	else test=false;
	if(document.location.href.indexOf('test=verbose')>-1)test='verbose';
	//Placeholder for Dynamo page
	rpuiElement = document.getElementById('rpui');
	if (rpuiElement = document.getElementById('rpui'))
		{
		rpuiElement.style.textAlign="center";
		color = "#31639C";
		outerContainer = document.createElement('div');
		outerContainer.style.width = '598px';
		outerContainer.style.margin = '0 auto';
		outerContainer.style.textAlign = 'left';
		container = document.createElement('div');
		outerContainer.appendChild(container);
		container.style.padding = '5px';
		container.style.border = '1px solid '+color;
		container.style.display = 'inline-block';
		container.style.borderTop = 'none';
		//read cookie
		rvp_cookie = rvp_clean(recently_viewed('product','getCookie'));
		//display products
		if (rvp_cookie)
			{
			if (rvp_cookie!='')
				{
				// products header
				rvp_makeHeader(container,'Recently viewed items',color);

				// products list
				listElement = rvp_makeList(container,true);
				products = rvp_cookie.split('#rvp#',rvp_number_of_products);
				for (i=0;i < products.length;i++)
					{
						product = products[i].split('t#');
						productURL = product[0];
						for (j=0;j < rvp_url_replacements.length;j++)	productURL = productURL.replace(rvp_url_replacements[j][0],rvp_url_replacements[j][1]);
						if (productURL.indexOf('?')>-1)querySymbol=ampSymbol;else querySymbol='?';
						productURL+=querySymbol+'intcmp=pers.rp'+(i+1);
						productTitle = product[1];
						rvp_makeListItem(listElement,productURL,productTitle);
					}
				}
				// clear
				rvp_makeClear(container);        
				displayRecent=true;
			}
		rms_cookie = getCookie('rmsearches')
		if (rms_cookie && rms_cookie!='')
			{	
			// searches header
			if(test=='verbose')alert('rms_cookie display');
			headerElement = rvp_makeHeader(container,'Recent travel searches',color);
			if(test=='verbose')alert('rms header made');
			if(test=='verbose')alert('clear link made');
			//searches list
			listElement = rvp_makeList(container);
			if(test=='verbose')alert('list element made');
			recently_viewed('search','display',null,null,null,test,listElement);
			if(test=='verbose')alert('list items made');
			// if 'clear list' link has not been made
			if(!rvp_cookie || rvp_cookie=='')
			rvp_makeClear(container);
			displayRecent=true;
			}
		if (displayRecent)
			{
			rpuiElement.innerHTML='<img alt="" src="http://cdn.lastminute.com/site/recently-viewed-top.gif?skin=engb.lastminute.com" />';
			rpuiElement.appendChild(outerContainer);
			if(test=='verbose')alert('container object appended');
			}
		}
	} 

function recently_viewed(rType,method,searchType,formId,linkId,test,listElement,cookieValue)
	{
	if(test)alert('recently_viewed');
	expirey_days = 7;
	expirey = new Date(); 
	expirey.setTime(expirey.getTime() + (expirey_days*24*60*60*1000));
	domain="";
	//	domain="domain=lastminute.com";
	if(test=='verbose')alert("rType="+rType);
	if(test=='verbose')alert("Method="+method);
	switch (rType)
		{
		case "search":
			makeFormId="rms_form";
			number_of_products = 5;
			cookie_name = 'rmsearches';
			itemSeparator='##rms';
			titleSeparator='##title';
			dataSeparator='##'+searchType+'##';
			if (!cookieValue)
				if (cookieValue = getCookie(cookie_name))
					if(cookieValue.indexOf('##title')>-1)
						{
						if(test=='verbose')alert('method = '+method+'\nCookie value='+cookieValue);
						cookieValue = rv_decodeCookie(cookieValue,itemSeparator,titleSeparator,test,method);
						}
					else
						{
						cookieValue='';
						clearCookie(cookie_name,domain);
						}
			if(test)alert(cookieValue);
			switch (method)
				{
				case "add":if(test)alert('Launching rms_add');rms_add(searchType,formId,number_of_products,expirey,cookie_name,domain,itemSeparator,titleSeparator,dataSeparator,test);break;
				case "clear":clearCookie(cookie_name,domain,test);break;
				case "display":if(cookieValue)rms_display(cookieValue,listElement,test);break;
				case "make":if(cookieValue)rms_makeForm(cookieValue,makeFormId,linkId,test);break;
				case "getCookie":return cookieValue;break;
				case "setCookie":
					if(test)alert('setCookie '+cookie_name+' with value '+cookieValue+', expirey='+expirey+', domain='+domain);
					setCookie(cookie_name,cookieValue,expirey,domain);
					return getCookie(cookie_name);
					break;
				default: break;
				}
			break;
		case "product":

			number_of_products = 10;
			cookie_name = 'rvproducts';
			if(!cookieValue)cookieValue = getCookie(cookie_name);
		  switch (method)
				{
				case "clear":clearCookie(cookie_name,domain,test);break;
				case "add": break;
				case "display": break;
				case "getCookie":return cookieValue;break;
				case "setCookie":
					if(test)alert('setCookie '+cookie_name+' with value '+cookieValue+', expirey='+expirey+', domain='+domain);
					setCookie(cookie_name,cookieValue,expirey,domain);
					return getCookie(cookie_name);
					break;
				}
			break;
		default:
			return 'Error: Invalid rv type';break;
		}
		return false;
	}

function getCookieVal(offset){var endstr=document.cookie.indexOf(";",offset);if(endstr==-1){endstr=document.cookie.length;}return unescape(document.cookie.substring(offset, endstr));}
function getCookie(name){var arg=name + "=";var alen=arg.length;var clen=document.cookie.length;var i=0;while(i < clen){var j = i + alen;if (document.cookie.substring(i, j) == arg) return getCookieVal (j);i = document.cookie.indexOf(" ", i) + 1;if (i == 0) break;}return null;}
function setCookie(name,value,expirey,domain){var expires=false;document.cookie = name + "=" + escape(value) + ((expires==true)?"":(";expires="+expirey.toGMTString()))+";path=/;"+domain;}
function clearCookie(name,domain,test)
	{
	expiry=new Date();
	expiry.setTime(expiry.getTime()-1000);
	document.cookie = name + "=;expires="+expirey.toGMTString()+";path=/;"+domain+";window.reload();"
	}
function rv_decodeCookie(cookieStr,itemSeparator,titleSeparator,test,method)
	{
	items = cookieStr.split(itemSeparator);
	temp = new Array;
	for (x in items)
		{
//		if(test)alert(x);
		if (items[x]!='')
			{
//			if(test)alert(items[x]);
			temp[temp.length] = new rv_item(items[x],x,titleSeparator,test);
			}
		}
	return temp;
	}


function rv_item(myStr,id,titleSeparator,test){
	//	alert('rv_item(\''+myStr+'\',\''+id+'\',\''+titleSeparator+'\')');
//	if(test)document.write(myStr+'<br />');
	myStr = myStr.split(titleSeparator)[1];
	values = myStr.split('##');
	this.title = values[0];
//	if(test)document.write(this.title+'<br />');
	this.searchType = values[1];
	data = values[2].split('&');
	if (id) this.id = id;
	this.data = new Object();
	for (i in data)
		{
		nvp=data[i].split('=');
//		if(test)document.write(nvp[0] +' = '+nvp[1]+'<br />');
		if(currentVal = this.data[nvp[0]])
			{
			this.data[nvp[0]] = currentVal+','+nvp[1];
			}
		else this.data[nvp[0]] = nvp[1];
		}
//	if(test)document.write('<hr />');
	}


/* ************** RMS DISPLAY ************* */

	
function rms_display(cookieValues,listElement,test)
	{
	if(test)alert('rms_display');
	// searches list
	for (x=0;x < cookieValues.length;x++)
		{
		if(test=='verbose')alert('Link title = '+cookieValues[x].title);
		linkElement = rvp_makeListItem(listElement,rms_createLink(cookieValues[x]),cookieValues[x].title);
		if(test=='verbose')alert(linkElement.innerHTML);
		}	
	}
function rms_jumpLink(link,trackingId)
	{
	cookieVal = 'rmsTrackBack'+getCookie('rmsearches');
	recently_viewed("search","setCookie",null,null,null,null,null,cookieVal);
	document.location.href=link;
	}
function rms_createLink(item)
	{
	if(test)alert('rms_createLink');
	trackingId = (item.id*1) + 1;
	myLink = "/site/recent-searches.html?skin="+"engb.lastminute.com"+ampSymbol+"id="+item.id+ampSymbol+"searchType="+item.searchType+ampSymbol+"intcmp=pers.rs"+trackingId+"."+item.searchType;
	return "javascript:rms_jumpLink('"+myLink+"',trackingId)";
	}

/* *********** END RMS DISPLAY ********** */

// end /site/portal_skins/DEFAULT/recentProducts.js
// end /site/portal_skins/DEFAULT/recentProducts.js
