

// +-----------------------------------------------------------------------------------------------------+
// | rechner.js                                                                                          |
// +-----------------------------------------------------------------------------------------------------+
// | Copyright (c) 2008 steuerberaten.de                                                                 |
// +-----------------------------------------------------------------------------------------------------+
// | Datum: 07.07.2008                                                                                   |
// +-----------------------------------------------------------------------------------------------------+
// | Urheberrechtshinweis:                                                                               |
// | Diese Script ist urheberrechtlich geschützt. Einer Freigabe zur Publikation in anderen Medien oder  |
// | zu sonstiger Verwendung wird ausdrücklich widersprochen. Jede Zuwiderhandlung wird - unabhängig von |
// | Zweck, Person, Umfang, Einsatzgebiet - sofort und ohne weitere Warnung juristisch verfolgt.         |
// +-----------------------------------------------------------------------------------------------------+
// | Autor: Michael Mühl <muehl@emric.de>                                                                |
// +-----------------------------------------------------------------------------------------------------+



// ********** INFO TEXTE *********
function set_info(type)
 {
 	var TAXCALC = "19272001169";
	var obj;
    var txt;

    if (document.all)
      obj = document.all.infotext;
    else
      obj = document.getElementById("infotext");


	switch (type)
    {
		case "ausgabe":
			txt = txtausgabe
			break;
		case "allgemein":
			txt = "";
			break;
		case "monatlicher_beitrag":
			txt = "Monatlicher Beitrag: Geben Sie hier an, wieviel Geld Sie pro Zahlungszeitraum anlegen möchten.";
			break;
		case "zahlungsweise":
			txt = "Zahlungsweise: Geben Sie an, ob Sie die Summe monatlich, vierteljährlich, halbjährlich oder jährlich zahlen möchten.";
			break;			
		case "angespartes_kapital":
			txt = "Bereits angespartes Kapital: Wenn Sie in der Vergangenheit bereits Kapital angespart haben oder jetzt eine Einmalzahlung tätigen, können Sie hier die Summe angeben. Dieses Kapital wird dann auch gemäß der Angaben, die Sie weiter unten treffen können, verzinst.";
			break;			
		case "start_datum":
			txt = "Angelegt ab: Bitte wählen Sie hier, ab welchem Zeitpunkt Sie die Zahlungen beginnen möchten.";
			break;
		case "ende_datum":
			txt = "Angelegt bis: Bitte wählen Sie hier, wie lange sie die Zahlungen leisten möchten.";
			break;					
		case "jaehrliche_rendite":
			txt = "Jährliche Rendite: Wählen Sie hier die erwartete jährliche Rendite. Sie können auch unterschiedliche Prozentsätze angeben, um zu sehen, wie sich die jährliche Rendite auf das Endkapital auswirkt.";
			break;
		case "anderer_zielwert":
			txt = "Anderer Zielwert für angespartes Kapital: Hier können Sie angeben, wieviel Kapital Sie zu Rentenbeginn angespart haben werden. Dieser Wert kann vom oben errechneten abweichen, wenn Sie z.B. weitere Versicherungen abgeschlossen haben oder auf sonstige Weise Geld angespart haben, was jetzt verrentet werden soll.";
			break;
		case "verrentungszins":
			txt = "Verrentungszins: Auch das bereits angesparte Kapital wird weiter verzinst. Der Zinsertrag ist üblicherweise aber deutlich niedriger als in der Ansparphase, weil ihr Geld in sichere Anlagen investiert wird.";
			break;
		case "auszahlungsdauer_datum":
			txt = "Begrenzte Laufzeit: Wählen Sie hier, wie lange sie Ihre Rente beziehen möchten. Je länger die Auszahlungsphase, desto niedriger wird die monatliche Summe.";
			break;
		case "gewuenschte_hoehe_rentenzahlung":
			txt = "Feste Rente: Wenn Sie einen festen monatlichen Rentenbetrag wünschen, können Sie hier errechnen, wie lange ihr angespartes Kapital für die Zahlungen ausreichen wird.";
			break;
		case "zeitspanne_invalid":
			txt = "Das Startdatum muß kleiner sein, als das Enddatum";
			break;
		case "zeitspanne_invalid_2":
			txt = "Auszahlungsdauer später wählen";
			break;	

	}

    obj.innerHTML = txt;

  }
  

