/*==============================================================================

		Routines written by John Gardner - 2003 - 2005

		See www.braemoor.co.uk/software for information about more freeware
		available.

================================================================================

Routine to write a session cookie

		Parameters:
				cookieName				Cookie name
				cookieValue				Cookie Value
		
		Return value:
				true							Session cookie written successfullly
				false							Failed - persistent cookies are not enabled

	 e.g. if (writeSessionCookie("pans","drizzle") then
					 alert ("Session cookie written");
				else
					 alert ("Sorry - Session cookies not enabled");
*/

function writeSessionCookie (cookieName, cookieValue) {
	if (testSessionCookie()) {
		document.cookie = escape(cookieName) + "=" + escape(cookieValue) + "; path=/";
		return true;
	}
	else return false;
}

/*==============================================================================

Routine to get the current value of a cookie

		Parameters:
				cookieName				Cookie name
		
		Return value:
				false							Failed - no such cookie
				value							Value of the retrieved cookie

	 e.g. if (!getCookieValue("pans") then	{
					 cookieValue = getCoookieValue ("pans2);
				}
*/

function getCookieValue (cookieName) {
	var exp = new RegExp (escape(cookieName) + "=([^;]+)");
	if (exp.test (document.cookie + ";")) {
		exp.exec (document.cookie + ";");
		return unescape(RegExp.$1);
	}
	else return false;
}

/*==============================================================================

Routine to see if session cookies are enabled

		Parameters:
				None
		
		Return value:
				true							Session cookies are enabled
				false							Session cookies are not enabled

	 e.g. if (testSessionCookie())
					 alert ("Session coookies are enabled");
				else
					 alert ("Session coookies are not enabled");
*/

function testSessionCookie () {
	document.cookie ="testSessionCookie=Enabled";
	if (getCookieValue ("testSessionCookie")=="Enabled")
		return true 
	else
		return false;
}

/*==============================================================================

Routine to see of persistent cookies are allowed:

		Parameters:
				None
		
		Return value:
				true							Session cookies are enabled
				false							Session cookies are not enabled

	 e.g. if (testPersistentCookie()) then
					 alert ("Persistent coookies are enabled");
				else
					 alert ("Persistent coookies are not enabled");
*/

function testPersistentCookie () {
	writePersistentCookie ("testPersistentCookie", "Enabled", "minutes", 1);
	if (getCookieValue ("testPersistentCookie")=="Enabled")
		return true	 
	else 
		return false;
}

/*==============================================================================

Routine to write a persistent cookie

		Parameters:
				CookieName				Cookie name
				CookieValue				Cookie Value
				periodType				"years","months","days","hours", "minutes"
				offset						Number of units specified in periodType
		
		Return value:
				true							Persistent cookie written successfullly
				false							Failed - persistent cookies are not enabled
		
		e.g. writePersistentCookie ("Session", id, "years", 1);
*/			 

function writePersistentCookie (CookieName, CookieValue, periodType, offset) {

	var expireDate = new Date ();
	offset = offset / 1;
	
	var myPeriodType = periodType;
	switch (myPeriodType.toLowerCase()) {
		case "years": 
		 var year = expireDate.getYear();			
		 // Note some browsers give only the years since 1900, and some since 0.
		 if (year < 1000) year = year + 1900;			
		 expireDate.setYear(year + offset);
		 break;
		case "months":
			expireDate.setMonth(expireDate.getMonth() + offset);
			break;
		case "days":
			expireDate.setDate(expireDate.getDate() + offset);
			break;
		case "hours":
			expireDate.setHours(expireDate.getHours() + offset);
			break;
		case "minutes":
			expireDate.setMinutes(expireDate.getMinutes() + offset);
			break;
		default:
			alert ("Invalid periodType parameter for writePersistentCookie()");
			break;
	} 
	
	document.cookie = escape(CookieName ) + "=" + escape(CookieValue) + "; domain=.greatsource.com; expires=" + expireDate.toGMTString() + "; path=/";
}	 

/*==============================================================================

Routine to delete a persistent cookie

		Parameters:
				CookieName				Cookie name
		
		Return value:
				true							Persistent cookie marked for deletion
		
		e.g. deleteCookie ("Session");
*/		

function deleteCookie (cookieName) {

/*	if (getCookieValue (cookieName)) writePersistentCookie (cookieName,"Pending delete","years", -1);	 
*/	if (getCookieValue (cookieName)) writePersistentCookie (cookieName,getCookieValue(cookieName),"years", -1);	 
	return true;		 
}
