//<!--
//cambiato
function test()
{
  alert('test');

}

// funzione che controlla la lunghezza del campo se è maggiore o uguale a zero
function isWhitespace_short(val)
{
  //alert(val)
  //return false;
  if (val.length == 0)
   return true ;
  else
   return false;
}
//*********************************************************************************************************

// funzione che verifica che nei campi  vengano immessi solo caratteri numerici
function numerical_press(wich)
{

  var sString = wich.value.toString()
  var len = sString.length
 
 var caracter = sString.charCodeAt((len-1))
 // alert("caraatere = "+caracter);
  if (caracter  < 48 || caracter >57)
   {
     alert("carattere non valido");
     wich.value=(wich.value.toString().substring(0,(len-1)));
   }
   wich.focus();
   return;
 }

//***********************************************************************************************************
// funzione che verifica che nei campi  vengano immessi solo caratteri alphabetici
function alphabetic_press(wich)
{
  var sPattern = /[\D]/gi;
  var sString = wich.value.toString();
  var len = sString.length;
  //alert("sstr"+sString)
  if (len==1)
	{
    if (sString.match(sPattern) == null)
		{
      alert("carattere non valido");
			wich.value=(wich.value.toString().substring(0,(len-1)));
		  wich.focus();
									
		}
	}
	if (len>1)
  {
   //alert("sstr"+sString.match(sPattern).length)
   if (sString.match(sPattern).length != len) 
   {
      alert("carattere non valido");
      wich.value=(wich.value.toString().substring(0,(len-1)));
      wich.focus();
   }
   else 
	  return true;
	}
    
   return;
} 

//***********************************************************************************************************
//controllo indirizzo posta elettronica

function isEmail (emailStr)
 {
   //alert("controllo e-mail");
   
   //-------------eventualmente aggiornare anche il controllo lato server
   // path /var/www/webapps/classiphp/controlli_server/generali.php
   
   var checkTLD=1;
   var knownDomsPat='^(it|eu|tv|com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|si|pt|se|uk|sm|be|br|nl|hu|ru|ms|pl|al|ar|at|au|bo|ba|bg|ca|cc|ch|cl|cn|cz|de|hr|es|fr|gb|gr|is|ie|in|jp|lu|mc|mt|no|nu|ro|sn|sg|sk|va|in|es|fi|to|tr|us|ve|ws|ua)$';
   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 +")*$");
   //emailStr = emailStr.toString();
	 var matchArray=emailStr.match(emailPat);

   if (matchArray==null)
    {
     //alert("Indirizzo E-mail sbagliato (controllare @ e .)");
                // popdef(6);
     return false;
    }
   var user=matchArray[1];
   var domain=matchArray[2];

   for (i=0; i<user.length; i++)
    {
     if (user.charCodeAt(i)>127)
      {
       //alert("Lo username contiene caratteri sbagliati.");
       //podef(6);
                         return false;
      }
    }
 for (i=0; i<domain.length; i++)
     {
      if (domain.charCodeAt(i)>127)
       {
       //alert("Il dominio  contiene caratteri sbagliati.");
                //       podef(6);
             return false;
       }
     }
   if (user.match(userPat)==null)
    {
     //alert("Lo username non è valido.");
        //       popdef(6);
     return false;
    }
   var IPArray=domain.match(ipDomainPat);
   if (IPArray!=null)
    {
     for (var i=1;i<=4;i++)
      {
       if (IPArray[i]>255)
       {
        //alert("L'indirizzo IP di destinazione non è valido.");
                //              podef(6);
              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("Indirizzo e-mail non valido");
          //     popdef(6);
             return false;
       }
    }
   if ((checkTLD && domArr[domArr.length-1].length>3||checkTLD && domArr[domArr.length-1].length==1) &&
      domArr[domArr.length-1].search(knownDomsPat)==-1)
     {
       //alert("L'indirizzo deve terminare con un dominio corretto o due lettere " + "il paese.");
      // popdef(6);
                         return false;
     }
   if (len<2)
     {
       //alert("Nell'indirizzo manca il nome dell'host.");
        //               popdef(6);
       return false;
     }
   return true;

}

