/* ===============================================================================================
			Functions used for working with Cookies
=============================================================================================== */
var GetCookie = function(name)
{
	var re = new RegExp("(^|;) ?" + name + "=([^;]*)(;|$)");
	var results = document.cookie.match(re);

	if (results)
	{
		return unescape(results[2]);
	}
	else
	{
		return null;
	}
}

var SetCookie = function(name, value, expires, path, domain, secure)
{
	if (expires != null && typeof(expires) == "number")
	{
		// expires is number of days
		var expireT = 3600000*24*expires;
		expires = new Date();
		expires.setTime(expires.getTime() + expiresT);
	}
	else if (expires != null && typeof(expires) == "object" && expires.toGMTString)
	{
		// assume expires is a date
	}
	else
	{
		expires = null
	}
	document.cookie = name + "=" + escape (value) +
	((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
	((path == null) ? "" : ("; path=" + path)) +
	((domain == null) ? "" : ("; domain=" + domain)) +
	((secure == true) ? "; secure" : "");
}

var DeleteCookie = function(name, path, domain, secure)
{
	var exp = new Date();
	exp.setTime(exp.getTime() - 10);
	SetCookie(name, "", exp, path, domain, secure);
}

var getCookieStruct = function(name)
{
	var cs = new Object();
	var cv = GetCookie(name);

	if (cv && cv.length)
	{
		var entries = cv.split("|");
		var pair;
		for (var i = 0; i < entries.length; i++)
		{
			pair = entries[i].split("@");
			cs[pair[0]] = pair[1];
		}
	}
	return cs;
}

var setCookieStruct = function(name, cs)
{
	var cv = "";
	for (var entry in cs)
	{
		if (cv.length)
		{
			cv = cv + "|" + entry + "@" + cs[entry];
		}
		else
		{
			cv = cv + entry + "@" + cs[entry];
		}
	}
	var expiresParam = (argc > 2) ? argv[2] : null;
	SetCookie(name, cv, expiresParam);
}

var verifyCookiesEnabled = function()
{
	var result = areCookiesEnabled();
	if (!result)
	{
		document.location.replace("/errorCookie.cfm");
	}
	return result;
}

var areCookiesEnabled = function()
{
	var result = true;
	var testValue=Math.floor(1000*Math.random());
	SetCookie('AreCookiesEnabled', testValue);
	if (testValue != GetCookie('AreCookiesEnabled'))
	{
		result = false;
	}
	else
	{
		DeleteCookie('AreCookiesEnabled');
	}
	return result;
}
