Cookie Functions

<HTML>
<HEAD>
<TITLE>
Cookie Functions</TITLE>

<SCRIPT>

// However, getCookie cannot distinguish between these and will return
// the first cookie that matches a given name. It is therefore
// recommended that you *not* use the same name for cookies with
// different paths. (Bear in mind that there is *always* a path
// associated with a cookie; if you don't explicitly specify one,
// the path of the setting document is used.)
//
// Function to return the value of the cookie specified by "name".
//
name - String object, the cookie name.
// returns - String object, the cookie value, or null if the cookie does not exist.

function getCookie(name) {
     var prefix = name + "=";
     var begin = document.cookie.indexOf(prefix);

     if (begin == -1) return null;

     var end = document.cookie.indexOf(";", begin);

     if (end == -1) end = document.cookie.length;

     return unescape(document.cookie.substring(begin + prefix.length, end));
}

// Function to create or update a cookie.
//
name - String object containing the cookie name.
//
value - String object containing the cookie value. May contain
// any valid string characters.
// [
expires] - Date object containing the expiration data of the cookie. If
// omitted or null, expires the cookie at the end of the current session.
// [
path] - String object indicating the path for which the cookie is valid.
// If omitted or null, uses the path of the calling document.
// [
domain] - String object indicating the domain for which the cookie is
// valid. If omitted or null, uses the domain of the calling document.
// [
secure] - Boolean (true/false) value indicating whether cookie transmission
// requires a secure channel (HTTPS).
//
// The first two parameters are required. The others, if supplied, must
// be passed in the order listed above. To omit an unused optional field,
// use null as a place holder. For example, to call
setCookie using name,
// value and path, you would code:
//
//
setCookie("myCookieName", "myCookieValue", null, "/");
//
// Note that trailing omitted parameters do not require a placeholder.
//
// To set a secure cookie for path "/myPath", that expires after the
// current session, you might code:
//
//
setCookie(myCookieVar, cookieValueVar, null, "/myPath", null, true);
//
// NOTE that it is possible to set multiple cookies with the same
// name but different (nested) paths. For example:
//
//
setCookie("color", "red", null, "/outer");
//
setCookie("color", "blue", null, "/outer/inner");

function setCookie(name, value, expires, path, domain, secure) {
     document.cookie = name + "=" + escape(value) +
                                    ((expires) ? "; expires=" + expires.toGMTString() : "") +
                                    ((path) ? "; path=" + path : "") +
                                    ((domain) ? "; domain=" + domain : "") +
                                    ((secure) ? "; secure" : "");
}

// deleteCookie now sets the expiration date to the earliest
// usable date (one second into 1970), and sets the cookie's value
// to null for good measure.
//
// Also, this version adds optional path and domain parameters to
// the
deleteCookie function. If you specify a path and/or domain
// when creating (setting) a cookie
, you must specify the same
// path/domain when deleting it, or deletion will not occur.
// Function to delete a cookie. (Sets expiration date to start of epoch)
//
name - String object containing the cookie name
//
path - String object containing the path of the cookie to delete. This MUST
// be the same as the path used to create the cookie, or null/omitted if
// no path was specified when creating the cookie.
//
domain - String object containing the domain of the cookie to delete. This MUST
// be the same as the domain used to create the cookie, or null/omitted if
// no domain was specified when creating the cookie.//

function deleteCookie(name, path, domain) {
     if (getCookie(name)) {
          document.cookie = name + "=" +
                                         ((path) ? "; path=" + path : "") +
                                         ((domain) ? "; domain=" + domain : "") +
                                        
"; expires=Thu, 01-Jan-70 00:00:01 GMT";
     }
}

</SCRIPT>

</HEAD>

<BODY>

<SCRIPT>

/********************* EXAMPLES *********************/

var expdate = new Date();
// 24 (hrs) * 60 (mins) * 60 (secs) * 1000 (msecs) => 24 hrs from now
expdate.
setTime(expdate.getTime() + (24 * 60 * 60 * 1000)); // when the cookie will expire

// OR
// get today's date (getDate()) and add one day (24 hrs)
// expdate.
setDate(expdate.getDate() + 1); // produces the same result as above

setCookie("cpath", "http://www.hidaho.com/colorcenter/", expdate);
setCookie"cname", "hIdaho Design ColorCenter", expdate);
setCookie("tempvar", "This is a temporary cookie.");
setCookie("ubiquitous", "This cookie will work anywhere in this domain", null, "/");
setCookie("paranoid", "This cookie requires secure communications", expdate, "/", null, true);
setCookie("goner", "This cookie must die!");

document.write(document.cookie + "<P>");

deleteCookie("goner");

document.write(document.cookie+ "<P>");

document.write("cpath = " + getCookie("cpath") + "<BR>");
document.
write("cname = " + getCookie("cname") + "<BR>");
document.
write("tempvar = " + getCookie("tempvar") + "<BR>");
document.
write("ubiquitous = " + getCookie("ubiquitous") + "<BR>");
document.
write("paranoid = " + getCookie("paranoid") + "<BR>");
document.
write("goner = " + getCookie("goner") + "<BR>");

</SCRIPT>

</BODY>

</HTML>

The results of the above script are shown below: