// der warenkorb
var Warenkorb = new Array();
 // die gesamtsumme
var Summe =0;
// die gesamtanzahl der artikel im warenkorb
// wird aber in der originalversion nicht richtig behandelt
var Anzahl=0;
// SEPP: diese variablen sind hier eigentlich überflüssig.
// sie wurden in der ursprünglichen version benutzt, um die anzahl 
// und die gesamtsumme in einem eigenen frame auszugeben, auch wenn 
// der warenkorb nicht angezeigt wurde. ich heb sie dringelassen und 
// einige bugs in der originalversion gefixt.

// Versandkosten und -art
// SEPP: versand ins ausland ist im shop nicht vorgesehen!!!
// daher kann hier einiges weg. es kann im shop sowieso nur
// die standart versandart für 2.5 euro gewählt werden. 
// daher kann hier vereinfacht werden...
var Versandk = 2.5;
var intVersandMwst=0.4; // Mwstzuordnung
var Zahlungsart=2;	// 0: Vorkasse, 1:Rechnung, 2:PayPal

// die url des den warenkorb aufrufenden seite
var myUrl ='';
var bestellseite="korb.htm";
var message="message.htm";

// konstruktor für einen eintrag im warenkorb
function WarenkorbEintrag(best,pre,bez,anz){
    this.BestNr = best;
    this.Preis = pre;
    this.Bezeichnung = bez;
    this.Anzahl = anz;
    return;
 }

// liefert offenbar einen string mit digits nachkommastellen 
function format(zahl,digits){
   var Output ='';
   var NachkString = '';
   var mult = Math.pow (10,digits);
   zahl = Math.round(zahl*mult)/mult;
   var Vork  = Math.floor(zahl);
   zahl *=mult;
   var Nachk  = Math.round(zahl - Vork*mult);
   for (var i = digits-1 ; i > 0; i--){
     if (Nachk < Math.pow(10,i)) NachkString  += '0';
     else break;
   }
   NachkString += Nachk;
   Output= Vork +  '.'+  NachkString;
   return Output;
}

function InWarenkorb(strBez,strBstNr,iPreis,strAnz){
    // prüfen ob anzahl korrekt
    var iAnz=0;
    if(isNaN(strAnz)==true){
    	alert("Bitte geben Sie eine positive Zahl ein");
    	return;
    	}
    iAnz=parseInt(strAnz);
    if(iAnz<=0){
    	alert("Bitte geben Sie eine positive Zahl ein");
    	return;
    	}
	
    // iMaxIndex==0 falls warenkorb neu    		
    var iMaxIndex = Warenkorb.length;

    // BestNr schon enthalten?
    var iPos = -1;
    var i = 0;
    for(i=0;i<iMaxIndex;i++) {
    	if(strBstNr==Warenkorb[i].BestNr) {
            iPos=i;
            break;
            }
    	}
   	
    // ja: anzahl erhöhen und gesamtsumme angleichen
    if(iPos>-1) {
    	// bugfix: hier wurde die anzahl nicht hochgezählt...
        Anzahl+=iAnz;
        Warenkorb[iPos].Anzahl+=iAnz;
        Summe+=(iAnz * Warenkorb[iPos].Preis);
        }
    // nein: neuer eintrag in warenkorb und summe angleichen
    else {
        Anzahl+=iAnz;
        Summe+=(iPreis*iAnz);
        Warenkorb[iMaxIndex]=new WarenkorbEintrag(strBstNr,iPreis,strBez,iAnz);
        }
    // erst mal rauslassen
    // diese funktion schreibt die anzahl der einträge im warenkorb 
    // in den unteren frame, der aber bei den neuen site nicht vorhanden ist..
    message_laden();
}

function Bestellseite_laden(){
    plaenemain.location.href=bestellseite;
}

function message_laden(){
    plaenemessage.location.href=message;
}


