function getCookieVal (offset) {  
	var endstr = document.cookie.indexOf (";", offset);  
	if (endstr == -1)    
	endstr = document.cookie.length;  
	return unescape(document.cookie.substring(offset, endstr));
}


function getCookie (name) {  
	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;
}

//extra variables: expires,path,domain,secure
function setCookie (name, value) { 
	var argv = setCookie.arguments;  
	var argc = setCookie.arguments.length;  
	var expires = (argc > 2) ? argv[2] : in10years();  
	var path = (argc > 3) ? argv[3] : '/';  
	var domain = (argc > 4) ? argv[4] : null;  
	var secure = (argc > 5) ? argv[5] : false;  
	//clear cookie
	document.cookie = name + "=" + escape (null) + "; expires=" + new Date(1999,0,1).toGMTString();  
	//set cookie
	document.cookie = name + "=" + escape (value) + 
		((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + 
		((path == null) ? "" : ("; path=" + path)) +  
		((domain == null) ? "" : ("; domain=" + domain)) +    
		((secure == true) ? "; secure" : "");
		
	 return getCookie(name) != null; // return false if the cookie was refused
}

function delCookie(name) { // use: delCookie("name");
	var d = new Date();
	var min10 = d.getTime() + (-10 * 365 * 24 * 60 * 60 * 1000);
	d.setTime(min10);
	setCookie(name, null,d);
}

// Function to save a field.
function saveField(obj) {
	var cookie_value = '';
	var objType = new String(obj.type);
	
	switch(objType.toLowerCase()) {
		case "checkbox" :
			if (obj.checked) setCookie(obj.name,'1');
			else setCookie(obj.name,'0');
			break;
		case "undefined" :
			// a.k.a. radio field.
			for (var i = 0; i < obj.length; i++) {
				if (obj[i].checked) setCookie(obj[i].name,'1');
			}
			break;
		case "select-one" :
			setCookie(obj.name,	obj.options[obj.selectedIndex].value);
			break;
		case "select-multiple" :
			for (var i = 0; i < obj.options.length; i++) {
				if (obj.options[i].selected) cookie_value += '+' + i
			}
			setCookie(obj.name,cookie_value);
			break;
		default :
			// We assume all other fields will have
			// a valid obj.name and obj.value
			setCookie(obj.name, obj.value);
	}
	return 1;
}

// Function to retrieve a field.
function retrieveField(obj) {

	var objName = new String(obj.name);
	if (objName.toLowerCase()=='undefined') objName=obj[0].name;
	alert(objName);
	var real_value = getCookie(objName);
	var objType = new String(obj.type);
	
	switch(objType.toLowerCase()) {
		case "checkbox" :
			if (real_value == '1') obj.checked = 1
			else obj.checked = 0
			break;
		case "undefined" :
			for (var i = 0; i < obj.length; i++)
				if  (obj[i].value == real_value) obj[i].checked = true;
			break;
		case "select-one" :
			for (var j=0; j < obj.options.length; j++){
				if (obj.options[j].value==real_value)
					obj.options[j].selected=true;
			}
			break;
		case "select-multiple" :
			for (var i = 0; i < obj.options.length; i++) {
				if ((real_value.indexOf('+' + i)) > -1)
					obj.options[i].selected = 1;
				else
					obj.options[i].selected = 0;
			}
			break;
		default :
			obj.value = real_value;
			break;
	}
	return 1;
}

function in10years(){
	var d = new Date();
	var in10 = d.getTime() + (10 * 365 * 24 * 60 * 60 * 1000);
	d.setTime(in10);
	return d;
}

