function fieldFromCookie(fieldName, cookieName, defValue) { var savedFields = getCookie("saved"); if (savedFields != null) { oldval = ExtractField(cookieName, ',', savedFields); if (oldval != null) defValue = oldval; } if (defValue != null) document.getElementById(fieldName).value = defValue; } function rememberField(fieldName, cookieName) { var oldval = document.getElementById(fieldName).value; var savedFields = getCookie("saved"); savedFields = ReplaceField(cookieName, ',', savedFields, oldval); setCookie("saved", savedFields, expireDate); } function recentFromSelect(event) { var selector; // Find event object: if(!event) event = window.event; if(!event) return; // Find event target (input element): selector = event.srcElement || event.currentTarget || event.target; if(!selector) return; var newVal = selector.options[selector.selectedIndex].value; // alert("new val" + newVal); if (newVal == "") return; if (newVal == "Clear") { selector.options.length = 1; selector.options[selector.length] = new Option("Clear List", "Clear", false, false); selector.selectedIndex = 0; if (getCookie(selector.cookieName) != null) setCookie(selector.cookieName, "", null); return(false); } var fieldNameList = selector.formFieldList.split(","); var menuFieldAbbr = selector.formFieldAbbr.split(","); for (i = 0; i < fieldNameList.length; ++i) { var fieldName = selector.formPrefix + fieldNameList[i]; fieldVal = ExtractField(menuFieldAbbr[i], ',' ,newVal); if (fieldVal == null) fieldVal = ""; // alert("set val " + fieldVal); selector.form.elements[selector.formPrefix + fieldNameList[i]].value = fieldVal; } selector.selectedIndex = 0; } function buildRecentMenu(selector, title, cookieName, formFieldList, formFieldAbbr, formPrefix, maxHist) { selector.options[selector.length] = new Option(title, "", false, false); selector.onchange = recentFromSelect; selector.cookieName = cookieName; selector.formFieldList = formFieldList; selector.formFieldAbbr = formFieldAbbr; selector.formPrefix = formPrefix; selector.maxHist = maxHist; var menuFieldAbbr; recentlist = getCookie(cookieName); if (recentlist != null) { menuFieldAbbr = formFieldAbbr.split(","); recentlistEntries = recentlist.split("|"); for (i = 0; i < recentlist.length; ++i) { recentlistEntry = recentlistEntries[i]; if (recentlistEntry) { menuname = ExtractField(menuFieldAbbr[0], ',', recentlistEntry); if (menuname != null) selector.options[selector.length] = new Option(menuname, recentlistEntry, false, false); } } } selector.options[selector.length] = new Option("Clear List", "Clear", false, false); } function saveRecent(selector) { var fieldNameList = selector.formFieldList.split(","); var fieldAbbrList = selector.formFieldAbbr.split(","); cookieName = selector.cookieName; for (i = 0; i < fieldNameList.length; ++i) { var fieldName = selector.formPrefix + fieldNameList[i]; fieldVal = selector.form.elements[fieldName].value; if (i == 0) { uniqueName = fieldVal; if (uniqueName.length == 0) return; } if (fieldVal.length == 0) continue; newEntryVal = ((i == 0) ? "" : newEntryVal + ",") + fieldAbbrList[i] + "=" + escapeFieldSet(fieldVal); // alert("newEntryVal " + newEntryVal); } var nextCookieNum = 0; var newCookieVal = ""; var newName = uniqueName; for (i = 1; i < selector.length; ++i) { nextValue = selector.options[i].value; nextName = selector.options[i].text; if (newEntryVal != null) { // alert("set entry " + nextCookieNum + " to " + newEntryVal); if (newCookieVal.length + newEntryVal.length < 2048) { if (newCookieVal.length) newCookieVal += '|'; newCookieVal += newEntryVal selector.options[nextCookieNum+1].value = newEntryVal; selector.options[nextCookieNum+1].text = newName; nextCookieNum++; } } if (nextValue == "Clear") break; // alert(selector.options[i].text); if (nextName != uniqueName && i < selector.maxHist) { newEntryVal = nextValue; newName = nextName; } else newEntryVal = null; } // alert("ncNum " + nextCookieNum + " selector.length " + selector.length); if (nextCookieNum >= selector.length - 1) selector.options[selector.length] = new Option("Clear List", "Clear", false, false); setCookie(cookieName, newCookieVal, expireDate); } function ExtractField(fieldname, delim, dataStr) { var ni, ei; fieldname = fieldname + "="; if ((ni = dataStr.indexOf(fieldname)) >= 0 && (ni == 0 || dataStr.charAt(ni-1) == delim)) { ei = dataStr.indexOf(delim, ni); if (ei < 0) ei = dataStr.length; return unescapeFieldSet(dataStr.substring(ni + fieldname.length, ei)); } return null; } function ReplaceField(fieldname, delim, dataStr, newvalue) { var ni, ei; fieldname = fieldname + "=" newStr = ""; if (dataStr != null && (ni = dataStr.indexOf(fieldname)) >= 0 && (ni == 0 || dataStr.charAt(ni-1) == delim)) { ei = dataStr.indexOf(delim, ni); if (ni != 0) { if (ei < 0) --ni; newStr = dataStr.substring(0, ni); } if (ei > 0) newStr += dataStr.substring(ei+1); } else if (dataStr != null) newStr = dataStr; if (newStr.length != 0) { newStr += "," } newStr += fieldname + escapeFieldSet(newvalue); return newStr; } function setTextFromMenu(selector, fieldname) { var textfield = selector.form.elements[fieldname]; var newVal = selector.options[selector.selectedIndex].text; if (newVal.length != 0) { textfield.value = selector.options[selector.selectedIndex].text; selector.selectedIndex = 0; } } function escapeFieldSet(value) { value = value.replace(/-/g, "-0"); value = value.replace(/,/g, "-1"); value = value.replace(/=/g, "-2"); value = value.replace(/\|/g, "-3"); return(value); } function unescapeFieldSet(value) { value = value.replace(/-1/g, ","); value = value.replace(/-2/g, "="); value = value.replace(/-3/g, "|"); value = value.replace(/-0/g, "-"); return(value); } var expireDate = new Date("December 31, 2020"); // Set and get cookie values. Expiration date is optional function setCookie(name, value, expire, secure) { document.cookie = name + "=" + escape(value) + ((expire == null) ? "" : ("; expires=" + expire.toGMTString())) + ((secure == null) ? "" : "; secure"); } function getCookie(Name) { var search = Name + "=" if (document.cookie.length > 0) { // if there are any cookies offset = document.cookie.indexOf(search); if (offset != -1) { // if cookie exists offset += search.length; // set index of beginning of value end = document.cookie.indexOf(";", offset); // set index of end of cookie value if (end == -1) end = document.cookie.length; return unescape(document.cookie.substring(offset, end)); } } return null; }