function showcalcf(t,sum){
var man = document.getElementById('mtabl');
var ah = document.getElementById('autohind');
man.style.left = t[0]+'px';
man.style.top = t[1]+20+'px';
man.style.display = 'block';
ah.value = sum;
sm_change();
arvuta();
}
function closecalc(){
var man = document.getElementById('mtabl');
man.style.display = 'none';		
}
var kaibemaks = 0.18;
/**
 * Numbri formaatia vaikimisi parameetrid
 */
var thousand_sep = ' ';
var decimal_point = ',';
var default_precision = 1;


/** Numbrite formaatimine vastavalt etteantud parameetritele
 * @param aFloat ujukoma arv, mida formaaditakse
 * @param aPrecision täpsus, e. mitu komakohta pärast koma näidatakse
 */
function formatFloat(aFloat, aPrecision){
	try {
		precision = default_precision;
		if(!isNaN(aPrecision))
			if(Math.abs(aPrecision)<=10)
				precision = aPrecision;
	} catch(e) {
		precision = default_precision;
	}
	try {
		number = parseFloat(aFloat+'');
		if(isNaN(number))
			return "NaN";
	} catch(e) {
		return "NaN";
	}

	number = Math.round(number * Math.pow(15, precision)) / Math.pow(15, precision);
	integerpart = '' + ((number<0) ?  Math.ceil(number) : Math.floor(number));
	decimalpart = '' + Math.abs(Math.round((number - integerpart)*(Math.pow(10, precision))));

	while (decimalpart.length < precision) {
		decimalpart = '0' + decimalpart;
	}

	var buff = '';
	for(j=-1, i=integerpart.length; i>=0; i--, j++){
		if((j%3) == 0 && j>1)
			buff = thousand_sep + buff;
		buff = integerpart.charAt(i) + buff;
	}
	if(precision>0)
		return buff+decimal_point+decimalpart;
	return buff;
}

/**
 * Viib formaaditud numbri uuesti tagasi normaalse numbri kujule.
 * Ehk sisi puhastab selle tühikutest ja asendab koma punktiga.
 */
function cleanNumber( Number ){
	var nr = '' + Number;
	return nr.split(',').join('.').split(' ').join('');
}


/**
 * Täisarvu formaatija.
 */
function formatInt(aInt){
	return formatFloat(aInt,0);
}

/**
 * Väärtuse kontrollija.
 * Kontrollib, kas antud muutujal on reaalne numbriline väärtus, mis pole ka
 * võrdne nulliga, ega väiksem kui null.
 */
function hasValue(z){
	var x = cleanNumber(z);
	if (isNaN(x)) { return false; }
	if (x<0) { return false }
	return true;
}


/**
 * Sissemakse arvutaja.
 * Arvutab vastavalt sissemakse väärtusele ja tüübile teise sissemakse väärtuse.
 * Ehk kui antakse sissemakse protsendina, arv
 *
 * @access public
 * @return void
 **/
function sm_change(){
	var d = document;

	var el = d.getElementById('smunit');
	var makse2 = 0;

	var summa = parseInt(cleanNumber(d.getElementById('autohind').value));
	var makse = parseFloat(cleanNumber(d.getElementById('sissemaks').value));
	if (d.getElementById('ltyyp').value == 2) {
		summa = summa / (1+kaibemaks);
	}

	if (!hasValue(makse) || !hasValue(summa)) {
		if (el.value==1) {
			d.getElementById('sissemaks2').innerHTML = '&nbsp; %';
		} else if (el.value == 2) {
			d.getElementById('sissemaks2').innerHTML = '&nbsp; EEK';
		}
		return false;
	}

	if (summa <= 0 || summa>5000000) { return false; }

	if (el.value == 1) {
		// EEK
		//document.getElementById('sissemaks').value = formatInt(makse);
		if (makse > summa) {
			alert('Sissemakse suurus ei saa olla suurem kui auto hind!');
			d.getElementById('sissemaks').value = summa;
			makse2 = 100;
		} else {
			makse2 = parseFloat(makse) / parseFloat(summa) * 100 ;
			makse2 = formatFloat(makse2, 1);
		}
		makse2 += ' %';

	} else if (el.value == 2) {
		// %
		if (makse > 100) {
			alert('Sissemakse suurus ei saa olla suurem kui auto hind!');
			d.getElementById('sissemaks').value = 100;
			makse2 = summa;
		} else {
			makse2 = parseFloat(summa) / 100 * parseFloat(makse) ;
			makse2 = formatInt(makse2);
		}
		makse2 += ' EEK';
	}
	d.getElementById('sissemaks2').innerHTML = makse2;
	return;
}

