/*==============================================================================
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) + "; 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); 
return true; 
}
