function checkFields() {

var checkTLD=1;
var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
var emailPat=/^(.+)@(.+)$/;
var specialChars="\\(\\)><,;:\\\\\\\"\\.\\[\\]";
var validChars="\[^\\s" + specialChars + "\]";
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
var atom=validChars + '+';
var word="(" + atom + ")";
var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
var matchArray=document.form1.email.value.match(emailPat);
if (matchArray==null) {
alert("L'indirizzo e-mail e' mancante o non corretto. Controlla la @ e il punto.\n\nSe hai un indirizzo del tipo nome@[62.255.1.119], ricorda anche\nche il numero IP va chiuso in parentesi quadre.");
return false;
}
var user=matchArray[1];
var domain=matchArray[2];
for (i=0; i<user.length; i++) {
if (user.charCodeAt(i)>127) {
alert("\nQuesto indirizzo e-mail contiene, prima della @,\nuno o piu' caratteri non validi.");
return false;
   }
}
for (i=0; i<domain.length; i++) {
if (domain.charCodeAt(i)>127) {
alert("\nQuesto indirizzo e-mail contiene, dopo la @,\nuno o piu' caratteri non validi.");
return false;
   }
}
if (user.match(userPat)==null) {
alert("\nQuesto indirizzo e-mail non e' valido.");
return false;
}
var IPArray=domain.match(ipDomainPat);
if (IPArray!=null) {
for (var i=1;i<=4;i++) {
if (IPArray[i]>255) {
alert("\nIl numero IP che hai inserito come dominio\ncontiene valori non validi.\n\nI valori accettabili sono quelli fra 0 e 255");
return false;
   }
}
return true;
}
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("\nL'indirizzo e-mail che hai inserito non e' corretto.\n\nControlla la parte dopo la @.");
return false;
   }
}
if (checkTLD && domArr[domArr.length-1].length!=2 &&
domArr[domArr.length-1].search(knownDomsPat)==-1) {
alert("\nL'indirizzo e-mail deve terminare con un dominio noto (.com, .net, .org, ...)\no con un indicativo geografico (.it, .es, .uk, .de, ...)");
return false;
}
if (len<2) {
alert("\nL'indirizzo di posta elettronica non e' completo.\n\nDeve contenere un nome di dominio prima dell'estensione. Ad es. nome@yahoo.com");
return false;
}

if (document.form1.nome.value == "") {
alert("Manca il nome.");
return false;
}

if (document.form1.cognome.value == "") {
alert("Manca il cognome");
return false;
}

// set var radio_choice to false
var collab_choice = false;
// Loop from zero to the one minus the number of radio button selections
for (counter = 0; counter < document.form1.tipocollab.length; counter++)
// If a radio button has been selected it will return true
// (If not it will return false)
if (document.form1.tipocollab[counter].checked) {
collab_choice = true; 
}

if (!collab_choice)
{
// If there were no selections made display an alert box 
alert("Non hai scelto l'area di collaborazione.")
return false;
}

if (document.form1.telefono.value == "") {
alert("Manca il telefono.");
return false;
}

if (document.form1.consenso1[0].checked == false) {
alert("In mancanza del consenso privacy non e' possibile spedire il modulo");
return false;
}

if (document.form1.consenso2[0].checked == false) {
alert("In mancanza del consenso privacy per i dati sensibili non e' possibile spedire il modulo");
return false;
}

else {
return true;
}
}