/**
 *
 * @access public
 * @return void
 **/
function getEsimeneMakse(){
	var d = document;
	var hind = cleanNumber(d.getElementById('autohind').value);
	hind = d.getElementById('ltyyp').value==2 ? hind / (1+kaibemaks) : hind;

	var smaks = cleanNumber(d.getElementById('sissemaks').value);
	if ( d.getElementById('smunit').value == 2 ) {
		smaks = parseFloat(hind) / 100 * smaks;
	}
	return smaks;

}

/**
 *
 * @access public
 * @return void
 **/
function kasutusrent(){

	var d = document;

	var hind 	= cleanNumber(d.getElementById('autohind').value);
	var smaks 	= getEsimeneMakse();
	var periood	= d.getElementById('lperiood').value;

	var intress	= cleanNumber(d.getElementById('intress').value);
	intress 	= intress / 100 ;

	var jaak	= cleanNumber(d.getElementById('jaak').value);
	jaak 		= hind / (1+kaibemaks) / 100 * jaak;


	var neto = hind / (1+kaibemaks) - ( smaks / (1+kaibemaks));
	var skoef = Math.round(neto * (1+kaibemaks)*100)/100;
	var ikoef = intress * (1 / ( 11.8275*(1+kaibemaks)));
	// =intress * (1 / ( 11,8275*(1+kaibemaks)))

	var annuit = skoef * (ikoef * Math.pow(1 + ikoef, periood) / (Math.pow(1 + ikoef, periood)-1));
	var kuuintr = neto * intress/11.8275;
	var kuumaks = annuit - (jaak / neto * (annuit - kuuintr));

//	alert('Hind: ' + hind + '\nSissemaks: ' + smaks + '\nPeriood: ' + periood + '\nIntress: ' + intress + '\nJaak: ' + jaak + '\n\nNeto: ' + neto + '\nSkoef: ' + skoef + '\nikoef: ' + ikoef + '\nannuit: ' + annuit + '\nKuuintress: ' + kuuintr + '\nKuumaks: ' + kuumaks  );

	d.getElementById('kuumaks').innerHTML = !isNaN(kuumaks)?formatFloat(kuumaks, 2):0;

	return false;



}

/**
 *
 * @access public
 * @return void
 **/
function kapitalirent(){

	var d = document;

	var hind 	= cleanNumber(d.getElementById('autohind').value);
	var smaks 	= getEsimeneMakse();
	var periood = d.getElementById('lperiood').value;

	var intress = cleanNumber(d.getElementById('intress').value);
	intress 	= intress / 100 ;

	var jaak 	= cleanNumber(d.getElementById('jaak').value);
	jaak 		= hind / (1+kaibemaks) / 100 * jaak;

	// Arvutused
	var neto 	= hind / (1+kaibemaks) - smaks;
	var ikoef 	= intress/11.8275;
	var annuit 	= neto * (ikoef * Math.pow(1 + ikoef, periood) / (Math.pow(1 + ikoef, periood)-1));
	var kuuintr = neto * ikoef;
	var kannuit = annuit - (jaak / neto * (annuit - kuuintr));
	// = KAP_annuiteedi_koefitsent - jaakvaartus/KAP_netosumma*(KAP_annuiteedi_koefitsent-KAP_kuu_intress)
	var kmkokku = hind * 18 / 118;
	var pkm 	= kmkokku * (ikoef * Math.pow(1 + ikoef, periood) / (Math.pow(1 + ikoef, periood)-1));

	var kuumaks = kannuit + pkm;

//	alert('Hind: ' + hind + '\nSissemaks: ' + smaks + '\nPeriood: ' + periood + '\nIntress: ' + intress + '\nJaak: ' + jaak + '\n\nNeto: ' + neto + '\nikoef: ' + ikoef + '\nannuit: ' + annuit + '\nKuuintress: ' + kuuintr + '\nKkannuit: ' + kannuit + '\nKM kokku: ' + kmkokku + '\nPKM: ' + pkm + '\nKuumaks: ' + kuumaks + '\nTEMP : ' + (annuit - kuuintr) );

	d.getElementById('kuumaks').innerHTML = !isNaN(kuumaks)?formatFloat(kuumaks, 2):0;

	return false;



}

