
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;  
//alert("; expires=" + expires.toGMTString());
//alert("; path=" + path);
//alert("; domain=" + domain);
	document.cookie = name + "=" + escape (value) 
	+ ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) 
	+ ((path == null) ? "" : ("; path=" + path)) 
	+ ((domain == null) ? "" : ("; domain=" + domain)) 
	+ ((secure == true) ? "; secure" : "");
}

function dontSave(strID) {
	if ( document.getElementById(strID) )
		document.getElementById(strID).savethis = "no";
}

// cookieForms saves form content of a page.

// use the following code to call it:
//  <body onLoad="cookieForms('open', 'form_1', 'form_2', 'form_n')" onUnLoad="cookieForms('save', 'form_1', 'form_2', 'form_n')">

// It works on text fields and dropdowns in IE 5+
// It only works on text fields in Netscape 4.5

// use function dontSave to prevent specific inputs from being saved

function cookieForms() {  
	var argv = cookieForms.arguments;  
	var argc = cookieForms.arguments.length;  
	
	var mode = argv[0];
	
	var expDays = 100;
	var dtCookieFormsExpire = new Date(); 
	dtCookieFormsExpire.setTime(dtCookieFormsExpire.getTime() + (expDays*24*60*60*1000));
	
	for ( f=1; f < argc; f++ ) { // for each saved form
	
		formName = argv[f];
		
		if (formName == '') return;
		
		if(mode == 'open') {
			cookieValue = GetCookie('saved_'+formName);
			if(cookieValue != null) {
				var cookieArray = cookieValue.split('#cf#');
				iArrayElem = 0;
				iFrmLen = 0;
				for(i = 0; i < document[formName].elements.length; i++) {
					if ( document[formName].elements[i].savethis != 'no' ) iFrmLen++; // number of form elements that should have been saved
				}
				if ( cookieArray.length == iFrmLen ) { // if number of saved elements is same as number of form elements (can change if form was modified recently)
					for(i = 0; i < document[formName].elements.length; i++) { // for each form element of the current form
						if ( document[formName].elements[i].savethis != 'no' ) { // don't save form inputs with savethis=no.  use function dontSave()
							if ( cookieArray[iArrayElem].substring(0,6) == 'select' ) { 
								document[formName].elements[i].options.selectedIndex = cookieArray[iArrayElem].substring(6, cookieArray[iArrayElem].length); 
							}
							else if((cookieArray[iArrayElem] == 'cbtrue') || (cookieArray[iArrayElem] == 'rbtrue')) { 
								document[formName].elements[i].checked = true; 
							}
							else if((cookieArray[iArrayElem] == 'cbfalse') || (cookieArray[iArrayElem] == 'rbfalse')) { 
								document[formName].elements[i].checked = false; 
							}
							else { 
								fieldType = document[formName].elements[i].type;
								if ( !(fieldType == 'password' || fieldType == 'button' || fieldType == 'reset' || fieldType == 'submit' || fieldType == 'clear' || fieldType == 'hidden')) { 
									document[formName].elements[i].value = (cookieArray[iArrayElem]) ? cookieArray[iArrayElem] : ''; 
								}
							}
							iArrayElem++;
						} // end if form element's savethis != 'no'
					} // end for each form element
				} // if number of saved elements is same as number of form elements 
			}
			if ( getURLParameters("makeIdx") != "" ) 
			document.getElementById('make').selectedIndex = getURLParameters("makeIdx");
		}

		if ( mode == 'save' ) {	
			cookieValue = '';
			for(i = 0; i < document[formName].elements.length; i++) {
				if ( document[formName].elements[i].savethis != 'no' ) { // if savethis = 'no', then we don't save
					fieldType = document[formName].elements[i].type;
					if (fieldType == 'password' || fieldType == 'button' || fieldType == 'reset' || fieldType == 'submit' || fieldType == 'clear' || fieldType == 'hidden') { 
						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; 
					} 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, dtCookieFormsExpire);		
		}
	} // end for each saved form
}


function getURLParameters(strParameterName) {
	var sURL = window.document.URL.toString();
	var strValue = "";

	if(sURL.indexOf("?") > 0)
	{
		var strValue;
		
		var arrParams = sURL.split("?");
		
		var arrURLParams = arrParams[1].split("&");
		
		var arrParamNames = new Array(arrURLParams.length);
		var arrParamValues = new Array(arrURLParams.length);
		
		var i = 0;
		for ( i = 0; i < arrURLParams.length; i++ )
		{
			var sParam = arrURLParams[i].split("=");
			arrParamNames[i] = sParam[0];
			if (sParam[1] != "")
				arrParamValues[i] = unescape(sParam[1]);
			else
				arrParamValues[i] = "";
		}
		
		for ( i = 0; i < arrURLParams.length; i++ )
		{
			if ( strParameterName == arrParamNames[i] ) {
				strValue = arrParamValues[i];
			}
		}
	}

	return strValue;
}

