
function valutazionemultipli_1(nomeForm)
{
	//controllo campi

	//g10 *** numerico
	if ( ! isCompiled( nomeForm, 'g10' ) )
		showMessage( nomeForm, 'g10', 'Compilare il campo \'prezzo\'', true )
	else if ( contanisChar( nomeForm, 'g10', ',' ) )
		showMessage( nomeForm, 'g10', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g10' ) )
		showMessage( nomeForm, 'g10', 'Il campo \'prezzo\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g10') )
		showMessage( nomeForm, 'g10', 'Il campo \'prezzo\' deve essere diverso da zero', true )		
	//g12 *** intero
	else if ( ! isCompiled( nomeForm, 'g12' ) )
		showMessage( nomeForm, 'g12', 'Compilare il campo \'numero di azioni outstanding\'', true )
	else if ( contanisChar( nomeForm, 'g12', ',' ) )
		showMessage( nomeForm, 'g10', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g12' ) )
		showMessage( nomeForm, 'g12', 'Il campo \'numero di azioni outstanding\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g12') )
		showMessage( nomeForm, 'g12', 'Il campo \'numero di azioni outstanding\' deve essere diverso da zero', true )		
	//g16 *** intero
	else if ( ! isCompiled( nomeForm, 'g16' ) )
		showMessage( nomeForm, 'g16', 'Compilare il campo \'Debito netto\'', true )
	else if ( contanisChar( nomeForm, 'g16', ',' ) )
		showMessage( nomeForm, 'g16', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g16' ) )
		showMessage( nomeForm, 'g16', 'Il campo \'Debito netto\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g16') )
		showMessage( nomeForm, 'g16', 'Il campo \'Debito netto\' deve essere diverso da zero', true )		
	else
	{	
		//leggo i valori
		var g10 = parseFloat( document.form1.g10.value );
		var g12 = parseFloat( document.form1.g12.value );
		var g16 = parseFloat( document.form1.g16.value );		
		//calcolo
		var g14 = Math.round( g10 * g12 / 1000 );
		var g18 = parseFloat( g14 ) + parseFloat( g16 );
		//stampo i valori
		document.form1.g14.value = g14;
		document.form1.g18.value = g18;
	}	
}

function valutazionemultipli_2(nomeForm)
{
	//controllo campi

	//g10 *** numerico
	if ( ! isCompiled( nomeForm, 'g10' ) )
		showMessage( nomeForm, 'g10', 'Compilare il campo \'prezzo\'', true )
	else if ( contanisChar( nomeForm, 'g10', ',' ) )
		showMessage( nomeForm, 'g10', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g10' ) )
		showMessage( nomeForm, 'g10', 'Il campo \'prezzo\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g10') )
		showMessage( nomeForm, 'g10', 'Il campo \'prezzo\' deve essere diverso da zero', true )		
	//g12 *** intero
	else if ( ! isCompiled( nomeForm, 'g12' ) )
		showMessage( nomeForm, 'g12', 'Compilare il campo \'numero di azioni outstanding\'', true )
	else if ( contanisChar( nomeForm, 'g12', ',' ) )
		showMessage( nomeForm, 'g10', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g12' ) )
		showMessage( nomeForm, 'g12', 'Il campo \'numero di azioni outstanding\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g12') )
		showMessage( nomeForm, 'g12', 'Il campo \'numero di azioni outstanding\' deve essere diverso da zero', true )		
	//g16 *** intero
	else if ( ! isCompiled( nomeForm, 'g16' ) )
		showMessage( nomeForm, 'g16', 'Compilare il campo \'Debito netto\'', true )
	else if ( contanisChar( nomeForm, 'g16', ',' ) )
		showMessage( nomeForm, 'g16', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g16' ) )
		showMessage( nomeForm, 'g16', 'Il campo \'Debito netto\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g16') )
		showMessage( nomeForm, 'g16', 'Il campo \'Debito netto\' deve essere diverso da zero', true )		
	//g22 *** numerico
	else if ( ! isCompiled( nomeForm, 'g22' ) )
		showMessage( nomeForm, 'g22', 'Compilare il campo \'EPS atteso esercizio in corso\'', true )
	else if ( contanisChar( nomeForm, 'g12', ',' ) )
		showMessage( nomeForm, 'g10', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g22' ) )
		showMessage( nomeForm, 'g22', 'Il campo \'EPS atteso esercizio in corso\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g22') )
		showMessage( nomeForm, 'g22', 'Il campo \'EPS atteso esercizio in corso\' deve essere diverso da zero', true )		
	//g24 *** numerico
	else if ( ! isCompiled( nomeForm, 'g24' ) )
		showMessage( nomeForm, 'g24', 'Compilare il campo \'EPS atteso prossimo esercizio\'', true )
	else if ( contanisChar( nomeForm, 'g24', ',' ) )
		showMessage( nomeForm, 'g10', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g24' ) )
		showMessage( nomeForm, 'g24', 'Il campo \'EPS atteso prossimo esercizio\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g24') )
		showMessage( nomeForm, 'g24', 'Il campo \'EPS atteso prossimo esercizio\' deve essere diverso da zero', true )		
	//g26 *** numerico
	else if ( ! isCompiled( nomeForm, 'g26' ) )
		showMessage( nomeForm, 'g26', 'Compilare il campo \'ebitda atteso esercizio in corso\'', true )
	else if ( contanisChar( nomeForm, 'g26', ',' ) )
		showMessage( nomeForm, 'g10', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g26' ) )
		showMessage( nomeForm, 'g26', 'Il campo \'ebitda atteso esercizio in corso\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g26') )
		showMessage( nomeForm, 'g26', 'Il campo \'ebitda atteso esercizio in corso\' deve essere diverso da zero', true )		
	//g28 *** numerico
	else if ( ! isCompiled( nomeForm, 'g28' ) )
		showMessage( nomeForm, 'g28', 'Compilare il campo \'ebitda atteso prossimo esercizio\'', true )
	else if ( contanisChar( nomeForm, 'g28', ',' ) )
		showMessage( nomeForm, 'g10', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g28' ) )
		showMessage( nomeForm, 'g28', 'Il campo \'ebitda atteso prossimo esercizio\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g28') )
		showMessage( nomeForm, 'g28', 'Il campo \'ebitda atteso prossimo esercizio\' deve essere diverso da zero', true )		
	else
	{	
		//leggo i valori
		var g10 = parseFloat( document.form1.g10.value );
		var g12 = parseFloat( document.form1.g12.value );
		var g16 = parseFloat( document.form1.g16.value );		
		var g22 = parseFloat( document.form1.g22.value );
		var g24 = parseFloat( document.form1.g24.value );
		var g26 = parseFloat( document.form1.g26.value );
		var g28 = parseFloat( document.form1.g28.value );
		//calcolo
		var g14 = Math.round( g10 * g12 / 1000 );
		var g18 = parseFloat( g14 ) + parseFloat( g16 );
		var k22 = Math.round( g10 / g22 * 100 ) / 100;
		var k24 = Math.round( g10 / g24 * 100 ) / 100;
		var k26 = Math.round( g18 / g26 * 100 ) / 100;
		var k28 = Math.round( g18 / g28 * 100 ) / 100;
		var k31 = Math.round( g16 / g26 * 100 ) / 100;
		//stampo i valori
		document.form1.g14.value = g14;
		document.form1.g18.value = g18;
		document.form1.k22.value = k22;
		document.form1.k24.value = k24;
		document.form1.k26.value = k26;
		document.form1.k28.value = k28;
		document.form1.k31.value = k31;
	}	
}

function investimentitassofisso(nomeForm)
{
	//controllo campi
	
	//g10 *** numerico
	if ( ! isCompiled( nomeForm, 'g10' ) )
		showMessage( nomeForm, 'g10', 'Compilare il campo \'prezzo\'', true )
	else if ( contanisChar( nomeForm, 'g10', ',' ) )
		showMessage( nomeForm, 'g10', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g10' ) )
		showMessage( nomeForm, 'g10', 'Il campo \'prezzo\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g10') )
		showMessage( nomeForm, 'g10', 'Il campo \'prezzo\' deve essere diverso da zero', true )		
	
	//g12 (data)
	else if ( ! isCompiled( nomeForm, 'g12' ) )
		showMessage( nomeForm, 'g12', 'Compilare il campo \'scadenza\'', true )
	else if ( ! isDateFormat( nomeForm, 'g12', ',' ) )
		showMessage( nomeForm, 'g12', 'Data in formato gg/mm/aaaa', true )
	
	//g14 *** numerico
	else if ( ! isCompiled( nomeForm, 'g14' ) )
		showMessage( nomeForm, 'g14', 'Compilare il campo \'duration\'', true )
	else if ( contanisChar( nomeForm, 'g14', ',' ) )
		showMessage( nomeForm, 'g14', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g14' ) )
		showMessage( nomeForm, 'g14', 'Il campo \'duration\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g10') )
		showMessage( nomeForm, 'g14', 'Il campo \'duration\' deve essere diverso da zero', true )	
	
	//g18 *** numerico e tra -2 e +2
	else if ( ! isCompiled( nomeForm, 'g18' ) )
		showMessage( nomeForm, 'g18', 'Compilare il campo \'aumento diminuzione tassi\'', true )
	else if ( contanisChar( nomeForm, 'g18', ',' ) )
		showMessage( nomeForm, 'g18', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g18' ) )
		showMessage( nomeForm, 'g18', 'Il campo \'aumento diminuzione tassi\' deve essere numerico', true )
	else if ( ! isIncludedInRange( nomeForm, 'g18', -2, 2) )
		showMessage( nomeForm, 'g18', 'Il campo \'aumento diminuzione tassi\' deve essere tra -2 e 2', true )	
	
	//j10 *** numerico
	else if ( ! isCompiled( nomeForm, 'j10' ) )
		showMessage( nomeForm, 'j10', 'Compilare il campo \'cedola\'', true )
	else if ( contanisChar( nomeForm, 'j10', ',' ) )
		showMessage( nomeForm, 'j10', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'j10' ) )
		showMessage( nomeForm, 'j10', 'Il campo \'cedola\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'j10') )
		showMessage( nomeForm, 'j10', 'Il campo \'cedola\' deve essere diverso da zero', true )	
	else if ( ! isIncludedInRange( nomeForm, 'j10', 0, 100) )
		showMessage( nomeForm, 'j10', 'Il campo \'cedola\' deve essere tra 0 e 100', true )	
	
	//j12 *** numerico
	else if ( ! isCompiled( nomeForm, 'j12' ) )
		showMessage( nomeForm, 'j12', 'Compilare il campo \'rendimento lordo\'', true )
	else if ( contanisChar( nomeForm, 'j12', ',' ) )
		showMessage( nomeForm, 'j12', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'j12' ) )
		showMessage( nomeForm, 'j12', 'Il campo \'rendimento lordo\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g10') )
		showMessage( nomeForm, 'j12', 'Il campo \'rendimento lordo\' deve essere diverso da zero', true )	
	else if ( ! isIncludedInRange( nomeForm, 'j12', 0, 100) )
		showMessage( nomeForm, 'j12', 'Il campo \'rendimento lordo\' deve essere tra 0 e 100', true )	
	
	//j14 *** numerico
	else if ( ! isCompiled( nomeForm, 'j14' ) )
		showMessage( nomeForm, 'j14', 'Compilare il campo \'P/B\'', true )
	else if ( contanisChar( nomeForm, 'j14', ',' ) )
		showMessage( nomeForm, 'j14', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'j14' ) )
		showMessage( nomeForm, 'g18', 'Il campo \'P/B\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g10') )
		showMessage( nomeForm, 'g18', 'Il campo \'P/B\' deve essere diverso da zero', true )	

