// ----------------------------------
// UTILITA'
// ----------------------------------
function CheckData( dtFld )
{
  var isOK;
 
  if ( dtFld.value != "" )
    {
      isOK = controllaGiornoMeseAnno( dtFld.value );
      if ( isOK )
        dtFld.value = formattaGiornoMeseAnno( dtFld.value );
      else
        {
          dtFld.value = "";
          alert("Controllare il formato della data");  
        }  
    } 	
}

function CheckOra( oraFld )
{
  var isOK;
  
  if ( oraFld.value != "" )
    {
      isOK = controllaOreMinutiSecondi( oraFld.value )
      if ( isOK )
        oraFld.value = formattaOreMinutiSecondi( oraFld.value );
      else
       {
       	 oraFld.value = "";
         alert("Controllare il formato dell'ora");  
       } 
    } 	
}


function controllaGiornoMeseAnno( dataStr )
{
  var anno, mese, giorno;
  var annoInt, meseInt, giornoInt;
  var bisestile;
  var isOK = false;
  

  if ( dataStr.length == 8 )
    {
      giorno = dataStr.substring(0,2);
      mese   = dataStr.substring(2,4);	
      anno   = dataStr.substring(4);    	
    }
  else if (dataStr.length == 10 )
    {
      giorno = dataStr.substring(0,2);
      mese   = dataStr.substring(3,5);	
      anno   = dataStr.substring(6);
    }
  else
    {
      giorno = "A";  // tanto perchè non sia nmerico ...
      mese = "A";
      anno = "A";
    }  

  if ( isNumeric(giorno) && isNumeric(mese) && isNumeric(anno) )
    {
      giornoInt = parseInt(giorno, 10);
      meseInt = parseInt(mese, 10);	
      annoInt = parseInt(anno, 10); 
      	
      // controllo che la data sia corretta 
      bisestile4 = annoInt % 4;
      bisestile400 = annoInt % 400;
      
      if ( (mese == 1) || (mese == 3) || (mese == 5) || 
           (mese == 7) || (mese == 8) || (mese == 10) ||
           (mese == 12) )
        {
          if ( giornoInt <= 31 )
            isOK = true;
        }   
      else if ( (mese == 4) || (mese == 6) || (mese == 9) ||
                (mese == 11) ) 
        {
          if ( giornoInt <= 30 )
            isOK = true;	
        } 
      else if (meseInt == 2 )
        {
          if ( (bisestile4 == 0) || (bisestile400 == 0) )
            {
              if (giornoInt <= 29)
                isOK = true;
            }
          else
            {
              if (giornoInt <= 28)
                isOK = true;
            }  
        }
      
    }
  
  return( isOK );
}

function controllaOreMinuti( oraStr )
{
  var ore, minuti;
  var isOK = false;
  
  // accetto i formati hh:mm e hhmm
  if ( oraStr.length == 4 )
    {
      ore = oraStr.substring(0,2);	
      minuti = oraStr.substring(2);    	
    }
  else if (oraStr.length == 5 )
    {
      ore = oraStr.substring(0,2);	
      minuti = oraStr.substring(3); 
    }
  else
    {
      ore = "A";  // tanto perchè non sia nmerico ...
      minuti = "A";
    }  

  if ( isNumeric(ore) && isNumeric(minuti) )
    {
      if ( (ore <= 23) && (minuti <= 59) )
        isOK = true;
    }
    
  return( isOK );
}

function controllaOreMinutiSecondi( oraStr )
{
  var ore, minuti,secondi;
  var isOK = false;
  
  // accetto i formati hh:mm:ss e hhmmss
  if ( oraStr.length == 6 )
    {
      ore = oraStr.substring(0,2);
      minuti = oraStr.substring(2,4);
      secondi = oraStr.substring(4); 
    }
  else if (oraStr.length == 8 )
    {
      ore = oraStr.substring(0,2);	
      minuti = oraStr.substring(3,5); 
      secondi = oraStr.substring(6);
    }
  else
    {
      ore = "A";  // tanto perchè non sia nmerico ...
      minuti = "A";
      secondi = "A"
    }  

  if ( isNumeric(ore) && isNumeric(minuti) && isNumeric(secondi) )
    {
      if ( (ore <= 23) && (minuti <= 59) && (secondi <= 59))
        isOK = true;
    }
    
  return( isOK );
}


