Thema: Rabatt Funktion in JavaScript Shop

Hallo Leute,
bin java-script Amateur und verzweifle an eine einfachen Sache:
eine Rabattfunktion für mein Webshop (von Mischapage)
Hier der code: <HTML>
<HEAD>
    <TITLE>Warenkorb - Navigationsleiste</TITLE>

<SCRIPT LANGUAGE=JavaScript1.1>
<!--

//////////////////////////////////////////////////////////////////
// Javascript fuer Cookies
//////////////////////////////////////////////////////////////////

// Interne Funktion
function getCookieVal (offset) {
  var endstr = document.cookie.indexOf (";", offset);
  if (endstr == -1)
    endstr = document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr));
}

// Datumsfehler bei MAC beseitigen, 1 mal (!!!) vor SetCookie
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);
}

// Liefert Cookie "name" oder Null
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;
}

// Erzeugt/Aktualisiert Cookie
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" : "");
}

// Loescht Cookie
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";
  }
}

//////////////////////////////////////////////////////////////////
// Javascript fuer Bestellsystem
// -> Aufhaenger fuer die Daten
//////////////////////////////////////////////////////////////////

// Datenbank mit allen Produkten, Beschreibungen, Preisen und Anz.
// Wird in den einzelnen Uebersichtsseiten gefuellt
var db_beschr  = new Array();
var db_preis   = new Array();
var db_anzahl  = new Array();


var db_bestand = new Array();               // Bestandswerte
var db_bestand_datum = "undefiniert";

// Feste Werte
var konst_mwst  = 16;         // Mehrwertsteuer in Prozent
var konst_porto = 750;        // Porto und Verpackung in Pfennig
var konst_euro  = 1.97809;    // Umrechnung DM / Euro


//Rechnungsanschrift
var anschrift_name    = "Vorname Name";
var anschrift_str     = "Strasse 123";
var anschrift_ort     = "12345 Ort";

//////////////////////////////////////////////////////////////////
// Javascript fuer Bestellsystem
// -> Daten manipulieren
//////////////////////////////////////////////////////////////////

// Einen Datensatz mit einer best. Bestellnummer aendern
// -> zum Loeschen anzahl=0 setzen
function hinzufuegen( nummer, beschreibung, preis, anzahl )
{
    db_beschr[nummer] = beschreibung;
    db_preis[nummer] = preis;
    db_anzahl[nummer] = anzahl;

    // Meldung
    self.status= "Artikel " + beschreibung + " (" + nummer + ") wird mit " +
                 anzahl + " Stück im Warenkorb geführt."
}

// Einen Datensatz mit einer best. Bestellnummer loeschen
function loeschen( formular, nummer )
{
    if( db_anzahl[nummer] )
    {
        db_anzahl[nummer] = 0;
        anzahl_eintragen( formular );

        // Meldung
        self.status = "Der Artikel " + db_beschr[nummer] +
                      " wurde aus der Bestellung entfernt."
    }
    else
    self.status = "Dieser Artikel war noch nicht bestellt!"
}

// bestellte Anzahlen in Formular eintragen
// Parameter: Formularname (document.Bestellung)
function anzahl_eintragen( formular )
{
    // Alle Formulatelemente
    for (var j = 0; j < formular.elements.length; j++)
    if( formular.elements[j].name )
    {
        // Leere Felder mit 0 initialisieren
        if( formular.elements[j].value == "" )
            formular.elements[j].value = "0";

        // Suchen
        for( nr in db_anzahl )
            if( formular.elements[j].name == nr)
            {
                formular.elements[j].value = db_anzahl[nr];
                break;
            }
    }

    // Meldung
    self.status="Werte wurden aus der Datenbank eingetragen."
}

// Formatierung von Pfennigbetraegen in Mark,Pfennig
function format_preis( pfennige )
{
    var mark = Math.floor( pfennige / 100 );
    var pfen = pfennige % 100;

    var text = mark + ",";
    if( pfennige % 100 < 10 )
        text += "0";

    text += pfen;

    return( text );
}




