function scaglionianf (reddi,ass,sca1,ali1,sca2,ali2,sca3,ali3,sca4,ali4,sca5,ali5)
	{
	i=4;
	while (reddi>arguments[i]&&i<arguments.length)
		{
		ass=minus(ass,(arguments[i]-arguments[i-2])*arguments[i-1]);
		i=i+2;
		}
	ass=minus(ass,(Math.ceil((reddi)/100)*100-arguments[i-2])*arguments[i-1]);
	if (tondo)  ass=Math.round(ass); 
	return(ass);
	}

function tab11 (redtab,comptab)
	{
	lim=new Array	(0,12437.26,15390,18342.16,21293.17,24246.49,27198.64,30151.95,33102.98,36055.15,39006.73,41960.63,44912.77,47865.53,50817.68,53771.01,56724.33);

	tab=new Array  	(130.66,250.48,358.94,492.18,619.75,114.65,220.53,339.83,481.34,600.64,92.45,190.57,312.97,473.07,584.11,65.59,158.04,283.02,453.97,565.00,43.90,111.55,241.7,407.48,507.68,25.82,81.6,217.43,390.96,488.57,15.49,57.33,176.63,364.10,466.88,15.49,38.73,135.83,339.31,439.50,12.91,25.82,102.77,317.62,426.08,12.91,25.82,91.93,225.18,398.70,12.91,23.24,91.93,154.42,292.83,0,23.24,78.5,154.42,218.98,0,23.24,78.5,132.21,189.02,0,0,78.5,132.21,189.02,0,0,0,132.21,189.02,0,0,0,0,189.02);

	ass=0; i=0;
	compagg=minus(comptab,7);
	if (compagg>0) comptab=7;
	while(i<lim.length&&ass==0)
		{
		if(redtab>=lim[i]&&redtab<lim[i+1]) ass=tab[i*5+comptab-3]*(1+compagg*0.10)+compagg*53.71;
		i++;
		}
	
	return (ass);
	}

function tab12 (redtab,comptab)
	{
	lim=new Array	(0,14405.36,17358.12,20309.11,23261.86,26215.19,29167.35,32119.49,35071.67,38023.25,40977.15,43929.88,46880.89,49834.22,52786.95,55740.26,58692.42);

	tab=new Array  	(99.68,184.89,412.13,554.16,724.59,891.92,79.53,164.75,372.37,531.43,715.81,869.20,54.23,136.34,332.60,491.67,701.86,843.89,23.24,102.26,289.73,454.48,676.04,821.17,20.66,73.85,230.34,403.35,616.65,744.21,20.66,48.55,190.57,369.27,593.93,721.49,0,34.09,159.07,315.56,559.84,693.09,0,34.09,136.34,261.33,528.34,659.00,0,28.41,119.30,221.56,499.93,639.37,0,28.41,119.30,204.52,378.05,605.29,0,28.41,102.26,204.52,284.05,465.84,0,0,102.26,176.11,284.05,369.27,0,0,102.26,176.11,244.28,369.27,0,0,0,176.11,244.28,318.14,0,0,0,0,244.28,318.14,0,0,0,0,0,318.14);

	ass=0; i=0;
	compagg=minus(comptab,7);
	if (compagg>0) comptab=7;
	while(i<lim.length&&ass==0)
		{
		if(redtab>=lim[i]&&redtab<lim[i+1]) ass=tab[i*6+comptab-2]*(1+compagg*0.10)+compagg*53.71;
		i++;
		}
	
	return (ass);
	}


