var GlobPath="";
var SDPrefix="";
var discount = 0.22;


function getCookie(name) {
   name=SDPrefix + name;
   var cookieValue = document.cookie;
   var startPos=cookieValue.indexOf(" " + name + "=");
   if (startPos==-1) {
      startPos=cookieValue.indexOf(name + "=");
   }
   if (startPos==-1) {
      return "";
   }
   startPos=cookieValue.indexOf("=", startPos) + 1;
   var endPos=cookieValue.indexOf(";", startPos);
   if (endPos==-1) {
      endPos=cookieValue.length;
   }
   return cookieValue.substring(startPos, endPos);
}

function setCookie(AName, AValue, APath, AMonthBeforeExpire) {
   AName=SDPrefix+AName;
   var xValue=String(AValue);
   xValue=xValue.replace(/;/g, "%3B");
   var xExpires = "";
   AMonthBeforeExpire=1;
   if (AMonthBeforeExpire!=0) {
      var xNowDate = new Date();
      xNowDate.setMonth(xNowDate.getMonth() + AMonthBeforeExpire);
      xExpires = ";expires=" + xNowDate.toGMTString();
   }
   if (APath!="") { APath = ";Path=" + APath; }
   document.cookie = AName + "=" + xValue + xExpires + APath;
}

function FloatToStr(AValue) {
   var xValue=String(AValue);
   var xIdx=xValue.indexOf(".");
   if (xIdx!=-1) {
      xValue=xValue.substring(0, xIdx+3);
   }
   return xValue;
}

function Encode(AValue) {
   var xValue=escape(AValue);
   var idx=xValue.indexOf("%u");
   while (idx!=-1) {
      var xuChar=xValue.substring(idx, idx+6);
      var xFD=parseInt(xuChar.substring(4, 5))+11;
      var xURLChar="%"+"0123456789ABCDEF".substring(xFD, xFD+1)+xuChar.substring(5, 6);
      xValue=xValue.replace(xuChar, xURLChar);
      idx=xValue.indexOf("%u", idx+2);
   }
   return xValue;
}

function addToBasket(AID, AQuan, APrice,  AExists) {
   var AGID = 1;
   var AName = "-";
   var xQuan=AQuan;
   var xPrice=APrice;
   var xName=Encode(AName);
   if (AExists=="нет") {
      alert("Невозможно добавить в корзину. Товар временно отсутствует!");
      return;
   }
   if (xPrice=="") { xPrice=0; }
   xPrice=xPrice.replace(",", ".");
   xQuan=parseFloat(xQuan);
   xPrice=parseFloat(xPrice);
   if (isNaN(xQuan)) { xQuan=1; }
   if (isNaN(xPrice)) {
      alert("Невозможно добавить в корзину. Товар отсутствует!");
      return;
   }
   alert (xQuan + " единиц товара * " + xPrice + " руб. = " + (xPrice * xQuan) + " руб.\n Добавлено в корзину.");
   // Getting Existing Goods Records
   var xBasket=getCookie("basket");
   // New Goods Record
   var yBasket="";
   // Getting Total Cost
   var xCost=parseFloat(getCookie("cost"));
   if (isNaN(xCost)) { xCost=0; }
   xCost+=(xPrice * xQuan);
   xCost=FloatToStr(xCost);
   // Adding Quan to Existing Good - if exists, of cos.
   var idxREC=xBasket.indexOf("#REC");
   var idxGID=xBasket.indexOf("#GID");
   var idxQUAN=xBasket.indexOf("#QUAN");
   var idxPRICE=xBasket.indexOf("#PRICE");
   var idxNAME=xBasket.indexOf("#NAME");
   var idxENDR=xBasket.indexOf("#ENDR");
   var xAdded=0;
   var xTotalQuan=0;
   while ((idxREC!=-1) && (idxENDR!=-1)) {
      // Getting Record ID
      var xRecord=xBasket.substring(idxREC, idxENDR+5);
      var xID=xBasket.substring(idxREC+4, idxGID);
      if (xID==AID) {
         var yQuan=parseFloat(xBasket.substring(idxQUAN+5, idxPRICE));
         if (isNaN(yQuan)) { yQuan=0; }
         yQuan+=xQuan;
         xRecord="#REC" + AID + "#GID" + AGID + "#QUAN" + yQuan + "#PRICE" + xPrice + "#NAME" + xName + "#ENDR";
         xAdded=1;
      }
      yBasket+=xRecord;
      idxREC=xBasket.indexOf("#REC", idxENDR);
      idxGID=xBasket.indexOf("#GID", idxENDR);
      idxQUAN=xBasket.indexOf("#QUAN", idxENDR);
      idxPRICE=xBasket.indexOf("#PRICE", idxENDR);
      idxNAME=xBasket.indexOf("#NAME", idxENDR);
      idxENDR=xBasket.indexOf("#ENDR", idxENDR+1);
      xTotalQuan++;
   }
   if (xAdded==0) {
      xBasket=xBasket + "#REC" + AID + "#GID" + AGID + "#QUAN" + xQuan + "#PRICE" + xPrice + "#NAME" + xName + "#ENDR";
      xTotalQuan++;
   } else { xBasket=yBasket; }
   setCookie("basket", xBasket, GlobPath, 0);
   setCookie("cost", xCost, GlobPath, 0);
   setCookie("totalquan", xTotalQuan, GlobPath, 0);
   updatePage();
}

