/* **********************************************************************
Site:					www.hamlet-berlin.de
Filename:			cookies.js
Description:	remember form content with cookies
Author:				© 2006 Sebastian Becker (sebastian.becker@berlin.de)
********************************************************************** */

if(!d) var d = document;

// set cookie prefix
var cookie_prefix ="hamlet";

// set expiration date (GMT)
// with an expiration date in the future the cookie is saved across browser sessions
// without expiration date the cookie expires when the browser closes (buggy)
var today = new Date();
var expDate = new Date(today.getTime() + 60*60*1000); // plus 4 weeks = + 4*7*24*60*60*1000
expDate = expDate.toGMTString();
var expDate1 = new Date(today.getTime() + 12*4*7*24*60*60*1000); // plus 1 year to store user language
expDate1 = expDate1.toGMTString();


// set cookie
function setCookie(name,value,time,path,domain)
{
val = getCookie(name);
if((val!=null)||((val==null)&&(value!=""))) {
if(val!=value) {
// alert("getCookie("+name+"): "+val+"\n"+"value: "+value);
str = name + "=" + escape(value);
expString = "; expires=";if(time!=1){expString += expDate;}else{expString += expDate1;}
str+= expString;
str+= "; path="
str+= (path==null)?"/":escape(path);
str+= ((domain==null)?"":"; domain="+ domain);
d.cookie = str;
// alert(str);
}
}
}


// get cookie
// returns value of cookie or null if cookie does not exist
function getCookie(name)
{
var result = null;
var myCookie = " " + d.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));
}
// alert(result);
return result;
}


// delete cookie
function deleteCookie(name,path,domain)
{
if(getCookie(name)) {
// alert(name);
d.cookie = name + "=" +
((path)?"; path=" + path:"") +
((domain)?"; domain=" + domain:"") +
"; expires=Thu, 01-Jan-70 00:00:01 GMT";
}
}


function deleteAllCookies()
{
for(i=0;i<d.forms.length;i++) {
for(j=0;j<d.forms[i].elements.length;j++) {
cookie_name = cookie_prefix + "_" + d.forms[i].name + "_" + d.forms[i].elements[j].name;
if(cookie_name!=cookie_prefix+"counter")deleteCookie(cookie_name);
}
}
}


function saveValue(element)
{
if(d.images) // only JavaScript 1.1+ browsers
{
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(k=0;k<element.length;k++)
if (element.options[k].selected)
val += k+" ";
}
else if(element.type == "checkbox") {
val = element.checked;
}
// alert(cookie_prefix + "_" + element.form.name + "_" + element.name)
// alert(val);
setCookie(cookie_prefix + "_" + element.form.name + "_" + element.name, val);
}
}


function saveValueNonIE(element)
{
if(!d.all)saveValue(element);
}


function saveValueIE(element)
{
if(d.all)saveValue(element);
}


function eraseAllValues()
{

}


function setFocus()
{
for(frm=0;frm<d.forms.length;frm++) {
for(fld=0;fld<d.forms[frm].elements.length;fld++) {
// if it's a text field, textarea or password field
if((d.forms[frm].elements[fld].type.indexOf("text")!=-1)||(d.forms[frm].elements[fld].type.indexOf("password")!=-1)) {
// if the field is empty
if((d.forms[frm].elements[fld].value == "")||(d.forms[frm].elements[fld].type.indexOf("password")!=-1)) {
// set focus on field
d.forms[frm].elements[fld].focus(); // alert("forms["+frm+"] elements["+fld+"]");
// select text
d.forms[frm].elements[fld].select();
return true;
}
}
}
}
return true;
}


function storedValues2()
{
if(d.images) {
for(i=0;i<d.forms.length;i++) {
for(j=0;j<d.forms[i].elements.length;j++) {
cookie_name = cookie_prefix + "_" + d.forms[i].name + "_" + d.forms[i].elements[j].name;
val = getCookie(cookie_name);
if(val) {
if((d.forms[i].elements[j].type=="text")||(d.forms[i].elements[j].type=="textarea")){
d.forms[i].elements[j].value = val;
}

else if(d.forms[i].elements[j].type.indexOf("select")!=-1) {
d.forms[i].elements[j].selectedIndex = val; // -1
// while(((pos = val.indexOf(" "))!=-1)&&(val.length>1)) {
// sel = parseInt(val.substring(0,pos));
// val = val.substring(pos+1,val.length);
// if(sel<d.forms[i].elements[j].length)d.forms[i].elements[j].options[sel].selected = true;
// }
// alert(val); // test
}

else if(d.forms[i].elements[j].type=="checkbox") {
if(val=="true") {d.forms[i].elements[j].checked = true;} else {d.forms[i].elements[j].checked = false;}
}

else if(d.forms[i].elements[j].type=="radio") {
// alert(d.forms[i].elements[j].value);

// var radio=document.forms[i].elements[j];
// for(var k=0;k<radio.length;k++) {
// radio[k].checked=radio[k].value==val;
// }

if(d.forms[i].elements[j].value==val)d.forms[i].elements[j].checked = true;
}

}
}
}
}
}


function storedValues()
{
// add some delay
setTimeout("storedValues2();setFocus()",400);
// saveLang(); // language cookie
}


// count the pages this user visited
var visits = getCookie(cookie_prefix + "counter");
// if the cookie was not found, this is the first visit
if(isNaN(parseInt(visits))) {
visits = 1; // the value for the new cookie
} else {
// increment the counter
visits = parseInt(visits) + 1;
}

// set the counter cookie
setCookie(cookie_prefix + "counter", visits);

// alert("visited page: " + visits);