//////////////////////////////////////////////////////////////////////////////////
// file: form-cookie.js
// description : Provides functionality for reading/writing form data in a cookie.
// author:  
//////////////////////////////////////////////////////////////////////////////////
//<!-- Build Number: 01.01.077 LKH.WIDX 1/27/2008 -->
//This function creates or overwrites a key-value pair to the cookie
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

//This function reads a key-value pair from the cookie
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

//This function saves the data contained in the form elements of a form to a cookie
function saveFormData(formName)
{
	form = document.getElementsByName(formName)[0];
	for(var i=0;i<form.elements.length;i++)
	{
		element = form.elements[i];
		if (element.name==null || element.name=="")
			continue;
		switch(element.type)
		{
			case "text" :  createCookie (element.name,element.value,365); break;
			case "checkbox"	: createCookie (element.name,element.checked?"true":"false",365); break;
			case "select-one" : createCookie (element.name,getComboSelectValue(element),365); break;
		}
	}
}

//This function populates form data from the cookie
function loadFormData(formName)
{
	var form = document.getElementsByName(formName)[0];
	for(var i=0;i<form.elements.length;i++)
	{
		element = form.elements[i];
		if (element.name==null || element.name=="")
			continue;
		value = readCookie(element.name);
		if (value==null)
			continue;
		switch(element.type)
		{
			case "text" : element.value = value; break;
			case "checkbox"	: element.checked = value=="true"?true:false; break;
			case "select-one" : setComboSelectValue(element,value); break;
		}
	}
}

//This function return the selected option value of a select object
function getComboSelectValue(selectObj)
{
	var options = selectObj.options;
	var selectedValue = null;
	for (var i=0;i<options.length;i++)
	{
		if (options[i].selected==true)
		{
			selectedValue = options[i].value;
			break;
		}
	}
	return selectedValue;
}

//This function sets the given value in a select object
function setComboSelectValue(selectObj,value)
{
	var options = selectObj.options;
	for (var i=0;i<options.length;i++)
	{
		if (options[i].value==value)
		{
			options[i].selected = true;
			break;
		}
	}
}