// Speichert Anschrift
function sp_anschrift()
{
  // Verfallsdatum fuer Cookie
  var ms_jahr = 12*30*24*60*60*1000;    // 1 Jahr Cookie-Gueltigkeit
  var ablauf  = new Date(); FixCookieDate(ablauf);
  var heute   = new Date(); FixCookieDate(heute);
  ablauf.setTime( heute.getTime() + ms_jahr );

  // Wert fuer Cookie: Daten durch '*' getrennt
  var wert = anschrift_name + "*" + anschrift_str + "*" + anschrift_ort;
  SetCookie("Kundendaten", wert, ablauf);

  // Hinweismeldung
  alert("Ihre Anschrift wurde in einem Cookie gespeichert\n" +
        "Benötigen Sie später Ihre Anschriftsdaten wieder,\n" +
        "drücken Sie einfach den Schaltknopf: [ Laden ].");
}

// Laed Anschrift
function ld_anschrift()
{
  var wert = GetCookie("Kundendaten");
  if (wert)
  {
    var trennpos = wert.indexOf("*");
    if (trennpos != -1)
    {
      anschrift_name = "" + wert.substring( 0, trennpos );
      wert = wert.substring( trennpos + 1, wert.length );

      trennpos = wert.indexOf("*");
      if (trennpos != -1)
      {
        anschrift_str = "" + wert.substring( 0, trennpos );
        anschrift_ort = wert.substring( trennpos + 1, wert.length );
      }
    }
  }
}

//////////////////////////////////////////////////////////////////
// Javascript fuer Bestellltabelle
//////////////////////////////////////////////////////////////////
function bestelltabelle( target, is_online )
{
    // Bestelldaten in einer Tabelle
    var is_bestellt = 0;
    var endpreis    = 0;
    var gesamtpreis = 0;



    for (best_nr in db_anzahl)
    {
        if( (db_anzahl[best_nr] != "0") &&
            (db_anzahl[best_nr] != "") )
        {
            if( is_bestellt == 0 )
            {
                // Tabellenanfang, wenn ueberhaupt was bestellt
                target.writeln("<table cellspacing=0 cellpadding=5 border=1>");
                target.writeln("<tr><th nowrap>Anzahl</th>");
                target.writeln("<th nowrap>Best.Nummer</th>");
                target.writeln("<th nowrap>Kurzbezeichnung</th>");
                target.writeln("<th nowrap>je</th>");
                target.writeln("<th nowrap>gesamt</th></tr>");
            }
            is_bestellt=1;

            target.writeln("<tr>");
            target.writeln("<td>" + db_anzahl[best_nr] + "</td>" );
            target.writeln("<td>" + best_nr + "</td>" );
            target.writeln("<td>" + db_beschr[best_nr] + "</td>" );

            target.write("<td align=right>");
            target.write( format_preis( db_preis[best_nr] ) );
            target.writeln(" DM </td>" );

            gesamtpreis = db_preis[best_nr] * db_anzahl[best_nr];
            target.writeln("<td align=right>" + format_preis( gesamtpreis ) + " DM </td>" );

            endpreis += gesamtpreis;
            target.writeln("</tr>");

            // Formularfelder fuer Onlinebestellung
            if( is_online == 1 )
            {
                target.writeln('    <!---Online-Daten------------------------------------->');
                target.writeln('    <input type="hidden"');
                target.writeln('           name=" ' + best_nr + '"');
                target.writeln('           value=" '
                                           + db_anzahl[best_nr]
                                           + 'x '
                                           + format_preis( db_preis[best_nr] )
                                           + 'DM = '
                                           + format_preis( gesamtpreis )
                                           + 'DM       ('
                                           + db_beschr[best_nr]
                                           + ')">' );
            }
        }
    }

    // Tabellenende oder Fehlermeldung
    if( is_bestellt == 0 )
    {
        target.writeln("<p>Sie haben noch keine Artikel ausgewählt.<p>");
    }
    else
    {
        // Tabellenende
        // Porto und Verpackung
        target.writeln("<tr>");
        target.writeln("<td colspan=4 align=right>Anteilige Kosten für Porto und Verpackung:</td>" );
        target.writeln("<td align=right>" + format_preis( konst_porto ) + " DM </td>" );
        target.writeln("</tr>");
        endpreis += konst_porto;

        // Ausgabe Gesamtpreis



        target.writeln("<tr>");
        target.writeln("<td colspan=4 align=right><b>Gesamtpreis:</b></td>" );
        target.writeln("<td align=right><b>" + format_preis(endpreis) + " DM </b></td>" );
        target.writeln("</tr>");

        // Tabellenende
        target.writeln("</table>");

        // Berechnete Daten
        target.writeln( "<p>" );


        // Mehrwertsteuer
        var mwst = Math.floor( endpreis * konst_mwst / 100 );
        target.writeln( "Diese Bestellung enthält" + konst_mwst + "% gesetzliche MwSt = ");
        target.writeln( format_preis( mwst ) + " DM.<br>" );





        // Euro
        var euro = Math.floor( endpreis / konst_euro );
        target.writeln( "Der Gesamtpreis dieser Bestellung entspricht");
        target.writeln( format_preis( euro ) + " Euro" );
        target.writeln( "(1 Euro = " + konst_euro + " DM)." );

        // Bestellhinweise
        target.writeln( "<p> " );
        target.writeln( "<hr>" );
        target.writeln( "Hier können Bestellhinweise aufgeführt werden." );

        // Formularfelder fuer Onlinebestellung
        if( is_online == 1 )
        {
            target.writeln("    <!---Online-Daten------------------------------------->");
            target.writeln('    <input type="hidden" name=" " value="' +
                                '===================================================================="> ');
            target.writeln('    <input type="hidden" name="           Porto" value="'
                                + format_preis(konst_porto) + ' DM"> ');
            target.writeln('    <input type="hidden" name="     Gesamtpreis" value="'
                                + format_preis(endpreis) + ' DM"> ');
            target.writeln('    <input type="hidden" name=" MwSt in Prozent" value="'
                                + konst_mwst + '% "> ');
            target.writeln('    <input type="hidden" name="            MwSt" value="'
                                + format_preis(mwst) + ' DM"> ');
            target.writeln();
        }
    }

    return is_bestellt;
}