//********************************************************************************************************

//funzione che verifica che almeno una check box sia stata selezionata
// riceve come parametro il nome delle check box da controllare e l'indice del numero del
// form da controllare se l'indice non viene passato il valore = 0
function checkbox_selected(indexForm,nameCheck)
{
  var indForm = indexForm;
  if (indForm =="") indForm=0;
   for(i=0;i<document.forms[indForm].length;++i)
  {
    if(document.forms[indForm].elements[i].type == "checkbox" && document.forms[indForm].elements[i].name == "mail")
    {
       if(document.forms[indForm].elements[i].checked == true)
       {
                                selected = 1;
                                break;
       }
    }
  }
  if(selected == 0)
  {
     return false;
    
   }
  
  return true;

}


//**************************************************************************************************
// funzione che controlla i caratteri siano solo di tipo alfabetico
 function isAlphabetic(name)
 {
  var pattern = /[a-z]|[A-Z]|[\s]/gi;
  var regesp = new RegExp(pattern);

  // name = (document.forms[0].firstname.value);
   //var matchArray = name.match(pattern);
   var matchArray = name.match(regesp);
  if ((matchArray==null) || (matchArray.length < name.length))
  {
     alert("Nome sbagliato (controllare i caratteri) "+name);
     alert("Lunghezza Nome "+name.length);
     alert("Lunghezza Array "+matchArray.length);
         return false;
  }
   else
    return true;
 }

//**************************************************************************************************

//**************************************************************************************************
// funzione che controlla che i caratteri siano di tipo numerico
 function isNumeric(campo)
 {
 // alert("campo e' "+campo);
  var pattern = /[0-9]/gi;
  var regesp = new RegExp(pattern);

    valCampo = campo.value.toString();
    valCampo = valCampo.replace(" ","");

   //var matchArray = name.match(pattern);
   var matchArray = valCampo.match(regesp);
  if ((matchArray==null) || (matchArray.length < valCampo.length))
  {
     //alert("Campo sbagliato (controllare i caratteri) "+valCampo);
    // alert("Lunghezza Campo "+valCampo.length);
    // alert("Valore Array "+matchArray);
    //alert("Lunghezza Array "+matchArray.length);
         return false;
  }
   else
   //alert("Campo CORRETTO "+valCampo);
    return true;
 }

//**************************************************************************************************
//  CONTROLLO EVENTO 
 //================================================================================================
function bisestile(anno_Data)
{
  //            verifica anno bisestile
 var bisest = false;
  if  ((anno_Data % 4) == 0) 
   
   if  ((anno_Data % 100) == 0) 
      if   ((anno_Data % 400) == 0)
         bisest = true  // anno secolare  bisestile
       else
         bisest = false  // anno secolare non bisestile
     else
     //anno no secolare ma divisibile per 4
       bisest = true
  else
     // anno non divisibile per 4 
     bisest = false
  
   return bisest;

}

//================================================================================================

