//BEGIN OF COOKIE FUNCTIONS

function fixMacCookieDate (date)
//Apple Mac has invalid cookie-date, fix this
{
  var base = new Date(0);
  var skew = base.getTime(); // dawn of (Unix) time - should be 0
  if (skew > 0)  // Except on the Mac - ahead of its time
    date.setTime (date.getTime() - skew);
}

function getCookieVal (offset)
//internal function to get a cookie
{
  var endstr = document.cookie.indexOf (";", offset);
  if (endstr == -1)
    endstr = document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr));
}

function getCookie (name)
//gets a cookie by 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;
}

function setCookie (name,value,expires,path,domain,secure)
//sets a cookie by name, includes cookie-options
{
  fixMacCookieDate(expires);

//  if (!expires) expires = new Date(2003,1);
  if (expires == "-1") expires = new Date(2010,1,1);
  if (!path) path="/";

  document.cookie = name + "=" + escape (value) +
    ((expires) ? "; expires=" + (expires.toGMTString()) : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
}

function deleteCookie (name,path,domain)
{
  if (!path) path="/";

  if (getCookie(name))
  {
    document.cookie = name + "=" +
      ((path) ? "; path=" + path : "/") +
      ((domain) ? "; domain=" + domain : "") +
      "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}

//BEGIN OF BASKET FUNCTIONS

function SwitchBasket(id, object, on)
//put item in or out of basket.
{
  if (on)
    AddToBasket(id,object);
  else
    RemoveFromBasket(id,object);
}

function AddToBasket(id, object)
{
  var s = getCookie(id);
  if (s)
  {
    var list = s.split(",");

    if (indexOf(object,list) == -1)
      list[list.length] = object;

    setCookie(id,list.join(","));
  }
  else
  {
    setCookie(id,object);
  }
}

function RemoveFromBasket(id,object)
{
  var s = getCookie(id);
  if (s)
  {
    var list = s.split(",");

    var i = indexOf(object,list);
    if (i != -1) list.splice(i,1);

    setCookie(id,list.join(","));
  }
}

function IsInBasket(id,object)
{
  var s = getCookie(id);
  if (s)
    return (s.indexOf(object) >= 0);
}


function ClearBasket(id)
{
  deleteCookie(id);
}

function GetBasket(id)
{
  return (getCookie(id)||"");
}

//BEGIN OF OTHER FUNCTIONS

function indexOf(value, a)
//finds first instance of value in array a
{
  for(var i=0;i<a.length;++i)
  {
    if (a[i]==value)
      return i
  }
  return -1
}



