// Cookies

cookieexpire= new Date();
cookieexpire.setTime(cookieexpire.getTime()+cookieTime);

function setCookie(name, wert) {
  document.cookie =name+ "=" +escape(wert) + "; expires=" +
                   cookieexpire.toGMTString()+
                   ((cookiePath == "") ? "" : ("; path="+cookiePath)) +
                   ((cookieDomain == "") ? "" : ("; domain="+cookieDomain));
  }

function getCookieValue(position) {
  var ende=document.cookie.indexOf(";", position);
  if (ende == -1)
    ende=document.cookie.length;
  return unescape(document.cookie.substring(position,ende));
  }

function getCookie(name) {
  name += "=";
  var laenge=name.length;
  var cookie_laenge = document.cookie.length;
  var i=0;
  while (i<cookie_laenge) {
    var j = i+laenge;
    if (document.cookie.substring(i,j) ==name)
      return getCookieValue(j);
    i = document.cookie.indexOf(" ", i) +1;
    if (i==0)
      break;
    }
  return "";
  }

//Berechnung des Gesamtpreises
var region=5;
vatRates = new Array()
vatSum= new Array()
var shippCost=0;
var discount=0;
var longPrice=0
var totalPrice=0;
var totalWeight=0;
var productSumPrice;
var missingPrices=false;

function CalcTotal() {
	productSumPrice=0;
  totalWeight=0;
	vatRates=new Array();
	varSum=new Array();
	missingPrices=false;
	// Warenkorb durchgehen!
	for(i=0;i<basket.id.length;i++) {
	  ep=parseFloat(basket.getTotalPrice(i));
    vat=parseFloat(basket.items[basket.id[i]].vat);
	  if (isNaN(ep)) {
	    ep=0;
			missingPrices=true;
			}
		totalWeight=totalWeight+parseFloat(basket.items[basket.id[i]].weight*basket.items[basket.id[i]].quantity);
	  productSumPrice=productSumPrice+ep;
	  vatNo=-1;
	  for (t=0;t<vatRates.length;t++) {
	    if (vat==vatRates[t]) {
	    	vatNo=t;
	    	}
	    }
	  if (vatNo==-1) {
	    vatRates[vatRates.length]=vat;
	    vatNo=vatRates.length-1;
	    vatSum[vatNo]=0;
	    }
	  if (pricesInklVAT==1) {
	    vatSum[vatNo]=vatSum[vatNo]+ep/(vat+100)*vat;
	    }
	  else {
	    vatSum[vatNo]=vatSum[vatNo]+ep*vat/100;
	    }
	  }
  // Nun die Versandcosten
  shippCost=ShippingCost(GetParameter("shp"),productSumPrice,totalWeight)+PayMethodCost(GetParameter("pay"),productSumPrice,totalWeight)
  // Dazu die MwSt
  vatNo=-1;
  for (t=0;t<vatRates.length;t++) {
    if (standardVAT==vatRates[t]) {
    	vatNo=t;
    	}
    }
  if (vatNo==-1) {
    vatRates[vatRates.length]=standardVAT;
    vatNo=vatRates.length-1;
    vatSum[vatNo]=0;
    }
  if (pricesInklVAT==1) {
    vatSum[vatNo]=vatSum[vatNo]+shippCost/(standardVAT+100)*standardVAT;
    }
  else {
    vatSum[vatNo]=vatSum[vatNo]+shippCost*standardVAT/100;
    }
  // Gesamtpreis
  longPrice=productSumPrice+shippCost;
  if (pricesInklVAT!=1) {
    for (t=0;t<vatSum.length;t++) {
      longPrice=longPrice+vatSum[t];
      }
    }
  }

function GetRegion() {
	if (GetParameter("ida")) {
	  land=GetParameter("sibdcountry");
	  }
	else {
	  land=GetParameter("sibcountry");
	  }
	if (land!="") {
	  // Land wurde angegeben
	  for (t=4;t>0;t--) {
	    if (regions[t].indexOf(land)!=-1) {
	      region=t;
	      }
	    }
	  }
	}


// Merkmalsfelder

identfinhalt= new Array();