function tab14 (redtab,comptab,rivtab,agg)
	{
	lim=new Array	(0,22278.96,25230.55,28182.70,31135.44,34087.62,37040.34,39991.37,42994.69,45895.68,48849,51801.16,54754.48,57706.06,60659.38,63612.70,66565.46);

 	tab=new Array
	(139.44,270.11,388.38,529.88,668.81,122.40,238.60,368.75,521.62,648.67,99.68,204.52,337.25,510.26,629.04,73.85,170.43,306.26,490.12,608.90,48.55,119.30,260.81,438.99,546.41,28.41,88.31,234.99,421.95,526.79,15.49,62.49,189.54,393.54,500.96,15.49,39.77,147.19,368.23,475.66,12.91,28.41,113.10,342.41,458.61,12.91,28.41,98.64,243.25,430.21,12.91,23.24,98.64,166.30,313.49,0,23.24,81.60,166.30,237.05,0,23.24,81.60,137.89,237.05,0,0,81.60,137.89,197.29,0,0,0,137.89,197.29,0,0,0,0,197.29);
	ass=0; i=0;
	compagg=minus(comptab,7);
	if (compagg>0) comptab=7;
	while(i<lim.length&&ass==0)
		{
		if(redtab>=lim[i]&&redtab<lim[i+1]) ass=tab[i*5+comptab-3]*rivtab*(1+compagg*0.10)+compagg*agg;
		i++;
		}
	
	return (ass);
	}

function tab15 (redtab,comptab,rivtab,agg)
	{
	lim=new Array	(0,24246.49,27198.64,30151.95,33102.98,36055.15,39006.73,41960.63,44912.77,47866.09,50817.68,53769.86,56722.60,59673.01,62625.77,65576.19,68528.35);

	tab=new Array
	(106.91,198.84,445.70,600.12,783.98,965.26,86.25,178.18,403.87,573.27,772.10,941.50,56.29,145.64,359.45,531.43,760.22,911.55,23.76,110.01,315.04,493.22,730.79,887.79,20.66,77.47,249.45,433.82,665.20,804.64,20.66,53.71,208.13,398.19,641.44,780.88,0,35.64,172.50,341.38,605.80,748.35,0,35.64,145.64,281.99,570.17,712.71,0,29.95,127.56,237.57,540.73,692.05,0,29.95,127.56,220.01,410.07,656.42,0,29.95,106.91,220.01,305.74,502.00,0,0,106.91,184.38,305.74,398.19,0,0,106.91,184.38,255.65,398.19,0,0,0,184.38,255.65,332.60,0,0,0,0,255.65,332.60,0,0,0,0,0,332.60);

	ass=0; i=0;
	compagg=minus(comptab,7);
	if (compagg>0) comptab=7;
	while(i<lim.length&&ass==0)
		{
		if(redtab>=lim[i]&&redtab<lim[i+1]) ass=tab[i*6+comptab-2]*rivtab*(1+compagg*0.10)+compagg*agg;
		i++;
		}
	return (ass);
	}

function tab17 (redtab,comptab,rivtab,agg)
	{
	lim=new Array
	(0,22278.96,25230.55,28182.70,31135.44,34087.62,37040.34,39991.37,42994.69,45895.68,48849.00,51801.15);
	
	tab=new Array
	(107.94,170.43,289.22,408.00,526.79,96.58,150.81,274.76,402.32,512.33,73.85,130.66,255.13,393.54,498.38,54.23,107.94,234.99,379.60,483.92,34.09,88.31,221.04,373.91,472.56,15.49,68.17,200.90,359.45,458.61,0,48.55,166.82,339.83,438.47,0,28.41,132.73,319.69,415.75,0,0,98.64,300.06,404.39,0,0,0,223.11,381.66,0,0,0,0,293.86);

	ass=0; i=0;
	compagg=minus(comptab,7);
	if (compagg>0) comptab=7;
	while(i<lim.length&&ass==0)
		{
		if(redtab>=lim[i]&&redtab<lim[i+1]) ass=tab[i*5+comptab-3]*rivtab*(1+compagg*0.10)+compagg*agg;
		i++;
		}
	return (ass);
	}

function tab18 (redtab,comptab,rivtab,agg)
	{
	lim=new Array
	(0,24246.49,27198.64,30151.95,33102.98,36055.15,39006.73,41960.63,44912.77,47866.09,50817.68,53769.86);

	tab=new Array
	(65.59,127.56,252.03,375.98,499.93,624.40,50.61,113.10,230.86,361.00,494.25,609.42,35.64,91.93,210.20,340.35,485.47,594.44,15.49,71.27,189.54,319.69,470.49,582.56,0,50.61,165.78,304.71,464.29,567.59,0,29.95,145.12,284.05,449.83,553.13,0,0,123.95,248.42,428.66,531.95,0,0,103.29,212.78,408.00,511.29,0,0,0,177.14,387.34,496.32,0,0,0,0,307.29,475.66,0,0,0,0,0,380.63);
	
	ass=0; i=0;
	compagg=minus(comptab,7);
	if (compagg>0) comptab=7;
	while(i<lim.length&&ass==0)
		{
		if(redtab>=lim[i]&&redtab<lim[i+1]) ass=tab[i*6+comptab-2]*rivtab*(1+compagg*0.10)+compagg*agg;
		i++;
		}
	return (ass);
	}

