var defaultValueForIntervention = 2;

function LZ(x) 
{
   x = 1.0 * x;
   return (x<0||x>9?"":"0")+x;
}

function FormatBadDate( badDate, defaultValue, estDateNaissance )
{
   var today = new Date();
   var i;
   var orgBadDate = badDate;
   
   if(typeof defaultValue == 'undefined')
   {
      defaultValue = 0;
   }

   if(typeof estDateNaissance == 'undefined')
   {
      estDateNaissance = false;
   }

   today.setDate( today.getDate() + defaultValue );
   
   var tabElts = badDate.split("/");
   if( tabElts.length <= 1 )
   {
      tabElts = badDate.split("-");
   }
   // Attention, pas de ELSE
   if( tabElts.length > 1 )
   {
      badDate = "";
      for( i=0; i<tabElts.length; i++ )
      {
         if( isNaN(tabElts[i]) )
         {
            //alert( "Cette date n'est pas valide !!!" );
            return badDate;
         }
         else
         {
            badDate = badDate + LZ(tabElts[i]);
         }
      }
   }
   else
   {
      if( isNaN(badDate) )
      {
         //alert( "Cette date n'est pas valide !!!" );
         return '';
         //return orgBadDate;
      }
   }
   
   if( badDate.length == 0 )
   {
      dd = today.getDate();
      mm = 1 + today.getMonth();
      aa = today.getFullYear();
   }
   else if( badDate.length <= 2 )
   {
      dd = badDate;
      mm = 1 + today.getMonth();
      aa = today.getFullYear();
   }
   else if( badDate.length <= 4 )
   {
      dd = badDate.substr(0,2);
      mm = badDate.substr(2,2);
      current_mm = 1 + today.getMonth()
      if( (parseInt(mm,10)-current_mm) < 0 && (current_mm - parseInt(mm,10)) > 5 )
      {
         aa = today.getFullYear()+1;
      }
      else
      {
         aa = today.getFullYear();
      }
   }
   else if( badDate.length <=6 )
   {
      dd = badDate.substr(0,2);
      mm = badDate.substr(2,2);
      aa = badDate.substr(4,2);
      if( parseInt(aa,10) == 0 )
      {
         aa = today.getFullYear();
      }
      else
      {
         if( estDateNaissance )
         {
            alert( "Date de naissance : \n  vous devez saisir l'année avec 4 chiffres" );
            return ""
/*
            return LZ(dd)+"/"+LZ(mm)+"/"
            if( parseInt(aa,10) > (today.getFullYear()-2000+10) )
            {
               aa = "19"+aa;
            }
            else
            {
               aa = "20"+aa;
            }
*/
         }
         else
         {
            aa = Math.floor(today.getFullYear()/100)*100 + parseInt(aa,10);
         }
      }
   }
   else if( badDate.length <=8 )
   {
      dd = badDate.substr(0,2);
      mm = badDate.substr(2,2);
      aa = badDate.substr(4,4);
   }
   else
   {
      return "";
   }
   
   if( parseInt(dd,10) == 0 )
   {
      dd = today.getDate();
   }
   
   if( parseInt(mm,10) == 0 )
   {
      mm = 1 + today.getMonth();
   }

   return LZ(dd)+"/"+LZ(mm)+"/"+LZ(aa);
}

function FormatBadTime( badTime )
{
   var i;
   var orgBadTime = badTime;

   var tabElts = badTime.split(":");
   if( tabElts.length <= 1 )
   {
      tabElts = badTime.split(" ");

      if( tabElts.length <= 1 )
      {
         tabElts = badTime.split("h");
         if( tabElts.length <= 1 )
         {
            tabElts = badTime.split("H");
         }
      }
   }

   // Attention, pas de ELSE
   if( tabElts.length > 0 )
   {
      badTime = "";
      var nbelts = tabElts.length;
      if( nbelts > 2 ) nbelts = 2;
      
      for( i=0; i<nbelts; i++ )
      {
         if( isNaN(tabElts[i]) )
         {
            //alert( "Cette heure n'est pas valide !!!" );
            return badTime;
         }
         else
         {
            badTime = badTime + LZ(tabElts[i]);
         }
      }
   }
   else
   {
      if( isNaN(badTime) )
      {
         //alert( "Cette heure n'est pas valide !!!" );
         return '';
      }
   }
   
   if( badTime.length <= 2 )
   {
      hh = badTime;
      mm = 0;
   }
   else
   {
      if( badTime.length <= 3 )
      {
         hh = badTime.substr(0,1);
         mm = badTime.substr(1,2);
      }
      else
      {
		 hh = badTime.substr(0,2);
		 mm = badTime.substr(2,2);
      }
   }
   
   return LZ(hh)+":"+LZ(mm);
}