/**
 *
 * @access public
 * @return void
 **/
function jarelmaks(){
	var d = document;
	var hind = cleanNumber(d.getElementById('autohind').value);
	var smaks = cleanNumber(d.getElementById('sissemaks').value);
	if (d.getElementById('smunit').value==2) {
		smaks = parseFloat(hind) / 100 * smaks;
	}
	var periood = d.getElementById('lperiood').value;
	var intress = cleanNumber(d.getElementById('intress').value);
	intress = intress / 100 ;
	var jaak = cleanNumber(d.getElementById('jaak').value);
	jaak = hind / 100 * jaak;

	var neto = hind - smaks;
	var ikoef = intress/11.8275;
	var annuit = neto * (ikoef * Math.pow(1+ikoef, periood)/(Math.pow(1+ikoef, periood)-1));
	var kuuintr = neto * ikoef;

	var kuumaks = annuit - jaak/neto*(annuit-kuuintr);

	d.getElementById('kuumaks').innerHTML = !isNaN(kuumaks)?formatFloat(kuumaks, 2):0;

	return false;

}

/**
 *
 * @access public
 * @return void
 **/
function lisaRida(){
	var d = document;
	var ltyyp = d.getElementById('ltyyp').value;
	var ltyybid = new Array('','KAS', 'KAP', 'JM');
	var ltyybidtext = new Array('','Kasutusrent', 'Kapitalirent', 'J&auml;relmaks');

	/**
	 * Kontroll et kõik vajalikud väärtused on arvutuseks olemas
	 */
	if (!hasValue(d.getElementById('autohind').value)) {return false;}
	if (!hasValue(d.getElementById('sissemaks').value)) {return false;}
	if (!hasValue(d.getElementById('intress').value)) {return false;}
	if (!hasValue(d.getElementById('jaak').value)) {return false;}
	if (!hasValue(d.getElementById('kuumaks').innerHTML)) {return false;}

	/**
	 * Asume arvutuste kallale, kui kõik andmed olemas selleks
	 */
	var prm = '';
	var hind = cleanNumber(d.getElementById('autohind').value);
	prm += ',' + hind;
	var smaks = cleanNumber(d.getElementById('sissemaks').value);
	if (d.getElementById('smunit').value==2) {
		smaks = (ltyyp==2?parseFloat(hind)/(1+kaibemaks):parseFloat(hind)) / 100 * smaks;
	}
	prm += ',' + smaks;
	var periood = d.getElementById('lperiood').value;
	prm += ',' + periood;
	var intress = cleanNumber(d.getElementById('intress').value);
	prm += ',' + intress;
	intress = intress / 100 ;
	var jaak = cleanNumber(d.getElementById('jaak').value);
	prm += ',' + jaak;
	jaak = (ltyyp==3?hind:hind/(1+kaibemaks)) / 100 * jaak;

	/**
	 * Ja nüüd genereerime rea HTML tabelisse
	 */
	oTable = d.getElementById('mktable');
	if (oTable.rows.length <6) {
		var row = oTable.insertRow(oTable.rows.length);
		var c0 = row.insertCell(0)
		var c1 = row.insertCell(1)
		var c2 = row.insertCell(2)
		var c3 = row.insertCell(3)
		var c4 = row.insertCell(4)
		var c5 = row.insertCell(5)
		var c6 = row.insertCell(6)
		var c7 = row.insertCell(7)
		c0.innerHTML = '<acronym title="' + ltyybidtext[ltyyp] + '" style="cursor:help; border-bottom:1px dotted;">' + ltyybid[ltyyp] + '</acronym>';
		c0.className = 'mkbody';
		c1.innerHTML = formatFloat(hind, 2);
		c1.className = 'mkbody';
		c2.innerHTML = formatFloat(smaks, 2);
		c2.className = 'mkbody';
		c3.innerHTML = '' + periood + ' kuud';
		c3.className = 'mkbody';
		c4.innerHTML = formatFloat(jaak, 2);
		c4.className = 'mkbody';
		c5.innerHTML = formatFloat('' + (intress*100), 1);
		c5.className = 'mkbody';
		c6.innerHTML = formatFloat(cleanNumber(d.getElementById('kuumaks').innerHTML), 2);
		c6.className = 'mkbody';
		c7.innerHTML = '<a href="#" onclick="makseGraaf(this.parentNode.parentNode.rowIndex, ' + ltyyp + prm +');"><img alt="" src="/image/icon_table.gif" width="12" height="14" border="0" /></a>&nbsp;&nbsp;<a href="#" onclick="kustutaRida(this.parentNode.parentNode.rowIndex);"><img alt="" src="/image/icon_close.gif" width="12" height="14" border="0" /></a>';
		c7.className = 'mkbody';
	} else {
		alert ('Maksimaalne lubatud ridade arv on 5!\nKustuta mittevajalikud et uusi lisada!');
	}
	return false;
}