else
	{	
		//leggo i valori
		var g10 = parseFloat( document.form1.g10.value );
		var g14 = parseFloat( document.form1.g14.value );
		var g18 = parseFloat( document.form1.g18.value );
		var j10 = parseFloat( document.form1.j10.value );
		var j12 = parseFloat( document.form1.j12.value );
		var j14 = parseFloat( document.form1.j14.value );
		//calcolo
		var tmpDate = document.form1.g12.value;
		var arrDate = tmpDate.split('/');
		var tmpUKDate = arrDate[1] + "/" + arrDate[0] + "/" + arrDate[2];
		var g12 = new Date(tmpUKDate);
		var oggi = new Date();
		var un_giorno=1000*60*60*24;
		var differenza = Math.ceil( (g12.getTime()-oggi.getTime())/(un_giorno) );		
		var g27 = Math.round( ( g14 - ( g14 / (differenza/365) ) + differenza/365/100 ) * 100 ) / 100;
		var d37 = Math.round( ( g10 + ((-g18)*g27 ) ) * 100 ) / 100;	
		var d38 = Math.round( ( 100 - d37 ) * 100 ) / 100;	
		var d39 = Math.round( ( differenza / 365  ) * 100 ) / 100;		
		var d40 = Math.round( ( (d38/d39)/Math.sqrt((d39*0.5)) ) * 100 ) / 100;	
		var g25 = Math.round( ( d37 + d40 ) * 100 ) / 100;		
		var g30 = Math.round( ( (g10-((d39*Math.sqrt(d39/2)*(j10*100-g10)+100)/(1-Math.sqrt(d39/2)*d39)))*(1/(g27*100)) ) * 100 ) / 100;
		var k18 = Math.round( ( g10+((-g18)*g14) ) * 100 ) / 100;
		var k20 = Math.round( ( ((k18-g10)*j14)/100 ) * 100 ) / 100;
		var k25 = Math.round( ( ((g25-g10)*j14)/100 ) * 100 ) / 100;
		var k27 = Math.round( ( (j14*j10/100)+k25 ) * 100 ) / 100;		
		//stampo i valori
		document.form1.g27.value = g27;
		document.form1.d37.value = d37;
		document.form1.d38.value = d38;
		document.form1.d39.value = d39;
		document.form1.d40.value = d40;
		document.form1.g25.value = g25;
		document.form1.g30.value = g30;
		document.form1.k18.value = k18;
		document.form1.k20.value = k20;
		document.form1.k25.value = k25;
		document.form1.k27.value = k27;	

	}	
}

function altorischio(nomeForm)
{	
		//leggo i valori
		var d1 = parseInt( document.form1.d1.value );
		var d2 = parseInt( document.form1.d2.value );
		var d3 = parseInt( document.form1.d3.value );
		var d4 = parseInt( document.form1.d4.value );
		var d5 = parseInt( document.form1.d5.value );
		var d6 = parseInt( document.form1.d6.value );
		var o48 = d1 + d2 + d3 + d4 + d5 + d6;
		
		//polinomi
		var j57 = parseFloat( document.form1.j57.value );
		var k57 = parseFloat( document.form1.k57.value );
		var l57 = parseFloat( document.form1.l57.value );
		var m57 = parseFloat( document.form1.m57.value );
		
		var j59 = parseFloat( document.form1.j59.value );
		var k59 = parseFloat( document.form1.k59.value );
		var l59 = parseFloat( document.form1.l59.value );
		var m59 = parseFloat( document.form1.m59.value );
		
		var j62 = parseFloat( document.form1.j62.value );
		var k62 = parseFloat( document.form1.k62.value );
		var l62 = parseFloat( document.form1.l62.value );
		var m62 = parseFloat( document.form1.m62.value );
		
		var j65 = parseFloat( document.form1.j65.value );
		var k65 = parseFloat( document.form1.k65.value );
		var l65 = parseFloat( document.form1.l65.value );
		var m65 = parseFloat( document.form1.m65.value );
		
		//calcolo		
		var r1 = Math.round( ( (o48*o48*o48)*j57 + (o48*o48)*k57 + (o48*l57) + m57 ) );
		var r2 = Math.round( ( (o48*o48*o48)*j59 + (o48*o48)*k59 + (o48*l59) + m59 ) );
		var r3 = Math.round( ( (o48*o48*o48)*j62 + (o48*o48)*k62 + (o48*l62) + m62 ) );
		var r4 = Math.round( ( (o48*o48*o48)*j65 + (o48*o48)*k65 + (o48*l65) + m65 ) );
		
		var r5 = 100-(r1+r2+r3+r4);
		
		var r6 = (o48 < 20) ? 'CONSERVATIVO' : ( (o48 < 27) ? 'BILANCIATO PRUDENTE' 	: ( (o48 < 34) ? 'BILANCIATO AGGRESSIVO ' 	: 'AGGRESSIVO'));
		
		//stampo i valori			
		document.form1.r1.value = r1 + " %";
		document.form1.r2.value = r2 + " %";
		document.form1.r3.value = r3 + " %";
		document.form1.r4.value = r4 + " %";
		document.form1.r5.value = r5 + " %";
		document.form1.r6.value = r6
		
		/*
		if(loggato == "no"){
			window.location.href = "nonloggato_popup_calcolatori.asp?id=3"
			return false
			}
		*/
		
		//visualizzo tabella		

		document.getElementById("divRisultati").style.display='block';
		
		window.scrollBy(0,600)
}

