function cEuroToCurr(Num)
{
	Num=Num*100; //
	Num=(Math.round(Num))/100;

	var Numstr = Num.toString();
	var decpos = Numstr.indexOf(".");  //
	//
	if(decpos == -1)
	decpos = Numstr.length;
	else
	Numstr = Numstr.substr(0,decpos) + "," + Numstr.substr(decpos+1,Numstr.length);
	var l=0;
	if((decpos%3) == 0)
		l=(Math.floor(decpos)/3)-1;
	else
		l=Math.floor(decpos)/3;

	//alert(decpos+"    "+l);
	for (i=1 ; i<=l; i++)
	{
		Numstr = Numstr.substr(0,decpos-(3*i)) + '.' + Numstr.substr(decpos-(3*i), Numstr.length);
	}
	return Numstr;
}

function FloatToPercString(num,ndig)
{
	var tmpStr = String(Math.floor(num*10000));
	return tmpStr.substr(0,tmpStr.length - ndig) + "," + tmpStr.substr(tmpStr.length - ndig,tmpStr.length)+ "%";

}

function SeparatorExist_Taeg_Importo(str)
{
	if (str.indexOf(".")!=-1)
	{
		alert(" Somma indicata NON corretta : digita solo numeri e usa la virgola per cifre decimali ! ");
		return true;
	}
	else
		return false;
}

function SeparatorExist_Taeg_Spese(str)
{
	if (str.indexOf(".")!=-1)
	{
		alert("Spese e costi indicati NON validi : indica solo numeri! ");
		return true;
	}
	else
		return false;
}

function CalcolaTaeg()
{
	var strTasso = new String(document.frmDati.tasso.value);

	if ((!SeparatorExist_Taeg_Importo(document.frmDati.capitale.value))&&(!SeparatorExist_Taeg_Spese(document.frmDati.spese.value)))
	{
		var capitale = document.frmDati.capitale.value;

		if (capitale.indexOf(".")!=-1){
			alert("Somma inserita NON corretta : scrivi solo numeri e usa la virgola per cifre decimali ! ");
			return;
		}

		while(capitale.indexOf(",")!=-1)
		{
			capitale=capitale.substr(0,capitale.indexOf(","))+ "." + capitale.substr(capitale.indexOf(",")+1,capitale.length);
		}

		if(isNaN(capitale)||(capitale < 0))
		{
			alert(" Somma inserita NON corretta : inserisci solo numeri e usa la virgola per cifre decimali ! ");
			return;
		}

		// 
		var durata;
		durata = document.frmDati.durata.value;
		if((durata.indexOf(",")!=-1) || (durata.indexOf(".")!=-1)){
			alert(" Numero delle rate NON corretto: digita solo numeri interi e al massimo 120 rate! ");
			return;
		}
		durata = parseInt(durata);
		if(isNaN(durata))
		{
			alert(" Numero delle rate NON corretto: digita solo numeri interi e al massimo 120 rate! ");
			return;
		}

		var tasso = document.frmDati.tasso.value;

		if (tasso.indexOf(".")!=-1){
			alert("Tasso Tan NON valido: scrivi solo numeri e usa la virgola per le cifre decimali! ");
			return;
		}

		while(tasso.indexOf(",")!=-1)
		{
			tasso=tasso.substr(0,tasso.indexOf(","))+ "." + tasso.substr(tasso.indexOf(",")+1,tasso.length);
		}

		if(isNaN(tasso)||(tasso <= 0))
		{
			alert(" Tasso Tan NON valido: scrivi solo numeri e usa la virgola per le cifre decimali! ");
			return;
		}

		tasso = tasso / 100;

		var spese = document.frmDati.spese.value;

		if (spese.indexOf(".")!=-1){
			alert(" Spese e costi indicati NON validi : indica solo numeri! ");
			return;
		}

		while(spese.indexOf(",")!=-1)
		{
			spese=spese.substr(0,spese.indexOf(","))+ "." + spese.substr(spese.indexOf(",")+1,spese.length);
		}

		if(spese == ""){
			spese = 0;
		} else {
			if(isNaN(spese)||(spese < 0))
			{
			alert(" Spese e costi indicati NON validi : indica solo numeri! ");
				return;
			}
		}


		//Controllo sul capitale
		if (capitale < 1000) {
			alert(" Attenzione : il prestito deve essere minimo 1000 euro! ");
			return;
		}

		if ((durata > 120) || (durata < 12)){
			alert(" Numero mensile delle rate NON corretto : le rate devono essere comprese tra 12 e 120 mesi ! ");
			return;
		}

		if(((capitale*durata*tasso)==0)||(isNaN(spese)))
		{
			alert(" Controlla la validità dei dati inseriti! ");
			return;
		}

		// Aggiunte per compatibilità Euro
		capitale = capitale * 1936,27;
		spese = spese *1936,27;
		var rata = Math.round(capitale * (tasso/12)/(1-Math.pow((1+tasso/12),-(durata))));
		var cap_reale = capitale - spese;
		var tmp_reale = 0;
		var taeg = 0.001;	// taeg iniziale
		var step = 0.01;	// step iniziale di incremento taeg
		var fwd = true;	// direzione dell'incremento

		for (i=1; i<=durata; i++)
		{
			var tmpSommat = rata/Math.pow((1+taeg),(i*30.4375)/365);
			tmp_reale += tmpSommat;
		}
		if ( ( cap_reale - tmp_reale ) < 0 )
			fwd = false;
		while ( Math.abs( tmp_reale - cap_reale ) > 0.000001 )
		{
			tmp_reale = 0;
			if ( fwd == true )
			{
				taeg += step;
			}
			else
			{
				taeg -= step;
			}
			for (i=1; i<=durata; i++)
			{
				var tmpSommat = rata/Math.pow((1+taeg),(i*30.4375)/365);
				tmp_reale += tmpSommat;
			}
			if ( (( tmp_reale - cap_reale ) > 0)&& (fwd != true))
			{
				step /= 2;
				fwd = true;
			}
			else if (( tmp_reale - cap_reale ) < 0 && (fwd == true) )
			{
				step /= 2;
				fwd = false;
			}
		}

		rata = rata / 1936,27;

		document.frmDati.ratamax.value= cEuroToCurr(rata);
		document.frmDati.taeg.value= FloatToPercString(taeg,2);
	}
	else
	{
		//document.frmDati.capitale.value= "";
	}
}