
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('form_nome').value;      
	var cognome			= document.getElementById('form_cognome').value;         
	var email			= document.getElementById('form_email').value;
	var privacy			= document.getElementById('form_privacy').checked;
 	var telefono    	= document.getElementById('form_telefono').value;      
	var campi			= 0;
	
	
	if(nome=="")
    {
        campi++;
        alert_nome="- Nome\n";
    }
    else
    {
        alert_nome="";
    } 

	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(privacy==false)
	{
        campi++;
        alert_privacy="- Privacy\n";
    }
    else
    {
        alert_privacy="";
    }
     	
	if(telefono=="")
    {
        campi++;
        alert_telefono="- Telefono\n";
    }
    else
    {
        alert_telefono="";
    } 	
    if(campi!=0)
    {    
        alert("I seguenti campi sono obbligatori:\n"+alert_nome+alert_telefono+alert_cognome+alert_email+alert_privacy);
        return false;
    }
    else
    {
        return true;
    }
}