function showShopcart()
{
  var sc = window.open("/common/shopcart/main.html", "siscart",
      "toolbar=0,location=0,directories=0,status=1,menubar=0,scrollbars=1,resizable=1");
  sc.focus();
}

// sets cookie
function mySetCookie(name, value)
{
  document.cookie = name + "=" + escape(value) + "; path=/";
}

// retreives cookie
function myGetCookie(name)
{
  var ret = null;
  var cookie = " " + document.cookie + ";";  // simplify parsing
  var match = " " + name + "=";
  var nStart = cookie.indexOf(match);
  if(nStart != -1)
  {
    nStart += match.length;
    var nEnd = cookie.indexOf(";", nStart);

    ret = unescape(cookie.substring(nStart, nEnd));

  }

  return ret;
}

// deletes a cookie
function myDeleteCookie(name)
{
  var past = 10 * 24 * 60 * 60 * 1000;  // past
  var expire = new Date();
  expire.setTime(expire.getTime() - past);
  document.cookie = name + "=AAA; expires=" + expire.toGMTString() +"; path=/";
}

function myGetCookieKeys()
{
  var cookies = document.cookie + "; ";  // simplify parsing

  var vcookie = split("; ", cookies);

  var keys = new Array();
  for(var n=0; n<vcookie.length; ++n)
  {
    keys[keys.length] = split("=", vcookie[n])[0];
  }
  return keys;
}

function split(delim, str)
{
  var parts = new Array();

  while(str.length > 0)
  {
    var n = str.indexOf(delim);
    if(n != -1)
    {
      var s2 = str.substring(0, n);
      if(s2.length > 0)
        parts[parts.length] = s2;
      str = str.substring(n + delim.length);
    }
    else
    { parts[parts.length] = str; str = ''; }
  }
  return parts;
}

function join(delim, arr)
{
  var ret = '';
  if(arr.len >= 1)
    ret += arr[0];
  for(var n=1; n<arr.length; ++n)
    ret += delim + arr[n];
  return ret;
}

function Order()
{
  this.getPartNums = Order_getPartNums;
  this.getPart = Order_getPart;
  this.createPart = Order_createPart;
  this.deletePart = Order_deletePart;
  this.getWeight = Order_getWeight;
};
  function Order_getPartNums()
  {
    var partNums = new Array();

    var keys = myGetCookieKeys();

    for(var n=0; n<keys.length; ++n)
      if(keys[n].length >= 1 && keys[n].substring(0, 1) == '#')
        partNums[partNums.length] = keys[n].substring(1);

    return partNums;
  }
  function Order_getPart(partNum)
  {
    var cookie = myGetCookie("#" + partNum);
    if(cookie == null)
      return null;

    var part = new Part();
    var tokens = split("|", cookie);
  
    part._partNum = partNum;
    part._weight = 0.0 + tokens[1];
    part._url = tokens[2];
    part._desc = tokens[3];

    var sparts = tokens[4];
    var parts = split(",", sparts);
    part._prices = new Array();   
    for(var n=0; n<parts.length; ++n)
    {
      var tok2 = split(":", parts[n]);
      part._prices[part._prices.length] = new PriceBracket(1*tok2[0], 1*tok2[1]);
    }

    return part;
  }
  function Order_createPart(partNum, quan, weight, url, desc, sprices)
  {
    var val = quan+"|"+weight+"|"+ url + "|"+ desc + "|" + sprices;
    //alert(val);
    mySetCookie("#" + partNum, val);
  }
  function Order_deletePart(partNum)
  {
    myDeleteCookie("#" + partNum);
  }
  function Order_getWeight()
  {
    var partNums = this.getPartNums();
    var weightTotal = 0.0;
    for(var n in partNums)
    {
      var part = this.getPart(partNums[n]);
      var weight = part.getWeight();
      var quan = part.getQuan();

      weightTotal += weight * quan;
    }
    return weightTotal;
  }
// end Order

function Part()
{
  this.getQuan = Part_getQuan;
  this.setQuan = Part_setQuan;
  this.getWeight = Part_getWeight;
  this.getURL = Part_getURL;
  this.getDesc = Part_getDesc;
  this.getPrices = Part_getPrices;
  this.getPrice = Part_getPrice;
  this._getTokens = Part__getTokens;
  this._setTokens = Part__setTokens;
}


  function Part_getQuan()
  {
    var tokens = this._getTokens();
    return tokens[0];
  }

  function Part_setQuan(quan)
  {
    var tokens = this._getTokens();
    tokens[0] = quan;
    this._setTokens(tokens);
  }

  function Part_getWeight()
  { return this._weight; }

  function Part_getURL()
  { return this._url; }

  function Part_getDesc()
  { return this._desc; }

  function Part_getPrices()
  { return this._prices; }

  function Part_getPrice(quan)
  {
    var price = 0;
    for(var n=0; n<this._prices.length; ++n)
      if(quan >= this._prices[n].quan)
        price = this._prices[n].price;

    return price;
  }

  function Part__getTokens()
  {
    var partInfo = myGetCookie("#" + this._partNum);

    return split("|", partInfo);
  }
  function Part__setTokens(tokens)
  {
    var partInfo = '';
    for(var n=0; n<tokens.length; ++n)
      partInfo += tokens[n] + "|";

    partInfo = partInfo.substring(0, partInfo.length - 1);

    mySetCookie("#" + this._partNum, partInfo);
  }
// end Part



function PriceBracket(quan, price)
{
  this.quan = quan; this.price = price;
}



var order = new Order();

