// teste la validité de la date saisie

function test_date(lechamp)
{
  var laDate=lechamp;
  var err=0;

  if (laDate == "")
  {
	// err == 0 pas d'erreur  
  }
  else
  {
	if (laDate.length!=10) err=1;
	var jour=laDate.substring(0,2);
	var sep1=laDate.substring(2,3);
	var mois=laDate.substring(3,5);
	var sep2=laDate.substring(5,6);
	var an=laDate.substring(6,10);
	
	if (mois<1 || mois>12) err = 1
	if (sep1 != '/') err = 1
	if (jour<1 || jour>31) err = 1
	if (sep2 != '/') err = 1
	if (an<0) err = 1
	if (mois==4 || mois==6 || mois==9 || mois==11){
		if (jour==31) err=1
	}

	if (isNaN(jour)) err=1;
	if (isNaN(mois)) err=1;
	if (isNaN(an)) err=1;		

	if (mois==2){
		var g=parseInt(an/4)
		if (isNaN(g)) {
			err=1
		}
		if (jour>29) err=1
		if (jour==29 && ((an/4)!=parseInt(an/4))) err=1
	}
	
  }

  return(err); // si 1 -> erreur de format de date
}

// Conversion d'une chaine representant une date au format anglais (2000/10/31)
// en une chaine au format francais (31/10/2000)
// Le separateur devient celui passé en paramètre

function conversionDateAnglaisFrancais(laDate,leSeparateur)
{
	if ((laDate=="")||(laDate==leSeparateur+leSeparateur))
		return("");

	var laAnnee=laDate.substring(0,4);	
	var leMois =laDate.substring(5,7);
	var leJour =laDate.substring(8,10);
	
	var leResultat=leJour+leSeparateur+leMois+leSeparateur+laAnnee;
	return(leResultat);
}

// Conversion inverse de la precedente

function conversionDateFrancaisAnglais(laDate,leSeparateur)
{
	if ((laDate=="")||(laDate==leSeparateur+leSeparateur))
		return("");

	var laAnnee=laDate.substring(6,10);	
	var leMois =laDate.substring(3,5);
	var leJour =laDate.substring(0,2);

	var leResultat=laAnnee+leSeparateur+leMois+leSeparateur+leJour;
	return(leResultat);
}
	
function checkDateRecherche(jour, mois, annee, fieldNom) 
{

	showMsg = false

	if ((jour!="")&&(isNaN(jour))) showMsg = true;
	if ((mois!="")&&(isNaN(mois))) showMsg = true;
	if ((annee!="")&&(isNaN(annee))) showMsg = true;

	// make valid dates if possible
	if (jour.length==1) jour = "0" + jour;
	if (mois.length==1) mois = "0" + mois;
	if (annee.length==1) annee = "200" + annee;	
	if (annee.length==2) annee = "20" + annee;		
	if (annee.length==3) annee = "2" + annee;			
		
	if (showMsg) {
		alert("La date '"+fieldNom+"' contient une valeur non numérique.");
		return false;
	}
	else {

		if (jour=="") jour="01";
		if (mois=="") mois="01";
		if (annee=="") annee="2000";

		if (test_date(jour+"/"+mois+"/"+annee) != 0) {
			alert("Format de date '"+fieldNom+"' incorrect, veuillez saisir la date au format jj/mm/aaaa");		
			return false;
		}
		else {
			return true;
		}
		
	}
}

