
function SetCookie(iNameOfCookie, iExpireHours, sContent){
//alert("setCookie "+iNameOfCookie);
//alert("setCookie "+iNameOfCookie+"\n"+sContent);
   var ExpireDate = new Date ();
   ExpireDate.setTime(ExpireDate.getTime() + (iExpireHours * 3600 * 1000));
   document.cookie = iNameOfCookie + "=" + escape(sContent) +
   ((iExpireHours == null) ? "" : "; expires=" + ExpireDate.toGMTString());
}

function GetCookie(iNameOfCookie){

//alert("getCookie "+iNameOfCookie+"\n"+document.cookie);
   if (document.cookie.length > 0){
      begin = document.cookie.indexOf(iNameOfCookie+"=");
      if (begin != -1){
         begin += iNameOfCookie.length+1;
         end = document.cookie.indexOf(";", begin);
         if (end == -1) end = document.cookie.length;
         return unescape(document.cookie.substring(begin, end));
      }
   }
   return "";
}



var data = "";
cookieVersion = 0; 

function SetCookieVersion(version) { 
   cookieVersion = version;
}

function CheckCheckbox(checkboxId)  {
   checkbox = document.getElementById(checkboxId);
   checkbox.checked = true; 
}
function GetFormContent(objForm,cookiename){
   var AllNameValuePairs="";
   var strNameprevious = "";

//alert (" GetFormContent1");
  if (GetCookie(cookiename) != ""){
//alert (" GetFormContent2");
      AllNameValuePairs = GetCookie(cookiename); 
      data = AllNameValuePairs;

      version = 0; 
      fieldcnt = 0;


      if ((intStart = AllNameValuePairs.indexOf("version="))!=-1) {
           version = AllNameValuePairs.substring(intStart+8,AllNameValuePairs.indexOf("`",intStart+8));
      }
      if ((intStart = AllNameValuePairs.indexOf("fieldcnt="))!=-1) {
           fieldcnt = AllNameValuePairs.substring(intStart+9,AllNameValuePairs.indexOf("`",intStart+9));
      }
	  //alert(fieldcnt+","+objForm.elements.length);

	  if (cookieVersion == version && fieldcnt == objForm.elements.length) {

	 	 for(intIndex=0;intIndex<=objForm.elements.length-1;intIndex++)
	 	 {
			//strName=objForm.elements[intIndex].name
			strName = intIndex;
			if(strName!="" && strName!=strNameprevious) {
				if(objForm.elements[intIndex].name.indexOf("name=")!=-1)
				strElement = Parse(objForm.elements[intIndex].name,'name')
				else
				strElement = "e"+intIndex //objForm.elements[intIndex].name;
				if ((intStart = AllNameValuePairs.indexOf(strElement+"="))!=-1) {
				strValue = AllNameValuePairs.substring(intStart+strElement.length+1,AllNameValuePairs.indexOf("`",intStart+strElement.length+1));
	//             alert ("value pair from cookie: "+strElement +"="+ strValue); 
				SetElementValue(objForm[objForm.elements[intIndex].name],strValue)
				}
				strNameprevious=strName
			} 
		 } 
	  }
   }
//alert (" GetFormContent3");
}


function SetElementValue(objElement,strValue) {
   var intIndex;

   if(objElement[0] && (objElement[0].type=="radio" || objElement[0].type=="checkbox")) /* radio/checkbox elementgroup */
   {
      for(intIndex=0;intIndex<objElement.length;intIndex++)
         if(strValue.indexOf("|"+objElement[intIndex].value+"|") != -1) 
            objElement[intIndex].checked = true
         else 
            objElement[intIndex].checked = false;
   }
   else if(objElement.type.indexOf("select")!=-1) /* select element */
   {
      if (objElement.hiddenIdField) {
         if (objElement.parentLbx) {
			if (objElement.parentLbx.hiddenIdField) {
				selectedValue = objElement.parentLbx.hiddenIdField.value
//			alert("update from cookie (hidden)" + objElement.id + ",  selectedValue  = " +selectedValue);
			}
			else {
				selectedValue = objElement.parentLbx.value
//			alert("update from cookie (lbx)" + objElement.id + ",  selectedValue  = " +selectedValue);
			}
			ReloadDropDownList2(selectedValue,objElement.id)
         }
      }
      else {
		for(intIndex=0;intIndex<objElement.options.length;intIndex++) {
			if (strValue.indexOf("|"+objElement.options[intIndex].value+"|") != -1) 
				objElement.options[intIndex].selected = true;
			else 
				objElement.options[intIndex].selected = false;
		}
	  }
   }
   else if (objElement.type=="radio" || objElement.type=="checkbox") {
       objElement.checked = (strValue == objElement.value); 
   }
   else /* text element */
   {
      if (strValue != "unchecked" && objElement.type != "button" && objElement.type != "submit") {
         objElement.value = strValue;
         //alert(objElement.name+", ["+objElement.type+"]")
      }
//       alert ("value pair from cookie: "+objElement.id +"="+ strValue); 
   }

   return
}