function renditecomposte(nomeForm)
{	
	//controllo campi
	
	//g14 *** numerico
	if ( ! isCompiled( nomeForm, 'g14' ) )
		showMessage( nomeForm, 'g14', 'Compilare il campo \'P/B\'', true )
	else if ( contanisChar( nomeForm, 'g14', ',' ) )
		showMessage( nomeForm, 'g14', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g14' ) )
		showMessage( nomeForm, 'g14', 'Il campo \'P/B\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g14') )
		showMessage( nomeForm, 'g14', 'Il campo \'P/B\' deve essere diverso da zero', true )		
	//g16 *** intero
	else if ( ! isCompiled( nomeForm, 'g16' ) )
		showMessage( nomeForm, 'g16', 'Compilare il campo \'Durata investimento\'', true )
	else if ( contanisChar( nomeForm, 'g16', ',' ) )
		showMessage( nomeForm, 'g16', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g16' ) )
		showMessage( nomeForm, 'g16', 'Il campo \'Durata investimento\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g16') )
		showMessage( nomeForm, 'g16', 'Il campo \'Durata investimento\' deve essere diverso da zero', true )		
	//g18 *** numerico
	else if ( ! isCompiled( nomeForm, 'g18' ) )
		showMessage( nomeForm, 'g18', 'Compilare il campo \'Rendimento annuo lordo\'', true )
	else if ( contanisChar( nomeForm, 'g18', ',' ) )
		showMessage( nomeForm, 'g18', 'Usa il punto per i Rendimento annuo lordo', true )
	else if (! isDecimal( nomeForm, 'g18' ) )
		showMessage( nomeForm, 'g18', 'Il campo \'Rendimento annuo lordo\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g18') )
		showMessage( nomeForm, 'g18', 'Il campo \'Rendimento annuo lordo\' deve essere diverso da zero', true )	
	else if ( ! isIncludedInRange( nomeForm, 'g18', 0, 100) )
		showMessage( nomeForm, 'g18', 'Il campo \'Rendimento annuo lordo\' deve essere tra 0 e 100', true )	
	//g20 *** numerico
	else if ( ! isCompiled( nomeForm, 'g20' ) )
		showMessage( nomeForm, 'g20', 'Compilare il campo \'Imposta sostitutiva\'', true )
	else if ( contanisChar( nomeForm, 'g20', ',' ) )
		showMessage( nomeForm, 'g20', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g20' ) )
		showMessage( nomeForm, 'g20', 'Il campo \'Imposta sostitutiva\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g20') )
		showMessage( nomeForm, 'g20', 'Il campo \'Imposta sostitutiva\' deve essere diverso da zero', true )	
	else if ( ! isIncludedInRange( nomeForm, 'g20', 0, 100) )
		showMessage( nomeForm, 'g20', 'Il campo \'Imposta sostitutiva\' deve essere tra 0 e 100', true )	
		
	else
	{	
		//leggo i valori
		var g14 = parseFloat( document.form1.g14.value );
		var g16 = parseFloat( document.form1.g16.value );
		var g18 = parseFloat( document.form1.g18.value );
		var g20 = parseFloat( document.form1.g20.value );
		
		//calcolo		
		//var g22 = Math.round( g18*(1-g20/100)*100 ) / 100;
		var g22 = g18*(1-g20/100);
		var g22p = Math.round(g22*100 ) / 100;
		
		var g28 = (1<=g16) ? Math.round( (g14*Math.pow(1+g18/100, 1))*100 ) / 100 : 0;
		var g29 = (2<=g16) ? Math.round( (g14*Math.pow(1+g18/100, 2))*100 ) / 100 : 0;
		var g30 = (3<=g16) ? Math.round( (g14*Math.pow(1+g18/100, 3))*100 ) / 100 : 0;
		var g31 = (4<=g16) ? Math.round( (g14*Math.pow(1+g18/100, 4))*100 ) / 100 : 0;
		var g32 = (5<=g16) ? Math.round( (g14*Math.pow(1+g18/100, 5))*100 ) / 100 : 0;
		var g33 = (10<=g16) ? Math.round( (g14*Math.pow(1+g18/100, 10))*100 ) / 100 : 0;
		var g34 = (15<=g16) ? Math.round( (g14*Math.pow(1+g18/100, 15))*100 ) / 100 : 0;
		var g35 = (30<=g16) ? Math.round( (g14*Math.pow(1+g18/100, 30))*100 ) / 100 : 0;
		
//		var i35 = (1<=g16) ? (g14*Math.pow(1+g22, 1) : 0;
		
		var i28 = (1<=g16) ? Math.round( (g14*Math.pow(1+g22/100, 1))*100 ) / 100 : 0;
		var i29 = (2<=g16) ? Math.round( (g14*Math.pow(1+g22/100, 2))*100 ) / 100 : 0;
		var i30 = (3<=g16) ? Math.round( (g14*Math.pow(1+g22/100, 3))*100 ) / 100 : 0;
		var i31 = (4<=g16) ? Math.round( (g14*Math.pow(1+g22/100, 4))*100 ) / 100 : 0;
		var i32 = (5<=g16) ? Math.round( (g14*Math.pow(1+g22/100, 5))*100 ) / 100 : 0;
		var i33 = (10<=g16) ? Math.round( (g14*Math.pow(1+g22/100, 10))*100 ) / 100 : 0;
		var i34 = (15<=g16) ? Math.round( (g14*Math.pow(1+g22/100, 15))*100 ) / 100 : 0;
		var i35 = (30<=g16) ? Math.round( (g14*Math.pow(1+g22/100, 30))*100 ) / 100 : 0;
		
		//stampo i valori			
		document.form1.g22.value = g22p;
		
		document.form1.g28.value = g28;
		document.form1.g29.value = g29;
		document.form1.g30.value = g30;
		document.form1.g31.value = g31;
		document.form1.g32.value = g32;
		document.form1.g33.value = g33;
		document.form1.g34.value = g34;
		document.form1.g35.value = g35;
		
		document.form1.i28.value = i28;
		document.form1.i29.value = i29;
		document.form1.i30.value = i30;
		document.form1.i31.value = i31;
		document.form1.i32.value = i32;
		document.form1.i33.value = i33;
		document.form1.i34.value = i34;
		document.form1.i35.value = i35;
	}
}

function investimentisettore(nomeForm)
{	
	//controllo campi	
	
	//i16 *** numerico
	if ( ! isCompiled( nomeForm, 'i16' ) )
		showMessage( nomeForm, 'i16', 'Compilare il campo \'prezzo\'', true )
	else if ( contanisChar( nomeForm, 'i16', ',' ) )
		showMessage( nomeForm, 'i16', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'i16' ) )
		showMessage( nomeForm, 'i16', 'Il campo \'prezzo\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'i16') )
		showMessage( nomeForm, 'i16', 'Il campo \'prezzo\' deve essere diverso da zero', true )	
	//c21 *** numerico
	else if ( ! isCompiled( nomeForm, 'c21' ) )
		showMessage( nomeForm, 'c21', 'Compilare il campo \'P/E\'', true )
	else if ( contanisChar( nomeForm, 'c21', ',' ) )
		showMessage( nomeForm, 'c21', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'c21' ) )
		showMessage( nomeForm, 'c21', 'Il campo \'P/E\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'c21') )
		showMessage( nomeForm, 'c21', 'Il campo \'P/E\' deve essere diverso da zero', true )		
	//c23 *** numerico
	else if ( ! isCompiled( nomeForm, 'c23' ) )
		showMessage( nomeForm, 'c23', 'Compilare il campo \'P/S\'', true )
	else if ( contanisChar( nomeForm, 'c23', ',' ) )
		showMessage( nomeForm, 'c23', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'c23' ) )
		showMessage( nomeForm, 'c23', 'Il campo \'P/S\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'c23') )
		showMessage( nomeForm, 'c23', 'Il campo \'P/S\' deve essere diverso da zero', true )			
	//c25 *** numerico
	else if ( ! isCompiled( nomeForm, 'c25' ) )
		showMessage( nomeForm, 'c25', 'Compilare il campo \'P/B\'', true )
	else if ( contanisChar( nomeForm, 'c25', ',' ) )
		showMessage( nomeForm, 'c25', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'c25' ) )
		showMessage( nomeForm, 'c25', 'Il campo \'P/B\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'c25') )
		showMessage( nomeForm, 'c25', 'Il campo \'P/B\' deve essere diverso da zero', true )		
	//f21 *** numerico
	else if ( ! isCompiled( nomeForm, 'f21' ) )
		showMessage( nomeForm, 'f21', 'Compilare il campo \'P/E\'', true )
	else if ( contanisChar( nomeForm, 'f21', ',' ) )
		showMessage( nomeForm, 'f21', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'f21' ) )
		showMessage( nomeForm, 'f21', 'Il campo \'P/E\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'f21') )
		showMessage( nomeForm, 'f21', 'Il campo \'P/E\' deve essere diverso da zero', true )		
	//f23 *** numerico
	else if ( ! isCompiled( nomeForm, 'f23' ) )
		showMessage( nomeForm, 'f23', 'Compilare il campo \'P/S\'', true )
	else if ( contanisChar( nomeForm, 'f23', ',' ) )
		showMessage( nomeForm, 'f23', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'f23' ) )
		showMessage( nomeForm, 'f23', 'Il campo \'P/S\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'f23') )
		showMessage( nomeForm, 'f23', 'Il campo \'P/S\' deve essere diverso da zero', true )			
	//f25 *** numerico
	else if ( ! isCompiled( nomeForm, 'f25' ) )
		showMessage( nomeForm, 'f25', 'Compilare il campo \'P/B\'', true )
	else if ( contanisChar( nomeForm, 'f25', ',' ) )
		showMessage( nomeForm, 'f25', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'f25' ) )
		showMessage( nomeForm, 'f25', 'Il campo \'P/B\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'f25') )
		showMessage( nomeForm, 'f25', 'Il campo \'P/B\' deve essere diverso da zero', true )		
	//f31 *** numerico
	else if ( ! isCompiled( nomeForm, 'f31' ) )
		showMessage( nomeForm, 'f31', 'Compilare il campo \'P/E\'', true )
	else if ( contanisChar( nomeForm, 'f31', ',' ) )
		showMessage( nomeForm, 'f31', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'f31' ) )
		showMessage( nomeForm, 'f31', 'Il campo \'P/E\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'f31') )
		showMessage( nomeForm, 'f31', 'Il campo \'P/E\' deve essere diverso da zero', true )		
	//f33 *** numerico
	else if ( ! isCompiled( nomeForm, 'f33' ) )
		showMessage( nomeForm, 'f33', 'Compilare il campo \'P/S\'', true )
	else if ( contanisChar( nomeForm, 'f33', ',' ) )
		showMessage( nomeForm, 'f33', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'f33' ) )
		showMessage( nomeForm, 'f33', 'Il campo \'P/S\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'f33') )
		showMessage( nomeForm, 'f33', 'Il campo \'P/S\' deve essere diverso da zero', true )			
	//f35 *** numerico
	else if ( ! isCompiled( nomeForm, 'f35' ) )
		showMessage( nomeForm, 'f35', 'Compilare il campo \'P/B\'', true )
	else if ( contanisChar( nomeForm, 'f35', ',' ) )
		showMessage( nomeForm, 'f35', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'f35' ) )
		showMessage( nomeForm, 'f35', 'Il campo \'P/B\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'f35') )
		showMessage( nomeForm, 'f35', 'Il campo \'P/B\' deve essere diverso da zero', true )		
	//f41 *** numerico
	if ( ! isCompiled( nomeForm, 'f41' ) )
		showMessage( nomeForm, 'f41', 'Compilare il campo \'P/E\'', true )
	else if ( contanisChar( nomeForm, 'f41', ',' ) )
		showMessage( nomeForm, 'f41', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'f41' ) )
		showMessage( nomeForm, 'f41', 'Il campo \'P/E\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'f41') )
		showMessage( nomeForm, 'f41', 'Il campo \'P/E\' deve essere diverso da zero', true )		
	//f43 *** numerico
	if ( ! isCompiled( nomeForm, 'f43' ) )
		showMessage( nomeForm, 'f43', 'Compilare il campo \'P/S\'', true )
	else if ( contanisChar( nomeForm, 'f43', ',' ) )
		showMessage( nomeForm, 'f43', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'f43' ) )
		showMessage( nomeForm, 'f43', 'Il campo \'P/S\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'f43') )
		showMessage( nomeForm, 'f43', 'Il campo \'P/S\' deve essere diverso da zero', true )			
	//f45 *** numerico
	if ( ! isCompiled( nomeForm, 'f45' ) )
		showMessage( nomeForm, 'f45', 'Compilare il campo \'P/B\'', true )
	else if ( contanisChar( nomeForm, 'f45', ',' ) )
		showMessage( nomeForm, 'f45', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'f45' ) )
		showMessage( nomeForm, 'f45', 'Il campo \'P/B\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'f45') )
		showMessage( nomeForm, 'f45', 'Il campo \'P/B\' deve essere diverso da zero', true )				
	else
	{	
		//leggo i valori
		var i16 = parseFloat( document.form1.i16.value );
				
		var c21 = parseFloat( document.form1.c21.value );
		var c23 = parseFloat( document.form1.c23.value );
		var c25 = parseFloat( document.form1.c25.value );
				
		var f21 = parseFloat( document.form1.f21.value );
		var f23 = parseFloat( document.form1.f23.value );
		var f25 = parseFloat( document.form1.f25.value );
				
		var f31 = parseFloat( document.form1.f31.value );
		var f33 = parseFloat( document.form1.f33.value );
		var f35 = parseFloat( document.form1.f35.value );
				
		var f41 = parseFloat( document.form1.f41.value );
		var f43 = parseFloat( document.form1.f43.value );
		var f45 = parseFloat( document.form1.f45.value );
		
		//calcolo		
		var i21 = f21/c21*i16;
		var i23 = f23/c23*i16;
		var i25 = f25/c25*i16;
		
		var l21 = ((i21/i16)-1)*100;
		var l23 = ((i23/i16)-1)*100;
		var l25 = ((i25/i16)-1)*100;
		
		var i31 = f31/c21*i16;
		var i33 = f33/c23*i16;
		var i35 = f35/c25*i16;
		
		var l31 =((i31/i16)-1)*100;
		var l33 =((i33/i16)-1)*100;
		var l35 =((i35/i16)-1)*100;
		
		var i41 = f41/c21*i16;
		var i43 = f43/c23*i16;
		var i45 = f45/c25*i16;
		
		var l41 =((i41/i16)-1)*100;
		var l43 =((i43/i16)-1)*100;
		var l45 =((i45/i16)-1)*100;
		
		//stampo i valori			
		document.form1.i21.value = Math.round( i21*100 ) / 100;
		document.form1.i23.value = Math.round( i23*100 ) / 100;
		document.form1.i25.value = Math.round( i25*100 ) / 100;
	
		document.form1.l21.value = Math.round( l21*100 ) / 100;
		document.form1.l23.value = Math.round( l23*100 ) / 100;
		document.form1.l25.value = Math.round( l25*100 ) / 100;
		
		document.form1.i31.value = Math.round( i31*100 ) / 100;
		document.form1.i33.value = Math.round( i33*100 ) / 100;
		document.form1.i35.value = Math.round( i35*100 ) / 100;
		
		document.form1.l31.value = Math.round( l31*100 ) / 100;
		document.form1.l33.value = Math.round( l33*100 ) / 100;
		document.form1.l35.value = Math.round( l35*100 ) / 100;
		
		document.form1.i41.value = Math.round( i41*100 ) / 100;
		document.form1.i43.value = Math.round( i43*100 ) / 100;
		document.form1.i45.value = Math.round( i45*100 ) / 100;
		
		document.form1.l41.value = Math.round( l41*100 ) / 100;
		document.form1.l43.value = Math.round( l43*100 ) / 100;
		document.form1.l45.value = Math.round( l45*100 ) / 100;
	}
}