// diese funktion wird offenbar verwendet, wenn in der bestellseite
// (besser: warenkorbübersicht) bei einem eintrag die anzahl geändert wird
function neuBerechnen(feld){
    
    // überhaupt was im warenkorb?
    // rem: kann eigentlich nicht passieren
    if(Warenkorb.length==0){
	return;
    }
    if(parseFloat(feld.value)==0 || feld.value==''){
       	removeEintrag(feld.name);
       	return;
    }
    
    // das funktioniert, weil in korb.htm im javascript code
    // der feldname mit dem index der bestellung gesetzt wird
    var Position = parseFloat(feld.name);
    
    if(feld.value>0){
        Summe = Summe - parseFloat(Warenkorb[Position].Anzahl) * parseFloat(Warenkorb[Position].Preis);
        // bug in alter version: Anzahl wurde nicht geändert
        Anzahl-=parseFloat(Warenkorb[Position].Anzahl);
        Warenkorb[Position].Anzahl=parseInt(feld.value);
        Summe = Summe + Warenkorb[Position].Anzahl * Warenkorb[Position].Preis;
        Anzahl+=parseFloat(Warenkorb[Position].Anzahl);
    }
    else{
    	alert("Bitte geben Sie eine positive ganze Zahl ein");
    }
    // bugfix: seite wurde in alter version nicht neu geladen...
    Bestellseite_laden();
    message_laden();
}

// löscht eine eintrag aus dem warenkorb
// seltsamerweise werden die globalen variablen Summe und Anzahl nicht
// geändert. dies ist wohl ein bug. wenn der nicht relevant ist,
// werden diese variablen letzendlich nicht benötigt.
// also kann man sie sich sparen.
function removeEintrag(indexU){
    var buf = new Array();
    var index = parseFloat(indexU);
    // erzeugt ein neues array mit neuen einträgen
    // das neue array enthält alle einträge aus warenkorb außer index
    // bugfix: summe und anzahl aktualisieren
    Summe=0;
    Anzahl=0
    for(var j=0,i=0;i<Warenkorb.length;i++){
       if(i==index){
           continue;
           }
       buf[j] = new WarenkorbEintrag(Warenkorb[i].BestNr,Warenkorb[i].Preis,Warenkorb[i].Bezeichnung,Warenkorb[i].Anzahl);
       Summe+=parseFloat(Warenkorb[i].Preis)*parseFloat(Warenkorb[i].Anzahl);
       Anzahl+=parseFloat(Warenkorb[i].Anzahl);
       j++;
    }
    
    // was ist mit den ganzen einträgen in warenkorb?
    // werden die vom garbage collector gelöscht oder
    // sollten sie mit delete gelöscht werden?
    Warenkorb = buf;

    if(Warenkorb.length==0){
    	Anzahl=0;
       	Summe=0;
	}
    
    Bestellseite_laden();
    message_laden();
 }
 
function WarenkorbLeeren(){
    Anzahl=0;
    Summe=0;
    var buf = new Array();
    Warenkorb = buf;
    Bestellseite_laden();
    message_laden();
}


function zurueck(){
    plaenemain.location.href=myUrl;
}


function zahlungsart_setzen(art){
   Zahlungsart=parseInt(art);
   }


function printWarenkorbSummary(){
    var obj = self.plaenemessage.document;
    obj.close();
    obj.open();
    // obj.clear();
    obj.write('<!doctype html public "-//w3c//dtd html 4.0 transitional//en">');
    obj.write('<html> <head> <meta http-equiv="Content-Style-Type" content="text/css">');
    obj.write('<title>message</title> <link rel="stylesheet" type="text/css" href="style.css"></head>');
    obj.write('<body class="rightframe">');
    obj.write('<table border="0" cellpadding="0" cellspacing="0" width="100%">');
    obj.write('<tr><td id="tmessage">');
    
    if(Warenkorb.length==0 ){
	obj.write('Der Warenkorb ist leer - basket is empty');
	}
    else if(Warenkorb.length==1){
    	if(Anzahl==1){
		obj.write('Der Warenkorb enthält 1 Eintrag - basket contains 1 item');
		}
	else{	
	    obj.write('Der Warenkorb enthält 1 Eintrag mit '+ Anzahl +' Artikeln - Basket contains 1 item with '+ Anzahl +' articles');
	    }
	}
    else {
    	obj.write('Der Warenkorb enthält ' + Warenkorb.length + ' Einträge mit ' + Anzahl +' Artikeln - basket contains ' + Warenkorb.length + ' items with ' + Anzahl +' articles');
	}   


    obj.write('</td></tr></table></body></html>');
    obj.close();
}