function FormatBadDuration( badTime )
{
   var i;
   var orgBadTime = badTime;

   if( badTime.length == 2 && ! isNaN(badTime) )
   {
   	badTime = "00:" + badTime;
   }

   var tabElts = badTime.split(":");
   if( tabElts.length <= 1 )
   {
      tabElts = badTime.split(" ");

      if( tabElts.length <= 1 )
      {
         tabElts = badTime.split("h");
         if( tabElts.length <= 1 )
         {
            tabElts = badTime.split("H");
         }
      }
   }

   // Attention, pas de ELSE
   if( tabElts.length > 0 )
   {
      badTime = "";
      var nbelts = tabElts.length;
      if( nbelts > 2 ) nbelts = 2;
      
      for( i=0; i<nbelts; i++ )
      {
         if( isNaN(tabElts[i]) )
         {
            //alert( "Cette heure n'est pas valide !!!" );
            return badTime;
         }
         else
         {
            badTime = badTime + LZ(tabElts[i]);
         }
      }
   }
   else
   {
      if( isNaN(badTime) )
      {
         //alert( "Cette heure n'est pas valide !!!" );
         return '';
      }
   }
   
   if( badTime.length <= 2 )
   {
      hh = badTime;
      mm = 0;
   }
   else
   {
      if( badTime.length <= 3 )
      {
         hh = badTime.substr(0,1);
         mm = badTime.substr(1,2);
      }
      else
      {
    	  if( badTime.length <= 4 )
          {
    		  hh = badTime.substr(0,2);
    		  mm = badTime.substr(2,2);
          }
		  else
		  {
			 hh = parseInt(badTime/100,10);
			 mm = badTime - hh*100;
		  }
      }
   }
   
   return LZ(hh)+":"+LZ(mm);
}

function toFrenchDate( dateObject )
{
   return LZ(dateObject.getDate())+"/"+LZ(1 + dateObject.getMonth())+"/"+LZ(dateObject.getFullYear());
}

function USDate_From_DDMMYYYY( frenchDate )
{
   var tabElts = frenchDate.split("/");
   return tabElts[2]+"/"+tabElts[1]+"/"+tabElts[0];
}

function IsValideDate( maDate )
{
   var tabElts = maDate.split("/");

   numDD = parseInt(tabElts[0],10);
   numMM = parseInt(tabElts[1],10);
   numAA = parseInt(tabElts[2],10);
   
   // Jour
   if ((numDD <= 0) || (numDD > 31)) { return false; }
   // Mois
   if ((numMM <= 0) || (numMM > 12)) { return false; }
   // Jour du mois
   if (numMM == 2)
   {
      leapYear = true;
      if( (numAA % 4) != 0 )
      {
         leapYear = false;
      }
      else
      {
         if( (numAA % 100)==0 && (numAA % 400)!=0 )
         {
            leapYear = false;
         }
      }
      if( leapYear )
      {
         if (numDD > 29) { 
            //alert( "Cette date n'est pas valide !!!" ); 
            return false; 
            } 
      }
      else
      {
         if (numDD > 28) { 
            //alert( "Cette date n'est pas valide !!!" ); 
            return false; 
            } 
      }
   }
   else if ((numMM == 4) || (numMM == 6) || (numMM == 9) || (numMM == 11)) 
   { 
      if (numDD > 30) {
         //alert( "Cette date n'est pas valide !!!" ); 
         return false; } 
   }
   return true;
}

function IsValideTime( myTime )
{
   var tabElts = myTime.split(":");

   numHH = parseInt(tabElts[0],10);
   numMM = parseInt(tabElts[1],10);
   
   // Heures
   if ((numHH < 0) || (numHH > 23)) { return false; }
   // Minutes
   if ((numMM < 0) || (numMM > 59)) { return false; }
   return true;
}

function IsValideBigTime( myTime )
{
	var tabElts = myTime.split(":");
	
	numHH = parseInt(tabElts[0],10);
	numMM = parseInt(tabElts[1],10);
	
	// Heures
	if ((numHH < 0) || (numHH > 999)) { return false; }
	// Minutes
	if ((numMM < 0) || (numMM > 59)) { return false; }
	return true;
}

function ControlerDate( myDate, defaultValue, estDateNaissance )
{
  if( myDate.value != '')
   {
      myDate.value=FormatBadDate(myDate.value,defaultValue, estDateNaissance );
      if( !IsValideDate(myDate.value) ) 
      {
         alert( "Cette date n'est pas valide !!!" ); 
         myDate.focus();
         return false;
      }
   }
   return true; 
}

