/*** Die (leere) Liste "lotList" für die einzelnen Lot-Objekte definieren ***/
var        lotList = new Array();
var        flagDetailList = false;

/*** Die Klasse "Lot" ***/
// Eigenschaften und Konstruktor
function Lot(q, n, p, a, pf)
{
        this.article        = a;
        this.name           = n;
        this.qty            = q;
        this.pfand          = pf;

        // Der Preis muß erst in einen "Float-String" umgeformt werden
        dummy               = p.split(",");
        this.price          = dummy[0] + "." + dummy[1];

        // Das neue Objekt an die Postenliste anfügen und mit lauf. Nr. versehen
        lotList[lotList.length] = this;
}


// Kompatibilität mit Netscape 3
new Lot("","","",0,0);
lotList.length = 0;

// Methode: Den Namen des entsprechenden Input-Textfeldes als String zurückgeben
function input_Name()
{
        return "T" + this.article;
}
Lot.prototype.inputName = input_Name;


// Methode: Das Objekt in die Lot-Liste einfügen
function add_To_List()
{
        lotList[lotList.length] = this;
}
Lot.prototype.addToList = add_To_List;


// Methode: String für Warenkorb zurückgeben
function basket_String()
{
        var sumString, i, str = new String(this.qty);

        // Artikelanzahl und "x"-Zeichen auf 3 Chars formatieren
        str = str + "x";
        if (str.length == 2)
                str = str + " ";

        // Artikelname hinzufügen, formatieren und 1 Space
        str = str+this.name+"           ";
        str = str.substring(0,13)+" ";

        sumString = PriceAsString(this.qty * this.price);

        // Führende Leerstellen mit Space auffüllen
        for (i=0; i<6-sumString.length;i++)
                str = str+" ";

        // Den fertigen Gesamtstring erzeugen
        str = str + sumString + "\n";

        return str;
}
Lot.prototype.basketString = basket_String;


/********** Weitere Funktionen für die Arbeit mit Lot und LoList **********/
/*** Funktionen für die Bearbeitung der gesamten "lotList" ***/
function newLot(q, n, p, a, pf)
{
        if (q != 0)
                // Neues Lot-Objekt erzeugen und an die Liste anhängen
                new Lot(q, n, p, a, pf);

        // Den Inhalt des Einkaufskorbs aktualisieren
        updateBasket();
}


/*** Posten mit ID "lotID" aus der Lot-Liste nehmen ***/
function removeLot(lotID)
{
        var i;

        for (i=lotID+1; i<lotList.length; i++)
        {
                // Posten herunterkopieren
                lotList[i-1] = lotList[i];
        }

        // Letztes Element von "lotList" löschen
        lotList.length = lotList.length - 1;

        // Den Inhalt des Einkaufskorbs aktualisieren
        updateBasket();
        updateDetailList();
}

/*** Gesamtpreis der Rechnung in w=1:DM   w=2:EUR ***/
function totalPrice(w)
{
        var i, sumString, sum=0.0;

        // Postenpreise zusammenrechnen
        for (i=0; i<lotList.length;i++)
                sum = sum + lotList[i].qty * lotList[i].price;

        // Gesamtpreis in String konvertieren und zurückgeben
        if (w==1)
                return PriceAsString(sum);
        if (w==2)
                return PriceAsString(sum / 1.95583);
}

/*** Pfand der Rechnung in w=1:DM   w=2:EUR ***/
function totalPfand(w)
{
        var i, sumString, sum=0.0;

        // Postenpreise zusammenrechnen
        for (i=0; i<lotList.length;i++)
                sum = sum + lotList[i].qty * lotList[i].pfand;

        // Gesamtpreis in String konvertieren und zurückgeben
        if (w==1)
                return PriceAsString(sum);
        if (w==2)
                return PriceAsString(sum / 1.95583);
}
/*** Gesamtpreis (inkl. Pfand) der Rechnung in w=1:DM   w=2:EUR ***/
function total(w)
{
        var i, sumString, sum=0.0;

        // Postenpreise zusammenrechnen
        for (i=0; i<lotList.length;i++)
                sum = sum + lotList[i].qty * lotList[i].price + lotList[i].qty * lotList[i].pfand;

        // Gesamtpreis in String konvertieren und zurückgeben
        if (w==1)
                return PriceAsString(sum);
        if (w==2)
                return PriceAsString(sum / 1.95583);
}

/*** String für die Anzeige im Warenkorb generieren ***/
function basketList()
{
        var i, str = new String("");

        // Schrittweise den Ausgabestring aufbauen
        for (i=0; i<lotList.length; i++)
                str = str.concat(lotList[i].basketString());

        // Resultierenden String zurückgeben
        return str;
}

/*** String für die Anzeige der Artikelliste im Detail generieren ***/
function detailList()
{
        var i, str = new String("");

        // Schrittweise den Ausgabestring aufbauen
        str = "(";
        for (i=0; i<lotList.length; i++){
           str = str.concat(lotList[i].article);
           if (i < lotList.length-1)
              str = str.concat(",");
        }
        str = str.concat(")");

        // Resultierenden String zurückgeben
        return str;
}

/*** Sonstige Funktionen ***/
function PriceAsString(fPrice)
{
        var dummy, fString, fNumber=fPrice;

        // Auf 2 Nachkommastellen runden
        fNumber = Math.round(100*fNumber)/100;

        // in String umwandeln
        fString = fNumber.toString();

        // DM und Pf trennen
        dummy = fString.split(".");

        // Bei DM-Beträgen, Pfennig hinzufügen
        if (dummy.length == 1)
                dummy[1] = "00";

        // Bei Groschenbeträgen, Pfennige hinzufügen
        if (dummy[1].length == 1)
                dummy[1] = dummy[1]+"0";

        // Checken, ob Null vor Komma
        if (dummy[0] == 0)
                dummy[0] = "0";

        // Gesamtpreis mit Komma wieder aufbauen und zurückgeben
        return dummy[0] + "," + dummy[1];
}

/*** Aktualisierung des Warenkorbs ***/
function updateBasket()
{
         // Postenliste anzeigen
         Warenkorb.document.basketForm.Einkaufsliste.value = basketList();

         // Gesamtbetrag anzeigen
         Warenkorb.document.basketForm.Total.value = "EUR " + totalPrice(1);
}

/*** Aktualisierung der Detail-Einkaufsliste ***/
function updateDetailList()
{
         if (flagDetailList){
            // Zwischensumme
            Inhalt.document.order.Zwischensumme.value = "EUR " + totalPrice(1);

            // Pfand
            Inhalt.document.order.Pfand.value = "EUR " + totalPfand(1);

            // Gesamt
            Inhalt.document.order.Gesamt.value = "EUR " + total(1);
         }
}