//controle la validite du jour
function CtrlJour(entree) {
	var text_ent='';
	var ret = 0;
	OterlesBlancs(entree);
	if (entree.value!="")
	{
		var Num;
		Num=CtrlNumerique(entree);
		if (Num==false) 
		{
			alert("Jour non numérique");
			ret=-1;
		}
		else
		{
			if (entree.value.length==1)
			{
				text_ent='0'+entree.value;
				entree.value=text_ent;
			}
			if (entree.value.length!=2) 
			{
				alert("Jour sur 2 caractères");
				ret=-1;
			}
			if (entree.value<1 || entree.value>31)
			{
				alert("Jour érroné");
				ret=-1;
			}
		}
	}
	return ret;
}

//controle la validite de l'annee
function CtrlAnnee(entree) {
	var text_ent='';
      var ret = 0;
	OterlesBlancs(entree);
	if (entree.value!="")
	{
		var Num;
		Num=CtrlNumerique(entree);
		if (Num==false)
		{
			alert("Année non numérique");
			ret=-1;
		}
		else
		{
			if (entree.value.length!=4) 
			{
				alert("Année sur 4 caractères");
				ret=-1;
			}
			else
			{
			    if (entree.value > '7999')
			    {
				    alert("Année incorrecte");
				    ret=-1;
			    }
			}
		}
	}
	return ret;
}

//Renvoie le numero mois selon le libelle
function RetourNumMois(entree) {
	if (entree.value=='Janvier')
 	   ret="01";
	if (entree.value=='Fevrier')
 	   ret="02";
	if (entree.value=='Mars')
 	   ret="03";
	if (entree.value=='Avril')
 	   ret="04";
	if (entree.value=='Mai')
 	   ret="05";
	if (entree.value=='Juin')
 	   ret="06";
	if (entree.value=='Juillet')
 	   ret="07";
	if (entree.value=='Aout')
 	   ret="08";
	if (entree.value=='Septembre')
 	   ret="09";
	if (entree.value=='Octobre')
 	   ret="10";
	if (entree.value=='Novembre')
 	   ret="11";
	if (entree.value=='Decembre')
 	   ret="12";
	return ret;
}

//controle validite date
function DateValide(jour,mois,annee) {   
    var retB=0;
    var mess="";
    retB=CtrlAnnee(annee);
    if ( retB != 0 )
       mess="-1";
       
    if (jour.value.length > 0 && mois.value.length == 0)
    {
       mess="Sélectionnez un mois";      
    }
    if ((mois.value.length > 0 || jour.value.length > 0) && annee.value.length == 0)
    {
       mess="Sélectionnez une année";
    }
    
    if (mois.value.length > 0 && jour.value.length > 0 && annee.value.length > 0)
    {
        var j=jour.value;
        var m=RetourNumMois(mois);
        var a=annee.value;
        var d2=new Date(a,m-1,j);
               
        j2=d2.getDate();
        m2=d2.getMonth()+1;
        a2=d2.getYear();

        if (a2<=1000) 
        {
            a2=1900+a2
        }
        
        if ( (j!=j2)||(m!=m2)||(a!=a2) )
        {
            mess="La date n'existe pas";
        }
    }
	return mess;    
}

//test debut periode <= fin periode
//renvoie un message si erreur
//ou renvoie les dates completes sous le format XXdate debut periode(YYYYMMDD)XXdate fin periode(YYYYMMDD)
function DatePeriode(jourDebP,moisDebP,anDebP,jourFinP,moisFinP,anFinP) 
{ 
    
    mess="";
        
    //date debut periode
    mois="";
    jour="";
    annee="";
    dateDebut="";

    
    if (anDebP.value.length!=0)
    {
        if (jourDebP.value.length!=0)
            jour=jourDebP.value;
        if (moisDebP.value.length!=0)
            mois=RetourNumMois(moisDebP);
        if (anDebP.value.length!=0)
            annee=anDebP.value;

        datDeb=jour+mois+annee;
        d=datDeb.length;
                
        if (d==8)
            dateDebut=annee+"-"+mois+"-"+jour;
        
        if (d==6)
            dateDebut=annee+"-"+mois+"-01";        
        
        if (d==4)
            dateDebut=annee+"-01-01";  
    }  
    
    //date fin periode
    mois="";
    jour="";
    annee="";
    dateFin="";
    
    if (anFinP.value.length!=0)
    {
        if (jourFinP.value.length!=0)
            jour=jourFinP.value;
        if (moisFinP.value.length!=0)
            mois=RetourNumMois(moisFinP);
        if (anFinP.value.length!=0)
            annee=anFinP.value;

        datFin=jour+mois+annee;
        d=datFin.length;
        
        if (d==8)
            dateFin=annee+"-"+mois+"-"+jour;
        
        if (d==6)
        {
            jj="31";
            var d2=new Date(annee,mois-1,jj);
                
            j2=d2.getDate();
            m2=d2.getMonth()+1;
            a2=d2.getYear();

            if (a2<=100) 
            {
                a2=1900+a2
            }

            if ( (jj!=j2)||(mois!=m2)||(annee!=a2) )
            {
                jour = jj - j2;
                dateFin=annee+"-"+mois+"-"+jour; 
            }
            else
            {
                dateFin=annee+"-"+mois+"-"+jj;
            }
        }
        
        if (d==4)
            dateFin=annee+"-12-31";
    }   
     
    if (dateDebut.length != 0 && dateFin.length != 0)
    {
        if (dateDebut > dateFin)
            mess="Date début période > date fin période";
    }
    if (mess.length==0)
        mess="XX"+dateDebut+"XX"+dateFin;
    
    return(mess);
}

function CheckDate(d) {
// Cette fonction vérifie le format AAAA-MM-JJ saisi et la validité de la date.
// Le séparateur est défini dans la variable separateur
var amin=1800; // année mini
var amax=2100; // année maxi
var separateur="-"; // separateur entre annee-mois-jour
var a=(d.substring(0,4));
var m=(d.substring(5,7));
var j=(d.substring(8,10));
var ok=1;
if ( ((isNaN(j))||(j<1)||(j>31)) && (ok==1) ) {
alert("Le jour n'est pas correct."); ok=0;
}
if ( ((isNaN(m))||(m<1)||(m>12)) && (ok==1) ) {
alert("Le mois n'est pas correct."); ok=0;
}
if ( ((isNaN(a))||(a<amin)||(a>amax)) && (ok==1) ) {
alert("L'année n'est pas correcte."); ok=0;
}
if ( ((d.substring(4,5)!=separateur)||(d.substring(7,8)!=separateur)) && (ok==1) ) {
alert("Les séparateurs doivent être des "+separateur); ok=0;
}
if (ok==1) {
var d2=new Date(a,m-1,j);
j2=d2.getDate();
m2=d2.getMonth()+1;
a2=d2.getYear();
if (a2<=100) {a2=1900+a2}
if ( (j!=j2)||(m!=m2)||(a!=a2) ) {
alert("La date "+d+" n'existe pas !");
ok=0;
}
}
return ok;
}

