/*----------------------------------------------------------------------------\
|              cookie.js                                                      |
|-----------------------------------------------------------------------------|
|              Created by Bertrand Zuchuat                                    |
|-----------------------------------------------------------------------------|
|              Copyright (c) 2007-2010 RERO, Martigny                         |
|-----------------------------------------------------------------------------|
| 2007-01-08 | First working version                                          |
| 2007-04-10 | Add function getSessionId and loadCookie                       |
| 2010-02-08 | Delete " on cookie value
\----------------------------------------------------------------------------*/


function savePrefs(form, name)
{
	var vcookie = '';
	vcookie += 'sessionid::session::' + getCookie('sessionid').replace(/"/g, '') + '-->';

	for (var i = 0; i < form.length; i++) {
		if(form[i].type == "select-one")
		{
			vcookie += form[i].name + '::select::' + form[i].selectedIndex + '-->';
		}
		else if(form[i].type == "select-multiple")
		{
			var ValueSelected = '';
			
			for (var a = 0; a < form[i].length; a++)
			{
				if (form[i][a].selected)
				{
					ValueSelected += a + ',';
				}
			}
			
			if(ValueSelected.length > 0)
			{
				ValueSelected = ValueSelected.substring(0,ValueSelected.length-1);

				vcookie += form[i].name + '::select-multiple::' + ValueSelected + '-->';
			}
		}
		else if(form[i].type == "text")
		{
			vcookie += form[i].name + '::text::' + safeChars(form[i].value) + '-->';
		}
		else if(form[i].type == "checkbox" && form[i].checked)
		{
			vcookie += form[i].name + '::checkbox::' + '-->';
		}
		else if(form[i].type == "radio" && form[i].checked)
		{
			vcookie += form[i].name + '::radio::' + form[i].id + '-->';
		}
	}

	setCookie(name, vcookie, 0, "/");
}


function loadCookie(name)
{
	var prefStr = getCookie(name);
	var result = null;
	
	if (prefStr != null)
	{
		result = prefStr.split('-->');
	}
	return result;
}


function getPrefs(form, name)
{
	var prefArray = loadCookie(name);
	
	if(prefArray != null)
	{
		for (var i = 0; i < prefArray.length; i++)
		{
			var currPref = prefArray[i].split('::');

			if(currPref[1] == "select")
			{
				form[currPref[0]].selectedIndex = currPref[2];
			}
			else if (currPref[1] == "select-multiple")
			{
				var currSelect = currPref[2].split(',');

				for (var a = 0; a < currSelect.length; a++)
				{
					form[currPref[0]][currSelect[a]].selected = true;
				}
			}
			else if (currPref[1] == "text")
			{
				form[currPref[0]].value = currPref[2];
			}
			else if (currPref[1] == "checkbox")
			{
				form[currPref[0]].checked = currPref[2];
			}
			else if (currPref[1] == "radio")
			{
				form[currPref[2]].checked  = true;
			}
		}
		return true;
	}
	else
	{
		return false;
	}
}


function getSessionId(name)
{
	var sessionid = '';
	
	var prefArray = loadCookie(name);
	
	if(prefArray != null)
	{
		for (var i = 0; i < prefArray.length; i++)
		{
			var currPref = prefArray[i].split('::');
			if (currPref[1] == "session")
			{
				sessionid = currPref[2].replace(/"/g, '');
			}
		}
	}
	return sessionid;
}


function safeChars(str)
{
	return str.replace('/::|=|-->/g', ':;');
}


function saveLastSearch(name, value)
{
  setCookie(name, value, 0, "/");
}


// ---------------------------- cookie functions ---------------------------- //

function getCookie( name ) {
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
		return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ";", len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ).replace(/"/g, '') );
}


function setCookie( name, value, expires, path, domain, secure )
{
	var today = new Date()
	today.setTime( today.getTime() )
	if (expires)
	expires = expires * 1000 * 60
	else
	expires = 0

	var expires_date = new Date( today.getTime() + (expires) )
	var curCookie = name + "=" + escape( value ) +
	((expires) ? ";expires=" + expires_date.toGMTString() : "" ) + //expires.toGMTString()
	((path) ? ";path=" + path : "" ) +
	((domain) ? ";domain=" + domain : "" ) +
	((secure) ? ";secure" : "" )
	document.cookie = curCookie
}


function deleteCookie( name, path, domain ) {
	if ( getCookie( name ) ) document.cookie = name + "=" +
	( ( path ) ? ";path=" + path : "") +
	( ( domain ) ? ";domain=" + domain : "" ) +
	";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}


