function $id(nome) {
	return document.getElementById(nome);
	}

function fattura() { 
	try{
		var RAGSOC = $id("RAGSOC");
		var INDIRIZZO = $id("INDIRIZZO");
		var CITTA = $id("CITTA");
		var PROVINCIA = $id("PROVINCIA");
		var PIVA = $id("PIVA");
		var CF = $id("CF");
		var DATA_SERVIZIO = $id("DATA_SERVIZIO");
		var SERVIZIO = $id("SERVIZIO");
		var IMPORTO = $id("IMPORTO");
		var EMAIL = $id("EMAIL");
		var PRIVACY = $id("PRIVACY");
		RAGSOC.className = "";
		INDIRIZZO.className = "";
		CITTA.className = "";
		PROVINCIA.className = "";
		PIVA.className = "";
		CF.className = "";
		DATA_SERVIZIO.className = "";
		SERVIZIO.className = "";
		IMPORTO.className = "";
		EMAIL.className = "";
		PRIVACY.className = "";
	
		if (RAGSOC.value == "") {
			   RAGSOC.className = "require";
			   RAGSOC.focus();
			   return false;
			}
	
		 if (INDIRIZZO.value == "") {
			   INDIRIZZO.className = "require";
			   INDIRIZZO.focus();
			   return false;
			}
	
		 if (CITTA.value == "") {
			   CITTA.className = "require";
			   CITTA.focus();
			   return false;
			}
	
		 if (PROVINCIA.value == "") {
			   PROVINCIA.className = "require";
			   PROVINCIA.focus();
			   return false;
			}
	
		//Effettua il controllo sul campo piva 
		if(!controllaPIVA(PIVA.value))
		{
			PIVA.focus(); 
			return false;
		}
	
		//Effettua il secondo sul codice fiscale 
		if (!controllaCF(CF.value)) {
			CF.focus(); 
			return false;
		}
	
		if (DATA_SERVIZIO.value == "") {
			DATA_SERVIZIO.className = "require";
			DATA_SERVIZIO.focus();
			return false;
		}
	
		 if (SERVIZIO.value == "") {
		   SERVIZIO.className = "require";
		   SERVIZIO.focus();
		   return false;
		 }	 
	
		if (isNaN(parseInt(IMPORTO.value)) || parseInt(IMPORTO.value) <= 0) {
			   alert("Il campo IMPORTO DEL SERVIZIO deve contenere solo valori numerici maggiori di 0.");
				IMPORTO.className="require";
				IMPORTO.focus();
			   return false;
			}
	
		if (EMAIL.value == "") {
		   EMAIL.className="require";
		   EMAIL.focus();
		   return false;
		}
	
		//Effettua il controllo sull'email
		if (!ControllaMail(EMAIL.value)) {
			EMAIL.focus();
			return false;
		}
	
		if (!PRIVACY.checked) {
alert("Devi accettare la legge sulla privacy, seleziona la casella ACCONSENTO e clicca sul pulsante INVIA RICHIESTA");
		   PRIVACY.className="require";
		   PRIVACY.focus();
		   return false;
		}


		if (PIVA.value == "" && CF.value == "") {
			alert("E' OBBLIGATORIO inserire nell'apposito campo o il numero di PARTITA IVA (se chi richiede e' un soggetto iva) o il CODICE FISCALE (se chi richiede e' una persona fisica)");
			PIVA.focus();
			return false;
		}
		return true;
	}
	catch(ex) {
		alert(ex);
		return false;
		}
}



 function controllaPIVA(pi) 
{ 
	if( pi == '' ) 
		return true; 
	if( pi.length != 11 ) {
		alert("La lunghezza della partita IVA non e'\n" + 
			"corretta: la partita IVA dovrebbe essere lunga\n" + 
			"esattamente 11 caratteri.\n");
		return false;
	}
	validi = "0123456789"; 
	for( i = 0; i < 11; i++ )
	{ 
		if( validi.indexOf( pi.charAt(i) ) == -1 )  {
			alert("La partita IVA contiene un carattere non valido '" + 
				pi.charAt(i) + "'.\nI caratteri validi sono le cifre.\n"); 
			return false;
		}
	} 
	s = 0; 
	for( i = 0; i <= 9; i += 2 ) 
		s += pi.charCodeAt(i) - '0'.charCodeAt(0); 
	for( i = 1; i <= 9; i += 2 )
	{ 
		c = 2*( pi.charCodeAt(i) - '0'.charCodeAt(0) ); 
		if( c > 9 ) 
			c = c - 9; 
		s += c; 
	} 
	if( ( 10 - s%10 )%10 != pi.charCodeAt(10) - '0'.charCodeAt(0) ) {
		alert("La partita IVA non e' valida:\n" + 
			"il codice di controllo non corrisponde.\n"); 
		return false;
	}

	return true; 
} 


function controllaCF(cf)
{
	var validi, i, s, set1, set2, setpari, setdisp;
	if( cf == '' ) return true;
	cf = cf.toUpperCase();
	if( cf.length != 16 ) {
		alert("La lunghezza del codice fiscale non e'\n"
		+"corretta: il codice fiscale dovrebbe essere lungo\n"
		+"esattamente 16 caratteri.\n");
		return false;
	}
	validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
	for( i = 0; i < 16; i++ ){
		if( validi.indexOf( cf.charAt(i) ) == -1 ) {
			alert("Il codice fiscale contiene un carattere non valido '" +
			cf.charAt(i) +
			"'.\nI caratteri validi sono le lettere e le cifre.\n");
			return false;
		}
	}
	set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
	setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
	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) ) {
		alert("Controlla il campo del codice fiscale:\n"+
		"il codice di controllo non corrisponde.\n");
		return false;
	}
	return true;
}


function ControllaMail(EmailAddr)
{
	Filtro = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
	if (Filtro.test(EmailAddr))
		return true;
	else
		{
			alert("Indirizzo Email non valido. Controllalo, per favore.");
			return false;
		}
}

