// Cookie functions (adapted from functions found at www.webreference.com):
// -----------------------------------------------------------------------------------------------
// setCookie(pName, pValue, pExpires, pPath, pDomain, pSecure)
// pName - name of the cookie
// pValue - value of the cookie
// [pExpires] - expiration date of the cookie (defaults to end of current session)
// [pPath] - path for which the cookie is valid (defaults to path of calling document)
// [pDomain] - domain for which the cookie is valid (defaults to domain of calling document)
// [pSecure] - Boolean value indicating if the cookie transmission requires a secure transmission
// * an argument defaults when it is assigned null as a placeholder
// * a null placeholder is not required for trailing omitted arguments
function setCookie(pName, pValue, pExpires, pPath, pDomain, pSecure) 
{
  var curCookie = pName + "=" + escape(pValue) +
      ((pExpires) ? "; expires=" + pExpires.toGMTString() : "") +
      ((pPath) ? "; path=" + pPath : "") +
      ((pDomain) ? "; domain=" + pDomain : "") +
      ((pSecure) ? "; secure" : "");
  document.cookie = curCookie;
}

// getCookie(pName)
// pName - name of the desired cookie
// * return string containing value of specified cookie or null if cookie does not exist
function getCookie(pName)
{
  var dc = document.cookie;
  var prefix = pName + "=";
  var begin = dc.indexOf("; " + prefix);
  
  if (begin == -1) 
  {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } 
  else
    begin += 2;
  
  var end = document.cookie.indexOf(";", begin);
  
  if (end == -1)
    end = dc.length;
  
  return unescape(dc.substring(begin + prefix.length, end));
}

// deleteCookie(pName, pPath, pDomain)
// pName - name of the cookie
// [pPath] - path of the cookie (must be same as path used to create cookie)
// [pDomain] - domain of the cookie (must be same as domain used to create cookie)
// * path and domain default if assigned null or omitted if no explicit argument proceeds
function deleteCookie(pName, pPath, pDomain)
{
  if (getCookie(pName)) 
  {
    document.cookie = pName + "=" + 
    ((pPath) ? "; path=" + pPath : "") +
    ((pDomain) ? "; domain=" + pDomain : "") +
    "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}

// fixDate(pDate)
// pDate - any instance of the Date object
// * hand all instances of the Date object to this function for "repairs"
function fixDate(pDate) 
{
  var base = new Date(0);
  var skew = base.getTime();

  if (skew > 0)
    pDate.setTime(pDate.getTime() - skew);
}