function ControlerHeure( myTime )
{
  if( myTime.value != '')
   {
      myTime.value=FormatBadTime( myTime.value );
      if( !IsValideTime(myTime.value) ) 
      {
         alert( "Cette heure n'est pas valide !!!" ); 
         myTime.focus();
         return false;
      }
   }
   return true; 
}

function ControlerDuree( myTime )
{
  if( myTime.value != '')
   {
      myTime.value=FormatBadDuration( myTime.value );
      if( !IsValideTime(myTime.value) ) 
      {
         alert( "Cette durée n'est pas valide !!!" ); 
         myTime.focus();
         return false;
      }
   }
   return true; 
}

function ControlerDureeChimio( myTime )
{
	if( myTime.value != '')
	{
		myTime.value=FormatBadDuration( myTime.value );
		if( !IsValideBigTime(myTime.value) ) 
		{
			alert( "Cette durée n'est pas valide !!!" ); 
			myTime.focus();
			return false;
		}
	}
	return true; 
}

function AjouterDate(inputField, nbJours)
{
   if( inputField.value != "" )
   {
	   s0 = USDate_From_DDMMYYYY(inputField.value)
	   nvDate = new Date(s0)
	   nvDate.setDate( nvDate.getDate()+nbJours)
	   inputField.value = toFrenchDate( nvDate )
   }
	else
	{
   	var now = new Date();
	   inputField.value = toFrenchDate( now );
	}
}

function AjouterHeure(inputField, nbHeures)
{
   if( inputField.value != "" )
   {
	   tab = inputField.value.split(":")
	   heure = tab[0]
	   minute = tab[1]
	   heure = ( heure*1 + ( nbHeures*1 % 24 ) ) % 24
	   inputField.value = LZ(heure) + ":" + LZ(minute)
   }
}

function AjouterDateValeur(maDate, nbJours)
{
   s0 = USDate_From_DDMMYYYY(maDate)
   nvDate = new Date(s0)
	d2 = new Date(nvDate.valueOf() + (nbJours-1)*(1000*60*60*24))
   return toFrenchDate( d2 )
}

function CompareDate( d1, d2 )
{
   d1 = USDate_From_DDMMYYYY( d1 );
   d2 = USDate_From_DDMMYYYY( d2 );
   if( d1 > d2 )
   {
      return 1;
   }
   else if( d1 < d2 )
   {
      return -1;
   }
   else
   {
      return 0;
   }
}

function CompareHeure( h1, h2 )
{
   if( h1 > h2 )
   {
      return 1;
   }
   else if( h1 < h2 )
   {
      return -1;
   }
   else
   {
      return 0;
   }
}

function CalculAge( maDate )
{
   if( maDate == "" )
   {
      return "";
   }
   
   var usDate = USDate_From_DDMMYYYY( maDate );
   var d = new Date(usDate);
   var today = new Date();
   
   var age = today.getFullYear() - d.getFullYear();
   if( today.getMonth() < d.getMonth() )
   {
      age = age - 1;
   }
   else if( today.getMonth() == d.getMonth())
   {
      if( today.getDate() < d.getDate() )
      {
         age = age - 1;
      }
   }
   
   return age;
}

function CalculInterval( maDate1, maDate2 )
{
   if( maDate1 == "" || maDate2 == "")
   {
      return "";
   }
   
   var usDate1 = USDate_From_DDMMYYYY( maDate1 );
   var usDate2 = USDate_From_DDMMYYYY( maDate2 );
   var d1 = new Date(usDate1);
   var d2 = new Date(usDate2);
   interval = (d2-d1)/(1000*60*60*24)
   return interval+1;
}

function AddHeure( heur1, heur2)
{
  //retourne heur1 + heur2
  var h1 = 1.0*(heur1.substr(0,2));
  var m1 = 1.0*(heur1.substr(3,2));

  var h2 = 1.0*(heur2.substr(0,2));
  var m2 = 1.0*(heur2.substr(3,2));
  
  var addh = h1 + h2;
  var addm = m1 + m2;
  
   if (addm > 59){
      addm -= 60;
      addh += 1;
	}
   if (addh > 23){
      addh = 0;
	  }
  return LZ(addh)+":"+LZ(addm);
}

function SubstractHeure( heur, val)
{
  var h1, m1, h2, m2
  //retourne heur - val
  h1 = 1.0*(heur.substr(0,2));
  m1 = 1.0*(heur.substr(3,2));

  h2 = 1.0*(val.substr(0,2));
  m2 = 1.0*(val.substr(3,2));
  
  addh = h1 - h2;
  addm = m1 - m2;
  
   if (addm < 0){
      addm += 60;
      addh -= 1;
	}
  return LZ(addh)+":"+LZ(addm);
}
