// Wandelt das Dezimalkomma in einen Dezimalpunkt um
function InZahl (Wert)
{
    var Pos = Wert.indexOf(",",0);
    if (Pos >= 0)	// Enthaelt die Variable 'Wert' ein Komma?
       { Wert = Wert.substring(0, Pos) + "." + Wert.substring(Pos + 1, Wert.length); }
    return parseFloat(Wert);
}


// Summierung der Potenzen von q nach dem Hornerschema
function Summe (EndWert, q)
{
    var Summe = 0;
    for (var Monat = 1; Monat <= EndWert; Monat++)
        { Summe = Summe * q + 1; }
    return Summe;
}


// Nachlass bei Vorauszahlung fuer 3..6..12 Monate
function NachlassA(KreditZins, Monate)
{
    var q = Math.pow(1 + KreditZins / 100, 1 / 12);
    var Ergebnis = (1 - Monate / Summe(Monate, q)) * 100;
    return Math.round(Ergebnis * 100) / 100
}


// Nachlass bei Vorauszahlung des Jahresbeitrages in 2..4 Monaten
function NachlassB(KreditZins, Monate)
{	
    var q = Math.pow(1 + KreditZins / 100, 1 / 12);
    var Ergebnis = Summe(12 / Monate, q)
    q = Math.pow(q, 12 / Monate - 1)
    Ergebnis *= Summe(Monate, q)
    Ergebnis  = (1 - 12 / Ergebnis) * 100
    return Math.round(Ergebnis * 100) / 100
}


// Berechnet den Nachlass auf den Jahresbeitrag
function Nachlass(KreditZins, Monate, OptionsFeld)
{
    Monate     = InZahl(Monate);
    KreditZins = InZahl(KreditZins);
    /* Fehlerpruefungen */
    if ((Monate < 1) || (12 < Monate))
    	{ alert("Anzahl der Monate muß zwischen 1..12 liegen"); }
    else if (KreditZins < 0)
    	{ alert("Kreditzins muß positiv sein"); }
    else if (Math.floor(Monate)!=Monate)
    	{ alert("Anzahl Monate muß ganzzahlig sein"); }
    else  /* Berechnungsmethode nach Wahl des Optionsfeldes waehlen */
    {
      if (OptionsFeld[0].checked) { return NachlassA(KreditZins, Monate); }
    
      if (OptionsFeld[1].checked)
         if(12 % Monate == 0)
    	{ return NachlassB(KreditZins, Monate); }
         else { alert("Anzahl der Monate muß Teiler von 12 sein"); }
    }
    return "-?-"; /* Rueckgabewert bei fehlerhafter Eingabe */
}