function tab20A (redtab,comptab,rivtab)
	{
	lim=new Array
	(0,21655.85,24606.27,27559.59,30511.75,33464.50,36416.65,39368.82,42321.55,45272.57,48225.89,51178.04);
	tab=new Array
	(98.13,142.03,185.92,229.82,273.72,87.80,123.95,173.01,222.08,260.81,67.14,105.87,154.94,216.91,247.90,49.06,87.80,136.86,204.00,234.99,30.99,67.14,123.95,198.84,222.08,12.91,49.06,105.87,185.92,211.75,0,30.99,74.89,167.85,191.09,0,12.91,43.90,149.77,173.01,0,0,12.91,129.11,160.10,0,0,0,61.97,142.03,0,0,0,0,61.97);

	ass=0; i=0;
	if (comptab>7) comptab=7;
	while(i<lim.length&&ass==0)
		{
		if(redtab>=lim[i]&&redtab<lim[i+1]) ass=tab[i*5+comptab-3]*rivtab;
		i++;
		}
	
	return (ass);
	}


function tab20B (redtab,comptab,rivtab)
	{
	lim=new Array
	(0,23622.79,26576.11,29528.27,32479.86,35431.44,38384.18,41336.93,44289.68,47243.00,50195.14,53146.16);
	tab=new Array
	(56.81,98.13,142.03,185.92,229.82,273.72,43.90,87.80,123.95,173.01,222.08,260.81,30.99,67.14,105.87,154.94,216.91,247.90,12.91,49.06,87.80,136.86,204.00,234.99,0,30.99,67.14,123.95,198.84,222.08,0,12.91,49.06,105.87,185.92,211.75,0,0,30.99,74.89,167.85,191.09,0,0,12.91,43.90,149.77,173.01,0,0,0,12.91,129.11,160.10,0,0,0,0,61.97,142.03,0,0,0,0,0,61.97);

	ass=0; i=0;
	if (comptab>7) comptab=7;
	while(i<lim.length&&ass==0)
		{
		if(redtab>=lim[i]&&redtab<lim[i+1]) ass=tab[i*6+comptab-2]*rivtab;
		i++;
		}
	
	return (ass);
	}

function tab21A (redtab,comptab,rivtab)
	{
	lim=new Array
	(0,11813.56,14766.31,17719.05,20670.64,23622.79,26576.11,29528.27,32479.86,35431.44,38384.18,41336.93);

	tab=new Array
	(46.48,82.63,118.79,154.94,191.09,227.24,36.15,72.30,103.29,144.61,185.92,216.91,25.82,56.81,87.80,129.11,180.76,206.58,10.33,41.32,72.30,113.62,170.43,196.25,0,25.82,56.81,103.29,165.27,185.92,0,10.33,41.32,87.80,154.94,175.60,0,0,25.82,61.97,139.44,160.10,0,0,10.33,36.15,123.95,144.61,0,0,0,10.33,108.46,134.28,0,0,0,0,51.65,118.79,0,0,0,0,0,51.65);

	ass=0; i=0;
	if (comptab>7) comptab=7;
	while(i<lim.length&&ass==0)
		{
		if(redtab>=lim[i]&&redtab<lim[i+1]) ass=tab[i*6+comptab-2]*rivtab;
		i++;
		}
	
	return (ass);
	}

