/*******************************************************************
Genral purpose JavaScript functions for working with cookies.

Examples:

var expdate = new Date ();
expdate.setTime (expdate.getTime() + (24 * 60 * 60 * 1000)); // 24 hrs from now 
setCookie ("ccpath", "http://www.hidaho.com/colorcenter/", expdate);
setCookie ("ccname", "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);
*******************************************************************/

/*******************************************************************
getCookie()
Function to return the value of the cookie specified by "name". The function returns a string object containing the cookie value, or null if the cookie does not exist.

Arguments:
name = String object containing the cookie name.
*******************************************************************/
function getCookie (name) 
{
  var arg = name + "=";
  var alen = arg.length;
  var clen = document.cookie.length;
  var i = 0;
  while (i < clen) {
    var j = i + alen;
    if (document.cookie.substring(i, j) == arg)
      return getCookieVal (j);
	i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0) break; 
  }
  return null;
}


/*******************************************************************
getCookieVal()

Helper function for getCookie()
*******************************************************************/
function getCookieVal (offset) 
{
  var endstr = document.cookie.indexOf (";", offset);
  if (endstr == -1)
    endstr = document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr));
}

/*******************************************************************
setCookie()
Function to create or update a cookie.

Arguments:
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. 
*******************************************************************/
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()
Function to delete a cookie. (Sets expiration date to start of epoch)

Arguments:
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";
  }
}