function IstVerschieden(i) {
  verschieden=false;
  for (t=1;t<=identfmax;t++) {
    if (dataTable[selection[i]][identf[t]] !=identfinhalt[t]) {
      verschieden=true;
      }
    }
  if (verschieden) {
    for (t=1;t<=identfmax;t++) {
      identfinhalt[t]=dataTable[selection[i]][identf[t]];
      }
    }
  return verschieden;
  }

function SelektiereMerkmale() {
  for (t=1;t<=identfmax;t++) {
    identfinhalt[t]="";
    }
  selectionLength1=0;
  for (i=1;i<=selectionLength;i++) {
    if (IstVerschieden(i)) {
      selectionLength1++;
      selection[selectionLength1]=selection[i];
      }
    }
  selectionLength=selectionLength1;
  }

// Funktionen, die "oft" gebraucht werden

shopbasis=location.href;
shopbasis=shopbasis.substr(0,shopbasis.lastIndexOf("/"));


function Nuller(z) {
  zahl=""+z;
  p=zahl.indexOf(".");
  if (p==-1) {
    zahl=zahl+".00000000000";
    }
  else {
    zahl=zahl+"00000000000";
    }
  p=zahl.indexOf(".");
  if (Nachkommastellen==0) {
    return zahl.substring(0,p);
    }
  else {
    return zahl.substring(0,p+1+Nachkommastellen);
    }
  }

DezimalTrenner=",";
TausenderTrenner=".";
Nachkommastellen=2;
Rundenauf=0.01;


function FormatierterPreis(preis_string,w_kennung) {
  ergebnis="";
  // evtl Währungsbezeichnung entfernen
  preis_float=(Math.round(parseFloat(preis_string)/Rundenauf)*Rundenauf);
  preis=""+preis_float;
  // Zerlege in Teil vor und nach Dezimalpunkt
  p=preis.indexOf(".");
  if (p==-1) {
    preis=preis+".00000000000";
    }
  else {
    preis=preis+"00000000000";
    }
  p=preis.indexOf(".");
  preis_vor=preis.substring(0,p);
  preis_nach=preis.substring(p+1,p+Nachkommastellen+1);
  // Länge von preis_vor auf vielfaches von 3 bringen
  l=preis_vor.length % 3;
  if (l==1) {
    preis_vor="  "+preis_vor;
    }
  if (l==2) {
    preis_vor=" "+preis_vor;
    }
  tausender_trenner="";
  for (t=1; t <= preis_vor.length/3;t++) {
    ergebnis=ergebnis+tausender_trenner+preis_vor.substring((t*3)-3,(t*3));
    tausender_trenner=TausenderTrenner;
    }
  // Währungsstring
  w="";
  if (w_kennung==1) {
    w=" "+currency1;
    }
  if (w_kennung==2) {
    w=" "+currency2;
    }
  // Und zurückgeben...
  if (Nachkommastellen==0) {
    ergebnis=ergebnis+w;
    }
  else {
    ergebnis=ergebnis+DezimalTrenner+preis_nach+w;
    }
  if (ergebnis.indexOf("NaN") >=0) {
    if (w_kennung==2) {
      return ""
      }
    else {
      return preis_string;
			}
    }
  else {
    return ergebnis;
    }
  }


Preisfaktor=1;
login=true;
function Preis(i,z) {
	// Preis aus Zeile i ,Spalte+z wegen Staffelpreisen

  pr = dataTable[i][priceField+z];
  if (!(z&1)) {
	faktor = 1;
	if (GetParameter(dataTable[i][Rabatt]) != "") {
	faktor = GetParameter(dataTable[i][Rabatt]);
	}
    pr = parseFloat(dataTable[i][priceField+z])*faktor;
    //pr = parseFloat(dataTable[i][priceField+z])*Preisfaktor;
    }
  if (isNaN(pr)) {
    pr = dataTable[i][priceField+z];
		}
	return pr
  }

function CheckMenge(menge) {
  if ((isNaN(parseFloat(menge)) && menge!="") || menge<0) {
    return false;
    }
  else {
    return true;
    }
  }