// Browser cookies
//
// Get the value stored in a cookie
// 
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 "";
}

//
// Store value 'value' in cookie using the key 'name'
//
function SetCookie(name, value)
{
	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" : "");
}

//
// Delete the cookie when done
//
function DeleteCookie(name)
{
	var exp = new Date();
	exp.setTime (exp.getTime() - 1);
	document.cookie = name + "=; expires=" + exp.toGMTString();
}

function getCookieVal(offset)
{
	var endstr = document.cookie.indexOf(";", offset);
	if (endstr == -1)
		endstr = document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
}

//
// Verify that the cookie exists and that it hasn't expired.
//
function validateCookie(name) {
	var cookie = GetCookie(name).split('&');
	if (cookie) {
		var payload = cookie[1].split('&');
		payload[0] = payload[0] + '000';
		var epoch = new Date;
		epoch = epoch.getTime();
		if (Number(payload[0]) < Number(epoch)) {
			return false;
		}
	} else {
		return false;
	}
	return true;
}
