// JAVASCRIPT FUNCTIONS FOR READING/WRITING COOKIES

// This function writes out the form information to a cookie on the users
// local machine. It loops through the form and stores as name/value pairs

function writecookie(fForm, cCookieName) {
	var cookie=""
	var today = new Date()
	var expire = new Date()
	// expires in 1 year
	expire.setTime(today.getTime()+1000*60*60*24*365)
	for (var i=0; i<fForm.elements.length; i++) {
		if (fForm.elements[i].storeincookie) {
			switch (fForm.elements[i].type) {
				case "text":
				case "hidden":
				case "textarea":
					cookie=cookie+"&"+escape(fForm.elements[i].name)+"="+escape(fForm.elements[i].value)
					break;
				case "select-one":
					cookie=cookie+"&"+escape(fForm.elements[i].name)+"="+escape(fForm.elements[i].options[fForm.elements[i].selectedIndex].value)
					break;
				case "select-multiple":
					for (var j=0; j < fForm.elements[i].length; j++) {
						if (fForm.elements[i].options[j].selected==true) {
							cookie=cookie+"&"+escape(fForm.elements[i].name)+"="+escape(fForm.elements[i].options[j].value)
						}
					}
				case "checkbox":
					cookie=cookie+"&"+escape(fForm.elements[i].name)+"="+escape(fForm.elements[i].checked)
					break;
				case "radio":
					if (fForm.elements[i].checked == true) {
						cookie=cookie+"&"+escape(fForm.elements[i].name)+"="+escape(fForm.elements[i].value)
					}
					break;
			}
		}
	}
	cookie=cookie.substr(1)
	document.cookie = cCookieName +"=" + cookie + "; expires=" + expire.toGMTString()
	return
}

// This function reads in the information on the cookie, and sets the
// form with the correct details.

function readcookie(fForm, cCookieName) {
	MakeCookieArray(GetCookie(cCookieName));
	for (var i=0; i < ckArray.length; i++) {
		var leng = ckArray[i].indexOf("=")
		if (leng >= 0) {
			var field = unescape(ckArray[i].substr(0,leng))
			var val = unescape(ckArray[i].substr(leng+1))
			var thisfield = fForm[field]
			if (typeof(thisfield)=="undefined") {
			} else {
				switch (thisfield.type) {
					case "text":
					case "hidden":
					case "textarea":
						thisfield.value = val
						break;
					case "select-one":
						for (var j=0; j<thisfield.length; j++) {
							if (thisfield.options[j].value==val) {
								thisfield.selectedIndex=j
								j=thisfield.length
							}
						}		
						break;
					case "select-multiple":
						for (var j=0; j<thisfield.length; j++) {
							if (thisfield.options[j].value==val) {
								thisfield.options[j].selected=true
								j=thisfield.length
							}
						}		
						break;
					case "radio":
						for ( var j=0; j<fForm[field].length; j++) {
							if (fForm[field][j].value==val) {
								fForm[field][j].checked = true;
							}
						}
						break;					
				}
			}
		}
	}
}

// Credit to inglis_geoff@Yahoo.com - sample script
//Get the cookie from a list of possible cookies.
function GetCookie (CookieName) {
  var cname = CookieName + "=";
  var i = 0;
  while (i < document.cookie.length) {
    var j = i + cname.length;
    if (document.cookie.substring(i, j) == cname){
	var leng = document.cookie.indexOf (";", j);
	if (leng == -1) leng = document.cookie.length;
	return document.cookie.substring(j, leng);
    }
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0) break; //thats -1 plus 1, duh.
  }
  return "*";
}

//Parse Big  Cookie. A CookieCutter if you will.
function MakeCookieArray(cookieValue) {
  var i = 0,indx = 0, citemlen =0;
  ckArray = new Array();
   if ( cookieValue == null ) {ckArray[0]= "*";return}//Data has expired or never entered.
   if ( cookieValue == "*"  ) {ckArray[0]= "*";return}//Data has expired or never entered.
  while (citemlen < cookieValue.length) {
    citemlen=(cookieValue.indexOf("&", indx)>0)
	     ?cookieValue.indexOf("&", indx):cookieValue.length;
    ckArray[i]= cookieValue.substring(indx, citemlen); i++;
    indx = citemlen + 1;
  }
}

