function checkEmail(campo) {
  var email_reg_exp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
  var val = campo.value
  var ok = val.search(email_reg_exp);
  if( ok == -1 && val != "" ) {

    if (lingua=="ita")
      alert(error4script);
    else if (lingua=="eng")
      alert(error4script);
    else
      alert(error4script);

    campo.value = "";
    campo.focus();
  }
}


function checkDate(campo) {

  var date_reg_exp

  if(lingua=="ita") {  //gg/mm/aaaa
    date_reg_exp = /^((3[01])|([12][0-9])|(0[1-9]))[\/]((1[0-2])|(0[1-9]))[\/]((19|20)\d{2})$/;
  }
  else if(lingua=="eng") {  //mm/dd/yyyy
    date_reg_exp = /^((1[0-2])|(0[1-9]))[\/]((3[01])|([12][0-9])|(0[1-9]))[\/]((19|20)\d{2})$/;
  }
  else {
    date_reg_exp = /^((1[0-2])|(0[1-9]))[\/]((3[01])|([12][0-9])|(0[1-9]))[\/]((19|20)\d{2})$/;
  }

  var error = 0;

  if(campo.value!="") {

    var giorno
    var mese
    if (lingua=="ita") {
      giorno = campo.value.substr(0, 2);
      mese = campo.value.substr(3, 2) - 1; //in js i mesi partono da 0
    } else if (lingua=="eng") {
      mese = campo.value.substr(0,2) - 1;
      giorno = campo.value.substr(3, 2);
    } else {
      giorno = campo.value.substr(0, 2);
      mese = campo.value.substr(3, 2) - 1;
    }
    var anno = campo.value.substr(6, 4);

    var ok = campo.value.search(date_reg_exp);
    if (ok==-1) {
      error = 1;
    } else {
      //controllo sui mesi che non hanno 31 giorni e sull'anno bisestile
      var mese_tmp = mese.toString();
      if( mese_tmp.substr(0, 1) == 0 ) { mese_tmp = mese_tmp.substr(1,1) } //tolgo l'eventuale 0 davanti al mese
      gm = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
      if ( ( ( anno % 4 == 0 ) && ( anno % 100 != 0 ) ) || ( anno % 400 == 0 ) ) { gm[1] = 29; } //anno bisestile
      if( giorno > gm[mese_tmp] ) { error = 1; }
      //30 giorni ha novembre con april giugno e settembre di ventotto ce n'è uno tutti gli altri ne han trentuno
    }
  }
  if(error == 1) {
    if(lingua == "ita") alert(error5script);
    else if(lingua == "eng") alert(error5script);
    else  alert(error5script);
    campo.value = "";
  }
}

function resetForm(idform){
  var myform = document.forms[0];
  if(idform != undefined) myform = document.forms[idform];
  myform.reset();
}

function checkForm(idform) {
  //I CAMPI OBBLIGATORI DEVONO AVERE id="required"+n !!!

  var regexp = /^(required)[0-9]*$/gi
  var error = 0;
  var myform = document.forms[0];
  if (idform!=undefined) myform = document.forms[idform];
  var campi = myform.elements;
  var ncampi = myform.length;
  var campimancanti = "\n";

  for(i=0; i < ncampi; i++) {
    campo = campi[i];
    idcampo = campo.id;
    tipocampo = campo.type;
    if(campo) {

      if((tipocampo != "hidden") && (idcampo.search(regexp) != -1)) {

        switch (tipocampo) {

          case "checkbox":
            if (myform.elements[campo.name].length) {
              var atleastone = false;
              for(j = 0; j < myform.elements[campo.name].length; j++) {
                if(myform.elements[campo.name][j].checked) atleastone = true;
              }
              if(!atleastone) {
                error = 1;
                campimancanti += (campo.name + "\n");
              }
            } else {
              if(!myform.elements[campo.name].checked) {
                error = 1;
                campimancanti += (campo.name + "\n");
              }
            }
            break;

          case "select-one":
            if((campo.selectedIndex == -1) || (campo.options[campo.selectedIndex].value == "")) {
              error = 1;
              campimancanti += (campo.name + "\n");
            }
            break;

          case "select-multiple":
            if((campo.selectedIndex == -1) || (campo.options[campo.selectedIndex].value == "")) {
              error = 1;
              campimancanti += (campo.name + "\n");
            }
            break;

          case "file":
            if(campo.value == "") {
              error = 1;
              campimancanti += (campo.name + "\n");
            }
            break;

          case "text":
            if(campo.value == "") {
              error = 1;
              campimancanti += (campo.name + "\n");
            }
            break;

          case "textarea":
            if(campo.value == "") {
              error = 1;
              campimancanti += (campo.name + "\n");
            }
            break;

          case "radio":
            var atleastone = false;
            for (j = 0; j < myform.elements[campo.name].length; j++) {
              if(myform.elements[campo.name][j].checked) atleastone = true;
            }
            if(!atleastone) {
              error = 1;
              campimancanti += (campo.name + "\n");
            }
            break;

          default:
        }
      }
    }
  }

  if(error == 1) {
    //in campimancanti ho l'elenco di tutti i campi obbligatori non compilati
    if(lingua == "ita") alert(error7script);
    else alert(error7script);
  }
  else {
    myform.submit();
  }
}