function valutazioneCompou(nomeForm)
{
	//controllo campi

	//g10 *** numerico
	if ( ! isCompiled( nomeForm, 'g10' ) )
		showMessage( nomeForm, 'g10', 'Compilare il campo \'Nominale iniziale\'', true )
	else if ( contanisChar( nomeForm, 'g10', ',' ) )
		showMessage( nomeForm, 'g10', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g10' ) )
		showMessage( nomeForm, 'g10', 'Il campo \'Nominale iniziale\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g10') )
		showMessage( nomeForm, 'g10', 'Il campo \'Nominale iniziale\' deve essere diverso da zero', true )		
	//g11 *** Anni intero
	else if ( ! isCompiled( nomeForm, 'g11' ) )
		showMessage( nomeForm, 'g11', 'Compilare il campo \'Durata\'', true )
	// else if ( contanisChar( nomeForm, 'g11', ',' ) ) 		showMessage( nomeForm, 'g11', 'Usa il punto per i decimali', true )
	else if ( ! isInteger( nomeForm, 'g11' ) )
		showMessage( nomeForm, 'g11', 'Inserire un numero intero di anni', true )
	else if ( isEqualsZero( nomeForm, 'g11') )
		showMessage( nomeForm, 'g11', 'Il campo \'Durata\' deve essere diverso da zero', true )
	//g12 *** decimale
	else if ( ! isCompiled( nomeForm, 'g12' ) )
		showMessage( nomeForm, 'g12', 'Compilare il campo \'Imposta sostitutiva\'', true )
	else if ( contanisChar( nomeForm, 'g12', ',' ) )
		showMessage( nomeForm, 'g10', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g12' ) )
		showMessage( nomeForm, 'g12', 'Il campo \'Imposta sostitutiva\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g12') )
		showMessage( nomeForm, 'g12', 'Il campo \'Imposta sostitutiva\' deve essere diverso da zero', true )		

	//s10 *** decimale
	else if ( ! isCompiled( nomeForm, 's10' ) )
		showMessage( nomeForm, 's10', 'Compilare il campo \'Rendimento annuo lordo\' per il primo scenario', true )
	else if ( contanisChar( nomeForm, 's10', ',' ) )
		showMessage( nomeForm, 's10', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 's10' ) )
		showMessage( nomeForm, 's10', 'Il campo \'Rendimento annuo lordo\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 's10') )
		showMessage( nomeForm, 's10', 'Il campo \'Rendimento annuo lordo\' deve essere diverso da zero', true )		
	//s11 *** decimale
	else if ( ! isCompiled( nomeForm, 's11' ) )
		showMessage( nomeForm, 's11', 'Compilare il campo \'Rendimento annuo lordo\' per il secondo scenario', true )
	else if ( contanisChar( nomeForm, 's11', ',' ) )
		showMessage( nomeForm, 's11', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 's11' ) )
		showMessage( nomeForm, 's11', 'Il campo \'Rendimento annuo lordo\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 's11') )
		showMessage( nomeForm, 's11', 'Il campo \'Rendimento annuo lordo\' deve essere diverso da zero', true )
	//s12 *** decimale
	else if ( ! isCompiled( nomeForm, 's12' ) )
		showMessage( nomeForm, 's12', 'Compilare il campo \'Rendimento annuo lordo\' per il terzo scenario', true )
	else if ( contanisChar( nomeForm, 's12', ',' ) )
		showMessage( nomeForm, 's12', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 's12' ) )
		showMessage( nomeForm, 's12', 'Il campo \'Rendimento annuo lordo\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 's12') )
		showMessage( nomeForm, 's12', 'Il campo \'Rendimento annuo lordo\' deve essere diverso da zero', true )

	else
	{	
		//leggo i valori
		var g10 = parseFloat( document.form1.g10.value );
		var g11 = parseFloat( document.form1.g11.value );
		var g12 = parseFloat( document.form1.g12.value / 100);

		var s10 = parseFloat( document.form1.s10.value / 100);
		var s11 = parseFloat( document.form1.s11.value / 100);
		var s12 = parseFloat( document.form1.s12.value / 100);

		var codice = "";

		for (i = 1; i <= g11 && i <= 50; i++)
		{ 
			var c10 = g10 * Math.pow(1 + s10, i);
			var c11 = g10 * Math.pow(1 + s11, i);
			var c12 = g10 * Math.pow(1 + s12, i);
			
			codice += "<tr><td> " + i + "</td>" +
						   "<td>" + formatNumber(c10, 0) + "</td> " +
						   "<td>" + formatNumber(c11, 0) + "</td> " +
						   "<td>" + formatNumber(c12, 0) + "</td></tr>";    
		}

		$("#bdLordi").html(codice);
		document.getElementById("capLordi").style.display='block';

		//Nette
		//	=+D5*(1-$H$3) = lordo * (1-netto%)
		var n10 = s10 * (1 - g12);
		var n11 = s11 * (1 - g12);
		var n12 = s12 * (1 - g12);

		codice = "";

		for (i = 1; i <= g11 && i <= 50; i++) 
		{
			var c10 = g10 * Math.pow(1 + n10, i);
			var c11 = g10 * Math.pow(1 + n11, i);
			var c12 = g10 * Math.pow(1 + n12, i);
			
			codice += "<tr><td> " + i + "</td>" +
			   				"<td>" + formatNumber(c10, 0) + "</td> " +
			   				"<td>" + formatNumber(c11, 0) + "</td> " +
			   				"<td>" + formatNumber(c12, 0) + "</td></tr>";     
		}
		
		$("#bdNetti").html(codice);
		document.getElementById("capNetti").style.display='block';
	}	
}

