<!-- FormFieldSaver.js -->

var expDays = 100;
var exp = new Date(); 
exp.setTime(exp.getTime() + (expDays*24*60*60*1000));


function getSelectedIndex(o_SelectList) {
   var s_selectListing = "";
   var boxLength = o_SelectList.length;

	var count = 0;
	if (boxLength != 0) {
		for (k = 0; k < boxLength; k++) {
			if (count == 0) {
			   if (o_SelectList[k].selected == true) {
				   //alert("Selected Value 1:\r\n" + o_SelectList.options[k].text);
				   s_selectListing = k
				   count++;
			   }
			}
			else {
				if (o_SelectList[k].selected == true) {
				   //alert("Selected Value 2:\r\n" + o_SelectList.options[k].text);
				   s_selectListing = s_selectListing + ";" + k;
				   count++;
				}
			}
		}
	}
   return s_selectListing;
}


function getCookieVal (offset) {  
	var endstr = document.cookie.indexOf (";", offset);  
	if (endstr == -1) { endstr = document.cookie.length; }
	return unescape(document.cookie.substring(offset, endstr));
}


function GetCookie (name) {  
	var arg = name + "=";  
	var alen = arg.length;  
	var clen = document.cookie.length;  
	var i = 0;  
	while (i < clen) {    
		var j = i + alen;    
		if (document.cookie.substring(i, j) == arg) return getCookieVal (j);    
		i = document.cookie.indexOf(" ", i) + 1;    
		if (i == 0) break;   
	}  

	return null;
}


function SetCookie (name, value) {  
	var argv = SetCookie.arguments;  
	var argc = SetCookie.arguments.length;  
	var expires = (argc > 2) ? argv[2] : null;  
	var path = (argc > 3) ? argv[3] : null;  
	var domain = (argc > 4) ? argv[4] : null;  
	var secure = (argc > 5) ? argv[5] : false;  
	document.cookie = name + "=" + escape (value) + 
	((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + 
	((path == null) ? "" : ("; path=" + path)) +  
	((domain == null) ? "" : ("; domain=" + domain)) +    
	((secure == true) ? "; secure" : "");
}

function setMultiSelect(v_SelectList, v_formName, v_element) {
	var selectedArray = v_SelectList.split(';');
	for (j=0; j<selectedArray.length; j++) {
		document[v_formName].elements[v_element].options[selectedArray[j]].selected = true;
	}   
}



function cookieForms() {  
	var mode = cookieForms.arguments[0];
	for(f=1; f<cookieForms.arguments.length; f++) {
		formName = cookieForms.arguments[f];
		
		if(mode == 'open') {	
			cookieValue = GetCookie('saved_'+formName);
			if(cookieValue != null) {
				var cookieArray = cookieValue.split('#cf#');
				//alert("Cookie Array" + cookieArray);
				if(cookieArray.length == document[formName].elements.length) {
					for(i=0; i<document[formName].elements.length; i++) {
					
						if(cookieArray[i].substring(0,6) == 'select') { 
						    //alert("Complete Element: "+cookieArray[i]);
						    //alert("Value: "+cookieArray[i].substring(6, cookieArray[i].length) )
							document[formName].elements[i].options.selectedIndex = cookieArray[i].substring(6, cookieArray[i].length);
						}
						
						else if(cookieArray[i].substring(0,6) == 'selecM') { 
						    //alert("Multi Complete Element: "+cookieArray[i]);
						    //alert("Multi Value: "+cookieArray[i].substring(6, cookieArray[i].length) )
						    if (cookieArray[i].substring(6, cookieArray[i].length).length > 0 ) {
								setMultiSelect(cookieArray[i].substring(6, cookieArray[i].length), formName, i);
							}	
						}
						
						else if((cookieArray[i] == 'cbtrue') || (cookieArray[i] == 'rbtrue')) { 
							document[formName].elements[i].checked = true;
						}
						else if((cookieArray[i] == 'cbfalse') || (cookieArray[i] == 'rbfalse')) { 
							document[formName].elements[i].checked = false;
						}
						else { 
							document[formName].elements[i].value = (cookieArray[i]) ? cookieArray[i] : ''; 
						}
					}
				}
			}
		}


		if(mode == 'save') {	
			cookieValue = '';
			for(i=0; i<document[formName].elements.length; i++) {
				fieldType = document[formName].elements[i].type;
				fieldName = document[formName].elements[i].name;
				if(fieldType == 'password') { passValue = ''; }
				else if(fieldType == 'checkbox') { passValue = 'cb'+document[formName].elements[i].checked; }
				else if(fieldType == 'radio') { passValue = 'rb'+document[formName].elements[i].checked; }
				else if(fieldType == 'select-one') { 
					passValue = 'select'+document[formName].elements[i].options.selectedIndex;
				    //alert ("Select 1 Field Name:" +fieldName+"/"+passValue)
				}
				
				else if(fieldType == 'select-multiple')	{ 
				    //testValue = getSelectedIndex(document[formName].elements[i])
				    //alert ("Select Multi Name/Values:" +fieldName+"/"+testValue)
					passValue = 'selecM'+getSelectedIndex(document[formName].elements[i]);
					
				}
				
				else { 
					passValue = document[formName].elements[i].value;
				}
				cookieValue = cookieValue + passValue + '#cf#';
			}

			cookieValue = cookieValue.substring(0, cookieValue.length-4); // Remove last delimiter
			SetCookie('saved_'+formName, cookieValue, exp);		
		}	
	}
}

