// This next little bit of code tests whether the user accepts cookies.
var WM_acceptsCookies = false;

if(document.cookie == '') {
  document.cookie = 'WM_acceptsCookies=yes'; // Try to set a cookie.
    
  if(document.cookie.indexOf('WM_acceptsCookies=yes') != -1) {
    WM_acceptsCookies = true; 
  } // If it succeeds, set variable
} else { // there was already a cookie
  WM_acceptsCookies = true;
}

function WM_setCookie (name, value, hours, path, domain, secure) {
  if (WM_acceptsCookies) { // Don't waste your time if the browser doesn't accept cookies.
    var not_NN2 = (navigator && navigator.appName 
    && (navigator.appName == 'Netscape') 
    && navigator.appVersion 
    && (parseInt(navigator.appVersion) == 2))?false:true;

    if (!hours) 
      hours = 4350; // six months

    if(hours && not_NN2) { // NN2 cannot handle Dates, so skip this part
      if ( (typeof(hours) == 'string') && Date.parse(hours) ) { // already a Date string
        var numHours = hours;
      } else if (typeof(hours) == 'number') { // calculate Date from number of hours
        var numHours = (new Date((new Date()).getTime() + hours*3600000)).toGMTString();
      }
    }

    document.cookie = name + '=' + escape(value) + ((numHours)?(';expires=' + numHours):'') + ((path)?';path=' + path:'') + ((domain)?';domain=' + domain:'') + ((secure && (secure == true))?'; secure':''); // Set the cookie, adding any parameters that were specified.
  }
} // WM_setCookie

function WM_setSearchCookie (name, value, hours, path, domain, secure) {
  if (WM_acceptsCookies) { // Don't waste your time if the browser doesn't accept cookies.
    var not_NN2 = (navigator && navigator.appName 
    && (navigator.appName == 'Netscape') 
    && navigator.appVersion 
    && (parseInt(navigator.appVersion) == 2))?false:true;

    if (!hours) 
      hours = 4350; // six months

    if(hours && not_NN2) { // NN2 cannot handle Dates, so skip this part
      if ( (typeof(hours) == 'string') && Date.parse(hours) ) { // already a Date string
        var numHours = hours;
      } else if (typeof(hours) == 'number') { // calculate Date from number of hours
        var numHours = (new Date((new Date()).getTime() + hours*3600000)).toGMTString();
      }
    }

    document.cookie = name + '=' + value + ((numHours)?(';expires=' + numHours):'') + ((path)?';path=' + path:'') + ((domain)?';domain=' + domain:'') + ((secure && (secure == true))?'; secure':''); // Set the cookie, adding any parameters that were specified.
  }
} // WM_setCookie
function WM_setPromoCookie(name,value,expiration,domain) {
  if (WM_acceptsCookies) { // Don't waste your time if the browser doesn't accept cookies.
    var not_NN2 = (navigator && navigator.appName
    && (navigator.appName == 'Netscape')
    && navigator.appVersion
    && (parseInt(navigator.appVersion) == 2))?false:true;
    
    if (!expiration)
      expiration = (new Date((new Date()).getTime() + hours*3600000)).toGMTString(); // six months
    
    if(expiration && not_NN2) { // NN2 cannot handle Dates, so skip this part
      if ( (typeof(expiration) == 'string') && Date.parse(expiration) ) { // already a Date string
        var exp_time = expiration;
      } else if (typeof(expiration) == 'number') { // parse the milliseconds since epoch time
        var exp_time = (new Date(expiration)).toGMTString();
      }
    }
  document.cookie = name + '=' + escape(value) + ';expires=' + exp_time + ';domain=' + escape(domain);
  }
}
function WM_readCookie(name) 
{
  if (document.cookie == '') { 
    // there's no cookie, so go no further
    return false;
  } else {
    // there is a cookie
    var firstChar, lastChar;
    var theBigCookie = document.cookie;
    
    firstChar = theBigCookie.indexOf(name);
      
    // find the start of 'name'
    var NN2Hack = firstChar + name.length;
    if((firstChar != -1) && (theBigCookie.charAt(NN2Hack) == '=')) {
      // if you found the cookie
      firstChar += name.length + 1;
        
      // skip 'name' and '='
      lastChar = theBigCookie.indexOf(';', firstChar);
        
      // Find the end of the value string (i.e. the next ';').
      if(lastChar == -1) 
        lastChar = theBigCookie.length;

      return unescape(theBigCookie.substring(firstChar, lastChar));
    } else {
      // If there was no cookie of that name, return false.
      return false;
    }
  }
} // WM_readCookie


function WM_killCookie(name, path, domain) {
  var theValue = WM_readCookie(name); // We need the value to kill the cookie

  if(theValue) {
    document.cookie = name + '=' + theValue + '; expires=Fri, 13-Apr-1970 00:00:00 GMT' + ((path)?';path=' + path:'') + ((domain)?';domain=' + domain:''); // set an already-expired cookie
  }
} // WM_killCookie


function readTheCookie(ckTable, ckName)
{
  // load the cookie into a variable and unescape it
  var ckVal = WM_readCookie(ckName); 

  if (ckVal == false)
  {
    return false;
  }

  // break each name:value pair into an array
  var sepVal = ckVal.split("&");

  // loop through the list of name=values and load
  // up the associate array
  var propVal = "";

  for (var loop = 0; loop < sepVal.length; loop++)
  {
    propVal = sepVal[loop];

    var valPair = propVal.split("=");

    var key = valPair[0];
    var val = valPair[1];

    ckTable[key] = val;

  }
  return true;
}

function getCookieVal(ckName, key)
{
  // read in the cookie
  var ckHash = new Array();
  var result = readTheCookie(ckHash, ckName);   
  
  return ckHash["key"];
}