//////////////////////////////////////////////////////////////////
// Javascript fuer Ausdruck/Fax (alt)
//////////////////////////////////////////////////////////////////
function bestellfenster( is_fax )
{
    var fenster = open("wait.htm",
                       "bestellfenster",
                       "width=600,toolbar=yes,resizable=yes,scrolling=yes");

    // old: ... "width=600,height=400,toolbar=yes,resizable=yes");

    var title, headline;

    if( is_fax == 1 )
    {
        title="Bestellung per Fax";
        headline="FAX - Bestellung an 09131 / 12345";
    }
    else
    {
        title="Bestellung per gelber Post";
        headline="Bestellung per Post";
    }

    fenster.focus();
    fenster.document.open();
    fenster.document.writeln("<HTML>");
    fenster.document.writeln("<HEAD><TITLE>" + title + "</TITLE></HEAD>");
    fenster.document.writeln('<body leftmargin="5" bgColor="#ffffff">');
    fenster.document.writeln("<h1>" + headline + "</h1>");
    fenster.document.writeln("<hr>");

    // Anschrift Kunde
    fenster.document.writeln("<h2>Anschrift:</h2>");
    fenster.document.writeln( "<tt>" + parent.oben.anschrift_name + "<br>" );
    fenster.document.writeln( parent.oben.anschrift_str + "<br><br>" );
    fenster.document.writeln( parent.oben.anschrift_ort + "<br></tt>" );

    if( is_fax == 0 )
    {
        // Anschrift Kunde
        fenster.document.writeln( "<p>" );
        fenster.document.writeln("<h2>Empfänger:</h2>");
        fenster.document.writeln( "<tt>Onlineversand Mischapage<br>" );
        fenster.document.writeln( "Otto von Quelle-Str. 4711<br><br>" );
        fenster.document.writeln( "12345 Musterhausen<br></tt>" );
    }

    fenster.document.writeln( "<p>" );
    fenster.document.writeln( "<b>Hiermit bestelle ich, " + parent.oben.anschrift_name + ",");
    fenster.document.writeln( "verbindlich folgende Artikel:</b>" );

    // Tabelle mit bestelldaten
    fenster.document.writeln( "<p> " );
    var is_bestellt = bestelltabelle( fenster.document,0 );

    // Fensterdokument schlieÃ?en
    // -> alert() erst nach schlieÃ?en des Dokuments moeglich (IE5)  Bug?
    fenster.document.close();

    if( is_bestellt == 1 )
    {
        // Hinweis und drucken...
        fenster.alert( "Wählen Sie bitte im folgenden Druckdialog Ihren Faxtreiber aus\n" +
                       "um die Bestellung per FAX zu versenden.\n\n" +
                       "Sollte Ihr Browser den Druckdialog nicht automatisch anzeigen\n" +
                       "öffnen Sie diesen bitte über das Drucken-Symbol in der Toolbar." );
        fenster.print();
    }
    else
    {
        fenster.alert( "Ihr aktueller Wahrenkorb ist leer.\n" +
                       "Eine Bestellung kann NICHT durchgeführt werden!" );
        fenster.close();
    }
}

