var controlloNumerico = /^[0-9]/;
  
function inviaForm()
{
  var form = document.getElementById("search");
  if(!controllaNumero(form.danumero,"numero"))
  {
     form.danumero.focus();
	 return false;
  } 
  if(!controllaNumero(form.anumero,"numero"))
  {
     form.anumero.focus();
	 return false;
  }    
  if (!controllaData(form.dadata,"gg.mm.aaaa"))
  {
     form.dadata.focus();
     return false;    
  }
  if (!controllaData(form.adata,"gg.mm.aaaa"))
  {
     form.adata.focus();
     return false;    
  }  
  return true;
}  
    
// Controlli della data
function controllaData(campoData, valore)
{
  var data = campoData.value;
  // Se la lunghezza e' zero non si fanno controlli o se il contenuto corrisponde alla stringa inserita
  if (data.length==0 || data==valore)
  {
    return true;
  }
  if (data.length!=10)
  {
    alert("ATTENZIONE: Il formato della data deve essere 'gg.mm.aaaa'.");
    return false;  
  }
  
// Controlli sul giorno
  primopunto = data.indexOf(".");
  if (primopunto<1)
  {
    alert("ATTENZIONE: Il formato della data deve essere 'gg.mm.aaaa'.");
    return false;
  }
  var giorno = data.substring(0,primopunto);
  if (!controlloNumerico.test(giorno))
  {
    alert("ATTENZIONE: Il campo giorno deve essere numerico.");
    return false;
  }
  // Tolgo primo zero perche' fa impazzire parseInt
  if(giorno.length>1)
  {
    if (giorno.substring(0,1)=='0')
    { giorno = giorno.substring(1,giorno.length); }
  }
  giornoInt = parseInt(giorno);
  
  // Controlli sul mese
  data = data.substring(primopunto+1,data.length);
  secondopunto = data.indexOf(".");
  if (secondopunto<1)
  {
    alert("ATTENZIONE: Il formato della data deve essere 'gg.mm.aaaa'.");
    return false;
  }
  var mese = data.substring(0,secondopunto);
  if (!controlloNumerico.test(mese))
  {
    alert("ATTENZIONE: il mese deve essere numerico.");
    return false;
  }
  // Tolgo primo zero perche' fa impazzire parseInt
  if(mese.length>1)
  {
    if (mese.substring(0,1)=='0')
    { mese = mese.substring(1,mese.length); }
  }
  meseInt = parseInt(mese);
// Controlli sul campo anno
  var anno = data.substring(secondopunto+1,data.length);
  if (anno.length==0)
  {
    alert("ATTENZIONE: Controllare il valore del campo anno.");
    return false;
  }
  if (!controlloNumerico.test(anno))
  {
    alert("ATTENZIONE: Il campo anno deve essere numerico.");
    return false;
  }
  // Tolgo primi zeri perche' fa impazzire parseInt
  while (anno.length >1 && anno.substring(0,1)=='0')
  {
    anno = anno.substring(1,anno.length);
  }
  annoInt = parseInt(anno);
  if (annoInt < 2005)
  {
    alert("ATTENZIONE: Controllare il valore del campo anno.");
    return false;
  }

  var maxFeb=28;  
  if (isBisestile(annoInt)){maxFeb=29;}  
  //Controllo la correttezza del campo giorno
  if((giornoInt < 1) || (giornoInt > 31)
     ||(giornoInt > maxFeb && meseInt ==2)|| (giornoInt >30 &&
             (meseInt==11 || meseInt==4 || meseInt==6 || meseInt==9)))
  {
    alert("ATTENZIONE: data non corretta.");
    return false;  
  }  
  return true;
}


// Controlli dei campi numerici
function controllaNumero(campoNumero,valore)
{
  var numero = campoNumero.value;
  // Se la lunghezza e' zero non si fanno controlli
  if (numero.length==0)
  {
    return true;
  }
  if (numero!=valore)
  {
    if (!controlloNumerico.test(numero))
    {
       alert("ATTENZIONE: numero non corretto");
       return false;    
    }
    else
    {
       numeroInt = parseInt(numero);    
       if (numeroInt==0)
       {
         alert("ATTENZIONE: numero non corretto");
         return false;           
       }
    }
  }
  return true;
}


// Controllo dell'anno bisestile
function isBisestile(anno)
{
 // Se anno e' inferiore o uguale a 1600 non e' bisestile
 if (anno<=1600)
 {
 	   return false;
 }
 var bis=new Boolean();
 //vero se l?anno e?bisestile
 // Se anno <=1600 allora non e' bisestile
 // se ? divisibile per 4    	
 if(anno%4==0)
 {
     /* se ? divisibile per 100 */    		
    if(anno%100==0)
    {
       /* allora per essere bisestile */
       /* deve essere divisibile per 400 */    			
       if(anno%400==0) bis = true;
       else bis = false;
    }
    /* ?divisibile per 4 ma non per 100 */
    else
    {
    	bis = true; 
    }
 }
 /* non e?divisibile per 4 */    		
 else
 {
 	bis = false;
 }
 return bis;
}