function isNumeric( value )
{
      var isOK = true;
      
      if ( (value=="") || isNaN(value) )
        isOK = false;
      
      if ( value.indexOf('+') >= 0 )  
        isOK = false;
        
      if ( value.indexOf('-') >= 0 )  
        isOK = false;
      
      if ( value.indexOf(' ') >= 0 )  
        isOK = false;	   
      
      return( isOK );  
}

// le due funzioni che seguono vanno chiamate su formati corretti
function formattaGiornoMeseAnno( dataStr )
{
  var ftmData = "";
  
  if ( dataStr.length == 8 )
    {
      fmtData  = dataStr.substring(0,2);
      fmtData += "/";
      fmtData += dataStr.substring(2,4);	
      fmtData += "/";
      fmtData += dataStr.substring(4);    	
    }
  else if (dataStr.length == 10 )
    {
      fmtData = dataStr.substring(0,2);
      fmtData += "/";
      fmtData += dataStr.substring(3,5);	
      fmtData += "/";
      fmtData += dataStr.substring(6);
    }	
    
  return( fmtData );  
}

function formattaOreMinuti( oraStr )
{
  var ftmOra = "";

  if ( oraStr.length == 4 )
    {
      fmtOra  = oraStr.substring(0,2);
      fmtOra += ":";
      fmtOra += oraStr.substring(2);	  	
    }
  else if (oraStr.length == 5 )
    {
      fmtOra = oraStr.substring(0,2);
      fmtOra += ":";
      fmtOra += oraStr.substring(3,5);	
    }	
    
  return( fmtOra ); 	
}


function formattaOreMinutiSecondi( oraStr )
{
  var ftmOra = "";

  if ( oraStr.length == 6 )
    {
      fmtOra  = oraStr.substring(0,2);
      fmtOra += ":";
      fmtOra += oraStr.substring(2,4);	  	
      fmtOra += ":";
      fmtOra += oraStr.substring(4);
    }
  else if (oraStr.length == 8 )
    {
      fmtOra = oraStr.substring(0,2);
      fmtOra += ":";
      fmtOra += oraStr.substring(3,5);	
      fmtOra += ":";
      fmtOra += oraStr.substring(6);	
    }	
    
  return( fmtOra ); 	
}

function isAfter( data1, data2 )
{
  var retCode = false;
  
  if ( data1.getTime() > data2.getTime() )
    retCode = true;
    
  return( retCode );  	
}

// la funzione che segue va usata su una stringa che è
// nel formato DDMMYYYY o DD/MM/YYYY
function createDate( dataStr )
{
  var data;
  var giorno, mese, anno;
 
 if ( dataStr.length == 8 )
    {
      giorno = parseInt( dataStr.substring(0,2), 10 );
      mese   = parseInt( dataStr.substring(2,4), 10 ) - 1;	
      anno   = parseInt( dataStr.substring(4), 10 );    	
    }
  else if (dataStr.length == 10 )
    {
      giorno = parseInt( dataStr.substring(0,2), 10 );
      mese   = parseInt( dataStr.substring(3,5), 10 ) - 1;	
      anno   = parseInt( dataStr.substring(6), 10 );
    }
    
  data = new Date( anno, mese, giorno);
  
  return( data );  	 
}

// le tre funzioni che seguono vanno usate su oggetti Date
function isEqual( data1, data2 )
{
  var retCode = false;
  
  if ( data1.getTime() == data2.getTime() )
    retCode = true;
    
  return( retCode );  	
}

function isBefore( data1, data2 )
{
  var retCode = false;
  
  if ( data1.getTime() < data2.getTime() )
    retCode = true;
    
  return( retCode );  	
}


function fmtDate( theDate )
{
  var strDate;
  
  strDate  = theDate.getDate();
  strDate += "/";
  strDate += (theDate.getMonth() + 1);
  strDate += "/";
  strDate += theDate.getYear();
  strDate += " ";
  strDate += theDate.getHours();
  strDate += ":";
  strDate += theDate.getMinutes();
  strDate += ":";
  strDate += theDate.getSeconds();
  
  return( strDate );
}