var lingua="ita";

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("Email non valida");
    else if (lingua=="eng")
      alert("Non-valid email");
    else
      alert("Email non valida");

    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("Formato data non valido (gg/mm/aaaa)");
    else if(lingua == "eng") alert("Non-valid date format (mm/dd/yyyy)");
    else  alert("Formato data non valido (gg/mm/aaaa)");
    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("ATTENZIONE: Per procedere e' necessario compilare tutti i campi obbligatori");
    else alert("ATTENTION: Fill all required fields");
  }
  else {
    myform.submit();
  }
}


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

    campo.value = "";
  }
}