function check_Data(valoreData,minValue,maxValue)
{
  //alert(valoreData.name)

  //return false;
  // minValue serve per dare un valore minimo di eta' in anni
  // maxValue serve per dare un valore massimo di eta' in anni 
    var arMesi = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
    // data  separatore  / tra gg mm aa
	  var    pattern = /(^[0-9]{1,2})([\/|-])([0-9]{1,2})([\/|-])([0-9]{4})/;	
    var data ="00/00/0000"
    if ( valoreData) data=valoreData;
    
    var pass=true;
	
     if (data.match(pattern)== null || data.match(pattern)[0] != data && pass==false)
     {		
	     //alert("Data errata");
         return "Data errata";
	     //return false;
     }
     else
     {
         //formato data corretto
          //
	        //old prendeva la parte iniziale del numero es: 09 prende 0
	       //   giorno = parseInt(data.match(pattern)[1],0);
           // mese =   parseInt(data.match(pattern)[3],0);
           // anno  =  parseInt(data.match(pattern)[5],0);
	       //

	       //17-01-2005  corretto
	       giorno = data.match(pattern)[1];
         mese =   data.match(pattern)[3];
         anno  =  data.match(pattern)[5];
	
         //se il giorno vale 0(1-9) prendo solo (1-9) e tolgo lo zero davanti 
         if (giorno.charAt(0)=="0")  giorno = giorno.charAt(1);
	   
	       //se il mese vale 0(1-9) prendo solo (1-9) e tolgo lo zero davanti  
	       if (mese.charAt(0)=="0") mese=mese.charAt(1);
	  
	       //trasformo tutto in interi
	       giorno=parseInt(giorno);
	       mese=parseInt(mese);
         anno=parseInt(anno);
	
	     
       
       //alert(giorno + " " + mese + "  " + anno);
       //NEW 17-01-2005
       //alert("giorno = "+giorno + " mese= " + mese + " --anno= " + anno);
       if (giorno<1 || giorno>31)
       {
          //alert("Giorno errato non puo' essere minore di 1 o maggiore di 31");
          return "Giorno errato non puo' essere minore di 1 o maggiore di 31";
          //return false;
        }
				  
       if (mese<1 || mese>12)
       {
          //alert("Mese errato non puo' essere minore di 1 o maggiore di 12");
          return "Mese errato non puo' essere minore di 1 o maggiore di 12" ;
          //return false;
       }
	      
       
       if (giorno>arMesi[mese] && mese!=2)
       {
          //alert("Giorno errato, maggiore del numero di giorni del mese inserito");
          return "Giorno errato, maggiore del numero di giorni del mese inserito";
          //return false;
       }
       
  
       
       if (giorno>(arMesi[mese]+1) && mese==2)
       {
          //alert("Giorno errato, febbraio non puo' avere " + giorno + " giorni");
          return "Giorno errato, febbraio non puo' avere " + giorno + " giorni";
          //return false;

       }
       
       
       if (giorno==29 && mese==2 && !bisestile(anno)) 
       {
          //alert("Giorno 29 errato, l'anno "+ anno + " non e' bisestile");
          return "Giorno 29 errato, l'anno "+ anno + " non e' bisestile";
          //return false;
       }
       

       
	    
       if (anno<1 || anno> (new Date(Date()).getFullYear() + 50) || anno< (new Date(Date()).getFullYear() - 100) )
       {
           //alert("Anno errato");
           return "Anno errato";
           //return false;
       }


       
       
  }
	 
	//alert("Data corretta");	                                                                                                                                
 return "";
}                                                                                                                                                                                     


//***************************************************************************************************
//inizio nuovo controllo data