function tab21B (redtab,comptab,rivtab)
	{
	lim=new Array
	(0,13781.67,16735.00,19986.00,22638.16,25592.06,28544.21,31496.96,34447.98,37400.71,40353.45,43306.20);
	tab=new Array
	(46.48,82.63,118.79,154.94,191.09,227.24,36.15,72.30,103.29,144.61,185.92,216.91,25.82,56.81,87.80,129.11,180.76,206.58,10.33,41.32,72.30,113.62,170.43,196.25,0,25.82,56.81,103.29,165.27,185.92,0,10.33,41.32,87.80,154.94,175.60,0,0,25.82,61.97,139.44,160.10,0,0,10.33,36.15,123.95,144.61,0,0,0,10.33,108.46,134.28,0,0,0,0,51.65,118.79,0,0,0,0,0,51.65);

	ass=0; i=0;
	if (comptab>7) comptab=7;
	while(i<lim.length&&ass==0)
		{
		if(redtab>=lim[i]&&redtab<lim[i+1]) ass=tab[i*6+comptab-2]*rivtab;
		i++;
		}
	
	return (ass);
	}

function tab21C (redtab,comptab,rivtab)
	{
	lim=new Array
	(0,21655.85,24606.27,27559.59,30511.75,33464.50,36416.65,39368.82,42321.55,45272.57,48225.89,51178.04);
	tab=new Array
	(46.48,82.63,118.79,154.94,191.09,227.24,36.15,72.30,103.29,144.61,185.92,216.91,25.82,56.81,87.80,129.11,180.76,206.58,10.33,41.32,72.30,113.62,170.43,196.25,0,25.82,56.81,103.29,165.27,185.92,0,10.33,41.32,87.80,154.94,175.60,0,0,25.82,61.97,139.44,160.10,0,0,10.33,36.15,123.95,144.61,0,0,0,10.33,108.46,134.28,0,0,0,0,51.65,118.79,0,0,0,0,0,51.65);

	ass=0; i=0;
	if (comptab>7) comptab=7;
	while(i<lim.length&&ass==0)
		{
		if(redtab>=lim[i]&&redtab<lim[i+1]) ass=tab[i*6+comptab-2]*rivtab;
		i++;
		}
	
	return (ass);
	}

function tab21D (redtab,comptab,rivtab)
	{
	lim=new Array
	(0,23622.79,26576.11,29528.27,32479.86,35431.44,38384.18,41336.93,44289.68,47243.00,50195.14,53146.16);
	tab=new Array
	(46.48,82.63,118.79,154.94,191.09,227.24,36.15,72.30,103.29,144.61,185.92,216.91,25.82,56.81,87.80,129.11,180.76,206.58,10.33,41.32,72.30,113.62,170.43,196.25,0,25.82,56.81,103.29,165.27,185.92,0,10.33,41.32,87.80,154.94,175.60,0,0,25.82,61.97,139.44,160.10,0,0,10.33,36.15,123.95,144.61,0,0,0,10.33,108.46,134.28,0,0,0,0,51.65,118.79,0,0,0,0,0,51.65);

	ass=0; i=0;
	if (comptab>7) comptab=7;
	while(i<lim.length&&ass==0)
		{
		if(redtab>=lim[i]&&redtab<lim[i+1]) ass=tab[i*6+comptab-2]*rivtab;
		i++;
		}
	
	return (ass);
	}

function anf06(red,fig18,figinab,fsn)
{
	if (monoparent) gen=1; else gen=2;
	comp=gen+fig18+figinab+fsn;
	if (monoparent)
		if (fig18==0)
			if (inab)
				if (figinab>0) anf=tab18(red,comp,1,53.71);
				else if (fsn>0&&geninab) anf=tab21D(red,comp,1); 
					else if (fsn>0) anf=tab20B(red,comp,1); else anf=0;
			else if (fsn>0)anf=tab21B(red,comp,1); else anf=0;
		else if (inab) anf=tab15(red,comp,1,53.71);
			else anf=tab12(red,comp);
	else 
		if (fig18==0)
			if (inab)
				if(figinab>0) anf=tab17(red,comp,1,53.71);
				else if (fsn==0||geninab) anf=tab21C(red,comp,1); else anf=tab20A(red,comp,1);
			else anf=tab21A(red,comp,1);
		else if (inab) anf=tab14(red,comp,1,53.71);
			else anf=tab11(red,comp);
	if (fig18+figinab==1) anf=minus(minus(round2(anf),minus(fsn,minus(fsn,1))*10.33),minus(fsn,1)*53.71);
	else if (fig18+figinab>=2) anf=minus(round2(anf),fsn*53.71);
		
	return(anf);
}	

