var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1) endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
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;
}
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" : "");
}
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval = GetCookie(name);
if (cval != null) document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
}
var expDays = 360;
var exp = new Date();
exp.setTime(exp.getTime() + (expDays*24*60*60*1000));
if (FormSaveRestore.arguments.lenght<3) return;
var mode=FormSaveRestore.arguments[0];
var cookieName=FormSaveRestore.arguments[1];
for(f=2; f<FormSaveRestore.arguments.length; f++) {
var formName=FormSaveRestore.arguments[f];
if (mode=='restore') {
cookieValue=GetCookie(cookieName+'_'+formName);
if (cookieValue!=null) {
var cookieArray=cookieValue.split('#cf#');
if (cookieArray.length==document[formName].elements.length) {
for(i=0; i<document[formName].elements.length; i++) {
if (cookieArray[i].substring(0,6)=='select') {
document[formName].elements[i].options.selectedIndex=cookieArray[i].substring(7, cookieArray[i].length-1);
} 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] : '';
}
}
}
}
} else if (mode=='save') {
cookieValue='';
for(i=0; i<document[formName].elements.length; i++) {
fieldType=document[formName].elements[i].type;
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') { 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);
SetCookie(cookieName+'_'+formName, cookieValue, exp);
} else if (mode=='delete') {
DeleteCookie(cookieName+'_'+formName);
} else {
alert('Invalid directive for FormSaveRestore!\nUse: FormSaveRestore("cookie_name", "save"|"restore", form_name);');
}
}
}