function check_Data_aaaammdd(formato,valore)
{
  var g=0;
  var m=0;
  var a=0;

 
  // minValue serve per dare un valore minimo di eta' in anni
  // maxValue serve per dare un valore massimo di eta' in anni 
    var arMesi = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
    // data  separatore  / tra gg mm aa
    var pattern="";
	
	switch (formato)
	{
	  case "ggmmaaaa" || "ddmmyyyy":
	        pattern = /(^[0-9]{2})([0-9]{2})([0-9]{4})/;	
	        g=1; m=2; a=3;
	        break;
	  case "dd/mm/yyyy" || "gg/mm/aaaa":
	        pattern = /(^[0-9]{2})([\/|-])([0-9]{2})([\/|-])([0-9]{4})/;	
	        g=1;  m=3;  a=5;
	        break;
	    
	  case "aaaammgg" || "yyyymmdd":
	        pattern = /(^[0-9]{4})([0-9]{2})([0-9]{2})/;	
	        g=3;  m=2;  a=1;
	        break;
	  case "aaaa/mm/gg" || "yyyy/mm/dd":
	        pattern = /(^[0-9]{4})([\/|-])([0-9]{2})([\/|-])([0-9]{2})/;
	        g=5;  m=3;  a=1;
	        break;
	  case "mm/gg/aaaa" || "mm/dd/yyyy":
	        pattern = /(^[0-9]{2})([\/|-])([0-9]{2})([\/|-])([0-9]{4})/;
	        g=3;  m=1;  a=5;
	        break;       
	  case "mmggaaaa" || "mmddyyyy":
	        pattern = /(^[0-9]{2})([0-9]{2})([0-9]{4})/;
	        g=2;  m=1;  a=3;
	        break; 
      case "ggmmaa" || "ddmmyy":
            pattern = /(^[0-9]{2})([0-9]{2})([0-9]{2})/;
            g=1; m=2; a=3;
            break;
	}
	var data = valore;
	
	//alert(data.match(pattern)[0]);
	
	
	//alert("data="+data+'   formato:'+formato+ ' pattern:'+pattern)
	if (data.match(pattern)== null || data.match(pattern)[0] != data)
     {		
		return 4;//false;
	 }
	 else
	 {
	   //formato data corretto
	   /*
	   giorno = parseInt(data.match(pattern)[1],0);
	   mese =   parseInt(data.match(pattern)[3],0);
	   anno  =  parseInt(data.match(pattern)[5],0);
	   */   
	   
	   if (data.match(pattern)[g].indexOf('0')>0)
	     giorno = parseInt(data.match(pattern)[g],0);
	   else
	     giorno = data.match(pattern)[g];
	     
	   if (data.match(pattern)[m].indexOf('0')>0)  
	     mese =   parseInt(data.match(pattern)[m],0);
	   else
	     mese =   data.match(pattern)[m];
	     
	   if (data.match(pattern)[a].indexOf('0')>0)
	     anno  =  parseInt(data.match(pattern)[a],0);
	   else
	     anno  =  data.match(pattern)[a];
	     
	   if (formato == "ddmmaa") anno = "20" + anno;

	   //alert(giorno + " " + mese + "  " + anno);
	  // return false;	   
	   
	     if (giorno<1 || giorno>31 || (giorno>arMesi[mese] && mese!=2)  || 
	        (giorno>(arMesi[mese]+1) && mese==2) ||
	          (giorno==29 && mese==2 && !bisestile(anno)) )
	     {
	       //alert("Giorno errato");
	       return 3; //false;
	     }
	     if (mese<1 || mese>12)
	     {
	       //alert("Mese errato");
	       return 2; //false;
	     }
	    
	     if (anno<1 || anno> (new Date(Date()).getFullYear() + 50) || anno< (new Date(Date()).getFullYear() - 100) )
	     {
	       //alert("Anno errato");
	       return 1;//false;
	     }
	    
	     
	 }
	 
	//alert("Data corretta");	                                                                                                                                
 return 0;
}                                                                                                                                                                                     

//fine nuovo controllo data
//--------------------------------------------------------------------------------------------
//**************************************************************************************************
// controllo della data di nascita che sia una data valida e che l'etàia maggiorenne e minore di 120 anni

function check_Data_nascita(objGiorno,objMese, objAnno)
{ 
   
   var iDay   = objGiorno.value;
   var iMonth = objMese.value;
   var iYear  = objAnno.value;
   

if ((iDay =="") && (iMonth =="") && (iYear =="")) return false;

if (objAnno.value.length <4) return "Inserire l'anno di nascita completo"; 
   if (isNumeric(objGiorno) && isNumeric(objMese)&& isNumeric(objAnno)) 
   {
     if (objGiorno.value.length==1) objGiorno.value = "0"+ objGiorno.value;
     if (objMese.value.length==1)  objMese.value = "0"+ objMese.value;   
    //alert("giorno vale= "+document.forms[0].txtGiorno_nascita.value );
    //alert("Mese vale= "+document.forms[0].txtMese_nascita.value );
       var oggi = new Date();
       var numAnni = 0;
       if (oggi.getYear() <1000)
          numAnni = ((1900 + oggi.getYear())- iYear);
       else
          numAnni = (oggi.getYear()- iYear);
      
      var mese_in_corso = parseInt(oggi.getMonth()) + 1;
      
      //alert('mese  = '+ mese);
    
    //alert ('oggi vale='+oggi + ' --  oggi.getYear='+oggi.getYear() + '  -- iYear=' + iYear);
    
    if ( verify_data(iDay,iMonth,iYear)) 
      {
    //alert ("oggi Day vale= "+oggi.getDate());
        if (numAnni<=99 && numAnni>18) return true;
    if (numAnni<=99 && numAnni==18 && parseInt(iMonth) < mese_in_corso) return true;
    if (numAnni<=99 && numAnni==18 && parseInt(iMonth) == mese_in_corso && iDay <=oggi.getDate()) return true;
    // alert("data valida valida");
        return "Numero anni minore di 18 o maggiore di 99";
    return false;
      }
      else
      {
      //alert("data non valida");
      //return false;
      return "Data di nascita non valida";
      }
  }
 else
 {
    return "Data di nascita con caratteri non validi";
 }

   return true;
}