function checkOnDateRecherche(jour, mois, annee, fieldNom) 
{

	showMsg = false

	if ((jour!="")&&(isNaN(jour))) showMsg = true;
	if ((mois!="")&&(isNaN(mois))) showMsg = true;
	if ((annee!="")&&(isNaN(annee))) showMsg = true;

	// make valid dates if possible
	if (jour.length==1) jour = "0" + jour;
	if (mois.length==1) mois = "0" + mois;
	if (annee.length==1) annee = "200" + annee;	
	if (annee.length==2) annee = "20" + annee;		
	if (annee.length==3) annee = "2" + annee;				
		
	if (showMsg) {
		alert("La date '"+fieldNom+"' contient une valeur non numérique.");
		return false;
	}
	else {
	
		lbValideDate = false;
		if ((jour != "")&&(mois != "")&&(annee != "")) lbValideDate = true;
		else if ((jour == "")&&(mois != "")&&(annee != "")) lbValideDate = true;
		else if  ((jour == "")&&(mois == "")&&(annee != "")) lbValideDate = true;
		else if  ((jour == "")&&(mois == "")&&(annee == "")) lbValideDate = true;		
		
		if (lbValideDate == true)
		{
			if (jour=="") jour="01";
			if (mois=="") mois="01";
			if (annee=="") annee="2000";
	
			if (test_date(jour+"/"+mois+"/"+annee) != 0) 
			{
				alert("Format de date '"+fieldNom+"' incorrect, veuillez saisir la date au format jj/mm/aaaa");		
				return false;
			}
			else {
				return true;
			}		
		}
		else {
			alert("Les combinassions suivant sont des dates valides pour une recherche par  ‘Présente le’ \n\n  - jj/mm/aaaa\n  - mm/aaaa \n  - aaaa ");		
			return false;			
		}
	
	}

}

//renvoi true si l'écart entre les deux dates est supérieur à 1 an
function plusDunAn(date1,date2)
{
	var annee1=date1.substring(6,10);	
	var mois1=date1.substring(3,5);
	var jour1=date1.substring(0,2);
	
	var annee2=date2.substring(6,10);	
	var mois2=date2.substring(3,5);
	var jour2=date2.substring(0,2);
	
	var int_jour1;
	var int_jour2;
	var int_mois1;
	var int_mois2;
	
	//on converti tout ça en entier
	if(jour1.charAt(0)==0)
		int_jour1=parseInt(jour1.charAt(1));
	else
		int_jour1=parseInt(jour1);
		
	if(mois1.charAt(0)==0)
		int_mois1=parseInt(mois1.charAt(1));
	else
		int_mois1=parseInt(mois1);
		
	if(jour2.charAt(0)==0)
		int_jour2=parseInt(jour2.charAt(1));
	else
		int_jour2=parseInt(jour2);
	
	if(mois2.charAt(0)==0)
		int_mois2=parseInt(mois2.charAt(1));
	else
		int_mois2=parseInt(mois2);
	
	annee1=parseInt(annee1);
	annee2=parseInt(annee2);
	
	//si plus d'un an d'écart
	if(annee1+2<=annee2)
	{
		//alert(annee1+"+2<="+annee2);
		return true;
	}
	else
	{
		if(annee1==annee2)
		{
			//alert(annee1+"=="+annee2);
			return false;//si même annnée il n'y a pas un an d'écart
		}
		else
		{
			//si l'année 2 est l'année suivant l'année 1
			if(annee1+1==annee2)
			{
				//alert(annee1+1+"=="+annee2);
				if(int_mois1<int_mois2)
				{
					//alert(int_mois1+"<"+int_mois2);
					return true; //plus d'un an d'écart
				}
				else
				{
					//si même mois a un an d'écart
					if(mois1==mois2)
					{
						//alert(mois1+"=="+mois2);
						if(int_jour1<int_jour2)
						{
							//alert(int_jour1+"<"+int_jour2);
							return true;//plus d'un an d'écart
						}
						else
							return false;
					}
					else
					{
						//alert(int_mois1+">"+int_mois2);
						return false; //mois2<mois1, il n'y a pas un an d'écart
					}
				}
			}
		}
	}
}

//renvoi le nombre de jours entre les deux dates au format jj/mm/aaaa
function diff_date(date1,date2)
{
	var annee1=date1.substring(6,10);	
	var mois1=date1.substring(3,5);
	var jour1=date1.substring(0,2);
	
	var annee2=date2.substring(6,10);	
	var mois2=date2.substring(3,5);
	var jour2=date2.substring(0,2);
		
	var ma_date1 = new Date(annee1, mois1, jour1);
	var ma_date2 = new Date(annee2, mois2, jour2);
	
	var time1=ma_date1.getTime();
	var time2=ma_date2.getTime();
	
	//nombre de millisecondes entre les deux dates
	var nb_mlsec=time2-time1;
	
	return nb_mlsec/86400000;	
}
