
function emailCheck (emailStr) {

/* Questa variabile decide se verificare se la terminazione dell'indirizzo email finisce con TLD di due lettere o con un TLD da 3 o 4 lettere. 1 significa controlla, 0 significa non controlla. */

var checkTLD=1;

/* Lista dei TLD conosciuti. */

var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;

/* Qui controlla che ci sia il @. */

var emailPat=/^(.+)@(.+)$/;

/* Qui escludo i caratteri speciali come ( ) < > @ , ; : \ " [ ] */

var specialChars="\\(\\)><@,;:\\\\\\\"\\[\\]";

/* Qui indica quali sono i caratteri permessi in un user o domainname.*/

var validChars="\[^\\s" + specialChars + "\]";

/* Qui controlla se l'username è tra " . */

var quotedUser="(\"[^\"]*\")";

/* Qui controlla se il nome di dominio è un indirizzo ip. */

var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;

/* Serie di caratteri non speciali (atom) */

var atom=validChars + '+';

/* Qui rappresenta una parola nell'username. */

var word="(" + atom + "|" + quotedUser + ")";

// Qui descrive la struttura dell'username

var userPat=new RegExp("^" + word + "(\\." + word + ")*$");

/* Qui descrive la struttura di un normale dominio simbolico, in contrapposizione a ipDomainPat. */

var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

/* E ora cominciamo a vedere se l'indirizzo e valido. */

/* Iniziamo con il coarse pattern per spezzare utente@dominio in diverse parti piu' facili da analizzare. */

var matchArray=emailStr.match(emailPat);

if (matchArray==null) {

/* Troppi o troppo pochi @. In sostanza questo indirizzo non rispetta la sintassi generica. */

alert("Indirizzo email non valido (controllare @ e .)");
return false;
}
var user=matchArray[1];
var domain=matchArray[2];

// Iniziamo col controllare se i caratteri sono tutti ASCII.

for (i=0; i<user.length; i++) {
if (user.charCodeAt(i)>127) {
alert("L'username dell'indirizzo email contiene caratteri non validi");
return false;
   }
}
for (i=0; i<domain.length; i++) {
if (domain.charCodeAt(i)>127) {
alert("Il nome dominio dell'indirizzo email contiene caratteri non validi");
return false;
   }
}

// Vediamo se "user" e' valido

if (user.match(userPat)==null) {

// user non e' valido

alert("L'username dell'indirizzo email non e' valido");
return false;
}

/* se l'indirizzo email va a un indirizzo ip, assicuriamoci che l'ip sia valido. */

var IPArray=domain.match(ipDomainPat);
if (IPArray!=null) {

// questo e' un indirizzo ip

for (var i=1;i<=4;i++) {
if (IPArray[i]>255) {
alert("L'indirizzo IP di destinazione non e' valido");
return false;
   }
}
return true;
}

// il dominio e' un nome simbolico. controlliamo se e' valido.
 
var atomPat=new RegExp("^" + atom + "$");
var domArr=domain.split(".");
var len=domArr.length;
for (i=0;i<len;i++) {
if (domArr[i].search(atomPat)==-1) {
alert("Il nome del dominio dell'indirizzo email non e' valido");
return false;
   }
}

/* il dominio sembra valido, ma assicuriamoci che finisca con un dominio toplevel o con 2 lettere che rappresentano un paese, e che ci sia un hostname che precede il dominio o paese. */

if (checkTLD && domArr[domArr.length-1].length!=2 &&
domArr[domArr.length-1].search(knownDomsPat)==-1) {
alert("L'indirizzo email deve terminare con un dominio conosciuto o due lettere");
return false;
}

// assicuriamoci che ci sia un hostname.

if (len<2) {
alert("L'indirizzo email non contiene un hostname");
return false;
}

// If we've gotten this far, everything's valid!
return true;
}

//  End -->