//**************************************************************************************************

function check_eta(objGiorno,objMese,objAnno)
{ 

 //alert ("controllo nascita"+objGiorno);
   
   var iDay   = objGiorno.value;
   var iMonth = objMese.value;
   var iYear  = objAnno.value;
   

if ((iDay =="") && (iMonth =="") && (iYear =="")) return "";

     if (objGiorno.value.length==1) objGiorno.value = "0"+ objGiorno.value;
     if (objMese.value.length==1)  objMese.value = "0"+ objMese.value;   
    //alert("giorno vale= "+document.forms[0].txtGiorno_nascita.value );
    //alert("Mese vale= "+document.forms[0].txtMese_nascita.value );
       var oggi = new Date();
       var numAnni = 0;
       if (oggi.getYear() <1000)
          numAnni = ((1900 + oggi.getYear())- iYear);
       else
          numAnni = (oggi.getYear()- iYear);
      
      var mese_in_corso = parseInt(oggi.getMonth()) + 1;
      
      //alert('mese  = '+ mese);
    
    //alert ('oggi vale='+oggi + ' --  oggi.getYear='+oggi.getYear() + '  -- iYear=' + iYear);
    
    //alert ("oggi Day vale= "+oggi.getDate());
        if (numAnni<=99 && numAnni>18) return "";
    if (numAnni<=99 && numAnni==18 && parseInt(iMonth) < mese_in_corso) return true;
    if (numAnni<=99 && numAnni==18 && parseInt(iMonth) == mese_in_corso && iDay <=oggi.getDate()) return true;
    // alert("data valida valida");
        return "Numero anni minore di 18 o maggiore di 99";
    return false;
  

   return "";
}

//##################################################################################################
//**************************************************************************************************
// funzione che controlla i caratteri validi del nome e cognome
 function check_name(name)
 {
  //var pattern = /[a-z']|[A-Z']|[\s]/gi;
  var pattern = /[a-zA-Z']|[\s]/gi;
  //var pattern = /[a-zA-ZàèìòùéÀÈÌÒÙÉ']|[\s]/gi;
  var regesp = new RegExp(pattern);
  
  // name = (document.forms[0].firstname.value);
   //var matchArray = name.match(pattern);
   var matchArray = name.match(regesp);
   //alert (matchArray)
  if ((matchArray==null) || (matchArray.length < name.length))
  {
     //alert("Nome sbagliato (controllare i caratteri) "+name);
     //alert("Lunghezza Nome "+name.length);
     //if (matchArray!=null) alert("Lunghezza Array "+matchArray.length);
     return false;
  }
   else
    return true;
 }

//**************************************************************************************************






















//*************************************************************************************************
function check_Telefono(obj)
{  
    //alert(" sorgente evento = event.srcElement.tagName"); 

   // telefono con lettera iniziale + opzionale e accetta un solo carattere

  // separatore - o / tra prefisso e telefono

    var pattern = /(^[\+]?)([0-9]{2,8})([-|\/]?)([0-9]+)/;
    var tel = obj.value;
    if (tel.match(pattern)== null || tel.match(pattern)[0] != tel)
     {		
	alert("telefono errato \n inserirlo nel formato pref /- numero ");
	return false;
     }
     

    return true;
}

//**************************************************************************************************
// controllo della correttezza del numero di telefono
function check_phone(prefisso,numero)
{
return ((prefisso.value.toString().length > 2) || (numero.value.toString().length > 6));
 //  return ((prefisso.value.toString().length > 2) || (numero.value.toString().length > 6));
}
//**************************************************************************************************

