// berechnet Tilgungsplan bei Annuitaetentilgung
var kapital;
var belastung;
var tilgungsrate;
var zinsatz;
var zinsbetrag;
var tilgungGesamt;
var zinsGesamt;
var jahr;
var monat;
var eingabe;
var ausgabe;
var fehlermeldung = "Please insert a numerical value\n(e.g. 20 or 10.12)";

function rechne() {
	
    // pruefen:
	if (    isNaN( document.annuitaet.kapital.value ) 
	    || ( document.annuitaet.kapital.value == "" ) ) {
		document.annuitaet.kapital.focus();
		alert(fehlermeldung);
		return false;
	}
	if (     isNaN( document.annuitaet.zinssatz.value )
	    || ( document.annuitaet.zinssatz.value == "") ) {
		document.annuitaet.zinssatz.focus();
		alert(fehlermeldung);
		return false;
	}
	if (     isNaN( document.annuitaet.tilgungssatz.value ) 
	    || ( document.annuitaet.tilgungssatz.value == "") ) {
		document.annuitaet.tilgungssatz.focus();
		alert(fehlermeldung);
		return false;
	}

	// einlesen:
	kapital = parseFloat(document.annuitaet.kapital.value);
	zinssatz = parseFloat(document.annuitaet.zinssatz.value) / 100;
	tilgungssatz = parseFloat(document.annuitaet.tilgungssatz.value) / 100;

	// Berechnung des Tilgungsplans:
	jahr         = 1;    // Initialisierungen
	tilgungGesamt = 0;
	zinsGesamt = 0;
	
	belastung    = runde( ( zinssatz + tilgungssatz ) * kapital / 12 );
	zinsbetrag   = runde( zinssatz * kapital );
	tilgungsrate = runde( tilgungssatz * kapital );
	ausgabe  = "<html><title>redemption schedule</title>" + 
	          "<body bgcolor=white> ";
	ausgabe += "<h1 align='center'>Redemption schedule for" + 
		          " an annuity loan</h1>" +
		          "<table border align='center'>" + 
		            "<tr>" +
					   "<th>year</th> <th>month</th> <th>monthly debit</th>" +
					   "<th> interest amount</th>" +
					   "<th> redemption amount</th>" +
					   "<th> remaining amount of debt</th>" +
					 "</tr>";
	// Schleife bis zum vorletzten Jahr:
	while ( kapital - tilgungsrate > 0 && tilgungsrate > 0 ) {
		ausgabe += "<tr> <td>" + jahr + "</td> <td> - </td> <td>" + 
		           belastung + "</td> <td>" + 
		           zinsbetrag + "</td> <td>" +
		           tilgungsrate + "</td>"; 
	    zinsGesamt    += zinsbetrag;
	    tilgungGesamt += tilgungsrate;
		kapital = runde ( kapital - tilgungsrate );           
		ausgabe += "<td>" + kapital + "</td> </tr>";
	    tilgungsrate = runde( monatsTilgung() * 12 );
		jahr++;
	}
	
	// Schleife der verbleibenden Monate des letzten Jahres:
	monat = 1;
	while ( kapital - monatsTilgung() > 0 ) {
		ausgabe += "<tr> <td>" + jahr + "</td> <td>" + monat + "</td> <td>" + 
		           belastung + "</td> <td>" + 
		           runde( zinsbetrag / 12 ) + "</td> <td>" +
		           runde( monatsTilgung() ) + "</td>"; 
	    zinsGesamt    += runde( zinsbetrag / 12 );
	    tilgungGesamt += runde( monatsTilgung() );
		kapital = runde ( kapital - runde( monatsTilgung() ) );           
		ausgabe += "<td>" + kapital + "</td> </tr>";
		monat++;
	}
	
	// Letzte Monatszahlung:
	//kapital = runde( kapital );
	ausgabe += "<tr> <td>" + jahr + "</td> <td>" + monat + "</td> <td>" + 
	           kapital + "</td> <td>" + 
		       runde( zinssatz * kapital / 12 ) + "</td> <td>" +
		       kapital + "</td>"; 
	    zinsGesamt    += runde( zinssatz * kapital / 12 );
	    tilgungGesamt += kapital;
	ausgabe += "<td> - </td> </tr>";
	
	// Beenden der <table>-Ausgabe:
	ausgabe += "<tr bgcolor=red><th colspan=3>Gesamt:</th>";
	ausgabe += "    <td>"  + runde ( zinsGesamt ) + 
	           "</td><td>" + runde( tilgungGesamt ) + "</td><td>&nbsp;</td>";
	ausgabe += "</table>";

	document.annuitaet.laufzeit.value = jahr;
	var neuesFenster = window.open("","schedule");
//	var neuesFenster = window.open("about:blank","annuity redemption schedule","scrollbars=yes");
	neuesFenster.document.write( ausgabe );
	neuesFenster.document.close();
}

function monatsTilgung () {
	var betrag;
	
	zinsbetrag = runde( zinssatz * kapital );
	betrag = runde( belastung - ( zinsbetrag / 12 ) );
	return betrag;
}

function runde ( betrag ) {      // rundet betrag auf 2 Stellen
	betrag = Math.round( 100 * betrag ) / 100;
	return betrag;
}

function stop() {
	document.annuitaet.kapital.value = '';
	document.annuitaet.zinssatz.value = '';
	document.annuitaet.tilgungssatz.value = '';
	document.annuitaet.laufzeit.value = '-';
}