var maklerProzent = 0;
var maklerBetrag = 0;
var grunderwerbsSteuer = 0;
var notarKosten = 0;
var kaufpreis = 0;
var eigenkapital = 0;
var GEStprozent = 0;
var Ntrprozent = 0;
var reparatur = 0;
var sonstiges = 0;

var maklerGeaendert = false;
var gewSteuerGeaendert = false;
var notarGeaendert = false;

$(document).ready(function(){

	// Betragsfelder mit "0,00" initialisieren
	var vorbelegung1 = float2String(parseFloat(0,00).toFixed(2) , 2);
	$("#kaufpreis").val(vorbelegung1);
	$("#maklerBetrag").val(vorbelegung1);
	$("#grunderwerbssteuer").val(vorbelegung1);
	$("#notarBetrag").val(vorbelegung1);
	$("#gesamtkosten").val(vorbelegung1);
	$("#darlehen").val(vorbelegung1);
	$("#monatlRate").val(vorbelegung1);

	// Betragsfelder mit "0" initialisieren
	$("#laufzeitJahre").val(0);
	$("#laufzeitMonate").val(0);

	$("#kaufpreis").keyup(function() {
		berechnen();
	});
	

	$("#maklerProzentsatz").keyup(function() {
		berechnen();
	});	
/*
	$("#maklerBetrag").keyup(function() {
		maklerGeaendert = true;
		
		berechnen();
	});	
*/

	$("#grunderwerbsSteuersatz").keyup(function() {
		berechnen();
	});	
	
	
	$("#grunderwerbssteuer").keyup(function() {
		gewSteuerGeaendert = true;
		
		berechnen();
	});	
	
	
	$("#notarProzentsatz").keyup(function() {

		berechnen();
	});	
		
		
	$("#notarBetrag").keyup(function() {
		notarGeaendert = true;
		// notarKosten = getFloatValue( $("#notarBetrag").val() , 0 );

		berechnen();
	});	
	
	
	$("#reparatur").keyup(function() {
		berechnen();
	});	
	
	
	$("#sonstiges").keyup(function() {
		berechnen();
	});	

	$("#eigenkapital").keyup(function() {
		berechnen();
	});	
	
	
	$("#effZins").keyup(function() {
		berechnen();
	});	

	
	$("#tilgungsrate").keyup(function() {
		berechnen();
	});	
		

});	
	
	
	



	function berechnen() {
		/***************************************************************
			Prüfe Kaufpreis
		***************************************************************/
		kaufpreis = getFloatValue( $("#kaufpreis").val() , 1 );
		if ( (kaufpreis <= 0 ) || ( kaufpreis == "")) {
			kaufpreis = parseFloat(0);
			$("#kaufpreis").val(kaufpreis);
		}


		/***************************************************************
			Abfangen falsche Eingaben Maler + Sonstige Kosten
		***************************************************************/
		reparatur = getFloatValue( $("#reparatur").val() , 0 );
		sonstiges = getFloatValue( $("#sonstiges").val() , 0 );
		

		/***************************************************************
			Berechne Maklergebühren
		***************************************************************/
		if (maklerGeaendert == false) {
			maklerProzent = getFloatValue( $("#maklerProzentsatz").val() , 1.0);
			maklerBetrag = parseFloat((kaufpreis * maklerProzent / 100).toFixed(2));
			maklerBetrag = float2String(maklerBetrag,2);
			$("#maklerBetrag ").val(maklerBetrag);
		}
		else {
			maklerBetrag = getFloatValue( $("#maklerBetrag").val() , 0.00 );
		}



		/***************************************************************
			Berechne Grunderwerbssteuer
		***************************************************************/
		if (gewSteuerGeaendert == false) {
			GEStprozent = getFloatValue( $("#grunderwerbsSteuersatz").val() , 3.5);
			grunderwerbsSteuer = parseFloat((kaufpreis * GEStprozent / 100).toFixed(2));
			grunderwerbsSteuer = float2String(grunderwerbsSteuer ,2);
			$("#grunderwerbssteuer").val(grunderwerbsSteuer);
		}
		else {
			grunderwerbsSteuer = getFloatValue( $("#grunderwerbssteuer").val() , 0 );
		}
	
		/***************************************************************
			Berechne Notarkosten
		***************************************************************/
		if (notarGeaendert == false) {
			Ntrprozent = getFloatValue( $("#notarProzentsatz").val() , 1.5 );
			notarKosten = parseFloat((kaufpreis * Ntrprozent / 100).toFixed(2));
			notarKosten = float2String(notarKosten , 2);
			$("#notarBetrag").val(notarKosten);
		}
		else {
			notarKosten = getFloatValue( $("#notarBetrag").val() , 0 );
		}
		
		/***************************************************************
			Berechne Gesamtkosten
		***************************************************************/
		grunderwerbsSteuer = grunderwerbsSteuer = getFloatValue( $("#grunderwerbssteuer").val() , 0 );
		notarKosten = getFloatValue( $("#notarBetrag").val() , 0 );
		
		var gesamtKosten = kaufpreis + grunderwerbsSteuer + notarKosten;

		gesamtKosten = float2String( gesamtKosten , 2);
		$("#gesamtkosten").val(gesamtKosten);
		
		/***************************************************************
			Setze Eigenkapital & Berechne Darlehenssumme
		***************************************************************/
		eigenkapital = getFloatValue( $("#eigenkapital").val() , 0 );
		gesamtKosten = getFloatValue( $("#gesamtkosten").val() , 2 );
		
		var darlehen = gesamtKosten - eigenkapital;
		darlehen = float2String( darlehen , 2);
		$("#darlehen").val(darlehen);


		/***************************************************************
			Setze effektiven Zins
		***************************************************************/
		effZins = getFloatValue( $("#effZins").val() , 4.96 );
		if ( (effZins <= 0 ) || ( effZins == "")) effZins = 1;

		
		/***************************************************************
			Setze Tilgungsrate
		***************************************************************/
		tilgungsrate = getFloatValue( $("#tilgungsrate").val() , 1.5 );
		if ( (tilgungsrate <= 0 ) || ( tilgungsrate == "")) tilgungsrate = 1;
		
	
		/***************************************************************
			Berechne Monatliche Rate
		***************************************************************/
		darlehen = getFloatValue( $("#darlehen").val() , $("#darlehen").val() );
		if (darlehen <= 0) {
			$("#monatlRate").val(0);
			$("#laufzeitJahre").val(0);	
			$("#laufzeitMonate").val(0);	
			return;
		}


		var monatlRate = (( darlehen * effZins / 100 )  + ( darlehen * tilgungsrate / 100 )) / 12;
		
		
		if ( monatlRate < 0.01 ) {
			monatlRate = 0;
			$("#monatlRate").val(monatlRate);	
			return;
		} else {
			monatlRate = float2String( monatlRate , 2);
			$("#monatlRate").val(monatlRate);
		}		

		/***************************************************************
			Berechne Laufzeit
		***************************************************************/
		monatlRate = getFloatValue( monatlRate , monatlRate );

		var getilgt = 0;
		var laufzeit = 0;

		while (getilgt < darlehen) {
			var aktZinsanteil = ((darlehen - getilgt) * (effZins / 100 )) / 12;
			var tilgungsrate = monatlRate - aktZinsanteil;
			getilgt += tilgungsrate;
			laufzeit++;
		}
			
	
//		var laufzeit = darlehen / monatlRate;
		var monate = float2String( laufzeit % 12 , 0);
		var jahre = float2String( laufzeit / 12 , 0);
		var monate = Math.ceil(laufzeit % 12);
		var jahre = Math.floor(laufzeit / 12);
				
		$("#laufzeitJahre").val(jahre);	
		$("#laufzeitMonate").val(monate);	

		

		


/*
		alert("kaufpreis: " + kaufpreis +
			"\ntype: " + typeof(kaufpreis)

			+ "\n\ngrunderwerbsSteuer: " + grunderwerbsSteuer
			+ "\ntype: " + typeof(grunderwerbsSteuer)	

			+ "\n\nnotarKosten: " + notarKosten
			+ "\ntype: " + typeof(notarKosten)

			+ "\n\nreparatur: " + reparatur
			+ "\ntype: " + typeof(reparatur)

			+ "\n\nsonstiges: " + sonstiges
			+ "\ntype: " + typeof(sonstiges)

			+ "\n\Gesamtkosten: " + gesamtKosten
			+ "\ntype: " + typeof(sonstiges)

			+ "\n\n\EK: " + eigenkapital
			+ "\ntype: " + typeof(eigenkapital)

			+ "\n\n\Darlehen: " + darlehen
			+ "\ntype: " + typeof(eigenkapital)
			
			+ "\n\n\monatl.Rate: " + monatlRate
			+ "\ntype: " + typeof(monatlRate)
		);
//*/		

	}	
	
	


	/***************************************************************
		Funktion zum Umwandeln falscher Zahlenformate
		wird nur von getFloatValue aufgerufen
	***************************************************************/
	// function str2float(string) {
		// return string.replace(/,/ , ".");
	// }
	


	/***************************************************************
		Funktion zum Umwandeln falscher Zahlenformate
	***************************************************************/
	function getFloatValue(feld , standardwert) {
		var wert = feld.replace(/,/ , ".");
		if (wert == "") wert = 0;
		if (isNaN(wert)) {
			return standardwert;
		} else {
			return parseFloat(wert);
		}
	}
	


	/***************************************************************
		Funktion zum Umwandeln falscher Zahlenformate
	***************************************************************/
	function float2String(eingabewert,nachkommastellen) {
		var wert = parseFloat(eingabewert).toFixed(nachkommastellen);
		return wert.replace("." , ",");
	}
	
	/***************************************************************
		Funktion zum Einfügen des Tausenderpunkts
	***************************************************************/
	function insertTausend(zahl) {
/*		zahl = '' + zahl;
		if (zahl.length > 6) {
			var mod = zahl.length % 3;
			var output = (mod > 0 ? (zahl.substring(2,mod)) : '');
			for (i=2 ; i < Math.floor(zahl.length / 3); i++) {
				if ((mod == 0) && (i == 0)) {
					output += zahl.substring(mod+ 3 * i, mod + 3 * i + 3);
				} else {
					output += '.' + zahl.substring(mod + 3 * i, mod + 3 * i + 3);
				}
			}
			return (output);
		}
		else return number;*/
	}

