function getCookieVal (offset) 
{
  var endstr = document.cookie.indexOf (";", offset);
  if (endstr == -1)
    endstr = document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr));
}

function FixCookieDate (date) 
{
  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 GetCookie (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) 
{
  document.cookie = name + "=" + escape (value) +
    ((expires) ? "; expires="+ expires.toGMTString() : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
  return null;
}

function DeleteCookie (name,path,domain) 
{
  if (GetCookie(name)) {
    document.cookie = name + "=" +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
  return null;
}

function SplitCookie(name,startpart,endpart)
{
  var wholecookie=GetCookie(name);
  if (wholecookie==null)
  {
    return null;
  }

  var result="";
  var remainder="";
  var temp="";

  remainder=wholecookie.split(startpart);
  if (remainder==null)
  {
    return null;
  }

  if (remainder[1]==null)
  {
    return null;
  }

  result=remainder[1];

  temp=result.split(endpart);
  result=unescape(temp[0]);

  if (result)
  {
    return result;
  }
  return null;
}

function AddToOrderCookie (stocknumber, itemquantity, itemprice, itemdescription)
{
  var linebuffer="";

  var expdate=new Date();
  var ordercookievalue;

  expdate.setTime (expdate.getTime()+(24*60*60*1000)); //24 hours from now
  FixCookieDate(expdate);
  expdate = null;


  if (GetCookie("order")==null)
  {
    ClearOrderCookie();

    ordercookievalue="[STARTORDER][ENDORDER]";
    SetCookie("order",ordercookievalue,expdate,"/",null,false);
    GetCookie("order");
  }

  previouscookievalue=SplitCookie("order","[STARTORDER]","[ENDORDER]");

  if(previouscookievalue==null)
  {
    previouscookievalue="";
  }

  var currentitemnumber;
  var temp=0;
  currentitemnumber=SplitCookie("itemnumber","[CURRENTNUMBER]","[/CURRENTNUMBER]");
  var currentitemcookievalue="";
  temp=eval(currentitemnumber);

  if(currentitemnumber==null)
  {
    temp=0;
  }

  temp+=1;

  currentitemcookievalue="[CURRENTNUMBER]"+temp+"[CURRENTNUMBER]";
  SetCookie("itemnumber",currentitemcookievalue,expdate,"/",null,false);

  ordercookievalue="[STARTORDER][ITEMNUMBER]"+temp+"[/ITEMNUMBER][STOCKNUMBER]"+ stocknumber +"[/STOCKNUMBER][ITEMQUANTITY]"+ itemquantity +"[/ITEMQUANTITY][ITEMPRICE]"+ itemprice + "[/ITEMPRICE][ITEMDESCRIPTION]"+itemdescription+"[/ITEMDESCRIPTION]"+previouscookievalue+"[ENDORDER]";

  SetCookie("order",ordercookievalue,expdate,"/",null,false);
  
  alert('Your order has been updated.  When you are done shopping, click on the checkout button to compete your order.');

  CompressOrderCookie()

  return;
}


function CompressOrderCookie()
{
  var linebuffer="";

  var expdate=new Date();
  var ordercookievalue;
  FixCookieDate(expdate);
  expdate.setTime (expdate.getTime()+(24*60*60*1000)); //24 hours from now
  expdate = null;

  if (GetCookie("order")==null)
  {
    ordercookievalue="[STARTORDER][ENDORDER]";

    SetCookie("order",ordercookievalue,expdate,"/",null,false);
    return;
  }

  previouscookievalue=SplitCookie("order","[STARTORDER]","[ENDORDER]");

  if(previouscookievalue==null)
  {
    return;
  }

  var counter1=1;
  var counter2=1;

  var currentitemnumber;
  var currentstocknumber;
  var previousstocknumber="";
  var numberofordereditems=0;
  currentitemnumber=SplitCookie("itemnumber","[CURRENTNUMBER]","[/CURRENTNUMBER]");
  var currentitemcookievalue="";
  numberofordereditems=eval(currentitemnumber);

  if(currentitemnumber==null)
  {
    numberofordereditems=1;
  }

  if(currentitemnumber==NaN)
  {
    numberofordereditems=1;
  }

  if (numberofordereditems < 2) return;

  var initialvalue = '';

  RawDataArray = new InitializeArray(numberofordereditems, initialvalue);
  FilteredDataArray = new InitializeArray(numberofordereditems, initialvalue);

  while (counter1 <= numberofordereditems)
  {
    rawrecord="";

    startofcurrentrecord="[ITEMNUMBER]"+counter1+"[/ITEMNUMBER]";
    rawrecord=SplitData(previouscookievalue,startofcurrentrecord,"[/ITEMDESCRIPTION]");
    RawDataArray[counter1]=rawrecord+"[/ITEMDESCRIPTION]";

    counter1++;
  }

  pm_array_qsort(RawDataArray,1,numberofordereditems);

  counter1=1;

  counter2=1;

  while (counter1 <= numberofordereditems)
  {
    currentstocknumber=SplitData(RawDataArray[counter1],"[STOCKNUMBER]","[/STOCKNUMBER]");

    if (currentstocknumber==previousstocknumber)
    {
      currentcount=SplitData(FilteredDataArray
[counter2-1],"[ITEMQUANTITY]","[/ITEMQUANTITY]");
      if (currentcount==null)
      {
        currentcount=0;
      }

      newcount=SplitData(RawDataArray[counter1],"[ITEMQUANTITY]","[/ITEMQUANTITY]");
 
      if (newcount==null)
      {
        newcount=0;
      }
      itemquantity=0;
      itemquantity=eval(eval(currentcount)+eval(newcount));

if (itemquantity<0) itemquantity=0;

      itemprice=SplitData(RawDataArray[counter1],"[ITEMPRICE]","[/ITEMPRICE]");
      itemdescription=SplitData(RawDataArray[counter1],"[ITEMDESCRIPTION]","[/ITEMDESCRIPTION]");

      FilteredDataArray[counter2-1]="[ITEMNUMBER]"+eval(counter2-1)+"[/ITEMNUMBER][STOCKNUMBER]"+currentstocknumber+"[/STOCKNUMBER][ITEMQUANTITY]"+itemquantity+"[/ITEMQUANTITY][ITEMPRICE]"+itemprice+"[/ITEMPRICE][ITEMDESCRIPTION]"+itemdescription+"[/ITEMDESCRIPTION]";
    }

    if (currentstocknumber!=previousstocknumber)
    {
      FilteredDataArray[counter2]="[ITEMNUMBER]"+counter2+"[/ITEMNUMBER]"+RawDataArray[counter1];
      counter2++;
      previousstocknumber=currentstocknumber;
    }

    counter1++;    
  }

  counter1=1;
  counter2--;

  ordercookievalue="[STARTORDER]";

  while (counter1<=counter2)
  {
    ordercookievalue+=FilteredDataArray[counter1];
    counter1++;
  }

  ordercookievalue+="[ENDORDER]";

  SetCookie("order",ordercookievalue,expdate,"/",null,false);

  currentitemcookievalue="[CURRENTNUMBER]"+counter2+"[CURRENTNUMBER]";
  SetCookie("itemnumber",currentitemcookievalue,expdate,"/",null,false);

  return;
}

function ClearOrderCookie()
{
  var expdate=new Date();
  var ordercookievalue="[STARTORDER][ENDORDER]";
  var currentitemcookievalue="[CURRENTNUMBER]1[CURRENTNUMBER]";

  FixCookieDate(expdate);
  expdate.setTime (expdate.getTime()+(24*60*60*1000)); //24 hours from now
  

  SetCookie("order",ordercookievalue,expdate,"/",null,false);
  SetCookie("itemnumber",currentitemcookievalue,expdate,"/",null,false);

  return;
}