function SaveFormContent(objForm,cookiename){
   var AllNameValuePairs="";
   var strNameprevious = "";

   AllNameValuePairs += "version=" + cookieVersion +"`";
   AllNameValuePairs += "fieldcnt=" + objForm.elements.length +"`";

   for(intIndex=0;intIndex<=objForm.elements.length-1;intIndex++)
   {
      strName=objForm.elements[intIndex].name
     //alert("strName = "+strName); 
      if(strName!="" && strName!=strNameprevious)
      { 
         elm = objForm[objForm.elements[intIndex].name];
            //alert(elm.name+", |"+elm.name.substr(0,2)+"|");
			if (elm[0] || elm.name.substr(0,2) != "__") {
			    // skip fields starting with __ (like __VIEWSTATE). 
			    // Arrays, like radiobuttons are not checked. 
				//alert(elm.name);
				if ((value = GetElementValue(objForm[objForm.elements[intIndex].name])) != "xxx") {
					if(objForm.elements[intIndex].name.indexOf("name=")!=-1)
				    	strElement = Parse(objForm.elements[intIndex].name,'name')
					else
						strElement = objForm.elements[intIndex].name;
					if (objForm.elements[intIndex].hiddenIdField) {
						objForm.elements[intIndex].hiddenIdField = objForm.elements[intIndex].value
						//alert("jippie "+ objForm.elements[intIndex].value)
					}
					AllNameValuePairs += "e" + intIndex + "=" + value +"`";
					//AllNameValuePairs += strElement + "=" + value +"`";
					//alert(strElement+" = "+value);
				} 
			}
			strNameprevious=strName
      }
   }

 //alert (AllNameValuePairs);

   oldPairs = data.split("`");
   for(intIndex=0;intIndex<oldPairs.length;intIndex++) {
      strName  = oldPairs[intIndex].substr(0,oldPairs[intIndex].indexOf('='));
      strValue = oldPairs[intIndex].substr(oldPairs[intIndex].indexOf('=')+1,1000);
   //alert (strName+" = "+strValue);
      if (AllNameValuePairs.indexOf(strName+"=") == -1)
         AllNameValuePairs += "e" + strName + "=" + strValue +"`";
   } 
   SetCookie (cookiename,1,AllNameValuePairs);
}



function GetElementValue(objElement) {
   var strValue = "", intIndex;

   if(objElement[0] && (objElement[0].type=="radio" || objElement[0].type=="checkbox")) /* radio/checkbox elementgroup */
   {
      for(intIndex=0;intIndex<objElement.length;intIndex++)
         if(objElement[intIndex].checked)
            strValue+="|"+objElement[intIndex].value+"|";
   }
   else if(objElement.type.indexOf("select")!=-1) /* select element */
   {
      for(intIndex=0;intIndex<objElement.options.length;intIndex++) {
         if (objElement.options[intIndex].selected == 1)
            strValue+="|"+objElement.options[intIndex].value+"|";
      }
   }
   else if (objElement.type=="radio" || objElement.type=="checkbox") {
      if (objElement.checked) 
         strValue = objElement.value; 
      else 
         strValue = 'unchecked'; 
   }
   else 
   {
      if (objElement.id != '')  {
         //alert( objElement.id + ": " +objElement.type +" = "+objElement.value)
         strValue = objElement.value;
      }
   }

   return strValue;
}