function isNumber(campo) {
  if (isNaN(campo.value) && campo.value!="") {
    if (lingua=="ita")
      alert(error1script);
    else if (lingua=="eng")
      alert(error1script);
    else
      alert(error1script);

    campo.value = "";
  }
}


function trim(sInString) {
  sInString = sInString.replace( /^\s+/g, "" );// strip leading
  return sInString.replace( /\s+$/g, "" );// strip trailing
}

function isFilled(_form,_el) {

  var filled = false;

  for (var i=0;_form.elements[i];i++)
  {
    var campo = _form.elements[i];
    if (campo && campo.name == _el)
    {
			switch (campo.type) {
			case "select-one":
				if (campo.selectedIndex!=-1 && campo.options[campo.selectedIndex].value!="") {
          filled = true;
				}
				break;
      case "select-multiple":
				if (campo.selectedIndex!=-1 && campo.options[campo.selectedIndex].value!="") {
          filled = true;
				}
				break;
			case "radio":
        if (campo.checked) return true;
        break;
			case "checkbox":
        if (campo.checked) return true;
				break;
/*
case "file":
case "text":
case "textarea":
*/
			default:
				//if (campo.value!="") {
        if (trim(campo.value)!="") {
          filled = true;
				}
				break;
			}
    }
  }

  return filled;
}


//funzione per il controllo lato client sui campi obbligatori
// - da aggiungere nell'attributo 'onsubmit' della form
// - richiede un campo hidden con id='requiredfields' con
//   l'elenco dei nomi dei campi obbligatori separati da virgola (AND)
// - supporta anche parentesi e || per creare diverse combinazioni di campi
//   obbligatori
// - se viene specificato un campo hidden con id='requiredfieldsmsg',
//   questo viene visualizzato in caso non siano compilati tutti i
//   campi obbligatori.
function newcheckForm(_form) {
  var reqfields = document.getElementById('requiredfields');
  var reqfieldsmsg = document.getElementById('requiredfieldsmsg');

  if (reqfields && (trim(reqfields.value)).length>0) {
    var rf = reqfields.value;

    var re = new RegExp(",","gi");
    rf = rf.replace(re,'&&');
    re = new RegExp("\s","gi");
    var rf2 = rf.split(/[\s&&\(\)||]/gi);

    for (var i=0;i<rf2.length;i++) {
      var token = trim(rf2[i]);
      if (token.length>0) {
        var valcampo = false;
        if (isFilled(_form,token))
          valcampo = true;

        rf = rf.replace(token,valcampo)
      }
    }
    //alert(rf)

    re = null;
    rf2 = null;

    var err = false;
    eval("if(!("+rf+")) err=true")

    if (err)
    {
      alert(reqfieldsmsg?reqfieldsmsg.value:error7script)

      return false;
    }
    else
    {
      return true;
    }

  } //end if ci sono campi obbligatori

  return true;
}