function anf07(red,fig18,fig21,fig26,figinab,fsn)
	{
	rire=1.017*1.032*1.007; //inserire qui aggiornamento annuale moltiplicando ancora per il nuovo tasso di inflazione
	red=round2(red/rire);
	if (fig18+fig21+fig26+figinab>3) fig18=fig18+fig21;
	comp=fig18+figinab+fsn;
	if (inab||fig18==0)
		{
		if (monoparent)
			if(inab)
				if(fig18>0||(fig18==0&&figinab>0))
					switch(comp)
					{
						case 0: 	anf=0; break;
			
						case 1: 	{
								if (red<=22300) anf=2020/12;
								else anf=scaglionianf(red,2020,22300,0.0512)/12;
								break;
								}
						case 2: 	{
								if (red<=22300) anf=3920/12;
								else anf=scaglionianf(red,3920,22300,0.0865)/12;
								break;
								}
						case 3:	{
								if (red<=24300) anf=6280/12;
								else anf=scaglionianf(red,6280,24300,0.1146)/12;
								break;
								}
						case 4:	{
								if (red<=28000) anf=8450/12;
								else anf=scaglionianf(red,8450,28000,0.1533)/12;
								break;
								}
						case 5:	{
								if (red<=30000) anf=11040/12;
								else anf=scaglionianf(red,11040,30000,0.168)/12;
								break;
								}
						case 6:	{
								if (red<=33000) anf=13590/12;
								else anf=scaglionianf(red,13590,33000,0.2046)/12;
								break;
								}
						default:	{
								figagg=minus(comp,6); 
								anf=anf07(round2(red*rire),6,0,0,0,0); 
								if (anf>0) anf=anf*(1+figagg*0.15)+figagg*62.5;
								}
					}
						 
				else if (fsn>0&&geninab) anf=tab21D(red,comp+1,1.10); 
					else if (fsn>0) anf=tab20B(red,comp+1,1.10); else anf=0;
			else if (fsn>0)anf=tab21B(red,comp+1,1); else anf=0;
		else 	
			
			if(inab)
				if(fig18>0||(fig18==0&&figinab>0)) 

				switch(comp)
					{
						case 0: 	anf=0; break;
			
						case 1: 	{
								if (red<=22300) anf=2020/12;
								else anf=scaglionianf(red,2020,22300,0.0512)/12;
								break;
								}
						case 2: 	{
								if (red<=22300) anf=3920/12;
								else anf=scaglionianf(red,3920,22300,0.0865)/12;
								break;
								}
						case 3:	{
								if (red<=22300) anf=5640/12;
								else anf=scaglionianf(red,5640,22300,0.0994)/12;
								break;
								}
						case 4:	{
								if (red<=28000) anf=7690/12;
								else anf=scaglionianf(red,7690,28000,0.1439)/12;
								break;
								}
						case 5:	{
								if (red<=30000) anf=9700/12;
								else anf=scaglionianf(red,9700,30000,0.1722)/12;
								break;
								}
						default:	{
								figagg=minus(comp,5); 
								anf=anf07(round2(red*rire),5,0,0,0,0); 
								if (anf>0) anf=anf*(1+figagg*0.15)+figagg*62.5;
								}

					}

				else if (fsn==0||geninab) anf=tab21C(red,comp+2,1.10); else anf=tab20A(red,comp+2,1.10);
			else anf=tab21A(red,comp+2,1);
			
		if (fig18+figinab==1) anf=minus(minus(round2(anf),minus(fsn,minus(fsn,1))*11),minus(fsn,1)*60.83);
		else if (fig18+figinab>=2) anf=minus(round2(anf),fsn*60.83);
		}
	else
		
		{
		switch(comp)
			{
			case 0: 	anf=0; break;
			
			case 1: 	{
					if (red<=12500) anf=1650/12;
					else anf=scaglionianf(red,1650,12500,0.093,24000,0.005,40000,0.023)/12;
					break;
					}
			case 2: 	{
					if (red<=12500) anf=3100/12;
					else anf=scaglionianf(red,3100,12500,0.13,29000,0.009,40000,0.031)/12;
					break;
					}
			case 3:	{
					if (red<=12500) anf=4500/12;
					else anf=scaglionianf(red,4500,12500,0.115,34700,0.014,40000,0.048)/12;
					if (monoparent)
						{
						if (red<=14500) anfagg=1000/12;
						else anfagg=scaglionianf(red,1000,14500,0.086)/12;
						anf=anf+anfagg;
						}
					break;
					}
			case 4:	{
					if (red <=12500) anf=6000/12;
					else anf=scaglionianf(red,6000,12500,0.05,21300,0.105,36100,0.196,45000,0.062)/12;
					if (monoparent)
						{
						if (red<=14500) anfagg=1000/12;
						else anfagg=scaglionianf(red,1000,14500,0.015,53000,0.014)/12;
						anf=anf+anfagg;
						}
					break;
					}
			case 5:	{
					if (red <=12500) anf=7500/12;
					else anf=scaglionianf(red,7500,12500,0.075,21300,0.112,36100,0.016,39000,0.25,45000,0.088)/12;
					if (monoparent)
						{
						if (red<=21300) anfagg=1550/12;
						else anfagg=scaglionianf(red,1550,21300,0.016,56000,0.025)/12;
						anf=anf+anfagg;
						}
					break;
					}
			default:	{
					figagg=minus(comp,5); 
					anf=anf07(round2(red*rire),5,0,0,0,0); 
					if (anf>0) anf=anf*(1+figagg*0.15)+figagg*55;
					}
			}
		if (fig18+figinab==1) anf=minus(minus(round2(anf),minus(fsn,minus(fsn,1))*10.42),minus(fsn,1)*54.17);
		else if (fig18+figinab>=2) anf=minus(round2(anf),fsn*54.17);
		}
		return(anf);
	}