function deleteFromBasket(AID) {
   if (confirm("Вы действительно желаете удалить этот товар из корзины?")) {
      // Getting Existing Goods Records
      var xBasket=getCookie("basket");
      // New Goods Record
      var yBasket="";
      // Getting Total Cost
      var xCost=0;
      // Adding Quan to Existing Good - if exists, of cos.
      var idxREC=xBasket.indexOf("#REC");
      var idxGID=xBasket.indexOf("#GID");
      var idxQUAN=xBasket.indexOf("#QUAN");
      var idxPRICE=xBasket.indexOf("#PRICE");
      var idxNAME=xBasket.indexOf("#NAME");
      var idxENDR=xBasket.indexOf("#ENDR");
      var xDeleted=0;
      var xTotalQuan=0;
      while ((idxREC!=-1) && (idxENDR!=-1)) {
         // Getting Record ID
         var xRecord=xBasket.substring(idxREC, idxENDR+5);
         var xQuan=xBasket.substring(idxQUAN+5, idxPRICE);
         var xPrice=xBasket.substring(idxPRICE+6, idxNAME);
         var xID=xBasket.substring(idxREC+4, idxGID);
         xQuan=parseFloat(xQuan);
         xPrice=parseFloat(xPrice);
         if (isNaN(xQuan)) { xQuan=1; }
         if (isNaN(xPrice)) { xPrice=0; }
         if (xID==AID) {
            xDeleted=1;
         } else {
            xCost=xCost + (xPrice * xQuan);
            yBasket+=xRecord;
            xTotalQuan++;
         }
         idxREC=xBasket.indexOf("#REC", idxENDR);
         idxGID=xBasket.indexOf("#GID", idxENDR);
         idxQUAN=xBasket.indexOf("#QUAN", idxENDR);
         idxPRICE=xBasket.indexOf("#PRICE", idxENDR);
         idxNAME=xBasket.indexOf("#NAME", idxENDR);
         idxENDR=xBasket.indexOf("#ENDR", idxENDR+1);
      }
      if (xDeleted!=0) { xBasket=yBasket; }
      xCost=FloatToStr(xCost);
      setCookie("basket", xBasket, GlobPath, 0);
      setCookie("cost", xCost, GlobPath, 0);
      setCookie("totalquan", xTotalQuan, GlobPath, 0);
      updatePage();
      return true;
   } else {
      return false;
   }
}

