// JavaScript Document
function trim(stringa){
	while (stringa.substring(0,1) == ' '){
		stringa = stringa.substring(1, stringa.length);
	}
	while (stringa.substring(stringa.length-1, stringa.length) == ' '){
		stringa = stringa.substring(0,stringa.length-1);
	}
	return stringa;
}

function controlla(objform){
	
	// CONTROLLO LA RAGIONE SOCIALE
	ragsoc=trim(objform.ragione_sociale.value.toUpperCase());
	if( ragsoc == "" ) {
		alert("Attenzione!\nLa Ragione Sociale è obbligatoria.\n\nSi prega di inserirla prima dell'invio del modulo.");
		return false;
	}

	// CONTROLLO IL COGNOME
	cogn=trim(objform.cognome.value.toUpperCase());
	if( cogn == "" ) {
		alert("Attenzione!\nIl Cognome è obbligatorio.\n\nSi prega di inserirlo prima dell'invio del modulo.");
		return false;
	}
	// CONTROLLO IL NOME
	nome=trim(objform.nome.value.toUpperCase());
	if( nome == "" ) {
		alert("Attenzione!\nIl Nome è obbligatorio.\n\nSi prega di inserirlo prima dell'invio del modulo.");
		return false;
	}
	// CONTROLLO LA DATA DI NASCITA
	datanascita=trim(objform.Giorno.value);
	if( datanascita == "AA" ) {
		alert("Attenzione!\nIl Giorno di nascita è obbligatorio.\n\nSi prega di inserirlo prima dell'invio del modulo.");
		return false;
	}
	datanascita=trim(objform.Mese.value);
	if( datanascita == "AA" ) {
		alert("Attenzione!\nIl Mese di nascita è obbligatorio.\n\nSi prega di inserirlo prima dell'invio del modulo.");
		return false;
	}
	datanascita=trim(objform.Anno.value);
	if( datanascita == "AA" ) {
		alert("Attenzione!\nL'Anno di nascita è obbligatorio.\n\nSi prega di inserirlo prima dell'invio del modulo.");
		return false;
	}
	// CONTROLLO LA CITTA'
	citta=trim(objform.citta.value.toUpperCase());
	if( citta == "" ) {
		alert("Attenzione!\nLa Città è obbligatorio.\n\nSi prega di inserirlo prima dell'invio del modulo.");
		return false;
	}	
	// CONTROLLO IL CAP
	cap=trim(objform.cap.value.toUpperCase());
	if( cap == "" ) {
		alert("Attenzione!\nIl CAP è obbligatorio.\n\nSi prega di inserirlo prima dell'invio del modulo.");
		return false;
	}
	if( isNaN(cap) ) {
		alert("Attenzione!\nIl CAP inserito non è valido.\n\nSi prega di reinserirlo correttamente prima dell'invio del modulo.");
		return false;
	}
	// CONTROLLO L'INDIRIZZO
	indir=trim(objform.indirizzo.value.toUpperCase());
	if( indir == "" ) {
		alert("Attenzione!\nL'Indirizzo è obbligatorio.\n\nSi prega di inserirlo prima dell'invio del modulo.");
		return false;
	}
	// CONTROLLO IL CODICE FISCALE
	var cf, i, s, set1, set2, setpari, setdisp;
        var Giorno;
	var fcf=/^[A-Z0-9]{16}$/;	
	cf=trim(objform.codFisc.value.toUpperCase());
  if( cf == "" ){
		alert("Attenzione!\nIl Codice Fiscale è obbligatorio.\n\nSi prega di inserirlo correttamente prima dell'invio del modulo.");
		return false;
	}
	if( !fcf.test(cf) ) {
		alert("Attenzione!\nIl Codice Fiscale è obbligatorio.\n\nSi prega di inserirlo correttamente prima dell'invio del modulo.");
		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("Attenzione!\nIl Codice Fiscale inserito non è corretto.\n\nSi prega di reinserirlo correttamente prima dell'invio del modulo."); return false;}
	
	if (cf.substr(6,2) != objform.Anno.value.substr(2,2)){alert("Attenzione!\nIl Codice Fiscale inserito non è corretto.\n\nSi prega di reinserirlo correttamente prima dell'invio del modulo."); return false;} 
	
	switch(objform.Mese.value) {

	case "01": Mese = "A";break;
	case "02": Mese = "B";break;
	case "03": Mese = "C";break;
	case "04": Mese = "D";break;
	case "05": Mese = "E";break;
	case "06": Mese = "H";break;
	case "07": Mese = "L";break;
	case "08": Mese = "M";break;
	case "09": Mese = "P";break;
	case "10": Mese = "R";break;
	case "11": Mese = "S";break;
	case "12": Mese = "T";break;
	
	}

	if (cf.substr(8,1) != Mese ){alert("Attenzione!\nIl Codice Fiscale inserito non è corretto.\n\nSi prega di reinserirlo correttamente prima dell'invio del modulo."); return false;}  
        if (objform.sesso.value == "M") {Giorno = objform.Giorno.value;}
        
	else if (objform.sesso.value == "F")
		{
		//controllo perchè non funziona il parseInt su un numero che inizia con 0.
			if (parseInt(objform.Giorno.value) == 0)
			{Giorno = parseInt(objform.Giorno.value.substr(1,1)) + 40;}
			else {Giorno = parseInt(objform.Giorno.value) + 40;}
		}
	if (cf.substr(9,2) != Giorno ) {alert("Attenzione!\nIl Codice Fiscale inserito non è corretto.\n\nSi prega di reinserirlo correttamente prima dell'invio del modulo."); return false;}	
	
	// CONTROLLO LA PARTITA IVA
	pi=objform.pIva.value;
	if( pi == "" ) {
		alert("Attenzione!\nLa Partita IVA è obbligatoria.\n\nSi prega di inserirla prima dell'invio del modulo.");
		return false;
	}
	if( pi.length != 11 ){
		alert("La lunghezza della partita IVA non è\ncorretta: la partita IVA deve essere lunga\nesattamente 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 è valida:\nil codice di controllo non corrisponde.\n");
		return false;
	}
	
	// CONTROLLO L'INDIRIZZO EMAIL
	mail=trim(objform.mail.value);
	if( mail == "" ) {
		alert("Attenzione!\nL'indirizzo Email è obbligatorio.\n\nSi prega di inserirlo prima dell'invio del modulo.");
		return false;
	}
	else {
		Filtro = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
		if (! Filtro.test(mail)){
			alert("Attenzione!\nL'indirizzo Email inserito non è valido.\n\nSi prega di reinserirlo correttamente prima dell'invio del modulo.");
			return false;
		}
	}
	// CONTROLLO IL NOME UTENTE
	user=trim(objform.user.value.toUpperCase());
	if( user == "" ) {
		alert("Attenzione!\nIl Nome Utente è obbligatorio.\n\nSi prega di inserirlo prima dell'invio del modulo.");
		return false;
	}
	// CONTROLLO LA PASSWORD
	pwd=trim(objform.pwd.value.toUpperCase());
	if( pwd == "" ) {
		alert("Attenzione!\nLa Password è obbligatoria.\n\nSi prega di inserirla prima dell'invio del modulo.");
		return false;
	}
	else {
		if ( pwd.length < 4 ) {
			alert("Attenzione!\nLa lunghezza minima della Password è di 4 caratteri.\n\nSi prega di reinserirla.");
			return false;
		}
		else {
			// CONTROLLO IL PASSWORD RETYPE
			pwdRetype=trim(objform.pwdRetype.value.toUpperCase());
			if( pwdRetype == "" ) {
				alert("Attenzione!\nSi prega di inserire nuovamente la Password prima dell'invio del modulo.");
				return false;
			} else {
				if ( pwd != pwdRetype ) {
					alert("Attenzione!\nLe Password inserite non coincidono.\n\nSi prega di reinserirle correttamente prima dell'invio del modulo.");
					objform.pwd.value = "";
					objform.pwdRetype.value = "";
					return false;
				}
			}
		}
	}
	// CONTROLLO L'INFORMATIVA SULLA PRIVACY
	priva=objform.consensoPrivacy.checked;
	if( ! priva ) {
		alert("Attenzione!\nNon è possibile inviare il modulo senza dare il consenso al trattamento dei dati personali.");
		return false;
	}
	return true;
}