function calcola()
{
document.forms[0].diff.style.color="#000099"
annuale=document.forms[0].annuale[1].checked;
tondo=document.forms[0].tondo[0].checked;
figmin18=Math.round(document.forms[0].figmin18.value);
figmin21=Math.round(document.forms[0].figmin21.value);
figmin26=Math.round(document.forms[0].figmin26.value);
figmaginab=Math.round(document.forms[0].figmaginab.value);
frasonip=Math.round(document.forms[0].frasonip.value);

monoparent=document.forms[0].monoparent[1].checked;
if (figmaginab>0) document.forms[0].inab[0].checked=true;
inab=document.forms[0].inab[0].checked;

red=parse(document.forms[0].red.value);
if (inab&&figmin18==0&&figmaginab==0&&frasonip>0) geninab=confirm('Premere "OK" se il componente inabile\nè il richiedente o il coniuge\nAltrimenti premere "Annulla"');
if (red&&isNumor0(figmin18)&&isNumor0(figmin21)&&isNumor0(figmin26)) 
	{
	if (tondo) red=Math.round(red);
	
	document.forms[0].red.value=punt(virg(red+""));

	assegno1=eval(round2(anf06(red,figmin18,figmaginab,frasonip)));
	assegno=eval(round2(anf07(red,figmin18,figmin21,figmin26,figmaginab,frasonip))); 
	if (inab&&figmin18>0)
			{
			inab=false;
			assegno2=eval(round2(anf07(red,figmin18,figmin21,figmin26,figmaginab,frasonip))); 
			if (assegno2>assegno) assegno=assegno2;
			}

	if (annuale) 
			{
			assegno=round2(assegno*12);
			assegno1=round2(assegno1*12);
			}
	if (tondo) 
			{
			assegno=Math.round(assegno);
			assegno1=Math.round(assegno1);
			}
	
	diff=round2(assegno-assegno1);
	
	if (diff==0) document.forms[0].diff.value=0;
		else if (diff>0)
			document.forms[0].diff.value="+"+punt(virg(diff));
			else
				{
				document.forms[0].diff.style.color="red"; 
				document.forms[0].diff.value="-"+punt(virg(Math.abs(diff)+""));
				}
	document.forms[0].anf06.value=punt(virg(assegno1+""));
	document.forms[0].anf07.value=punt(virg(assegno+""));

		
	}
else 
	{
	alert("È presente un valore non numerico o scorretto\noppure c'è un errore nei separatori delle migliaia\nPremere OK per ricominciare");
	document.forms[0].reset();
	}
}