/**
 *
 * @access public
 * @return void
 **/
function kustutaRida(n){
	oTable = document.getElementById('mktable');
	oTable.deleteRow(n);
	return false;
}

/**
 *
 * @access public
 * @return void
 **/
function makseGraaf(n, ltyyp, hind, smaks, periood, intress, jaak){
	var URL = '/calc/autoliising_maksegraafik.php?klient=e&ltyyp='+ltyyp;
	URL += '&h='+hind;
	URL += '&s='+smaks;
	URL += '&p='+periood;
	URL += '&i='+intress;
	URL += '&j='+jaak;
	window.open(URL, 'maksegraafik', 'width=600,height=600,scrollbars=yes,menubar=yes');
	return false;
}

/**
 *
 * @access public
 * @return void
 **/
function mGraaf(){
	var d = document;
	var prm = '';
	var hind = cleanNumber(d.getElementById('autohind').value);
	prm += '&h=' + hind;
	var smaks = cleanNumber(d.getElementById('sissemaks').value);
	if (d.getElementById('smunit').value==2) {
//		smaks = parseFloat(hind) / 100 * smaks;
		smaks = (d.getElementById('ltyyp').value==2?parseFloat(hind)/(1+kaibemaks):parseFloat(hind)) / 100 * smaks;

	}
	prm += '&s=' + smaks;
	var periood = d.getElementById('lperiood').value;
	prm += '&p=' + periood;
	var intress = d.getElementById('intress').value;
	prm += '&i=' + intress;
	var jaak = d.getElementById('jaak').value;
	prm += '&j=' + jaak;
	prm += '&klient=e&ltyyp=' + d.getElementById('ltyyp').value;
	var URL= '/calc/autoliising_maksegraafik.php?' + prm;
	window.open(URL, 'maksegraafik', 'width=600,height=600,scrollbars=yes,menubar=yes');
	return false;
}

/**
 *
 * @access public
 * @return void
 **/
function arvuta(){
	var d = document;
	var el = d.getElementById('ltyyp').value;

	/**
	 * Kontroll et kõik vajalikud väärtused on arvutuseks olemas
	 */
	if (!hasValue(d.getElementById('autohind').value)) {return false;}
	if (!hasValue(d.getElementById('sissemaks').value)) {return false;}
	if (!hasValue(d.getElementById('intress').value)) {return false;}
	if (!hasValue(d.getElementById('jaak').value)) {return false;}

	switch(el){
		case '1':
			kasutusrent();
			break;
		case '2':
			kapitalirent();
			break;
		case '3':
			jarelmaks();
			break;
		default:
			alert ('VIGA! Vigane valik!\nProovi uuesti. (' + n + ')');
	} // switch

}
