// JavaScript Document
// Cookie Functions  ////////////////////  (:)
// Copyright (c) 2004 by Last Minute Network Ltd 26-11-2004

var expDays = 2;
var exp = new Date(); 
exp.setTime(exp.getTime() + (expDays*24*60*60*1000));

// cookie names used. pFastBrowse 'permanent', sFastBrowse 'session'
var pCookie = 'pFastBrowse'
var sCookie = 'sFastBrowse'
var cookieForms_max_size = 3500;

function getCookieVal (offset) 
	{  
	var endstr = document.cookie.indexOf (";", offset);  
	if (endstr == -1) { endstr = document.cookie.length; }
	return unescape(document.cookie.substring(offset, endstr));
	}

function setKeyValue(name, key, value) {
	var prior = GetCookie(name);
	var newpair = key.concat('=', value);
	var needToAdd = true;
	var nArray = [];
	if (prior != null) {
		var newSize = document.cookie.length - escape(prior).length + escape(key.concat('=', value)).length;
		var pArray = prior.split('#cf#');
		for(i=(pArray.length-1); i >= 0; i--) {
			var pk = pArray[i].split('=');
			if (pk[0] == key) {
				nArray.unshift(key.concat('=', value)); needToAdd = false;
			} else {
				newSize += escape(pArray[i]).length + 8;
				if (newSize > cookieForms_max_size) {
					// alert('CF Cookie size exceeded ' + i + ' proposed=' + newSize + ' previous=' + (newSize - escape(pArray[i]).length - 8));
					break;
				}
				nArray.unshift(pArray[i]);
			}
		}
	} else {
		if (document.cookie && document.cookie != null && document.cookie.length > cookieForms_max_size) {
			// alert('No cookieforms, but cookie too big ' + document.cookie.length + ' not adding');
			needToAdd = false;
		}
	}
	if (needToAdd) nArray.push(key.concat('=', value));
	newCookie=nArray.join('#cf#');
	if (newCookie.length > 0) SetCookie(name, newCookie);
}

function getKeyValue(pname, sname, key)
	{
	var prior = GetCookie(pname);
	prior = prior + '#cf#' + GetCookie(sname);
	if (prior != null)
		{
		var pArray = prior.split('#cf#');
		for(i=0; i < pArray.length; i++) 
			{ var pk = pArray[i].split('='); if (pk[0] == key)  return pk[1]; }
		}
	return null;
	}

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) 
	{  
	var expires = (name == pCookie) ? false : true;  
	document.cookie = name + "=" + escape (value) + ((expires == true) ? "" : ("; expires=" + exp.toGMTString())) + ";path=/";
	}

function CookieForms() 
	{  
	var mode = CookieForms.arguments[0];
	var form = CookieForms.arguments[1];
	for(j=2; j<CookieForms.arguments.length; j++) 
		{
		inputId = CookieForms.arguments[j];
		key = form.concat(".", inputId);
		//alert(key);
		element = document.getElementById(inputId);
		if (element != null)
			{
			type = element.type; 
			//if open, set element value to cookie value
			if(mode == 'open')
				{
				value = getKeyValue(pCookie, sCookie, key);
				if (value != null) 
					{ 
					//alert(element.value);
					//alert("Putting back " + value + " into " + key + " " + element);
					element.value = value; 
					if( type == 'radio' || type == 'checkbox' )
						{ element.checked = (value == 'true') ? true : false; }
					else if( element.multiple == true )
						{
						var choices = value.split('#');
						var options = element.options;
						for (var i = 0; i < choices.length; i++)
							{ for (var j = 0; j < options.length; j++)
								{ if (options[j].value == choices[i]) options[j].selected = true; }} 
				
						}
					}
				}
				//if 'save' set cookie value to element value
			if(mode == 'save' && (element.value || element.checked))
				{
				if( type == 'radio' || type == 'checkbox' )
					{ value = (element.checked) ? 'true' : 'false'; }
				else if( element.multiple == true)
					{
					var o = element.options; value = '';
					for (var i = 0; i < o.length; i++)
						{ if (o[i].selected) value = value + o[i].value + '#';}
					}
				else 
					{ value = element.value; }
	
				expiry = CookieForms.arguments[++j];
				if (value != null && value != 'undefined')
					{
					if (expiry == 'i')
						{ setKeyValue(pCookie, key, value); }
					else
						{ setKeyValue(sCookie, key, value); }
					}
                       		}
			}
		}		
	}
	