function checkForm()
{
    
    var nome=document.getElementById('nome').value;
    var cognome=document.getElementById('cogn').value;
    
    var prov=document.getElementById('prov').value;
    var cittaresidenza=document.getElementById('cittaresidenza').value;
    var cap=document.getElementById('cap').value;
    var email=document.getElementById('Email').value;
    var giorno_assunzione=document.getElementById('giorno_assunzione').value;
    var anno_assunzione=document.getElementById('anno_assunzione').value;
    var mese_assunzione=document.getElementById('mese_assunzione').value;
    var giorno_nascita=document.getElementById('giorno_nascita').value;
    var mese_nascita=document.getElementById('mese_nascita').value;
    var anno_nascita=document.getElementById('anno_nascita').value;
    var provnascita=document.getElementById('provnascita').value;
    var cittanascita=document.getElementById('cittanascita').value;
    var ImpRich=document.getElementById('ImpRich').value;
    var IDProf=document.getElementById('IDProf').value;
    var Sesso=document.getElementById('Sesso').value;
    var telefono=document.getElementById('Tel1').value;
    var Fasciaoraria1=document.getElementById('Fasciaoraria1').value;
    
	 var giorno_pensionamento=document.getElementById('giorno_pensionamento').value;
    var mese_pensionamento=document.getElementById('mese_pensionamento').value;
    var anno_pensionamento=document.getElementById('anno_pensionamento').value;
    var fieldcheck =  document.getElementById('IDProf').value; 
    var code =  document.getElementById('form_code').value; 
    
    alert_anno_pensionamento = "";
    alert_giorno_pensionamento = "";
    alert_mese_pensionamento = "";
    
    alert_anno_assunzione = "";
    alert_giorno_assunzione = "";
    alert_mese_assunzione = "";
    
	                
    var campi=0;      
   
    if(nome=="")
    {
        campi++;
        alert_nome="- Nome\n"
    }   
    else
    {
        alert_nome="";
    }   
             
     if(telefono=="")
    {
        campi++;
        alert_telefono="- Telefono\n"
    }                   
    else
    {
        alert_telefono="";
    }         

    if(cognome=="")
    {
        campi++;
        alert_cognome="- Cognome\n"
    }   
    else
    {
        alert_cognome="";
    }
    
    if(email=="")
    {
        campi++;
        alert_email="- Email\n"
    }
    else
    {
        alert_email="";
        if(emailCheck(email)==false)
        {
            campi++;
            alert_email="- Email non conforme\n"
        }
        else
        {
            alert_email="";
        }
    }
    if(prov=="")
    {
        campi++;
        alert_prov="- Provincia di residenza\n"
    }
    else
    {
        alert_prov="";
    }    
    if(cittaresidenza=="")
    {
        campi++;
        alert_cittaresidenza="- Citt&agrave; di residenza\n"
    }
    else
    {
        alert_cittaresidenza="";
    }      
    if(cap=="")
    {
        campi++;
        alert_cap="- Codice di avviamento postale\n"
    }
    else
    {
        alert_cap="";
    }    
    
    if(giorno_nascita=="")
    {
        campi++;
        alert_giorno_nascita="- Giorno di nascita\n"
    }
    else
    {
        alert_giorno_nascita="";
    }    
    if(mese_nascita=="")
    {
        campi++;
        alert_mese_nascita="- Mese di nascita\n"
    }
    else
    {
        alert_mese_nascita="";
    }          
    if(anno_nascita=="")
    {
        campi++;
        alert_anno_nascita="- Anno di nascita\n"
    }
    else
    {
        alert_anno_nascita="";
    }    
    if(provnascita=="")
    {
        campi++;
        alert_provnascita="- Provincia di nascita\n"
    }
    else
    {
        alert_provnascita="";
    }    
    if(cittanascita=="")
    {
        campi++;
        alert_cittanascita="- Citt&agrave; di nascita\n"
    }
    else
    {
        alert_cittanascita="";
    }    
    if(ImpRich=="")
    {
        campi++;
        alert_ImpRich="- Importo richiesto\n"
    }
    else
    {
        alert_ImpRich="";
    }
    
    
    if(IDProf=="")
    {
        campi++;
        alert_IDProf="- Professione\n"
    }
    else
    {
        alert_IDProf="";
    }    
   if(code=="")
    {
        campi++;
        alert_codice="- Codice di verifica\n"
    }
    else
    {
        alert_codice="";
    }    
   
   if(Sesso=="")
    {
        campi++;
        alert_Sesso="- Sesso\n"
    }
    else
    {
        alert_Sesso="";
    }  
     if(Fasciaoraria1=="")
    {
        campi++;
        alert_Fasciaoraria1="- Fascia oraria Telefono 1\n"
    }
    else
    {
        alert_Fasciaoraria1="";
    }   
    
    switch(fieldcheck){
		case '7':
		case '8':			
		case '9':
		case '13':	
	
      	if(mese_pensionamento==""){
		   	campi++;
		      alert_mese_pensionamento="- Mese di pensionamento\n"
		   }
		   else{
				alert_mese_pensionamento="";
		   }          
		   if(anno_pensionamento==""){
		   	campi++;
		      alert_anno_pensionamento="- Anno di pensionamento\n"
		   }else{
		   	alert_anno_pensionamento="";
		   }
			if(giorno_pensionamento==""){
		   	campi++;
		      alert_giorno_pensionamento="- Giorno di pensionamento\n"
		   }else{
		   	alert_giorno_pensionamento="";
		   }      
      break;
      default:
      	if(giorno_assunzione==""){
        		campi++;
        		alert_giorno_assunzione="- Giorno di assunzione\n"
    		}else{
        		alert_giorno_assunzione="";
    		}    
    		if(anno_assunzione==""){
        		campi++;
        		alert_anno_assunzione="- Anno di assunzione\n"
    		}else{
        		alert_anno_assunzione="";
    		}    
    		if(mese_assunzione==""){
        		campi++;
        		alert_mese_assunzione="- Mese di assunzione\n"
    		}else{
        		alert_mese_assunzione="";
    		}    
  		}		                  
      
    if(campi!=0)
    {    
        alert("I seguenti campi sono obbligatori:\n"+alert_nome+alert_cognome+alert_email+alert_telefono+alert_prov+alert_cittaresidenza+alert_cap+alert_giorno_assunzione+alert_anno_assunzione+alert_mese_assunzione+alert_giorno_nascita+alert_mese_nascita+alert_anno_nascita+alert_provnascita+alert_cittanascita+alert_ImpRich+alert_IDProf+alert_Sesso+alert_Fasciaoraria1+alert_mese_pensionamento+alert_giorno_pensionamento+alert_anno_pensionamento+alert_codice   
        
        
        );
        return false;
    }
    else
    {
        return true;
    }
}