// ********** CALC *********
function CalcRente(widget, style)  
{
	style_action(style);
	
	if (widget == "") widget = false;
	else widget = true;
	
	var error = false;

	var monatlicher_beitrag		= change(document.eingabe.monatlicher_beitrag.value);
	var zahlungsweise			= document.eingabe.zahlungsweise.value;
	var vor_nach_schuessig		= 1;
	var angespartes_kapital		= change(document.eingabe.angespartes_kapital.value);
	var jaehrliche_rendite		= document.eingabe.jaehrliche_rendite.value;
	var anderer_zielwert		= change(document.eingabe.anderer_zielwert.value);
	var zahlungsfrequenz		= 12;
	var verrentungszins			= document.eingabe.verrentungszins.value;
	var vor_nach_schuessig_auszahlung	= 0;
	var gewuenschte_hoehe_rentenzahlung	= change(document.eingabe.gewuenschte_hoehe_rentenzahlung.value);
	
	
	
	var start_monat				= document.eingabe.start_monat.value;
	var start_jahr				= document.eingabe.start_jahr.value;
	var ende_monat				= document.eingabe.ende_monat.value;
	var ende_jahr				= document.eingabe.ende_jahr.value;
	
	var auszahlungsdauer_monat	= document.eingabe.auszahlungsdauer_monat.value;
	var auszahlungsdauer_jahr	= document.eingabe.auszahlungsdauer_jahr.value;
	
	// Berechnung
	var start_datum				= new Date(start_jahr, (start_monat - 1), 1);
	var ende_datum				= new Date(ende_jahr, (ende_monat - 1), 1);
	var start_datum_time		= start_datum.getTime();
	var ende_datum_time			= ende_datum.getTime();	
		
	if (ende_datum_time <= start_datum_time) {
		
		error = true;
		set_info('zeitspanne_invalid');
		
	} else {
		
		if (start_jahr < ende_jahr) {
			
			jahr_anz_monate = (ende_jahr - start_jahr) * 12;
			
			if (ende_monat < start_monat) {
				anz_monate = (jahr_anz_monate - (start_monat - ende_monat));				
			} else {
				anz_monate = jahr_anz_monate + (ende_monat - start_monat);
			}
			
		}
		
	}
	
	// Anzahl der Sparraten
	var sparraten_monate 	= anz_monate;
	var sparraten_quartale	= Math.floor(anz_monate / 3);
	var sparraten_halbjahre	= Math.floor(anz_monate / 6);
	var sparraten_jahre		= Math.floor(anz_monate / 12);
	
	switch (zahlungsweise) {
		case '1':
		var zahlungen		= sparraten_jahre;
		break;
		case '2':
		var zahlungen		= sparraten_halbjahre;
		break;
		case '4':
		var zahlungen		= sparraten_quartale;
		break;
		case '12':
		var zahlungen		= sparraten_monate;
		break;
		
	}
	
	// Anzahl der Rentenzahlungen	
	var auszahlungsdauer_datum	= new Date(auszahlungsdauer_jahr, (auszahlungsdauer_monat - 1), 1);
	var auszahlungsdauer_datum_time	= auszahlungsdauer_datum.getTime();
	
		
	if (auszahlungsdauer_datum_time <= ende_datum_time) {
		
		error = true;
		set_info('zeitspanne_invalid_2');
		
	} else {
		
		if (ende_jahr < auszahlungsdauer_jahr) {
			
			auszahlungsdauer_jahr_anz_monate = (auszahlungsdauer_jahr - ende_jahr) * 12;
			
			if (auszahlungsdauer_monat < ende_monat) {
				anzahl_rentenzahlungen = (auszahlungsdauer_jahr_anz_monate - (ende_monat - auszahlungsdauer_monat));				
			} else {
				anzahl_rentenzahlungen = auszahlungsdauer_jahr_anz_monate + (auszahlungsdauer_monat - ende_monat);
			}
			
		}
		
	}
	
	var zinssatz		= 1 + (jaehrliche_rendite / 100);
	var effektvzinssatz	= Math.pow(zinssatz,(1 / zahlungsweise));
	
	angesparte_summe = angespartes_kapital * (Math.pow(effektvzinssatz,zahlungen)) + monatlicher_beitrag * ((Math.pow(effektvzinssatz,(zahlungen+1))-effektvzinssatz)/(effektvzinssatz-1));	
	
	if (anderer_zielwert == '') {
		verwendete_auszahlungssumme = angesparte_summe;
	} else {
		verwendete_auszahlungssumme = anderer_zielwert;
	}
	
	effektiver_verrentungszins = Math.pow((1+verrentungszins/100),(1/zahlungsfrequenz));
		
	rentenzahlung = verwendete_auszahlungssumme * (effektiver_verrentungszins-1)*(Math.pow(effektiver_verrentungszins,anzahl_rentenzahlungen))/(Math.pow(effektiver_verrentungszins,(anzahl_rentenzahlungen+1))-effektiver_verrentungszins);
	
	laufzeit_in_monaten = Math.round(Math.log(gewuenschte_hoehe_rentenzahlung/(gewuenschte_hoehe_rentenzahlung-(effektiver_verrentungszins-1)*verwendete_auszahlungssumme))/(Math.log(effektiver_verrentungszins)));
	
	laufzeit_add_monate = (laufzeit_in_monaten % 12);
	laufzeit_add_jahre = (laufzeit_in_monaten - (laufzeit_in_monaten % 12)) / 12;
	
	zahlungsbeginn_jahr = parseInt(ende_jahr);
	zahlungsbeginn_monat = parseInt(ende_monat);
	
	if ((zahlungsbeginn_monat + laufzeit_add_monate) > 12) {
		zahlungsende_jahr = zahlungsbeginn_jahr + laufzeit_add_jahre + 1;
		zahlungsende_monat = (zahlungsbeginn_monat + laufzeit_add_monate) % 12;	
	} else {
		zahlungsende_jahr = zahlungsbeginn_jahr + laufzeit_add_jahre;
		zahlungsende_monat = zahlungsbeginn_monat + laufzeit_add_monate;
	}
	//zahlungsende_datum	= new Date(zahlungsende_jahr, (zahlungsende_monat - 1), 1);
	zahlungsende_monat_out = zahlungsende_monat.toString();
	if (zahlungsende_monat_out.length == 1) {
		zahlungsende_monat_out = "0" + zahlungsende_monat_out.length;
	}
	if (zahlungsende_monat_out > 0) {
		zahlungsende_ausgabe = zahlungsende_monat_out + "." + zahlungsende_jahr;
	} else {
		zahlungsende_ausgabe = " - ";
	}
	
	if (!error)
	{
		textzusammen(widget);
		set_info('ausgabe');
	}

}


