// JavaScript Document
erreur=0;
function calculduree(jourdebut,moisdebut,anneedebut,jourfin,moisfin,anneefin)
{
	//préconditions : jourdebut,moisdebut,anneedebut,jourfin,moisfin,anneefin sont des entiers et ont été initialisé correctement(c.a.d que la date de debut doit être inferieur à la date de fin)
	//postconditions : retourne un entier qui indique la durée en jour
	//explications : cette fonction est le coeur du script, c'est elle qui calcule la durée, et c'est cette fonction qu'il vous sera utile de réutiliser, cette fonction renvoie
	//la durée précise qui s'est écoulée, elle ne fait pas d'approximation et vérifie si l'année est bissextile
	

	function calcul_longueur_mois(annee)
	{
		//préconditions : annee est en entier
		//postconditions : retourne un tableau de 12 éléments d'entier qui indique le nombre de jours dans chaque mois

		var longueurmois=[31,28,31,30,31,30,31,31,30,30,30,31];
		if((!(annee % 4) && (annee % 100)) || !(annee % 400)) //vérifie si l'année traitée est bissextile
		{
			longueurmois=[31,28,31,30,31,30,31,31,30,30,30,31];		
		}
		return longueurmois;
		
	}
		
	var duree=0;
	for(i=anneedebut;i<anneefin;i++)
	{
		if((!(i % 4) && (i % 100)) || !(i % 400)) //vérifie si l'année traitée est bissextile
		{
			duree+=366;
		}
		else
		{
			duree+=365;
		}
	}
	var longueurmois=calcul_longueur_mois(anneedebut);
	for(i=0;i<moisdebut;i++)
	{
		if(i==moisdebut-1){duree-=jourdebut}
		else{duree-=longueurmois[i]}
	}
	
	var longueurmois=calcul_longueur_mois(anneefin);
	for(i=0;i<moisfin;i++)
	{
		if(i==moisfin-1){duree+=jourfin}
		else{duree+=longueurmois[i]}
	}
	return duree;
}
		

function verifierlongueur(champ)
{
	if(document.form1.elements[champ].value.length>10)
	{
		document.form1.elements[champ].value=document.form1.elements[champ].value.substring(0,10);
	}
}
function verifier(champ)
{
	message_erreur="Erreur(s) trouvée(s) dans le champ";

	if(champ){message_erreur+=" date de fin :\n"}
	else{message_erreur+=" date de début :\n"}

	verifierlongueur(champ);
	if(document.form1.elements[champ].value.length!=10)
	{
		erreur=1;
		message_erreur+="\nLa date que vous avez saisie ne respecte pas la forme jj/mm/aaaa !";
	}
	else
	{
		if(document.form1.elements[champ].value.substring(2,3)!="/" || document.form1.elements[champ].value.substring(5,6)!="/")
		{
			erreur=1;
			message_erreur+="\nLa date que vous avez saisie ne respecte pas la forme jj/mm/aaaa !";
		}
		else
		{
			jourok=0;
			for(i=1;i<32;i++)
			{
				jour=i.toString();
				if(i<10)
				{
					jour="0"+i;
				}
				if(jour==document.form1.elements[champ].value.substring(0,2))
				{
					jourok=1;									
				}
			}
			if(jourok)
			{
				moisok=0;
				for(i=1;i<13;i++)
				{
					mois=i.toString();
					if(i<10)
					{
						mois="0"+i;
					}
					if(mois==document.form1.elements[champ].value.substring(3,5))
					{
						moisok=1;											
					}
				}
				if(moisok)
				{
					if(isNaN(parseInt(document.form1.elements[champ].value.substring(6,10),10)))
					{
						erreur=1;
						message_erreur+="\nLa date que vous avez saisie contient une année non valide";
					}
					else
					{
						longueurmois=new Array();	
						jour=parseInt(document.form1.elements[champ].value.substring(0,2),10);
						mois=parseInt(document.form1.elements[champ].value.substring(3,5),10);
						annee=parseInt(document.form1.elements[champ].value.substring(6,10),10);
						if((!(annee % 4) && (annee % 100)) || !(annee % 400))
						{
							longueurmois=[31,29,31,30,31,30,31,31,30,31,30,31];
						}
						else
						{
							longueurmois=[31,28,31,30,31,30,31,31,30,31,30,31];
						}
						if(jour>longueurmois[mois-1])
						{
							erreur=1;
							message_erreur+="\nLa date que vous avez saisie n'existe pas !";
						}
					}
				}
				else
				{
					erreur=1;
					message_erreur+="\nLa date que vous avez saisie contient un mois non valide";
				}
					
			}
			else
			{
				erreur=1;
				message_erreur+="\nLa date que vous avez saisie contient un jour non valide";
			}
		}
	}
	if(erreur)
	{
		alert(message_erreur);
	}	
}
function ordredate()
{
	message_erreur="La date de début commence après la date de fin !";
	jourdebut=parseInt(document.form1.elements[0].value.substring(0,2),10);
	moisdebut=parseInt(document.form1.elements[0].value.substring(3,5),10);
	anneedebut=parseInt(document.form1.elements[0].value.substring(6,10),10);
	jourfin=parseInt(document.form1.elements[1].value.substring(0,2),10);
	moisfin=parseInt(document.form1.elements[1].value.substring(3,5),10);
	anneefin=parseInt(document.form1.elements[1].value.substring(6,10),10);
	if(!erreur)
	{
		if(anneedebut>anneefin){erreur=1;alert(message_erreur)}
		else
		{
			if(moisdebut>moisfin && anneedebut==anneefin){erreur=1;alert(message_erreur)}
			else
			{
				if(jourdebut>jourfin && anneedebut==anneefin && moisdebut==moisfin){erreur=1;alert(message_erreur)}
			}	
		}	
	}
	if(!erreur)
	{
		nbjour=calculduree(jourdebut,moisdebut,anneedebut,jourfin,moisfin,anneefin);
		alert("Entre le "+jourdebut+"/"+moisdebut+"/"+anneedebut+" et le "+jourfin+"/"+moisfin+"/"+anneefin+" il s'est écoulé :\n\n environ "+Math.ceil(nbjour/7)+" semaine(s) \nsoit "+nbjour+" jour(s)\nou "+nbjour*24+" heure(s)\n ou "+nbjour*1440+" minute(s)\nou si vous préférez "+ nbjour*86400 +" seconde(s).");
	}	
}

