function Credit(min_kredit, max_kredit) {
	
	this.interest = 11.4;
	
	var trajanje;
	var visina_kredita;
	var depozit;
	var nom_kamata;
	var eff_kamata;
	
	var ima_osiguranje;
	
	var TK_rata;
	var TK_ukupno;
	var rata;
	var ukupna_vrednost;
	var kamata_vrednost;
	
	var max_visina_kredita = max_kredit;
	var min_visina_kredita = min_kredit;
	
	function zaokruzi(vrednost) {
		var temp = Math.round(vrednost * 100);
		// Runden auf 5 Rappen
		var mod = temp % 5;
		(mod > 2.5) ? temp += (5 - mod) : temp -= mod;
		var ret = temp / 100;
		return ret;
	} 
	
	function proveri_trajanje () {
		return (trajanje != undefined && trajanje != "" && trajanje > 5);
	}
	
	function proveri_visinu_kredita () {
		return (visina_kredita != undefined && visina_kredita <= max_visina_kredita && visina_kredita >= min_visina_kredita);
	}
	
	function PDV () {
		return 0.076;
	}
	
	function calc_eff_kamata (a_nom_kamata) {
		return (Math.pow(((a_nom_kamata / 1200) + 1) , 12) - 1) * 100;
	}
	
	function calc_nom_kamata (a_eff_kamata) {
		return ((Math.pow((a_eff_kamata / 100 + 1),(1 / 12)) - 1) * 12) * 100;
	}
	
	function calc_TK ()	{
		var osiguranje;
		
		if (trajanje < 7) osiguranje = 0.27279;
		else if (trajanje < 13) osiguranje = 1.53825;
		else if (trajanje < 19) osiguranje = 2.57019;
		else if (trajanje < 25) osiguranje = 3.21027;
		else if (trajanje < 31) osiguranje = 3.60528;
		else if (trajanje < 37) osiguranje = 3.86484;
		else if (trajanje < 43) osiguranje = 4.06014;
		else if (trajanje < 49) osiguranje = 4.20756;
		else if (trajanje < 55) osiguranje = 4.32348;
		else osiguranje = 4.41861;
		return osiguranje/100;
	}
	
	function calc_rata_TK() {
		return calc_ukupno_TK() / trajanje;
	}
	
	function calc_ukupno_TK() {
		var rata = calc_standardno(visina_kredita, nom_kamata / 1200, trajanje);
		var tmp_rata = (rata >= 2000) ? 2000 : rata;
		//var tmp_rata = rata;
		return (calc_TK(trajanje) * trajanje * tmp_rata);
	}
	
	function calc_standardno (a_visina_kredita, a_kamata, a_trajanje) {
		var ret = (a_visina_kredita * a_kamata) / (1 - Math.pow(1 + a_kamata, -a_trajanje));
		return zaokruzi(ret);
	}
	
	function calc_ukupno() {
		return (trajanje * rata) + depozit;
	}
	
	function calc_kamata() {
		return (rata * trajanje - ((visina_kredita - depozit) + zaokruzi(TK_ukupno)));
	}
	
	this.calculate = function (a_visina_kredita, a_trajanje, a_ima_osiguranje, a_depozit) {
		
		trajanje = Number(a_trajanje);
		visina_kredita = Number(a_visina_kredita);
		ima_osiguranje = a_ima_osiguranje;
		depozit = Number(a_depozit);
		eff_kamata = this.interest;
		nom_kamata = calc_nom_kamata(eff_kamata);		
		
		if (!proveri_visinu_kredita()) {
			//handleCreditError(min_visina_kredita, max_visina_kredita);
			return false;
		}
		if (!proveri_trajanje()) {
			//handleRuntimeError ();
			return false;
		}
		
	
		TK_ukupno = (ima_osiguranje) ? calc_ukupno_TK(): 0;
		TK_rata = (ima_osiguranje) ? calc_rata_TK(): 0;
		rata = calc_standardno(visina_kredita + TK_ukupno, nom_kamata / 1200, trajanje);
		
		ukupna_vrednost = calc_ukupno();
		kamata_vrednost = calc_kamata();
		
		var ret = {
				rata: 				zaokruzi(rata).toFixed(2),
				osiguranje: 		zaokruzi(TK_rata).toFixed(2),
				kamata_vrednost: 	zaokruzi(kamata_vrednost).toFixed(2),
				ukupna_vrednost:	zaokruzi(ukupna_vrednost).toFixed(2)
		};
				
		return ret;
	}	
}


