//-----------------------------------------------------------------------
//Les messages d'erreurs
var msg_erreur;
var msg1="Date invalide";
var msg2="Jour non-invalide";
var msg3="Mois non-invalide";
var msg4="Année non-invalide";
var msg5="Erreur! La valeur du jour doit être numérique.";
var msg6="Erreur! La valeur du jour doit être comprise entre 1 et 31.";
var msg7="Erreur! La valeur du mois doit être numérique.";
var msg8="Erreur! La valeur du mois doit être comprise entre 1 et 12.";
var msg9="Erreur! La valeur de l'année doit être numérique.";
var msg10="Erreur! La valeur de l'année doit être comprise entre 1900 et 3000.";
var msg11="La date  est invalide !";
var msg12="La date  est invalide !";
var msg13="Dates invalides !";

//-----------------------------------------------------------------------
//Définition objet date personnalisée - paramètres: jj,mm,ssaa
function dateperso(jour,mois,annee) 
{ 
	this.jour=jour;
	this.mois=mois;
	this.annee=annee.substring(2,4);
	this.siecle=annee.substring(0,2);
	this.datelong=this.siecle + this.annee + this.mois + this.jour; //ssaammjj
	this.dateformat= this.mois + "/" + this.jour + "/" + this.siecle + this.annee;// mm/jj/ssaa
	this.controledate=controledate; 
}

//-----------------------------------------------------------------------
//controle de la validité d'une date
function controledate()
{
	var LongueurMois = new Array("mois bidon",31,29,31,30,31,30,31,31,30,31,30,31);
	if ((this.jour == "") || (this.mois == "") || (this.annee == "") || (this.siecle == "" )) 
		{ 
			msg_erreur=msg1;
			return false;
		}
	if (!(controlej(this.jour)))
		{ 
			return false;
		}
	if (!(controlem(this.mois)))
		{
			return false;
		}
	if (!(controlea(this.siecle+this.annee)))
		{
			return false;
		}	
	//Longueur du mois de février
	LongueurMois[2]=VerifBissextile(this.annee);
	//Validité du nombre de jour dans le mois
	if (this.jour > LongueurMois[parseInt(this.mois,10)])
		{ 
			msg_erreur=msg1;
			return false;
		}	
	return true;
}	

//------------------------------------------------------------------------	
// Teste une annee pour determiner si elle est bissextile ou pas*/
function VerifBissextile(aa)
{
	if ((aa % 100 != 0 && aa % 4 == 0) || (aa % 400 == 0))
	 { 
	 	return 29;
	 }
	else 
	{
		return 28;
	}
}	

//--------------------------------------------------------------------------
//Contrôle d'une plage de dates (de début et de fin)
function verifdatedebfin(jjdeb,mmdeb,ssaadeb,jjfin,mmfin,ssaafin)
{	//window.alert(jjdeb+mmdeb+ssaadeb);
	complete(jjdeb,mmdeb,ssaadeb);
	complete(jjfin,mmfin,ssaafin);
	var datedebut = new dateperso(jjdeb,mmdeb,ssaadeb);
	var datefin = new dateperso(jjfin,mmfin,ssaafin);
	if (!(datedebut.controledate()))
		{
			window.alert(msg11);
			return false;
		}
	
	if (!(datefin.controledate()))
		{
			window.alert(msg12);
			return false;
		}	
		
	if (parseInt(datedebut.datelong,10) > parseInt(datefin.datelong,10))
		{	
			window.alert(msg13);
			return false;
		}
	return true;
}
//------------------------------------------------------------------------------
//controle de la validité du jour saisi
function controlej(jj)
{	var ValAutorisee = "0123456789";
	var ValControlee = jj;
	var controleOK = true;
	for (i = 0; i < ValControlee.length; i++)
		{	
			for (j = 0; j < ValAutorisee.length; j++)
			{	
				if (ValControlee.charAt(i) == ValAutorisee.charAt(j))						
					break;
			}
			if (j == ValAutorisee.length)
			{
				controleOK = false;
				break;
			}
		}
	if (!controleOK)
		{
			msg_erreur=msg5;
			return false;
		}
	if (ValControlee != "" && (parseInt(ValControlee,10)< "1" || parseInt(ValControlee,10)> "31"))
		{
			msg_erreur=msg6;
			return false;
		}
	//on complète avec 1 zéro en premier caractère si la longueur de la chaine est 1
	if (ValControlee.length == 1)
		{
			ValControlee = "0" + ValControlee;	
			jj = ValControlee;
		}
	return true;
}

//-------------------------------------------------------------------
//controle de la validité du mois
function controlem(mm)
{
	var ValAutorisee = "0123456789";
	var ValControlee = mm;
	var controleOK = true;
	
	for (i = 0; i < ValControlee.length; i++)
		{	
			for (j = 0; j < ValAutorisee.length; j++)
			{	
				if (ValControlee.charAt(i) == ValAutorisee.charAt(j))						
					break;
			}
			if (j == ValAutorisee.length)
			{
				controleOK = false;
				break;
			}
		}
	if (!controleOK)
		{
			msg_erreur=msg7;
			return false;
		}
	if (ValControlee != "" && (parseInt(ValControlee,10)< "1" || parseInt(ValControlee,10)> "12"))
		{
			msg_erreur=msg8;
			return false;
		}
	//on complète avec 1 zéro en premier caractère si la longueur de la chaine est 1
	if (ValControlee.length == 1)
		{
			ValControlee = "0" + ValControlee;
			mm = ValControlee;
		}
	return true;
}

//----------------------------------------------------------------------
//controle de la validité de l'année
function controlea(ssaa)
{
	var ValAutorisee = "0123456789";
	var ValControlee = ssaa;
	var controleOK = true;

	for (i = 0; i < ValControlee.length; i++)
		{	
			for (j = 0; j < ValAutorisee.length; j++)
			{	
				if (ValControlee.charAt(i) == ValAutorisee.charAt(j))						
					break;
			}
			if (j == ValAutorisee.length)
			{
				controleOK = false;
				break;
			}
		}
	if (!controleOK)
		{
			msg_erreur=msg9;
			return false;
		}
	if (ValControlee != "" && (parseInt(ValControlee,10)< "1900" || parseInt(ValControlee,10)> "3000"))
		{
			msg_erreur=msg10; 	
			return false;
		}
	return true;
}

//-------------------------------------------------------------------------
//Contrôle d'une date
function verifdate(jj,mm,aaaa) //jj,mm et aaaa doivent étre des champs de formulaire
{
	complete(jj,mm,aaaa);
	var datecont = new dateperso(jj,mm,aaaa);
	if (!(datecont.controledate())) {
		window.alert(msg_erreur);
		return false;
		}
	return true;
}

//On rajoute des 0 ou le siécle s'ils manquent
function complete(jj,mm,aaaa)
{
if (aaaa.length==2)
		{aaaa="20"+aaaa}
if (jj.length==1)
		{jj="0" + jj}
if (mm.length==1)
		{mm="0" + mm}
}		