function valutazioneCapScad(nomeForm)
{
	//controllo campi

	//g10 *** numerico
	if ( ! isCompiled( nomeForm, 'g10' ) )
		showMessage( nomeForm, 'g10', 'Compilare il campo \'Nominale iniziale\'', true )
	else if ( contanisChar( nomeForm, 'g10', ',' ) )
		showMessage( nomeForm, 'g10', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g10' ) )
		showMessage( nomeForm, 'g10', 'Il campo \'Nominale iniziale\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g10') )
		showMessage( nomeForm, 'g10', 'Il campo \'Nominale iniziale\' deve essere diverso da zero', true )		
	//g11 *** Anni intero
	else if ( ! isCompiled( nomeForm, 'g11' ) )
		showMessage( nomeForm, 'g11', 'Compilare il campo \'Durata\'', true )
	// else if ( contanisChar( nomeForm, 'g11', ',' ) ) 		showMessage( nomeForm, 'g11', 'Usa il punto per i decimali', true )
	else if ( ! isInteger( nomeForm, 'g11' ) )
		showMessage( nomeForm, 'g11', 'Inserire un numero intero di anni', true )
	else if ( isEqualsZero( nomeForm, 'g11') )
		showMessage( nomeForm, 'g11', 'Il campo \'Durata\' deve essere diverso da zero', true )
	//g12 *** Numer rate intero
	else if ( ! isCompiled( nomeForm, 'g12' ) )
		showMessage( nomeForm, 'g12', 'Compilare il campo \'Periodicità rate\'', true )
	// else if ( contanisChar( nomeForm, 'g12', ',' ) ) 		showMessage( nomeForm, 'g12', 'Usa il punto per i decimali', true )
	else if ( ! isInteger( nomeForm, 'g12' ) )
		showMessage( nomeForm, 'g12', 'Inserire un numero intero di rate annue', true )
	else if ( isEqualsZero( nomeForm, 'g12') )
		showMessage( nomeForm, 'g12', 'Il campo \'Periodicità rate\' deve essere diverso da zero', true )

	//s10 *** decimale
	else if ( ! isCompiled( nomeForm, 's10' ) )
		showMessage( nomeForm, 's10', 'Compilare il campo \'Rendimento annuo lordo\' per il primo scenario', true )
	else if ( contanisChar( nomeForm, 's10', ',' ) )
		showMessage( nomeForm, 's10', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 's10' ) )
		showMessage( nomeForm, 's10', 'Il campo \'Rendimento annuo lordo\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 's10') )
		showMessage( nomeForm, 's10', 'Il campo \'Rendimento annuo lordo\' deve essere diverso da zero', true )		
	//s11 *** decimale
	else if ( ! isCompiled( nomeForm, 's11' ) )
		showMessage( nomeForm, 's11', 'Compilare il campo \'Rendimento annuo lordo\' per il secondo scenario', true )
	else if ( contanisChar( nomeForm, 's11', ',' ) )
		showMessage( nomeForm, 's11', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 's11' ) )
		showMessage( nomeForm, 's11', 'Il campo \'Rendimento annuo lordo\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 's11') )
		showMessage( nomeForm, 's11', 'Il campo \'Rendimento annuo lordo\' deve essere diverso da zero', true )
	//s12 *** decimale
	else if ( ! isCompiled( nomeForm, 's12' ) )
		showMessage( nomeForm, 's12', 'Compilare il campo \'Rendimento annuo lordo\' per il terzo scenario', true )
	else if ( contanisChar( nomeForm, 's12', ',' ) )
		showMessage( nomeForm, 's12', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 's12' ) )
		showMessage( nomeForm, 's12', 'Il campo \'Rendimento annuo lordo\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 's12') )
		showMessage( nomeForm, 's12', 'Il campo \'Rendimento annuo lordo\' deve essere diverso da zero', true )

	else
	{	
		//leggo i valori
		var g10 = parseFloat( document.form1.g10.value );
		var g11 = parseFloat( document.form1.g11.value );
		var g12 = parseFloat( document.form1.g12.value );

		var s10 = parseFloat( document.form1.s10.value / 100);
		var s11 = parseFloat( document.form1.s11.value / 100);
		var s12 = parseFloat( document.form1.s12.value / 100);

		var int10 = (Math.pow((1 + s10), (1 / g12))) - 1;
		var int11 = (Math.pow((1 + s11), (1 / g12))) - 1;
		var int12 = (Math.pow((1 + s12), (1 / g12))) - 1;
		
		var nra = g11 * g12;

		// Anno
		var fma0 = g10 / ((Math.pow((1 + int10), nra) - 1) / (int10 / (1 + int10)));
		var fma1 = g10 / ((Math.pow((1 + int11), nra) - 1) / (int11 / (1 + int11)));
		var fma2 = g10 / ((Math.pow((1 + int12), nra) - 1) / (int12 / (1 + int12)));

		//stampo i valori
		document.form1.ra0.value = formatNumber(fma0, 0);
		document.form1.ra1.value = formatNumber(fma1, 0);
		document.form1.ra2.value = formatNumber(fma2, 0);

		var da0 = fma1 - fma0;
		var da2 = fma1 - fma2;

		document.form1.da0.value = formatNumber(da0, 0); 
		document.form1.da2.value = formatNumber(da2, 0);

		var codice = "";
		var nr = null;
		var cv = null;
		var fmm0 = null;
		var fmm1 = null;
		var fmm2 = null;
		
		for (i = 1; i <= g11; i++)
		{
			nr = g12 * i;
			cv = fma1 * i * g12;
			fmm0 = ((Math.pow((1 + int10), nr) - 1) / (int10 / (1 + int10))) * fma0;
			fmm1 = ((Math.pow((1 + int11), nr) - 1) / (int11 / (1 + int11))) * fma1;
			fmm2 = ((Math.pow((1 + int12), nr) - 1) / (int12 / (1 + int12))) * fma2;


			codice += "<tr><td> " + i + "</td>" +
						/*   "<td>" + formatNumber(cv, 0) + "</td> " + */
						   "<td>" + formatNumber(fmm0, 0) + "</td> " +
						   "<td>" + formatNumber(fmm1, 0) + "</td> " +
						   "<td>" + formatNumber(fmm2, 0) + "</td></tr>";
		}

		$("#bdCapScad").html(codice);
		document.getElementById("tbCapScad").style.display='block';

/*
		var dta0 = da0 * g11;
		var dta2 = da2 * g11;

		document.form1.dta0.value = dta0.toFixed(0);
		document.form1.dta2.value = dta2.toFixed(0);

		// Mese
		var gm11 = g11 * 12;

		var sm10 = Math.pow((1+s10),(1/12)) - 1;
		var sm11 = Math.pow((1+s11),(1/12)) - 1;
		var sm12 = Math.pow((1+s12),(1/12)) - 1;

		var fmm0 = g10 / ((Math.pow((1+sm10),gm11)-1)/(sm10/(1+sm10)));
		var fmm1 = g10 / ((Math.pow((1+sm11),gm11)-1)/(sm11/(1+sm11)));
		var fmm2 = g10 / ((Math.pow((1+sm12),gm11)-1)/(sm12/(1+sm12)));
				
		//stampo i valori
		document.form1.rm0.value = fmm0.toFixed(0);
		document.form1.rm1.value = fmm1.toFixed(0);
		document.form1.rm2.value = fmm2.toFixed(0);

		var dm0 = fmm1 - fmm0;
		var dm2 = fmm1 - fmm2;
		
		document.form1.dm0.value = dm0.toFixed(0);
		document.form1.dm2.value = dm2.toFixed(0);
		
		var dtm0 = dm0 * gm11;
		var dtm2 = dm2 * gm11;
		
		document.form1.dtm0.value = dtm0.toFixed(0);
		document.form1.dtm2.value = dtm2.toFixed(0);
*/
	}	
}

function valutazionePianoAccumulo(nomeForm)
{
	//controllo campi

	//g10 *** numerico
	if ( ! isCompiled( nomeForm, 'g10' ) )
		showMessage( nomeForm, 'g10', 'Compilare il campo \'rata\'', true )
	else if ( contanisChar( nomeForm, 'g10', ',' ) )
		showMessage( nomeForm, 'g10', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g10' ) )
		showMessage( nomeForm, 'g10', 'Il campo \'rata\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g10') )
		showMessage( nomeForm, 'g10', 'Il campo \'rata\' deve essere diverso da zero', true )
		
	//g11 *** Anni intero
	else if ( ! isCompiled( nomeForm, 'g11' ) )
		showMessage( nomeForm, 'g11', 'Compilare il campo \'Durata\'', true )
	// else if ( contanisChar( nomeForm, 'g11', ',' ) ) 		showMessage( nomeForm, 'g11', 'Usa il punto per i decimali', true )
	else if ( ! isInteger( nomeForm, 'g11' ) )
		showMessage( nomeForm, 'g11', 'Inserire un numero intero di anni', true )
	else if ( isEqualsZero( nomeForm, 'g11') )
		showMessage( nomeForm, 'g11', 'Il campo \'Durata\' deve essere diverso da zero', true )
				
	//g12 *** Numer rate intero
	else if ( ! isCompiled( nomeForm, 'g12' ) )
		showMessage( nomeForm, 'g12', 'Compilare il campo \'Numero rate annue\'', true )
	// else if ( contanisChar( nomeForm, 'g12', ',' ) ) 		showMessage( nomeForm, 'g12', 'Usa il punto per i decimali', true )
	else if ( ! isInteger( nomeForm, 'g12' ) )
		showMessage( nomeForm, 'g12', 'Inserire un numero intero di rate annue', true )
	else if ( isEqualsZero( nomeForm, 'g12') )
		showMessage( nomeForm, 'g12', 'Il campo \'Numero rate annue\' deve essere diverso da zero', true )

	//s10 *** decimale
	else if ( ! isCompiled( nomeForm, 's10' ) )
		showMessage( nomeForm, 's10', 'Compilare il campo \'Rendimento annuo lordo\' per il primo scenario', true )
	else if ( contanisChar( nomeForm, 's10', ',' ) )
		showMessage( nomeForm, 's10', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 's10' ) )
		showMessage( nomeForm, 's10', 'Il campo \'Rendimento annuo lordo\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 's10') )
		showMessage( nomeForm, 's10', 'Il campo \'Rendimento annuo lordo\' deve essere diverso da zero', true )		
	//s11 *** decimale
	else if ( ! isCompiled( nomeForm, 's11' ) )
		showMessage( nomeForm, 's11', 'Compilare il campo \'Rendimento annuo lordo\' per il secondo scenario', true )
	else if ( contanisChar( nomeForm, 's11', ',' ) )
		showMessage( nomeForm, 's11', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 's11' ) )
		showMessage( nomeForm, 's11', 'Il campo \'Rendimento annuo lordo\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 's11') )
		showMessage( nomeForm, 's11', 'Il campo \'Rendimento annuo lordo\' deve essere diverso da zero', true )
	//s12 *** decimale
	else if ( ! isCompiled( nomeForm, 's12' ) )
		showMessage( nomeForm, 's12', 'Compilare il campo \'Rendimento annuo lordo\' per il terzo scenario', true )
	else if ( contanisChar( nomeForm, 's12', ',' ) )
		showMessage( nomeForm, 's12', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 's12' ) )
		showMessage( nomeForm, 's12', 'Il campo \'Rendimento annuo lordo\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 's12') )
		showMessage( nomeForm, 's12', 'Il campo \'Rendimento annuo lordo\' deve essere diverso da zero', true )

	else
	{	
		//leggo i valori
		var g10 = parseFloat( document.form1.g10.value );
		var g11 = parseFloat( document.form1.g11.value );
		var g12 = parseFloat( document.form1.g12.value );

		var s10 = parseFloat( document.form1.s10.value / 100);
		var s11 = parseFloat( document.form1.s11.value / 100);
		var s12 = parseFloat( document.form1.s12.value / 100);

		var codice = "";

		// Rate
		var nr = g11 * g12;

		// Anno
		var im0 = (Math.pow((1+s10), (1/g12)) - 1);
		var im1 = (Math.pow((1+s11), (1/g12)) - 1);
		var im2 = (Math.pow((1+s12), (1/g12)) - 1);

		var fma0 = ((Math.pow((1+im0), nr) - 1) / (im0 / (1+im0))) * g10;
		var fma1 = ((Math.pow((1+im1), nr) - 1) / (im1 / (1+im1))) * g10;
		var fma2 = ((Math.pow((1+im2), nr) - 1) / (im2 / (1+im2))) * g10;

		// Stampo i valori
		document.form1.ra0.value = formatNumber(fma0, 0);
		document.form1.ra1.value = formatNumber(fma1, 0);
		document.form1.ra2.value = formatNumber(fma2, 0);

		var da0 = fma1 - fma0;
		var da2 = fma1 - fma2;
		
		document.form1.da0.value = formatNumber(da0, 0);
		document.form1.da2.value = formatNumber(da2, 0);

		var codice = "";
		var nr = null;
		var cv = null;
		var fmm0 = null;
		var fmm1 = null;
		var fmm2 = null;
		
		for (i = 1; i <= g11; i++)
		{
			nr = g12 * i;
			cv = g10 * i * g12;
			fmm0 = ((Math.pow((1 + im0), nr) - 1) / (im0 / (1 + im0))) * g10;
			fmm1 = ((Math.pow((1 + im1), nr) - 1) / (im1 / (1 + im1))) * g10;
			fmm2 = ((Math.pow((1 + im2), nr) - 1) / (im2 / (1 + im2))) * g10;

			codice += "<tr><td> " + i + "</td>" +
						   "<td>" + formatNumber(cv, 0) + "</td> " +
						   "<td>" + formatNumber(fmm0, 0) + "</td> " +
						   "<td>" + formatNumber(fmm1, 0) + "</td> " +
						   "<td>" + formatNumber(fmm2, 0) + "</td></tr>";
		}

		$("#bdPda").html(codice);
		document.getElementById("tbPda").style.display='block';
	}
}

