var DBG = false;
var PREFS_COOKIE_NAME = 'prefs';
var PREFS_COOKIE_EXPIRES_HOURS = 10000;

function writeCookie(name, value, hours)
{
  if (DBG) alert("writeCookie(" + name + "," + value + "," + hours + ")");
  var expire = "";
  if(hours != null)
  {
    expire = new Date((new Date()).getTime() + hours * 3600000);
    expire = "; expires=" + expire.toGMTString();
  }
  var strCookie = name + "=" + escape(value) + expire + "; path=/";
  document.cookie = strCookie;
}
function readCookie(name)
{
  var cookieValue = "";
  var search = name + "=";
  if(document.cookie.length > 0)
  { 
    offset = document.cookie.indexOf(search);
    if (offset != -1)
    { 
      offset += search.length;
      end = document.cookie.indexOf(";", offset);
      if (end == -1) end = document.cookie.length;
      cookieValue = unescape(document.cookie.substring(offset, end))
    }
  }
  if (DBG) alert("readCookie(" + name + ") = "  + cookieValue);
  return cookieValue;
}
var PREFS;
function get_prefs() {
  if (PREFS) return PREFS;
  var cookieval = readCookie(PREFS_COOKIE_NAME);
  var pairs = cookieval.split(';');
  PREFS = [];
  for (i=0; i<pairs.length; i++) {
    var pair = pairs[i].split("=");
    PREFS[pair[0]] = pair[1];
  }
  return PREFS;
}
function get_pref(prefname, dflt) {
  var prefval = get_prefs()[prefname];
  if (typeof(prefval) == 'undefined') { 
     if (DBG) alert("get_pref(" + prefname + ") = default " + dflt);
     prefval = dflt;
  }
  else {
     if (DBG) alert("get_pref(" + prefname + ") = " + prefval);
  }
  return prefval;
}
function set_pref(prefname, prefval) {
  if (DBG) alert("set_pref(" + prefname + ", " + prefval + ")");
  var prefs = get_prefs();
  prefs[prefname] = prefval;
  var pairs = [];
  for (p in prefs) {
    if (typeof prefs[p] != 'undefined') pairs.push(p + "=" + prefs[p]);
  }
  var cookieval = pairs.join(';');
  writeCookie(PREFS_COOKIE_NAME, cookieval, PREFS_COOKIE_EXPIRES_HOURS);  
}