﻿// ===================================
// BOF: CheckDatiFiscali.js
// ===================================

// File JScript

// ===========================================================================
function CheckCF(obj)
{
	if (!IsCodiceFiscale (obj))
	{
		alert("Attenzione: il Codice Fiscale potrebbe non essere corretto !");
		return true;
	}
}
// ===========================================================================

// ---------------------------------------------------------------------------
// Verifica Formato e Validità del Codice Fiscale
// ---------------------------------------------------------------------------
function IsCodiceFiscale(obj) 
{ 
	var cf = (obj.value).toUpperCase();
	var cfReg = /^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$/;

	// if (cf.length = 11) {return IsPartitaIVA(obj);}	// CF = PVIA

	if (obj.value != '')
	{
		if (!cfReg.test(cf)) return false;		// Verifica Formato

		var set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
		var set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ"; 

		var setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
		var setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX"; 

		var s = 0; 
		for( i = 1; i <= 13; i += 2 ) 
			s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) ))); 
		for( i = 0; i <= 14; i += 2 ) 
			s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));

		if ( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) ) return false;
	}

	return true; 
}
// ===========================================================================


// ---------------------------------------------------------------------------
// Verifica Formato e Validità del Codice Fiscale
// ---------------------------------------------------------------------------
function CheckPIva(obj)
{
	if (!IsPartitaIVA (obj))
	{
		alert("Attenzione: la Partita IVA potrebbe non essere corretta !");
		return true;
	}
}
// ===========================================================================

// ---------------------------------------------------------------
// Verifica Formato e Validità della Partita IVA
// ---------------------------------------------------------------
function IsPartitaIVA(obj)
{
	var i = new RegExp("[0-9]{11}");
	var n_Val, n_Som1=0, n_Som2=0, lcv;

	if (obj.value != '')
	{
		if (!i.test(obj.value)) return false;	// Verifica Formato

		for (lcv=0; lcv<9; lcv+=2)
		{
			n_Val=parseInt((obj.value).charAt(lcv));
			n_Som1+=n_Val;
			n_Val=parseInt((obj.value).charAt(lcv+1));
			n_Som1+=Math.floor(n_Val/5) + (n_Val<<1) % 10;
		}

		n_Som2 = 10 - (n_Som1 % 10);
		n_Val=parseInt((obj.value).charAt(10));

		if (n_Som2 == 10) n_Som2 = 0;
		if (n_Som2 == n_Val) return true;

		return false;
	}

	return true;
}
// ===============================================================


// ===================================
// EOF: CheckDatiFiscali.js
// ===================================
