//relies on md5 routines (make sure they're loaded first)

var never = new Date()
never.setTime(never.getTime() + 2000*24*60*60*1000);

// name is a string of the name of your cookie
// value is the value corresponding to name
function SetCookie(name, value) {
 var expString = "; expires=" + never.toGMTString();
 document.cookie = name + "=" + escape(value) + expString;
}

// returns value of cookie or null if cookie does not exist
function GetCookie(name) {
	var result = null;
	var myCookie = " " + document.cookie + ";";
	var searchName = " " + name + "=";
	var startOfCookie = myCookie.indexOf(searchName);
	var endOfCookie;
	if (startOfCookie != -1) {
		startOfCookie += searchName.length; // skip past name of cookie
		endOfCookie = myCookie.indexOf(";", startOfCookie);
		result = unescape(myCookie.substring(startOfCookie, endOfCookie));
	}
	return result;
}

use_cookies = "yes";

var skipSave = false;
function saveMD5(element, name) {
	var z, val;
	if (document.images && use_cookies == "yes" && !skipSave) {
		if ((element.type == "text") || (element.type == "password") || (element.type == "textarea") || (element.type == "radio")) {
			val = element.value;
		}
		else if (element.type.indexOf("select") != -1) {
			val = "";
			for (z = 0; z < element.length; z++)
				if (element.options[k].selected)
				val += z + " ";
		}
		else if (element.type == "checkbox") {
			val = element.checked;
		}
		SetCookie("mem_md5_" + name, hex_md5(val));
	}
}

function saveValue(element, name) {
	var z, val;
	if (document.images && use_cookies == "yes") {
		if ((element.type == "text") || (element.type == "password") || (element.type == "textarea") || (element.type == "radio")) {
			val = element.value;
		}
		else if (element.type.indexOf("select") != -1) {
			val = "";
			for(z=0; z < element.length; z++)
				if (element.options[z].selected)
				val += z + " ";
		}
		else if (element.type == "checkbox") {
			val = element.checked;
		}
		SetCookie("mem_" + name, val);
	}
}

function getMD5(name) {
	var cookie_name, val;
	cookie_name = "mem_md5_" + name;
	val = GetCookie(cookie_name);
	return val;
}
function getValue(name) {
	var cookie_name, val;
	cookie_name = "mem_" + name;
	val = GetCookie(cookie_name);
	if (val == null) {
		val = "";
	}
	return val;
}
function setElement(element, name) {
	var cookie_name, val;
	cookie_name = "mem_" + name;
	val = GetCookie(cookie_name);
	if (val) {
		if ((element.type == "text") || (element.type == "password") || (element.type == "textarea")) {
			element.value = val;
		}
		else if (element.type.indexOf("select") != -1) {
			element.selectedIndex = -1;
			while (((pos = val.indexOf(" ")) != -1) && (val.length > 1)) {
				sel = parseInt(val.substring(0, pos));
				val = val.substring(pos + 1, val.length);
				if (sel < element.length) {
					element.options[sel].selected = true;
				}
			}
		}
		else if (element.type == "checkbox") {
			element.checked = val;
		}
		else if (element.type == "radio") {
			if (element.value == val) {
				element.checked = true;
			}
		}
	}
}

function restoreValues() {
	var x, y;
	if (document.images) {
		for (x=0; x < document.forms.length; x++) {
			for (y = 0; y < document.forms[i].elements.length; y++) {
				setElement(document.forms[x].elements[y], document.forms[x].elements[y].name);
			}
		}
	}
}
//AddValue(loadMethods, 'restoreValues');
//window.onload = restoreValues;