function textzusammen(widget) 
{


	text = "<TABLE cellspacing=0 cellpadding=1 border=0'>";
	text += "<TR><TD class='cell_line'>&nbsp;</TD><TD class='cell_line_border'>&nbsp;</TD></TR>";

	text += "<TR><TD class='cell'>Angespartes Kapital:</TD>";
	text += "<TD class='cell_border'><nobr>&nbsp;" + komma(angesparte_summe) + " &euro;</nobr></TD></TR>";
	text += "<TR><TD class='cell_line'>&nbsp;</TD><TD class='cell_line'>&nbsp;</TD></TR>";
	
	text += "<TR><TD class='cell''>Rentenzahlung:</TD>";
	text += "<TD class='cell_border'><nobr>&nbsp;" + komma(rentenzahlung) + " &euro;</nobr></TD></TR>";
	text += "<TR><TD class='cell_line'>&nbsp;</TD><TD class='cell_line'>&nbsp;</TD></TR>";
	
	text += "<TR><TD class='cell'>Zahlungsende:</TD>";
	text += "<TD class='cell_border'><nobr>&nbsp;" + zahlungsende_ausgabe + " </nobr></TD></TR>";
	text += "<TR><TD class='cell_line'>&nbsp;</TD><TD class='cell_line'>&nbsp;</TD></TR>";
		
	text += "</TABLE>";



	if (!widget) 
	{ 
		promo = promo_p;
	} 
	else 
	{ 
		promo = "";
	}

	txtausgabe = text+promo;
}


