// cookie.js
// author : jfparis
// date   : 2008-03-18
//
// les functions necessaires dans le handle des cookies
// - createCookie(cookieName, cookieValue, days)
// - readCookie(cookieName)
// - submitForm(frm)
// - prepopulateForm(frm, cookieName)

function createCookie(cookieName, cookieValue, days)
{	
	var expires;
	if(days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		expires = "; expires="+date.toGMTString();
	}
	else { expires = ""; }

	document.cookie = cookieName + '=' + escape(cookieValue) + expires + '; path=/';
	return true;
}

function readCookie(cookieName)
{
	var arg  = cookieName + '=';
	var alen = arg.length;
	var clen = document.cookie.length;

	// loop dans les cookies
	var i = 0;
	var cookieValue;
	while(i < clen)
	{
		var j = i + alen;
		if(document.cookie.substring(i, j)==arg)
		{
			var endstr = document.cookie.indexOf (";", j);
			if (endstr==-1) endstr=document.cookie.length;
			cookieValue = unescape(document.cookie.substring(j, endstr));
		}
		
		i = document.cookie.indexOf(" ",i)+1;
		if(i==0) break;
	}
	
	if(!cookieValue) { return null; }
	
	return cookieValue;
}

// on soumet le form
// methode a placer dans le onSubmit
function submitForm(frm)
{
	// on verifie si on a inclu le cookie.js, tres important
	if(typeof window.createCookie != 'function') { return true; }

	var cookieName;
	var cookieValue;

	var searchtype  = frm.searchtype.value;

	// si on fais affaire a un forfait
	if(searchtype == 'PA')
	{
		cookieName      = 'cookiePackage';
		var gateway_dep = frm.gateway_dep.value;
		var dest_dep    = frm.dest_dep.value;
		var duration    = frm.duration.value;
		var no_hotel    = frm.no_hotel.value;
	
		// on determine quelle format de date est dans le templates
		var date_dep;
		if(frm.date_dep) { date_dep = frm.date_dep.value; }
		else 
		{
			var departure_year  = frm.departure_year.value;
			var departure_month = frm.departure_month.value;
			var departure_day   = frm.departure_day.value;
	
			date_dep = departure_year + '/' + departure_month + '/' + departure_day;
		}
		
		var star;
		var price_max;
		var all_inclusive;
		var beach;
		var golf;
		var kitchenette;

		// on ne sait pas si cest fields sont dans le templates ou non.
		if(frm.price_max)
		{ 
			if(frm.price_max.length)
			{
				for(var i=0; i<frm.price_max.length; i++)
				{
					if(frm.price_max[i].checked) { price_max = frm.price_max[i].value; }
				}
			}
			else { price_max = frm.price_max.value; }
		}
		if(frm.star)          { star = frm.star.value; }
		if(frm.all_inclusive) { all_inclusive = frm.all_inclusive.checked; }
		if(frm.beach)         { beach = frm.beach.checked; }
		if(frm.golf)          { golf = frm.golf.checked; }
		if(frm.kitchenette)   { kitchenette = frm.kitchenette.checked; }
		
		// construction du cookieValue
		cookieValue = gateway_dep + '|' + dest_dep + '|' + date_dep + '|' + duration + '|' + no_hotel + '|' + star + '|' + price_max + '|' + all_inclusive + '|' + beach + '|' + golf + '|' + kitchenette;
	}

	// si on a un cookievalue, on creer le cookie de session
	if(cookieValue) { createCookie(cookieName, cookieValue, 30); }
	
	return true;
}

// function qui permet la prepopulation
// methode appeler dans le InitInfos
function prepopulateForm(frm, cookieName)
{
	// on verifie si on a inclu le cookie.js, tres important
	if(typeof window.readCookie != 'function') { return; }

	var cookieValue = readCookie(cookieName);
	if(!cookieValue) { return; }

	var arrayElems = cookieValue.split('|');
	
	// on a un package
	if(cookieName == 'cookiePackage')	
	{
		var gateway_dep = arrayElems[0];
		var dest_dep    = arrayElems[1];
		var date_dep    = arrayElems[2];
	
		// on place la date
		if(frm.date_dep) { frm.date_dep.value = date_dep; }
		else if(frm.departure_day)
		{
			// 2008/01/01
			frm.departure_day.value   = date_dep.substr(8, 2);
			frm.departure_month.value = date_dep.substr(5, 2);
			if(frm.departure_year) { frm.departure_year.value = date_dep.substring(0, 4); }
		}

		var duration      = arrayElems[3];
		var no_hotel      = arrayElems[4];
		var star          = arrayElems[5];
		var price_max     = arrayElems[6];
		var all_inclusive = arrayElems[7];
		var beach         = arrayElems[8];
		var golf          = arrayElems[9];
		var kitchenette   = arrayElems[10];
		
		// on place le gateway
		frm.gateway_dep.value = gateway_dep;
		refreshDest(frm);
		
		// on place la destination
		frm.dest_dep.value = dest_dep;
		refreshHotel(frm);
		
		// on place la duration
		frm.duration.value = duration;
		
		// on place l'hotel (si on la)
		if(no_hotel)
		{
			frm.no_hotel.value = no_hotel;
			refreshStars(frm);
		}

	
		// on place les checkbox et selectbox optionnel(p-e quil ne sont pas dans le templates)	
		if(price_max && frm.price_max)
		{ 
			if(frm.price_max.length)
			{
				for(var i=0; i<frm.price_max.length; i++)
				{
					if(price_max == frm.price_max[i].value) { frm.price_max[i].checked = true; }
				}
			}
			else { frm.price_max.value = price_max; }
		}

		if(star && frm.star)                             { frm.star.value = star; }
		if(all_inclusive == 'true' && frm.all_inclusive) { frm.all_inclusive.checked = true; }
		if(beach == 'true' && frm.beach)                 { frm.beach.checked = true; }
		if(golf == 'true' && frm.golf)                   { frm.golf.checked = true; }
		if(kitchenette == 'true' && frm.kitchenette)     { frm.kitchenette.checked = true; }
	}
}
