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=/";
}

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;
}

function eraseCookie(name)
{
	createCookie(name,"",-1);
}

function  saveFormValues(name, without_keys){
	var form = document.forms[name];
	if (!form) return;
	var els = form.elements;
	var s = '';
	for (var i = 0; i< els.length; i++){
		if ((els[i].type == 'hidden')){
			if (!without_keys){
				s += ' r.k["' + els[i].name + '"] =  "' + escape(els[i].value) + '";\n';
			}
		}else if (els[i].type != 'submit'){
			if ((els[i].name) && (els[i].value != els[i].defaultValue)){
				s += ' r.d["' + els[i].name + '"] =  "' + escape(els[i].value) + '";\n';
			}
		}
	}

	//alert(s);
	createCookie('values_of_form_'+name, escape(s), 1);
}

function restoreFormValues(name ){
	//alert('restore: '+ name);
	var s = readCookie('values_of_form_'+name);
	if (s === null) return;
	eraseCookie('values_of_form_'+name);


	var form = document.forms[name];
	if (!form) return;

	eval('var o = function(){ var r = new Object; r.k = new Object; r.d = new Object; \n'+ unescape(s) +'\n return r;}();');
	//alert(s);
	var fine = true;
	for (key in o.k){
		var el = form.elements[key];
		if (
			(!el)
			||
			(el.value != unescape(o.k[key]))
		) {
			fine = false;
			break;
		//}else{
		//	alert(key);
		}
	}
	if (!fine) return;

	for(key in o.d){
		var el = form.elements[key];
		if (!el) continue;
		el.value = unescape(o.d[key]);
		if ((el.className.indexOf('hidden') >= 0) && el.id){
			var inf = $(el.parentNode.getElementsByTagName('input')[0])
			if (inf && (inf.attr('infield') == el.id)){
				inf.addClass(' hidden');
				$(el).removeClass('hidden');
				//alert(el.className)
			}
		}
	}
}
