//====================================================================
//Fonction rajoutant un 0 si le chiffre est compris entre 1 et 9
//====================================================================
function f_RajoutZero(intNum)
{	var strNum;
	strNum = intNum;
	if ((intNum >=1 ) && ( intNum <= 9)) {
		strNum = "0" + intNum;
	}
	return strNum; 
}


//====================================================================
//Fonction de test des dates jj/mm/aa
//====================================================================
function f_CheckDateJJMMAAAA(strDate) {
	return strDate.match("^[0-9]{2}/[0-9]{2}/[0-9]{4}$")
}

//====================================================================
//Fonction de creation d'une string date au format ILK à partir de day, month year
//====================================================================

function f_StrDateIlk(day, month, year)
{
  var strDate;
  day = parseInt(eval(day),10);
  month = parseInt(eval(month),10);
  // definition du format recherché
  strDate = "d/m/y";
  //
  strDate = strDate.replace("d", f_RajoutZero(day));
  strDate = strDate.replace("m", f_RajoutZero(month));
  strDate = strDate.replace("y", year);
  return strDate;
}

//====================================================================
// Gestion de la saisie de la syntaxe d'une date en fonction du format en vigueur dans l'application
// paramètres d'entrée : 
//	- objet Date
//	- type de format de la date ex: dmy
//	- type de separateur ex: /
// return false si la date n'est pas valide
//====================================================================

function f_CheckDateFormat(inDate,format,sep)
{
  var jour, mois, annee;
  var arDate, date;
  var formatPlusSep;
  var retour;
  retour = true;
  date = inDate.value;
  formatPlusSep = format.charAt(0) + sep + format.charAt(1) + sep + format.charAt(2);
  arDate = date.split(sep);
 
  if ((arDate.length != 3)||(arDate[0] =="")||(arDate[1] =="")||(arDate[2] =="")||(parseInt(arDate[0],10) == 0)||(parseInt(arDate[1],10) == 0))
	{	return false;}
  //recuperation du jour, mois annee
  jour   = arDate[format.indexOf("d")];   
  mois   = arDate[format.indexOf("m")];   
  annee  = arDate[format.indexOf("y")];
  // Control : uniquement des chiffres ou separateur
  var chiffre = "0123456789"
  for (cpt=0; cpt<date.length; cpt++)
    {	 if ((chiffre.indexOf(date.charAt(cpt)) < 0)&&(date.charAt(cpt) != sep)) 
         	{ 
         	return false;
         	}
         else
         	{
         	if ((format=="dmy") && (cpt==2 || cpt==5 ))
         		{
         		if (date.charAt(cpt) != sep)
         			{ 
         			return false;
         			}
         		}	
         	}
     }
   if ((eval(parseInt(annee,10)) < 100 ) && (annee.length == 2))
  {
  		if (eval(annee) < 50)
  		{
  			annee = "20" + annee;
  		}
  		else
  		{
  			annee = "19" + annee;
  		}
  		
  }
  else  if (annee.length < 4)
   	{ return false; }
 
 inDate.value = f_StrDateIlk(jour, mois, annee);
 
 if ((mois<0) || (mois>12))
    {	return false; }  
    if (jour<1) { return false;}
	if (mois==2) {
		// Annees bissextiles
		if (((annee % 4 == 0) && (annee % 100 != 0)) || (annee % 400 == 0)) {
		  if (jour>29)
			{ return false;}
		}	
		// Annees non bissextiles
        else {
		  if (jour>28)
		    { return false;}
	    }
	}  
    // Control des mois à 30 jours     
    if ((jour>30) && ((mois==4) || (mois==6) || (mois==9) || (mois==11)))
    { return false;}
    // Control des mois à 31 jours          
    if ((jour>31) && ((mois==1) || (mois==3) || (mois==5) || (mois==7) || (mois==8) || (mois==10) ||
        (mois==12)))
    { return false;}
    return true;          
}

function f_CheckDateFormat2(inDate,format,sep)
{
  var jour, mois, annee;
  var arDate, date;
  var formatPlusSep;
  var retour;
  retour = true;
  date = inDate.value;
  formatPlusSep = format.charAt(0) + sep + format.charAt(1) + sep + format.charAt(2);
  arDate = date.split(sep);
 
  if ((arDate.length != 3)||(arDate[0] =="")||(arDate[1] =="")||(arDate[2] =="")||(parseInt(arDate[0],10) == 0)||(parseInt(arDate[1],10) == 0))
	{	return false;}
  //recuperation du jour, mois annee
  jour   = arDate[format.indexOf("d")];   
  mois   = arDate[format.indexOf("m")];   
  annee  = arDate[format.indexOf("y")];
  // Control : uniquement des chiffres ou separateur
  var chiffre = "0123456789"
  for (cpt=0; cpt<date.length; cpt++)
    {	 if ((chiffre.indexOf(date.charAt(cpt)) < 0)&&(date.charAt(cpt) != sep)) 
         	{ 
         	return false;
         	}
         else
         	{
         	if ((format=="dmy") && (cpt==2 || cpt==5 ))
         		{
         		if (date.charAt(cpt) != sep)
         			{ 
         			return false;
         			}
         		}	
         	}
     }
  if (annee.length != 2)
   	{ return false; }
 
 if ((mois<0) || (mois>12))
    {	return false; }  
    if (jour<1) { return false;}
	if (mois==2) {
		// Annees bissextiles
		if (((annee % 4 == 0) && (annee % 100 != 0)) || (annee % 400 == 0)) {
		  if (jour>29)
			{ return false;}
		}	
		// Annees non bissextiles
        else {
		  if (jour>28)
		    { return false;}
	    }
	}  
    // Control des mois à 30 jours     
    if ((jour>30) && ((mois==4) || (mois==6) || (mois==9) || (mois==11)))
    { return false;}
    // Control des mois à 31 jours          
    if ((jour>31) && ((mois==1) || (mois==3) || (mois==5) || (mois==7) || (mois==8) || (mois==10) ||
        (mois==12)))
    { return false;}
    return true;          
}