function valutazioneAnnuity(nomeForm)
{
	//controllo campi

	//g10 *** numerico
	if ( ! isCompiled( nomeForm, 'g10' ) )
		showMessage( nomeForm, 'g10', 'Compilare il campo \'Patrimonio iniziale\'', true )
	else if ( contanisChar( nomeForm, 'g10', ',' ) )
		showMessage( nomeForm, 'g10', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g10' ) )
		showMessage( nomeForm, 'g10', 'Il campo \'Patrimonio iniziale\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g10') )
		showMessage( nomeForm, 'g10', 'Il campo \'Patrimonio iniziale\' deve essere diverso da zero', true )		
	//g11 *** decimale
	else if ( ! isCompiled( nomeForm, 'g11' ) )
		showMessage( nomeForm, 'g11', 'Compilare il campo \'Inflazione annua\'', true )
	else if ( contanisChar( nomeForm, 'g11', ',' ) )
		showMessage( nomeForm, 'g11', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g11' ) )
		showMessage( nomeForm, 'g11', 'Il campo \'Inflazione annua\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g11') )
		showMessage( nomeForm, 'g11', 'Il campo \'Inflazione annua\' deve essere diverso da zero', true )
	//g12 *** decimale
	else if ( ! isCompiled( nomeForm, 'g12' ) )
		showMessage( nomeForm, 'g12', 'Compilare il campo \'Rendimento annuo\'', true )
	else if ( contanisChar( nomeForm, 'g12', ',' ) )
		showMessage( nomeForm, 'g12', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g12' ) )
		showMessage( nomeForm, 'g12', 'Il campo \'Rendimento annuo\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g12') )
		showMessage( nomeForm, 'g12', 'Il campo \'Rendimento annuo\' deve essere diverso da zero', true )		
	//g13 *** decimale
	else if ( ! isCompiled( nomeForm, 'g13' ) )
		showMessage( nomeForm, 'g13', 'Compilare il campo \'Prelievo\'', true )
	else if ( contanisChar( nomeForm, 'g13', ',' ) )
		showMessage( nomeForm, 'g13', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g13' ) )
		showMessage( nomeForm, 'g13', 'Il campo \'Prelievo\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g13') )
		showMessage( nomeForm, 'g13', 'Il campo \'Prelievo\' deve essere diverso da zero', true )		

	else
	{	
		//leggo i valori
		var g10 = parseFloat( document.form1.g10.value );
		var g11 = parseFloat( document.form1.g11.value / 100);
		var g12 = parseFloat( document.form1.g12.value / 100);
		var g13 = parseFloat( document.form1.g13.value );

		getById("prelievo").innerHTML = g13;
		
		// Fisso
		var codice = "";

		var pf = g10;
		var pc = g13;

		for (i = 1; i <= 25 && pf > 0; i++)
		{
			pf = pf * (1 + g12) - g13;
			
			if (pf <= 0)
			{
				pc = pc + pf;
				pf = 0;
			}

			codice += "<tr><td> " + i + "</td>" +
						   "<td>" + formatNumber(pf, 0) + "</td> " +
						   "<td>" + formatNumber(pc, 0) + "</td></tr>";
		}
		
		$("#bdFisso").html(codice);
		document.getElementById("prelFisso").style.display='block';

		// Crescente
		codice = "";
		
		pf = g10;
		pc = g13;
		
		for (i = 1; i <= 25 && pf > 0; i++) 
		{
			pf = pf * (1 + g12) - pc;

			if (pf <= 0)
			{
				pc = pc + pf;
				pf = 0;
			}

			codice += "<tr><td> " + i + "</td>" +
						   "<td>" + formatNumber(pf, 0) + "</td> " +
						   "<td>" + formatNumber(pc, 0) + "</td></tr>";

			pc = pc * (1 + g11);
		}

		$("#bdCrescente").html(codice);
		document.getElementById("prelCrescente").style.display='block';

		// Reale
		var codice = "";

		pf = g10;
		pfPrec = g10;

		for (i = 1; i <= 25; i++) 
		{
			pf = pf * (1 + g11);
			pc = ( pfPrec * (1 + g12)) - pf;
			pfPrec = pf;

			codice += "<tr><td> " + i + "</td>" +
			   "<td>" + formatNumber(pf, 0) + "</td> " +
			   "<td>" + formatNumber(pc, 0) + "</td></tr>"; 
		}

		$("#bdReale").html(codice);
		document.getElementById("prelReale").style.display='block';
	}	
}

function calcolaMutuoFrancese(nomeForm)
{
	//controllo campi

	//g10 *** numerico
	if ( ! isCompiled( nomeForm, 'g10' ) )
		showMessage( nomeForm, 'g10', 'Compilare il campo \'Capitale\'', true )
	else if ( contanisChar( nomeForm, 'g10', ',' ) )
		showMessage( nomeForm, 'g10', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g10' ) )
		showMessage( nomeForm, 'g10', 'Il campo \'Capitale\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g10') )
		showMessage( nomeForm, 'g10', 'Il campo \'Capitale\' deve essere diverso da zero', true )		
	//g11 *** decimale
	else if ( ! isCompiled( nomeForm, 'g11' ) )
		showMessage( nomeForm, 'g11', 'Compilare il campo \'Numero rate annue\'', true )
	else if ( contanisChar( nomeForm, 'g11', ',' ) )
		showMessage( nomeForm, 'g11', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g11' ) )
		showMessage( nomeForm, 'g11', 'Il campo \'Numero rate annue\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g11') )
		showMessage( nomeForm, 'g11', 'Il campo \'Numero rate annue\' deve essere diverso da zero', true )
	//g12 *** decimale
	else if ( ! isCompiled( nomeForm, 'g12' ) )
		showMessage( nomeForm, 'g12', 'Compilare il campo \'Numero anni\'', true )
	else if ( contanisChar( nomeForm, 'g12', ',' ) )
		showMessage( nomeForm, 'g12', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g12' ) )
		showMessage( nomeForm, 'g12', 'Il campo \'Numero anni\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g12') )
		showMessage( nomeForm, 'g12', 'Il campo \'Numero anni\' deve essere diverso da zero', true )		
	//g13 *** decimale
	else if ( ! isCompiled( nomeForm, 'g13' ) )
		showMessage( nomeForm, 'g13', 'Compilare il campo \'Tasso annuo\'', true )
	else if ( contanisChar( nomeForm, 'g13', ',' ) )
		showMessage( nomeForm, 'g13', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g13' ) )
		showMessage( nomeForm, 'g13', 'Il campo \'Tasso annuo\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g13') )
		showMessage( nomeForm, 'g13', 'Il campo \'Tasso annuo\' deve essere diverso da zero', true )		

	else
	{	
		//leggo i valori
		var g10 = parseFloat( document.form1.g10.value );
		var g11 = parseFloat( document.form1.g11.value );
		var g12 = parseFloat( document.form1.g12.value );
		var g13 = parseFloat( document.form1.g13.value / 100);

		var nr = g11 * g12;
		
		var te = null;
		if (g11 == 1)
			te = Math.pow((1 + g13), (1 / 1)) - 1;
		else if (g11 == 2)
			te = Math.pow((1 + g13), (1 / 2)) - 1;
		else if (g11 == 3)
			te = Math.pow((1 + g13), (1 / 3)) - 1;
		else if (g11 == 4)
			te = Math.pow((1 + g13), (1 / 4)) - 1;
		else if (g11 == 6)
			te = Math.pow((1 + g13), (1 / 6)) - 1;
		else if (g11 == 12)
			te = Math.pow((1 + g13), (1 / 12)) - 1;
		else 
		{
			showMessage( nomeForm, 'g13', 'Il campo \'Numero rate annue\' non é valido', true );
			return;
		}

		var tanr = ( 1 - Math.pow((1 + te), (-1 * nr)) ) / te;
		var rata = g10 / tanr;

		document.form1.rata.value = formatNumber(rata, 0);
		document.getElementById("tbRata").style.display='block';

		// Fisso
		var codice = "";

		var cr = g10;
		var qi = null;
		var qc = null;

		var crd = 0;
		var cri = 0;
		var ipc = 0;
		
		for (i = 0; i <= nr; i++)
		{
			if (i == 0)
			{
				codice += "<tr><td> " + i + "</td>" +
							   "<td></td> " +
							   "<td></td> " +
							   "<td></td> " +
							   "<td>" + formatNumber(cr, 0) + "</td></tr>";
			}
			else
			{
				qi = cr * te;
				qc = rata - qi;
				cr = cr - qc;

				codice += "<tr><td> " + i + "</td>" +
							   "<td>" + formatNumber(rata, 0) + "</td> " +
							   "<td>" + formatNumber(qi, 0) + "</td> " +
							   "<td>" + formatNumber(qc, 0) + "</td> " +
							   "<td>" + formatNumber(cr, 0) + "</td></tr>";
			}

			crd = crd + qc;
			cri = g10 - crd;
			ipc = ipc + qi;

			if (i != 0 && (i % g11) == 0 )
			{
				codice += "<tr class='riepilogo'><td><b>" + i / g11 + "&deg; Anno</b></td>" +
								"<td></td>" +
								"<td>Interessi pagati cumulati: <b>" + formatNumber(ipc, 0) + "<b/></td> " +
								"<td>Capitale ripagato: <b>" + formatNumber(crd, 0) + "<b/></td> " +
								"<td>Capitale rimanente: <b>" + formatNumber(cri, 0) + "<b/></td> " +
								"</tr>";
			}
		}

		$("#bdMtFra").html(codice);
		document.getElementById("mtFra").style.display='block';
	}
}

