// FILE: cookies.js
// DESCRIPTION: JavaScript Cookie Functions
// LAST MODIFIED: 09/07/2007 8:25pm

// FUNCTIONS:
   // setCookie(string cookieName, string cookieValue, [Date date], [string path], [string domain], [boolean secure])
   // getCookie(string cookieName)
   // deleteCookie()

/////////////////////////////////////////////////////////////////////////////////////////////////////

/*
FUNCTION: setCookie(string cookieName, string cookieValue, [Date date], [string path], [string domain], [boolean secure])
DESCRIPTION: Creates a JavaScript cookie.
PARAMETERS:
   1. A string representing the cookie name.
   2. A string representing the cookie's value.
   3. Optional. A date object representing the cookie's expiration date.
   4. Optional. A string representing the cookie's path.
   5. Optional. A string representing the cookie's domain.
   6. Optional. A boolean value to set a secure cookie (Secure = 1).

DATE EXAMPLES:
var cookieDate = new Date();
var days_until_expiration = 5;
cookieDate.setDate(cookieData.getDate() + days_until_expiration);

var cookieDate = new Date('Month Day, Year);
var cookieDate = new Date('January 25, 2008');

var cookieDate = new Date('Month Day, Year HH:MM:SS');
var cookieDate = new Date('January 25, 2008 11:20:13');

var cookieDate = new Date(year, month, day, hours, minutes, seconds) ;
var cookieDate = new Date(2008, 0, 12, 23, 10, 26); MONTH IS ZERO-BASED.
*/

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" : "");
}

/////////////////////////////////////////////////////////////////////////////////////////////////////

/*
FUNCTION: getCookie(string cookieName)
DESCRIPTION: Returns the value of a cookie based on the cookie name.
PARAMETERS: A string representing the cookie's name.
RETURN VALUES: The value of the cookie or null if the cookie doesn't exist.
*/

function getCookie (name)
{
    var dcookie = document.cookie; 
    var cname = name + "=";
    var clen = dcookie.length;
    var cbegin = 0;
      while (cbegin < clen) 
      {
         var vbegin = cbegin + cname.length;
         if (dcookie.substring(cbegin, vbegin) == cname) 
         { 
             var vend = dcookie.indexOf (";", vbegin);
             if (vend == -1) vend = clen;
             return unescape(dcookie.substring(vbegin, vend));
         }
         cbegin = dcookie.indexOf(" ", cbegin) + 1;
         if (cbegin == 0) break;
      }
      return null;
}

/////////////////////////////////////////////////////////////////////////////////////////////////////

/*
FUNCTION: deleteCookie(string cookieName)
DESCRIPTION: Deletes a cookie.
PARAMETERS: A string representing the cookie's name.
RETURN VALUES: No return values.
*/

function deleteCookie(name)
{
   var cookieDate = new Date();
   cookieDate.setDate(cookieDate.getDate() - 1);
   setCookie(name, "", cookieDate);
}