function recalcBasket() {
   // Getting Existing Goods Records
   var xBasket=getCookie("basket");
   // New Goods Record
   var yBasket="";
   // Getting Total Cost
   var xCost=0;
   // Adding Quan to Existing Good - if exists, of cos.
   var idxREC=xBasket.indexOf("#REC");
   var idxGID=xBasket.indexOf("#GID");
   var idxQUAN=xBasket.indexOf("#QUAN");
   var idxPRICE=xBasket.indexOf("#PRICE");
   var idxNAME=xBasket.indexOf("#NAME");
   var idxENDR=xBasket.indexOf("#ENDR");
   var xTotalQuan=0;
   while ((idxREC!=-1) && (idxENDR!=-1)) {
      // Getting Record ID
      var xQuan=xBasket.substring(idxQUAN+5, idxPRICE);
      var xPrice=xBasket.substring(idxPRICE+6, idxNAME);
      var xID=xBasket.substring(idxREC+4, idxGID);
      var xGID=xBasket.substring(idxGID+4, idxQUAN);
      var xName=xBasket.substring(idxNAME+5, idxENDR);
      xQuan=parseFloat(xQuan);
      xPrice=parseFloat(xPrice);
      if (isNaN(xQuan)) { xQuan=1; }
      if (isNaN(xPrice)) { xPrice=0; }
      var yQuan=xQuan;
      xElemQuan=document.getElementById("quan" + xID);
      if (xElemQuan!=null) {
         yQuan=parseInt(xElemQuan.value);
         zQuan=parseFloat(xElemQuan.value);
         if ((isNaN(yQuan)) || (yQuan<=0) || (yQuan!=zQuan)) {
            alert("Значение " + xElemQuan.value + " не является корректным количеством товаров");
            yQuan=xQuan;
            xElemQuan.value=yQuan;
            return;
         }
      }
      xElemSum=document.getElementById("sum" + xID);
      if (xElemSum!=null) {
         var xSum=FloatToStr(xPrice * yQuan);
         xElemSum.innerHTML=xSum;
      }
      xCost=xCost + (xPrice * yQuan);
      xRecord="#REC" + xID + "#GID" + xGID + "#QUAN" + yQuan + "#PRICE" + xPrice + "#NAME" + xName + "#ENDR";
      yBasket+=xRecord;
      xTotalQuan++;
      idxREC=xBasket.indexOf("#REC", idxENDR);
      idxGID=xBasket.indexOf("#GID", idxENDR);
      idxQUAN=xBasket.indexOf("#QUAN", idxENDR);
      idxPRICE=xBasket.indexOf("#PRICE", idxENDR);
      idxNAME=xBasket.indexOf("#NAME", idxENDR);
      idxENDR=xBasket.indexOf("#ENDR", idxENDR+1);
   }
   xBasket=yBasket;
   xCost=FloatToStr(xCost);
   setCookie("basket", xBasket, GlobPath, 0);
   setCookie("cost", xCost, GlobPath, 0);
   setCookie("totalquan", xTotalQuan, GlobPath, 0);
   alert("Изменения сохранены.");
   updatePage();
}

function emptyBasket() {
   if (confirm("Вы действительно желаете очистить корзину?")) {
      setCookie("basket", "", GlobPath, 0);
      setCookie("cost", "0", GlobPath, 0);
      setCookie("totalquan", "0", GlobPath, 0);
      alert ("Корзина очищена.");
      updatePage();
      return true;
   } else {
      return false;
   }
}

function emptyBasketWN() {
   setCookie("basket", "", GlobPath, 0);
   setCookie("cost", "0", GlobPath, 0);
   setCookie("totalquan", "0", GlobPath, 0);
   updatePage();
}

function updatePage() {
   var xTotalQuan = getCookie("totalquan");
   var xCost = getCookie("cost");
   xQuan=document.getElementById("quan");
   xSum=document.getElementById("sum");
   xTotSum=document.getElementById("totsum");
   if ((xTotalQuan=="") || (xCost=="")) {
      if (xQuan!=null) { xQuan.innerHTML="0"; }
      if (xSum!=null) { xSum.innerHTML="0"; }
      if (xTotSum!=null) { xTotSum.innerHTML="0"; }
   } else {
      if (xQuan!=null) { xQuan.innerHTML=xTotalQuan; }
      if (xSum!=null) { xSum.innerHTML=xCost; }
      if (xTotSum!=null) { xTotSum.innerHTML=xCost; }
   }
}

function initBasket(APath) {
   GlobPath=APath;
}
