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();
}

// DOC: USATA DAL JFORM
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");
		}

		return false;
  }
  else
	{
    return true;
  }
}


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 = "";
  }
}

function validateForm(_form, errorMsg) {

	//if (!errorMsg) errorMsg = error7script ? error7script : "Compilare tutti i campi obbligatori";
	if (!errorMsg) errorMsg = "Compilare tutti i campi obbligatori";
	
  var reqfields = document.getElementById('requiredfields');
  
  var reqfieldsmsg = document.getElementById('requiredfieldsmsg');
  
  var reqfieldsmap = document.getElementById('reqfieldsmap');
  
  var reqfield="";

  if (reqfields && reqfields.value.length > 0) {
    var rf = reqfields.value;
	var rfm=reqfieldsmap.value;
    
	var re = new RegExp(",","gi");
    rf = rf.replace(re,'&&');
	rfm = rfm.replace(re,'&&');
    re = new RegExp("\s","gi");
    var rf2 = rf.split(/[\s&&\(\)||]/gi);
	var rf2m = rfm.split(/[&&\||]/gi);
	
	

    for (var i=0;i<rf2.length;i++) {
      var token = rf2[i];
      if (token.length>0) {
        var valcampo = false;	
        if (isFilled(_form,token))
          valcampo = true;
        else reqfield+="\n"+rf2m[i];
        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!='' ? reqfieldsmsg.value +reqfield: errorMsg+reqfield)

      return false;
    }
    else
    {
      return true;
    }

  } //end if ci sono campi obbligatori

  return true;
}