//////////////////////////////////////////////////////////////////
// Javascript fuer Online-Bestellung
//////////////////////////////////////////////////////////////////
function onlinebestellung()
{
    // Grundseite
    parent.main.document.open();
    parent.main.document.writeln("<html>");
    parent.main.document.writeln("<head><title>Online - Bestellung</title></head>");
    parent.main.document.writeln('<body leftmargin="5" bgColor="#ffffff">');

    parent.main.document.writeln("<h1>Online-Bestellung</h1>");

    // Mailformular

    parent.main.document.writeln('<form action="mailto:fotobestellung@illuma.de?Subject=Warenkorb%20Online-Bestellung"');
    parent.main.document.writeln('      enctype="text/plain"');
    parent.main.document.writeln('      method="post" >');

    // Kundendaten
    parent.main.document.writeln();
    parent.main.document.writeln( "  <h2>Anschrift</h2>");
    parent.main.document.writeln( "  <tt>" + parent.oben.anschrift_name + "<br>" );
    parent.main.document.writeln( "  "     + parent.oben.anschrift_str  + "<br>" );
    parent.main.document.writeln( "  "     + parent.oben.anschrift_ort  + "<br></tt>" );

    // E-Mail Ã?berschrift
    parent.main.document.writeln();
    parent.main.document.writeln( '  <input type="hidden" name=" " value="' +
                      '============================================"> ');
    parent.main.document.writeln( '  <input type="hidden" name=" " value="' +
                      '= Mischapage Warenkorb Onlinebestellung =="> ');
    parent.main.document.writeln( '  <input type="hidden" name=" " value="' +
                      '=========================================="> ');
    parent.main.document.writeln();

    // Formulatdaten fuer E-Mail
    parent.main.document.writeln();
    parent.main.document.writeln( '  <input type="hidden" name="      Kunde Name" value="' +
                      parent.oben.anschrift_name + '"> ');
    parent.main.document.writeln( '  <input type="hidden" name="   Kunde Strasse" value="' +
                      parent.oben.anschrift_str + '"> ');
    parent.main.document.writeln( '  <input type="hidden" name="       Kunde Ort" value="' +
                      parent.oben.anschrift_ort + '"> ');
    parent.main.document.writeln('    <input type="hidden" name=" " value="' +
                      '===================================================================="> ');

    // Tabelle mit Bestelldaten und HIDDEN-Feldern fuer die Daten
    parent.main.document.writeln( "<p> " );
    var is_bestellt = bestelltabelle( parent.main.document,1 );

    // Submit-Button
    if( is_bestellt == 1 )
    {
        parent.main.document.writeln();
        parent.main.document.writeln('  <p>');
        parent.main.document.writeln('  <input type="submit" value="Bestellung aufgeben">');
    }

    // Ende Mailformular und Seite
    parent.main.document.writeln();
    parent.main.document.writeln("</form>");
    parent.main.document.writeln('</body>');
    parent.main.document.writeln("</html>");
    parent.main.document.close();
}

// -->
</SCRIPT>
</HEAD>
<!----- Das Auswahlmenu ---------------------------------------------------------->
<BODY bgColor="#00cccc">
<table width=100% border=0 cellspacing=0 cellpadding=0>
<tr>
    <td align=left valign=middle>
    <!------------------------------------------------------>
    <table cellpadding="0" cellspacing="0" border="0"><tr>
    <td nowrap><font face="lucida console" size="6"> </font></td>
    <td nowrap><font face="lucida console" size="6">Misch</font></td>
    <td bgcolor="fuchsia" nowrap><font face="lucida console" size="6">a</font></td>
    <td nowrap><font face="lucida console" size="6">page W</font></td>
    <td bgcolor="fuchsia" nowrap><font face="lucida console" size="6">a</font></td>
    <td nowrap><font face="lucida console" size="6">renkørb</font></td>
    </tr></table>
    <!------------------------------------------------------>
    </td>
    <td align="right" valign="middle">
        <hr noshade size=1 color="black">
        <tt>Vø.92 / © 26.09.99 by Mischa</tt>
        <hr noshade size=1 color="black">
    </td>
</tr>
</table>

</BODY>
</HTML>


Hier das funktionierende Beispiel:
http://home.foni.net/~mischa-schmidt/wk/