function calcolaMutuoQuotaCapitale(nomeForm)
{
	//controllo campi

	//g10 *** numerico
	if ( ! isCompiled( nomeForm, 'g10' ) )
		showMessage( nomeForm, 'g10', 'Compilare il campo \'Capitale\'', true )
	else if ( contanisChar( nomeForm, 'g10', ',' ) )
		showMessage( nomeForm, 'g10', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g10' ) )
		showMessage( nomeForm, 'g10', 'Il campo \'Capitale\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g10') )
		showMessage( nomeForm, 'g10', 'Il campo \'Capitale\' deve essere diverso da zero', true )		
	//g11 *** decimale
	else if ( ! isCompiled( nomeForm, 'g11' ) )
		showMessage( nomeForm, 'g11', 'Compilare il campo \'Numero rate annue\'', true )
	else if ( contanisChar( nomeForm, 'g11', ',' ) )
		showMessage( nomeForm, 'g11', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g11' ) )
		showMessage( nomeForm, 'g11', 'Il campo \'Numero rate annue\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g11') )
		showMessage( nomeForm, 'g11', 'Il campo \'Numero rate annue\' deve essere diverso da zero', true )
	//g12 *** decimale
	else if ( ! isCompiled( nomeForm, 'g12' ) )
		showMessage( nomeForm, 'g12', 'Compilare il campo \'Numero anni\'', true )
	else if ( contanisChar( nomeForm, 'g12', ',' ) )
		showMessage( nomeForm, 'g12', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g12' ) )
		showMessage( nomeForm, 'g12', 'Il campo \'Numero anni\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g12') )
		showMessage( nomeForm, 'g12', 'Il campo \'Numero anni\' deve essere diverso da zero', true )		
	//g13 *** decimale
	else if ( ! isCompiled( nomeForm, 'g13' ) )
		showMessage( nomeForm, 'g13', 'Compilare il campo \'Tasso annuo\'', true )
	else if ( contanisChar( nomeForm, 'g13', ',' ) )
		showMessage( nomeForm, 'g13', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g13' ) )
		showMessage( nomeForm, 'g13', 'Il campo \'Tasso annuo\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g13') )
		showMessage( nomeForm, 'g13', 'Il campo \'Tasso annuo\' deve essere diverso da zero', true )		

	else
	{	
		//leggo i valori
		var g10 = parseFloat( document.form1.g10.value );
		var g11 = parseFloat( document.form1.g11.value );
		var g12 = parseFloat( document.form1.g12.value );
		var g13 = parseFloat( document.form1.g13.value / 100);

		var nr = g11 * g12;
		
		var te = null;
		if (g11 == 1)
			te = Math.pow((1 + g13), (1 / 1)) - 1;
		else if (g11 == 2)
			te = Math.pow((1 + g13), (1 / 2)) - 1;
		else if (g11 == 3)
			te = Math.pow((1 + g13), (1 / 3)) - 1;
		else if (g11 == 4)
			te = Math.pow((1 + g13), (1 / 4)) - 1;
		else if (g11 == 6)
			te = Math.pow((1 + g13), (1 / 6)) - 1;
		else if (g11 == 12)
			te = Math.pow((1 + g13), (1 / 12)) - 1;
		else 
		{
			showMessage( nomeForm, 'g13', 'Il campo \'Numero rate annue\' non é valido', true );
			return;
		}

		var tanr = ( 1 - Math.pow((1 + te), (-1 * nr)) ) / te;
		var rata = g10 / nr;

		document.form1.rata.value = formatNumber(rata, 0);
		document.getElementById("tbRata").style.display='block';

		// Fisso
		var codice = "";

		var cr = g10;
		var ir = null;
		var qi = null;
		var qc = rata;

		var crd = 0;
		var cri = 0;
		var ipc = 0;
		
		for (i = 0; i <= nr; i++)
		{
			if (i == 0)
			{
				codice += "<tr><td> " + i + "</td>" +
							   "<td></td> " +
							   "<td></td> " +
							   "<td></td> " +
							   "<td>" + formatNumber(cr, 0) + "</td></tr>";
			}
			else
			{
				cr = cr - qc;
				qi = te * cr;
				ir = qi + qc;

				codice += "<tr><td> " + i + "</td>" +
							   "<td>" + formatNumber(ir, 0) + "</td> " +
							   "<td>" + formatNumber(qi, 0) + "</td> " +
							   "<td>" + formatNumber(qc, 0) + "</td> " +
							   "<td>" + formatNumber(cr, 0) + "</td></tr>";
			}

			if (i != 0)
			{
				crd = crd + qc;
				cri = g10 - crd;
				ipc = ipc + qi;
			}

			if (i != 0 && (i % g11) == 0 )
			{
				codice += "<tr class='riepilogo'><td><b>" + i / g11 + "&deg; Anno</b></td>" +
								"<td></td>" +
								"<td>Interessi pagati cumulati: <b>" + formatNumber(ipc, 0) + "<b/></td> " +
								"<td>Capitale ripagato: <b>" + formatNumber(crd, 0) + "<b/></td> " +
								"<td>Capitale rimanente: <b>" + formatNumber(cri, 0) + "<b/></td> " +
								"</tr>";
			}
		}
		
		$("#bdMtQuoCap").html(codice);
		document.getElementById("mtQuoCap").style.display='block';
	}	
}

