debug=false;

if(debug)alert("Include ok");
function v_email(emailStr) {
if(debug)alert("chiamata a v_email");
var emailPat=/^(.+)@(.+)$/;
var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
var validChars="\[^\\s" + specialChars + "\]";
var quotedUser="(\"[^\"]*\")";
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;

var atom=validChars + '+';
var word="(" + atom + "|" + quotedUser + ")";

var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
var matchArray=emailStr.match(emailPat);

if (matchArray==null) return false;

var user=matchArray[1];
var domain=matchArray[2];
for (i=0; i<user.length; i++) {
  if (user.charCodeAt(i)>127) return false;
}
for (i=0; i<domain.length; i++) {
    if (domain.charCodeAt(i)>127) return false;
}
if (user.match(userPat)==null) return false;

var IPArray=domain.match(ipDomainPat);
if (IPArray!=null) {
    for (var i=1;i<=4;i++) {
        if (IPArray[i]>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) return false;
}
if (domArr[domArr.length-1].length<2 || len<2) return false;

return true;
}
////////////////////////////////////////////////////////////////////////////////
function message(obj,mex){
    alert(mex);
    obj.focus();
}
////////////////////////////////////////////////////////////////////////////////
function validate(){
  if(debug)alert("chiamata a validate");
  toValAr = toVal.split(",");

  if(debug)for(i=0;i<toValAr.length;i++) alert(toValAr[i]);

  /* verifica campi necessari */
  for(i=0;i<toValAr.length;i++){
     field = eval("document.contact." + toValAr[i]);
     if(field.value==""){
        message(field,l_required);
        return false;
     }
  }

  //** validate eMail **//
  email = eval("document.contact.email");
  if( ! v_email(email.value)) {
           message(email,l_illegal_email);
           return false;
  }
  return true;
}