//####################################################################################################################################
//	Fix
//####################################################################################################################################

function Fix() {
	
	this.interest = 12.9;
		
	var maxBarkaufpreis = 40000;
	var minBarkaufpreis = 1000;
	
	function checkMindestLaufzeit () {
		return (laufzeit != undefined && laufzeit != "" && laufzeit > 5);
	}
	
	function checkBarkaufpreis () {
		return (barkaufpreis != undefined && barkaufpreis <= maxBarkaufpreis && barkaufpreis >= minBarkaufpreis);
	}
	
	function MWST () {
		return 0.076;
	}
	
	function Runden (a_value) {
		var rappen = Math.round(a_value*100);
		// Runden auf 5 Rappen
		var mod = rappen%5;
		(mod > 2.5) ? rappen += (5-mod) : rappen -= mod;
		var betrag = rappen / 100;
		return betrag;
	}
	
	function CalcEffZins (a_nomZins) {
		return (Math.pow(((a_nomZins / 1200) + 1) , 12) - 1) * 100;
	}
	
	function CalcNomZins (a_effZins) {
		return ((Math.pow((a_effZins / 100 + 1),(1 / 12)) - 1) * 12) * 100;
	}
	
	function CalcFix (a_barkaufpreis, a_zinssatz, a_laufzeit) {
		
		var p = a_laufzeit/3; 
		var t = 0;
		for (var i = 0; i < p; i++) {
			var z = a_barkaufpreis * a_zinssatz/400;
			t += z;
		}
		t /= (a_laufzeit/3);	
		return t;		
	}
	
	/*
	function fixRate(credit, runtime, interest) {


	interest -= 1;
	interest /= 4;
	// EVT DELETE //
	var zn = 1+(0.1239/4); // = Zinssatz
	var q = runtime/3; // = Quartal
	var f = Math.pow(zn, q); // = Gesamtzinssatz
	f *= credit; // = Totalbetrag
	var o = f - credit; // = Zinskosten

	var p = runtime/3; // = Quartal
	var t = 0;
	for (var i = 0; i < p; i++) {
		var z = credit * interest
		t += z;
	}
	t /= (runtime/3);	
	return t;
}
*/
	
	function CalcTotal (a_barkaufpreis, a_zinssatz, a_laufzeit) {
		var t = CalcFix(a_barkaufpreis, a_zinssatz, a_laufzeit);
		t *= (a_laufzeit/3);
		t += a_barkaufpreis;
		return t;
	}
	
	function CalcZins (a_barkaufpreis, a_zinssatz, a_laufzeit) {
		var t = CalcFix(a_barkaufpreis, a_zinssatz, a_laufzeit);
		t *= (a_laufzeit/3);
		return t;
	}
	
	this.calculate = function (a_barkaufpreis, a_laufzeit) {
		
		barkaufpreis = a_barkaufpreis;
		laufzeit = a_laufzeit;
		
		if (!checkBarkaufpreis()) {
			handleCreditError(minBarkaufpreis, maxBarkaufpreis);
			return false;
		}
		if (!checkMindestLaufzeit()) {
			handleRuntimeError ();
			return false;
		}
		
		var nomZins = CalcNomZins(this.interest);
		
		var rate = CalcFix(a_barkaufpreis, nomZins, a_laufzeit);
		var totalKosten = CalcTotal(a_barkaufpreis, nomZins, a_laufzeit);
		var zinsKosten = CalcZins(a_barkaufpreis, nomZins, a_laufzeit);
		
		var out = {
				rate: 			Runden(rate).toFixed(2),
				zinsKosten: 	Runden(zinsKosten).toFixed(2),
				totalKosten:	Runden(totalKosten).toFixed(2)
		};
		return out;
	}
}

var fix = new Fix();