function resetFormCookies(form_Name) {
 	var cookies_name="formcookies_"+form_Name;
	var expdate= new Date(1970, 1, 1);
	document.cookie=cookies_name+"=;expires="+expdate.toGMTString(); 
}

function updateFormCookies(form_Name,exp_Days)
{
	var myform=eval("document."+form_Name);
	var cookies_value = "";
	var el = new Array();
	var tmp_value = "";
	for (var i=0;i<myform.elements.length;i++)
	{
		tmp_value = "";
		if ( typeof(myform.elements[i])!="undefined")
		{
			switch (myform.elements[i].type)
			{
				case "checkbox" :
				       	if(myform.elements[i].checked == true) {
							tmp_value=myform.elements[i].value;
						}
						break;
				case "radio" :
						if(myform.elements[i].checked == true)	{
							//alert("checked: name: " + myform.elements[i].name + " value:" + myform.elements[i].value);
							tmp_value=myform.elements[i].value;
						}
                       	//continue;
						break;
				case "button" :
					break;
				case "file" :
					break;
				case "submit" :
					break;
				case "reset" :
					break;
				//break;
				default :
						tmp_value=myform.elements[i].value;
						break;
			}
			tmp_value=tmp_value.replace("<","");
			tmp_value=tmp_value.replace(">","");
			tmp_value=tmp_value.replace(";","");
			tmp_value=tmp_value.replace("|","");
			tmp_value=tmp_value.replace("=","");
			tmp_value=tmp_value.replace("'","");
			tmp_value=tmp_value.replace("\"","");	
	
			var flag = typeof(el[myform.elements[i].name])=="undefined" || el[myform.elements[i].name]=="" || el[myform.elements[i].name]==null;
			if(flag == true) {
				el[myform.elements[i].name] = "";
			}
			if(myform.elements[i].name != "" && tmp_value != "") el[myform.elements[i].name] += (el[myform.elements[i].name]==""?"":"<<<space>>>" ) + tmp_value;
			//alert("name:" + myform.elements[i].name + " value:" + el[myform.elements[i].name]);
//			cookies_value+="|"+myform.elements[i].name+"="+tmp_value;
//			s+="<br>"+"name:"+myform.elements[i].name+"    value:"+myform.elements[i].value+"   type:"+myform.elements[i].type+"<br>";
		}
	}

	for(key in el) {
		if(key != "") cookies_value += (cookies_value==""?"":"|") +key+"="+el[key];
	}
	//alert(cookies_value);


//  document.write("sting:"+s+"<br>") ;
    
	var cookies_name="formcookies_"+form_Name;
	
	var expdate= new Date();
	expdate.setTime(expdate.getTime()+(3600*1000*24*exp_Days));
//	document.cookie=cookie_Name+"="+new_Value.replace(/(\s)+/g,"*")+";expires="+expdate.toGMTString(); 
	document.cookie=cookies_name+"="+encodeURIComponent(cookies_value)+";expires="+expdate.toGMTString(); 
    //alert(decodeURIComponent(document.cookie));
   // document.write("updateCookies:"+cookies_value);
}

// how to use this function 
// except_field = "form_element_name|form_element_name";
// retrieveFormCookies(form_Name, except_field); 
function retrieveFormCookies(form_Name, except_field) {
	if(except_field == null) except_field = "";
	
	var myform = eval("document."+form_Name);
	var cookies_array = getCookiesValue(form_Name);
/* debug info
	var msg ="";
	for(key in cookies_array){
		 msg += key + "=" + cookies_array[key] + "\n";
	}
	alert(msg);
*/
	for (var i=0;i<myform.elements.length;i++)
	{
		if ( typeof(myform.elements[i])!="undefined" && cookies_array[myform.elements[i].name] != null )
		{
			if( except_field.indexOf(myform.elements[i].name) < 0 ) { 
				switch (myform.elements[i].type)
				{
					case "checkbox" :
							var value_sets = cookies_array[myform.elements[i].name];
							if(value_sets.indexOf("<<<space>>>") >= 0 ) {
								var value_me = "<<<space>>>" + myform.elements[i].value + "<<<space>>>";
								myform.elements[i].checked = ( value_sets.indexOf(value_me) >= 0 )?true:false; 
							} else {
								myform.elements[i].checked = ( cookies_array[myform.elements[i].name]==myform.elements[i].value )?true:false; 
							}
							break;
					case "radio" :
							//alert("type: " + myform.elements[i].type + "  name :" + myform.elements[i].value + "  value:" + cookies_array[myform.elements[i].name] );
							myform.elements[i].checked = (cookies_array[myform.elements[i].name]==myform.elements[i].value)?true:false; 
							break;
					case "button" :
						continue;
					case "file" :
						continue;
					case "submit" :
						continue;
					case "reset" :
						continue;
					default :
							if(cookies_array[myform.elements[i].name] != null) {
								myform.elements[i].value = cookies_array[myform.elements[i].name];
							}
							break;
				} //switch
			} //if( except_field.indexOf(myform.elements[i].name) < 0 )
		}
	}
}

function getCookiesString(form_Name) {
	var  cookie_name="formcookies_"+form_Name;
	var  tmp_string=document.cookie;
	var  tmp_array=tmp_string.split("; ");
	for(key in tmp_array)
	{	
		var tmp_string1=tmp_array[key].split("=");
		if(cookie_name==tmp_string1[0])
		{
//			document.write("<br>line:"+tmp_string1[0]+" value:"+tmp_string1[1]+"<br>");
			return tmp_string1[1];
		}
	}
	return "";
}

function getCookiesValue(form_Name,field_Name)
{
	var tmp_string=getCookiesString(form_Name);
	var tmp_string1=decodeURIComponent(tmp_string);
	var tmp_array=tmp_string1.split("|");
	var thecookie= new Array();
	for(key in tmp_array)
	{
		var tmp=tmp_array[key].split("=");
		if( tmp[1] ) {
			if( tmp[1].indexOf("<<<space>>>") >= 0 ) {
				thecookie[tmp[0]] = "<<<space>>>" + tmp[1] + "<<<space>>>";
			} else {
				thecookie[tmp[0]] = tmp[1];
			}
		} else {
				thecookie[tmp[0]] = "";
		}
		
		if(field_Name==tmp[0])
		{
			return thecookie[tmp[0]];
		}
	}
	
	return thecookie;
}