// Controlla la validità di una data immessa e gestisce il controllo giorno-mese ad
// es. 30 febbraio o 31 novembre
// @return 0-2 errore sul formato

function controllaData(data,separatore)
{   
	if (data.length != 10)
		if (data.length == 0)
			return 2;
		else
			return 0;
	else
	{
		if (data.indexOf(separatore) != 2 || data.lastIndexOf(separatore) != 5)
			return 0;
		else
		{
			var giorno;
			var mese;
			var anno;
			//giorno = parseInt(data.charAt(0)+data.charAt(1));
			appGiorno = ""+data.charAt(0)+data.charAt(1)+"";
			// Correggo un bug di JS che non esegue il parsing di 08 e 09
			if(appGiorno == "08")
			{
				giorno = 8;
			}
			else
			{
				if(appGiorno == "09")
				{
					giorno = 9;
				}
				else
				{
					giorno = parseInt(""+data.charAt(0)+data.charAt(1)+"");
				}
			}
			appMese = ""+data.charAt(3)+data.charAt(4)+"";
			// Correggo un bug di JS che non esegue il parsing di 08 e 09
			if(appMese == "08")
				mese = 8;
			else
			{
				if(appMese == "09")
					mese = 9;
				else
					mese = parseInt(""+data.charAt(3)+data.charAt(4)+"");
			}
			anno = parseInt(data.charAt(6)+data.charAt(7)+data.charAt(8)+data.charAt(9));


			if (!isNumber(giorno) || !isNumber(mese) || !isNumber(anno)){
                                
				return 1;
                        }
			else
			{
				var dt = new Date(anno - 1900, mese - 1, giorno);
				var meseEffettivo = dt.getMonth() + 1;
				// controllo bug del centenario
                                annoNotRounded = parseInt(anno) / 100;
				annoRounded = Math.floor(annoNotRounded);
				if (annoNotRounded == annoRounded)
					if (data.indexOf("29"+separatore+"02"+separatore) >= 0)
						return 3;
				if(meseEffettivo == mese)
					return 3;
				else
					return 0;
			}
		}
	}

}
function formatoData(data)
  {
    myRe4 = /\d{2}\/\d{2}\/\d{4}/;
	if(!myRe4.test(data))
       {
	 alert("Inserire la data secondo il formato mm/dd/yyyy");
         return false;
        }
     else
    {
      g = data.substring(0,2);
      m = data.substring(3,5);
      a = data.substring(6,10);
      if(!verificaData(g,m,a)) return false
	else return true;
    }
}
  
 
 
 function verificaData(g,m,a)
  {
	
    if((g < 1) || (g > 31))
	{
      alert("Il giorno deve essere compreso tra 1 e 31");
      return false;   
    }
    else if((m < 1) || (m > 12))
	{	
       alert("Il mese deve essere tra 1 e 12");
	  
       return false;    
    } 	
    else if((a < 1900) )
	{	
       alert("Inserire un anno corretto");
       
       return false;
    }
    else if(((m == 04) || (m == 06) || (m == 09) || (m == 11)) && (g > 30))  	
	{	
       alert ("Il mese selezionato e' di 30 giorni");
 
       return false;
    }
    
    else if ((m == 02) && (g > 29))
	{	
      alert ("Febbraio e' al piu' di 29 giorni");
  
      return false;
    }
    else return true; 
} 	
                                  //true if from < to
 function minore(from,to)
   {    
	var giornoFrom;
	var meseFrom;
	var annoFrom;
	var giornoTo;
	var meseTo;
	var annoTo;
	var temporanea;
	annoFrom=parseInt(from.charAt(6)+from.charAt(7)+from.charAt(8)+from.charAt(9));
	meseFrom=parseInt(controllobug(from.charAt(3) + from.charAt(4)));
	giornoFrom=controllobug(from.substring(0,2));
	annoTo=parseInt(to.charAt(6)+to.charAt(7)+to.charAt(8)+to.charAt(9));
	meseTo=controllobug(to.substring(3,5));
	giornoTo=controllobug(to.substring(0,2));
	
	if (annoFrom > annoTo)
	{
		
 			return false;
	}
	else 
	{
		if ((annoFrom == annoTo)&&(meseFrom > meseTo)) 
		{
			return false;
		}
		else 
		{
			if ((annoFrom == annoTo)&&(meseFrom == meseTo)&&(giornoFrom > giornoTo))	
			{
	 			return false;
			}
                       
		}
               
		
	}
      return true;
	
   }


function minore_ug(from,to)
   {    
	var giornoFrom;
	var meseFrom;
	var annoFrom;
	var giornoTo;
	var meseTo;
	var annoTo;
	var temporanea;
	annoFrom=parseInt(from.charAt(6)+from.charAt(7)+from.charAt(8)+from.charAt(9));
	meseFrom=parseInt(controllobug(from.charAt(3) + from.charAt(4)));
	giornoFrom=controllobug(from.substring(0,2));
	annoTo=parseInt(to.charAt(6)+to.charAt(7)+to.charAt(8)+to.charAt(9));
	meseTo=controllobug(to.substring(3,5));
	giornoTo=controllobug(to.substring(0,2));
	
	if (annoFrom >= annoTo)
	{
		
 			return false;
	}
	else 
	{
		if ((annoFrom == annoTo)&&(meseFrom >= meseTo)) 
		{
			return false;
		}
		else 
		{
			if ((annoFrom == annoTo)&&(meseFrom == meseTo)&&(giornoFrom >= giornoTo))	
			{
	 			return false;
			}
                       
		}
               
		
	}
      return true;
	
   }

function controllobug( digit) {
	if( digit == '08') return 8;
	else if( digit == '09') return 9;
	else return digit;
}

                  // verifica che data_in1 (g1,m1,a1)+k giorni sia > data_in2 (g2,m2,a2)  (0<k<30)
                  // Sergio Santo

function intervalloData(g1,m1,a1,g2,m2,a2,k)

  { 
                                    
    g1=parseInt(controllobug(controllobug(g1)))+k;  // avanzo di k giorni
    m1=parseInt(controllobug(m1));
    a1=parseInt(controllobug(a1));
    g2=parseInt(controllobug(controllobug(g2)));
    m2=parseInt(controllobug(m2));
    a2=parseInt(controllobug(a2));           
                                              
                                              // formato data

    if ( (g1>28) && (m1 ==2) && ( a2 % 4 == 0 ) )  {g1=g1-30; m1=03;}
     else { 
            if ( (g1>29) && (m1 == 2) )  { g1=g1-30; m1=03;}
             else {if (g1>30 && m1==11 && m1==9 && m1==6 && m1==4 ) {g1=g1-30; m1=m1+1;}
                    else { if (g1>31 &&  m1!=12 ) {g1=g1-29; m1=m1+1;}
                            else
                             { if (g1>31) {g1=g1-29; m1=01; a1=a1+1;}
                             }
                            
                         } 
                  }
    
          }
    	
    data1=g1+'/'+m1+'/'+a1;
    data2=g2+'/'+m2+'/'+a2;
    

    if (a1 > a2)
	{
	 return false;
	}
	else 
	{
		if ((a1 == a2)&&(m1 > m2)) 
		{
			return false;
		}
		else 
		{
			if ((a1 == a2)&&(m1 == m2)&&(g1 > g2))	
			{
	 			return false;
			}
                       
		}
               
		
	}
      return true;
	
      
  }