function calcolaRendimentoRischioObbligazioni(nomeForm)
{
	//g10 *** numerico
	if ( ! isCompiled( nomeForm, 'g10' ) )
		showMessage( nomeForm, 'g10', 'Compilare il campo \'Valore nominale\'', true )
	else if ( contanisChar( nomeForm, 'g10', ',' ) )
		showMessage( nomeForm, 'g10', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g10' ) )
		showMessage( nomeForm, 'g10', 'Il campo \'Valore nominale\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g10') )
		showMessage( nomeForm, 'g10', 'Il campo \'Valore nominale\' deve essere diverso da zero', true )		
	//g11 *** decimale
	else if ( ! isCompiled( nomeForm, 'g11' ) )
		showMessage( nomeForm, 'g11', 'Compilare il campo \'Prezzo\'', true )
	else if ( contanisChar( nomeForm, 'g11', ',' ) )
		showMessage( nomeForm, 'g11', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 'g11' ) )
		showMessage( nomeForm, 'g11', 'Il campo \'Prezzo\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g11') )
		showMessage( nomeForm, 'g11', 'Il campo \'Prezzo\' deve essere diverso da zero', true )
	//g12 *** decimale
	else if ( ! isCompiled( nomeForm, 'g12' ) )
		showMessage( nomeForm, 'g12', 'Compilare il campo \'Cedola\'', true )
	else if ( contanisChar( nomeForm, 'g12', ',' ) )
		showMessage( nomeForm, 'g12', 'Usa il punto per i decimali', true )
	else if ( ! isDecimal( nomeForm, 'g12' ) )
		showMessage( nomeForm, 'g12', 'Il campo \'Cedola\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 'g12') )
		showMessage( nomeForm, 'g12', 'Il campo \'Cedola\' deve essere diverso da zero', true )		
	//g13 *** decimale
	else if ( ! isCompiled( nomeForm, 'g13' ) )
		showMessage( nomeForm, 'g13', 'Compilare il campo \'Scadenza\'', true )
	else if ( ! isDateFormat( nomeForm, 'g13' ) )
		showMessage( nomeForm, 'g13', 'Data non valida per il campo \'Scadenza\'', true )
		
	//s10 *** decimale
	else if ( ! isCompiled( nomeForm, 's10' ) )
		showMessage( nomeForm, 's10', 'Compilare il campo \'Rendimento annuo lordo\' per il primo scenario', true )
	else if ( contanisChar( nomeForm, 's10', ',' ) )
		showMessage( nomeForm, 's10', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 's10' ) )
		showMessage( nomeForm, 's10', 'Il campo \'Rendimento annuo lordo\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 's10') )
		showMessage( nomeForm, 's10', 'Il campo \'Rendimento annuo lordo\' deve essere diverso da zero', true )		
	//s11 *** decimale
	else if ( ! isCompiled( nomeForm, 's11' ) )
		showMessage( nomeForm, 's11', 'Compilare il campo \'Rendimento annuo lordo\' per il secondo scenario', true )
	else if ( contanisChar( nomeForm, 's11', ',' ) )
		showMessage( nomeForm, 's11', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 's11' ) )
		showMessage( nomeForm, 's11', 'Il campo \'Rendimento annuo lordo\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 's11') )
		showMessage( nomeForm, 's11', 'Il campo \'Rendimento annuo lordo\' deve essere diverso da zero', true )
	//s12 *** decimale
	else if ( ! isCompiled( nomeForm, 's12' ) )
		showMessage( nomeForm, 's12', 'Compilare il campo \'Rendimento annuo lordo\' per il terzo scenario', true )
	else if ( contanisChar( nomeForm, 's12', ',' ) )
		showMessage( nomeForm, 's12', 'Usa il punto per i decimali', true )
	else if (! isDecimal( nomeForm, 's12' ) )
		showMessage( nomeForm, 's12', 'Il campo \'Rendimento annuo lordo\' deve essere numerico', true )
	else if ( isEqualsZero( nomeForm, 's12') )
		showMessage( nomeForm, 's12', 'Il campo \'Rendimento annuo lordo\' deve essere diverso da zero', true )

	else
	{
		var g10 = parseFloat( document.form1.g10.value );
		var g11 = parseFloat( document.form1.g11.value );
		var g12 = parseFloat( document.form1.g12.value );
		var g13 = document.form1.g13.value;

		var s10 = parseFloat( document.form1.s10.value / 100);
		var s11 = parseFloat( document.form1.s11.value / 100);
		var s12 = parseFloat( document.form1.s12.value / 100);
		
//		$("#debug").html("");

		var dhScad = new Date();
		dhScad.setFullYear(Number(g13.substring(6,10)), Number(Number(g13.substring(3,5))-1), Number(g13.substring(0,2)));
		dhScad.setHours(0, 0, 0, 0);

		var dhNow = new Date();
		dhNow.setHours(0, 0, 0, 0);

		if (dhNow > dhScad)
		{
			showMessage( nomeForm, 'g13', 'Inserire una scadenza successiva alla data odierna', true )
			return;
		}

		var tasso = 0.04;
		var cedola = g12;
		var cont = 0;
		var prezzoInv = g11;

		var tassoLordCalc = calcTasso(dhNow, dhScad, tasso, cedola, prezzoInv, cont, Number(-0.04), 0.50);
		document.form1.rendLord.value =	(tassoLordCalc * 100).toPrecision(3);

		var tassoNettoCalc = tassoLordCalc * 0.875;
		document.form1.rendNetto.value = (tassoNettoCalc * 100).toPrecision(3);

		var durationCalc = calcDuration(dhNow, dhScad, cedola, tassoLordCalc, prezzoInv);
		document.form1.durat.value = (durationCalc).toPrecision(3);
/*
		var convexityCalc = calcConvexity(dhNow, dhScad, cedola, tassoLordCalc, prezzoInv);
		document.form1.conv.value = (convexityCalc).toPrecision(3);
*/
		var dhNextYear = new Date(dhScad);
		dhNextYear.setFullYear(dhNow.getFullYear()+1, dhNow.getMonth(), dhNow.getDate());
		
		var newTasso = tassoLordCalc + s10;
		var newPrezzo = calcPrezzo(dhNextYear, dhScad, newTasso, cedola, prezzoInv);
		var pmv = (newPrezzo - prezzoInv) * g10 / 100;
		var gpc = pmv + g10 * (cedola / 100 * 0.875);
		
		document.form1.pz0.value = newPrezzo.toFixed(2);
		document.form1.pmv0.value = pmv.toFixed(2);
		document.form1.gpc0.value = gpc.toFixed(2);

		newTasso = tassoLordCalc + s11;
		newPrezzo = calcPrezzo(dhNextYear, dhScad, newTasso, cedola, prezzoInv);
		pmv = (newPrezzo - prezzoInv) * g10 / 100;
		gpc = pmv + g10 * (cedola / 100 * 0.875);

		document.form1.pz1.value = newPrezzo.toFixed(2);
		document.form1.pmv1.value = pmv.toFixed(2);
		document.form1.gpc1.value = gpc.toFixed(2);

		newTasso = tassoLordCalc + s12;
		newPrezzo = calcPrezzo(dhNextYear, dhScad, newTasso, cedola, prezzoInv);
		pmv = (newPrezzo - prezzoInv) * g10 / 100;
		gpc = pmv + g10 * (cedola / 100 * 0.875);

		document.form1.pz2.value = newPrezzo.toFixed(2);
		document.form1.pmv2.value = pmv.toFixed(2);
		document.form1.gpc2.value = gpc.toFixed(2);
	}
}

/*
function calcConvexity(dhNow, dhScad, cedola, tassoLordo, prezzoInv)
{
	var dhCedola = new Date(dhScad);
	var ggScad = Math.round((dhCedola.getTime() - dhNow.getTime()) / 1000 / 60 / 60 / 24);
	var sommatoria = ((ggScad/365) + Math.pow((ggScad/365),2)) * (100 + cedola) / ( Math.pow((1 + tassoLordo),(ggScad/365)));

	dhCedola.setFullYear(dhCedola.getFullYear()-1, dhCedola.getMonth(), dhCedola.getDate());
  
	while (dhCedola > dhNow)
	{
		ggScad = Math.round((dhCedola.getTime() - dhNow.getTime()) / 1000 / 60 / 60 / 24);
		sommatoria += ((ggScad/365) + Math.pow((ggScad/365),2)) * cedola / ( Math.pow((1 + tassoLordo),(ggScad/365)));
		dhCedola.setFullYear(dhCedola.getFullYear()-1, dhCedola.getMonth(), dhCedola.getDate());
	}

	var convexity = sommatoria / prezzoInv / Math.pow((1 + tassoLordo),2);
	
	return convexity;
}
*/

function calcDuration(dhNow, dhScad, cedola, tassoLordo, prezzoInv)
{
	var dhCedola = new Date(dhScad);
	var ggScad = Math.round((dhCedola.getTime() - dhNow.getTime()) / 1000 / 60 / 60 / 24);
	var sommatoria = (ggScad/365) * (100 + cedola) / ( Math.pow((1 + tassoLordo),(ggScad/365)));

	dhCedola.setFullYear(dhCedola.getFullYear()-1, dhCedola.getMonth(), dhCedola.getDate());
  
	while (dhCedola > dhNow)
	{
		ggScad = Math.round((dhCedola.getTime() - dhNow.getTime()) / 1000 / 60 / 60 / 24);
		sommatoria += (ggScad/365) * cedola / ( Math.pow((1 + tassoLordo),(ggScad/365)));
		dhCedola.setFullYear(dhCedola.getFullYear()-1, dhCedola.getMonth(), dhCedola.getDate());
	}

	var duration = sommatoria / prezzoInv / (1 + tassoLordo);
	
	return duration;
}

function calcTasso(dhNow, dhScad, tasso, cedola, prezzoInv, cont, tassoLess, tassoMore)
{
	// Flusso con rimborso finale
	var dhCedola = new Date(dhScad);
	var ggScad = Math.round((dhCedola.getTime() - dhNow.getTime()) / 1000 / 60 / 60 / 24);
	var prezzoCalc = (100 + cedola) * Math.pow((1+ tasso),((-1 * ggScad)/365));

	dhCedola.setFullYear(dhCedola.getFullYear()-1, dhCedola.getMonth(), dhCedola.getDate());

	var check = 1;

	// Flusso cedole
	while (dhCedola > dhNow)
	{
		ggScad = Math.round((dhCedola.getTime() - dhNow.getTime()) / 1000 / 60 / 60 / 24);
		prezzoCalc += cedola * Math.pow((1+ tasso),( (-1 * ggScad)/365));
		dhCedola.setFullYear(dhCedola.getFullYear()-1, dhCedola.getMonth(), dhCedola.getDate());

		check += 1;
	}

	var rateoMat = cedola * (365 - ggScad) / 365;
	prezzoCalc = prezzoCalc - rateoMat;

	cont += 1;

	// Controlli di fine
	if (cont > 200)
		return tasso;

	if (prezzoCalc == prezzoInv)
		return tasso;

	// Ricorsione
	if (prezzoCalc < prezzoInv)
	{
		tassoMore = tasso;
		tasso = (tasso + tassoLess) / 2;
		tasso = calcTasso(dhNow, dhScad, tasso, cedola, prezzoInv, cont, tassoLess, tassoMore);
	}
	else
	{
		tassoLess = tasso;
		tasso = (tasso + tassoMore) / 2;
		tasso = calcTasso(dhNow, dhScad, tasso, cedola, prezzoInv, cont, tassoLess, tassoMore);
	}

	return tasso;
}

function calcPrezzo(dhNow, dhScad, tasso, cedola)
{
	// Flusso con rimborso finale
	var dhCedola = new Date(dhScad);
	var ggScad = Math.round((dhCedola.getTime() - dhNow.getTime()) / 1000 / 60 / 60 / 24);
	var prezzoCalc = (100 + cedola) * Math.pow((1+ tasso),((-1 * ggScad)/365));
	dhCedola.setFullYear(dhCedola.getFullYear()-1, dhCedola.getMonth(), dhCedola.getDate());

	var check = 1;

	// Flusso cedole
	while (dhCedola > dhNow)
	{
		ggScad = Math.round((dhCedola.getTime() - dhNow.getTime()) / 1000 / 60 / 60 / 24);
		prezzoCalc += cedola * Math.pow((1+ tasso),( (-1 * ggScad)/365));
		dhCedola.setFullYear(dhCedola.getFullYear()-1, dhCedola.getMonth(), dhCedola.getDate());

		check += 1;
	}

	var rateoMat = cedola * (365 - ggScad) / 365;
	prezzoCalc = prezzoCalc - rateoMat;

	return prezzoCalc;
}

function setDate()
{
	var objDh = getById("g13");
	if (objDh.value == "")
	{
		var date = new Date(); 
		date.setFullYear(date.getFullYear()+10, date.getMonth()+1, date.getDate());
		var day = String(date.getDate());
		if (day.length == 1) day = "0" + day;
		var month = String(date.getMonth());
		if (month.length == 1) month = "0" + month;
		var str = "";
		str = str + day + "/" + month + "/" + date.getFullYear();
		objDh.value = str; 
	}
}

