/* AUTEUR: C Paulet */
/* Date de création: 04/05/2002 */
// -------------------------------------------------------------------------------------
// Variables globales
// ------------------
// Calendaires
// -----------
var jour_julien = 4712;
var annee_julienne = 365.25;
var annee_reforme = 1582;
var mois_reforme = 12;
var jour_reforme = 21;
var nb_jours_reforme = 10;
var annee_calendaire = 365;

// -----------------------
// période révolutionnaire
// -----------------------
// début
// ----------
// L'année 1792 est bissextile
var annee_dep_pcr = 1792;
var mois_dep_pcr = 9;
var jour_dep_pcr = 22;
var nb_jours_debut_pcr = 2375840;
// fin
// ----------
var annee_fin_pcr = 1805;
var mois_fin_pcr = 12;
var jour_fin_pcr = 31;
var nb_jours_fin_pcr = 2380687;
// de travail
// ----------
var Jour=0;
var Mois=0;
var Annee=0;
var nb_jours_annee_ref = 0;
var nb_jours_annee_cour = 0;
var nb_jours_rep_annee_cour = 0;
var nb_jours_ref = 0;
var nb_jours_julien = 0;
var bissext = 0;
var annee_bissex_en_cours = 0;
var annee_rep_bissext = 0;
var jour_rep = 0;
var mois_rep = 0;
var annee_rep = 0;
var date_rep = "";
var nb_jours_rep = 0;
var format_rep = 0;
var per_cal = "";
var jour_paques = 0;
var mois_paques = 0;
var nb_jours_paques = 0;
var array_mois = "";
var fetes = new Array();
var siecle = 0;
var	mod_siecle = 0;
var message = "";	

// -------------------------------------------------------------------------------------
// Format de saisie des dates
// -------------------------------------------------------------------------------------
function format_date(type){
	if (type == "j" || type == "g") {
		message = "la date doit être saisie de la façon suivante :\n 27/7/1214 ou\n 27/07/1214\n";
	}
	else if (type == "r"){
		message = "la date doit être saisie de la façon suivante :\n 18 brum 2\n";
		message += "les abbréviations des mois sont : \n";
		message += "vend,brum,frim,nivo,pluv,vent,germ,flor,prai,mess,ther,fruc,scul";
	}
	alert (message);
}
// -------------------------------------------------------------------------------------
// Saisie des dates
// -------------------------------------------------------------------------------------
function saisie_dates(){ 
	format_rep = 0;
	// Invalidation de la touche "Date Répub"
	document.formlr.daterep.disabled=true;
	nom_abrege_mois_rep = new Array("","vend","brum","frim","nivo","pluv","vent","germ","flor","prai","mess","ther","fruc","scul");
	SJour = new String(document.formlr.jour.value);
	SMois = new String(document.formlr.mois.value);
	SMois = SMois.toLowerCase();
	SAnnee = new String(document.formlr.annee.value);
	
	// Test pour reconnaître une saisie en notation républicaine.
	for (i = 1; i < 14; i++){
		if (SMois == nom_abrege_mois_rep[i]){
			alert ("Vous avez saisi une date républicaine");
			format_rep = 1;
			mois_rep = i;
		}
	}
	
	/*if(document.formlr.mois.length != 4 && format_rep == 1){
		alert("le mois républicain doit être saisi en abbrégé sur 4 caractères");
		Efface();
		return false;
	}*/
	if(document.formlr.mois.value > 12){ //&& format_rep == 0
		alert("Il n'y a que 12 mois par an !");
		Efface();
		return false;
	}
	if(document.formlr.jour.value > 31){
		alert("Il n'y a pas de mois de "+ document.formlr.jour.value +" jours !");
		Efface();
		return false;
	}
	if(document.formlr.annee.value.length <3 && format_rep == 0){
		alert("Tapez au moins 3 chiffres pour l'année!!");
		Efface();
		return false;
	}
	if (format_rep == 0){
		Annee = Number(SAnnee);
		Mois = Number(SMois);
		Jour = Number(SJour);
		annee_rep = 0;
		jour_rep = 0;
		nb_jours_julien = 0;
		//alert (Jour + " - " + Mois + " - " + Annee);
	}
	else {
		annee_rep = Number(SAnnee);
		jour_rep = Number(SJour);
		nb_jours_julien = 0;
		//alert (jour_rep + " - " + mois_rep + " - " + annee_rep);
	}
	//alert(document.forms.length);
	affichage();
}	
// -------------------------------------------------------------------------------------
// Dévalidation des boutons
// -------------------------------------------------------------------------------------
function annulation(){
	document.formlr.valider.disabled=true;		// 	Validation de la saisie
	document.formlr.fetes.disabled=true;		// 	Validation de l'affichage des fêtes mobiles
	document.formlr.daterep.disabled=true;		//	Validation de l'affichage des dates républicaines
	document.formlr.jjulien.disabled=true; 		// 	Validation de l'affichage du nombre de jours julien
	document.formlr.carte.disabled=false;		//	Validation de l'affichage de la carte d'Europe à cette époque
}	
	
// -------------------------------------------------------------------------------------
// Affichage des paramètres du "Calendrier" et du "Comput Ecclésiastique"
// -------------------------------------------------------------------------------------
function affichage() { 
	if (format_rep == 0) {
		datation_julienne_gregorienne();
	}
	if (( format_rep == 0 && nb_jours_julien >= 2375840) || format_rep == 1){
		datation_republicaine();
	}
	if (format_rep == 1) {
		datation_julienne_gregorienne();
	}
	//alert(nb_jours_julien);
	jour_semaine(nb_jours_julien);
	document.formlr.aff_periode_cal.value = periode_calendaire(Annee,Mois,Jour);
	document.formlr.aff_type_annee.value = type_annee();
	document.formlr.aff_jour_semaine.value = jour_semaine(nb_jours_julien);
	document.formlr.aff_cycle_solaire.value = cycle_solaire(Annee);
	document.formlr.aff_nombre_dor.value = nombre_dor(Annee);
	document.formlr.aff_indiction.value = indiction(Annee);
	document.formlr.aff_lettre_dominicale.value = lettre_dominicale(Annee);
	document.formlr.aff_epacte.value = epacte(Annee);
	document.formlr.aff_paques.value = paques(Annee);
	Eval_Epoque();
}	 

// -------------------------------------------------------------------------------------
// ÉLÉMENTS CALENDAIRES
// -------------------------------------------------------------------------------------
// Jour de la semaine calendrier écclésiastique
// -------------------------------------------------------------------------------------
var mess_jj = "En 1583 Julius Scaliger (sobriquet de Joseph de l'Escale de Bordons, né en France ";
mess_jj += "à Agen le 5 août 1540 et mort à Leyden (en Hollande) le 21 janvier 1609), propose dans ";
mess_jj += "le traité de chronologie Opus Novum De Emendatione Temporum un système où les jours sont ";
mess_jj += "numérotés les uns après les autres sans distinction de mois et d'années.\n";
mess_jj += "- Désirant utiliser une chronologie plus ancienne que les chronologies romaine et ";
mess_jj += "chrétienne, il basa son cycle sur l'indiction romaine (cycle de 15 ans), le cycle ";
mess_jj += "solaire (28 ans) et le nombre d'or (19 ans), 3 des éléments du «Comput Ecclésiastique».\n";
mess_jj += "- La numérotation julienne démarre le jour où ces trois éléments ont la valeur 1.\n";
mess_jj += "- La dernière coïncidence a eu lieu en 4712 av. J-C, calendrier julien, et cette date ";
mess_jj += "fut choisie comme origine, avec comme jour de départ le « dimanche ».\n";
mess_jj += "- Les durées des trois cycles étant premières entre elles, la coïncidence ne se ";
mess_jj += "reproduit que tous les 7980 ans (15 x 19 x 28) et la prochaine surviendra en 3268 ";
mess_jj += "julien.\n";
mess_jj += "- Il est d'usage d'utiliser l'année julienne de 365,25 jours lorsque une notion d'année ";
mess_jj += "doit être introduite, mais les années sont comptées selon la numérotation astronomique, ";
mess_jj += "c'est à dire que ce calendrier est utilisé à partir de 4713 av. J-C alors qu'il n'a ";
mess_jj += "réellement été utilisé qu'à partir de 46 av. J-C, et que de plus, il n’est pas tenu ";
mess_jj += "compte de la confusion dans les années bissextiles des premières années du calendrier ";
mess_jj += "julien et que les années de 4713 av. J-C à 1 av. J-C sont numérotées de -4712 à 0.\n";
mess_jj += "- Cette façon de compter les jours est celle qui utilisée dans les calculs pour ";
mess_jj += "déterminer le nom des jours de l’année avec les corrections introduites par le ";
mess_jj += "calendrier grégorien pour les dates après 1582 et les années bissextiles des siècles ";
mess_jj += "non divisibles par 400. \n";

function aide_jj() {
	alert(mess_jj);
}

// -------------------------------------------------------------------------------------
function datation_julienne_gregorienne() {

	nb_jours_annee_ref = 0;
	nb_jours_annee_cour = 0;
	
	var	array_mois = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
	// Datation réforme du calendrier
	for (i = 0 ; i < mois_reforme; i++ ){
		nb_jours_annee_ref += array_mois[i];
	}
	nb_jours_annee_ref += jour_reforme;
	nb_jours_ref = ((jour_julien + annee_reforme) * annee_julienne) + nb_jours_annee_ref;
	
	// Nombre de jours de l'année en cours
	for (i = 0; i < Mois; i++) {
		nb_jours_annee_cour += array_mois[i];
	}
	nb_jours_annee_cour += Jour;
	
	// Datation en calendrier "julien"
	// +0.5 pour démarrer en demie journée (tous les pays avec le même jour "julien"
	nb_jours_julien_31d_prec = ((jour_julien + Annee ) * annee_julienne);
	if (Mois <= 2) {
		nb_jours_julien = nb_jours_julien_31d_prec + nb_jours_annee_cour - 0.25;
	}
	if (Mois > 2) {
		nb_jours_julien = nb_jours_julien_31d_prec + nb_jours_annee_cour ;
	}
	//alert (nb_jours_julien_31d_prec + " - " + nb_jours_julien + " - " + nb_jours_annee_cour);
	
	// Message d'alerte pour la période des 10 jours supprimés pour la réforme grégorienne.
	if ((nb_jours_julien > nb_jours_ref) && (nb_jours_julien <= (nb_jours_ref + nb_jours_reforme))){
		alert ( "Le lendemain du dimanche 21 décembre 1582 de par la réforme \"grégorienne\", se trouve être le Lundi 1er Janvier 1583.");
		Jour = 15;
		document.formlr.jour.value = 15;
		Eval_Epoque();
	}
	
	// Datation en calendrier "grégorien"
	if (nb_jours_julien > nb_jours_ref) {
		
		/* Calcul des années bissextiles selon réforme grégorienne :
		tous les 4 ans, sauf années séculaires non divisibles par 400, 1600 année bissextile 
		séculaire suivant la réforme.*/

		if (Annee < 1600){
			nb_jours_julien = nb_jours_julien - nb_jours_reforme ;
		}
		if (Annee > annee_reforme && Mois <= 2){
			abx = Math.floor((Annee - 1 - annee_reforme)/4);
			snbx =Math.floor(((Annee - 1) - 1600 )/100);
			sbx = Math.floor(((Annee - 1) - 1600 )/400);
			bissext = abx - snbx +  sbx;
			nb_jours_julien = nb_jours_julien - nb_jours_reforme - snbx + sbx;
		}
		else if (Annee > annee_reforme && Mois > 2){
			abx = Math.floor((Annee - annee_reforme)/4);
			snbx =Math.floor((Annee - 1600)/100);
			sbx = Math.floor((Annee - 1600)/400);
			bissext = abx - snbx +  sbx;
			nb_jours_julien = nb_jours_julien - nb_jours_reforme - snbx + sbx;
		}
	}
	//alert (nb_jours_julien + " - " + snbx + " - " + sbx);
	// Active le bouton "Jour Julien"
	document.formlr.jjulien.disabled=false;
}
// -------------------------------------------------------------------------------------
var mess_js = "La subdivision de l'année en 52 semaines correspond approximativement au nombre ";
mess_js += "de quarts de lunaison (Une semaine) renfermés dans l’année.\n"; 
mess_js += "Une semaine, quant à elle, est divisée en 7 jours:\n";
mess_js += "Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche nommé ainsi en l'honneur ";
mess_js += "des sept astres connus à cet époque.\n\n";
mess_js += "- Lundi : Jour de la Lune (Séléné, Artémis, Hécate).\n";
mess_js += "- Mardi : Jour de Mars (Arès), dieu de la guerre.\n";
mess_js += "- Mercredi : Jour de Mercure (Hermès), messager des dieux.\n";
mess_js += "- Jeudi : Jour de Jupiter (Zeus), le dieu suprème.\n";
mess_js += "- Vendredi : Jour de Vénus (Aphrodite), déesse de l'amour.\n";
mess_js += "- Samedi : Jour de Saturne (Cronos), dieu du temps.\n";
mess_js += "- Dimanche : Jour du soleil (Helios) ou jour de Dieu.\n\n";
mess_js += "Dans le calendrier Républicain, les mois, tous de 30 jours comportent 3 décades \n";
mess_js += "(décadi). Les jours à l'intérieur de celles-ci ont un nom évocateur de leur position.";
mess_js += "primidi, duodi, tridi, quartidi, quintidi, sextidi, septidi, octidi, nonidi, décadi";
mess_js += "Le nom des Saints étaient remplacés par des noms de végétaux, d'animaux et d'outils.\n\n";
mess_js += "La numérotation des semaines est standardisée depuis 1976.";
mess_js += "par l'Organisation Internationale de Standardisation:\n";
mess_js += "- Le lundi est considéré comme le premier jour de la semaine.\n";
mess_js += "- Les semaines d'une même année sont numérotées de 01 à 52 (quelquefois 53).\n";
mess_js += "- La semaine de numéro 01 est celle qui contient le premier jeudi de janvier.\n";
mess_js += "Il peut exister une semaine n°53 (années communes finissant un jeudi, ";
mess_js += "bissextiles finissant un jeudi ou un vendredi).\n";

function aide_js() {
	alert(mess_js);
}

function jour_semaine(nb_jours_julien){

	var JJ = 0;

	JJ = Math.floor(nb_jours_julien % 7) + 1;
	
	// Correction pour ramener la valeur calculée à l'intérieur de "l'array_jour" si JJ est négatif
	if (JJ < 0 && JJ  >= -7){ JJ += 7;}
	if (JJ < -7) { JJ += 14;}
	// Détermination du jour de la semaine
	array_jour = new Array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche");
	jour_sem = array_jour[JJ];
	
	return jour_sem;//nb_jours_ref;//nb_jours_julien;////Annee +"-"+ Mois +"-"+ Jour
}
// -------------------------------------------------------------------------------------
function aff_jour_julien () {
	message = "Cette date correspond au jour Julien " + nb_jours_julien + "\n";
	alert (message);
}
// -------------------------------------------------------------------------------------
//  Calendrier républicain
// -------------------------------------------------------------------------------------
var mess_cr = "- l'An I commence le 22 septembre 1792, jour de l'institution de la république ";
mess_cr += "et équinoxe d'automne de l'hémisphère nord, c'est cet événement qui fut choisi pour ";
mess_cr += "déterminer le début de l'année, c'est la raison pour laquelle le premier Vendémiaire ";
mess_cr += "ne correspond pas toujours au 22 septembre.\n";
mess_cr += "- Chaque année commence le jour de l'équinoxe d'automne, calculé pour la longitude ";
mess_cr += "de Paris.\n";
mess_cr += "- L'année est partagée en douze mois égaux de 30 jours, plus cinq ou six jours ";
mess_cr += "supplémentaires dits \"complémentaires\" (on les appela brièvement sans-culottides ";
mess_cr += "entre Brumaire an II et Fructidor an III).\n";
mess_cr += "- le 6ème jour complémentaire (dit \"de la révolution\") est ajouté tous les 4 ans, ";
mess_cr += "l'année est alors dite \"sextile\"; une période de 4 ans s'appelant une Franciade.\n"; 
mess_cr += "- le calendrier républicain resta officiel jusqu'au 10 Nivôse an XIV (31 Décembre 1805).\n"; 

function aide_cr() {
	alert(mess_cr);
}
// -------------------------------------------------------------------------------------
function datation_republicaine(){

	// Conversion de date Grégorienne en Révolutionnaire et vice-versa.
	// format_rep = pour une saisie de date grégorienne, = 1 pour une saisie de date républicaine.
	// debut_pcr = début de la période du calendrier républicain, fin_pcr = fin de la période.
	
	// Traitement des années sextiles dans le calendrier républicain.
	// --------------------------------------------------------------
	/* L'an 3 républicain (1795 en calendrier grégorien est bissextile ainsi que tous les  
	multiples de 4 qui lui sont additionnés et ce compris l'an 11 succédant à 1800 (non 
	comptabilisé comme bissextile quant à lui dans le calendrier grégorien), d'où un décalage 
	apparaissant dans l'avancement du calendrier républicain, par exemple, l'an 12 républicain 
	commençant le 24 septembre 1803.*/

	// Conversion calendrier républicain vers calendrier grégorien.
	// ------------------------------------------------------------
	// Recherche du nombre de jours julien depuis - 4712 avec une saisie de date en format républicain,
			
	if (format_rep == 1) {
		
		// Détermination des années républicaines sextiles.
		annee_bissex_prec = 0;
		if ((annee_rep - 3) % 4 == 0 || annee_rep == 3){
			// Il s'agit d'une année républicaine sextile qu'il faut régulariser après 
			// le 365e jour de l'année précédente.
			annee_rep_bissext = Math.floor((annee_rep - 3) / 4);
			//alert (annee_rep_bissext);
		}
		else if (annee_rep > 3 ) { 
			// L'année en cours a dépassée la 1ere année sextile et est une année ordinaire.
			annee_rep_bissext = Math.floor((annee_rep - 3) / 4) + 1;
		}
		else {
			// L'année en cours est soit la première année du calendrier républicain soit la 2e.
			annee_rep_bissext = 0;
		} 
		
		// Nombre de jours de l'année grégorienne correspondante.
		// 1792 est une année grégorienne bissextile donc de 366j, l'année républicaine
		// démarrant 101 jours + tard, d'où la valeur 266.
		Annee = annee_dep_pcr + annee_rep;
		//alert (nb_jours_per_rep + " - " + annee_rep_bissext + " - " + Annee);
		
		// Quel est le nombre d'années grégoriennes bissextiles dans la période révolutionnaire
		// considérée.
		
		abx = Math.floor((Annee - annee_dep_pcr) / 4 );
		snbx =Math.floor((Annee - 1700) / 100);
		sbx = Math.floor((Annee - 1600) / 400) ;
		bissext = abx - snbx +  sbx;
		//alert (abx + " - " + snbx + " - " + sbx + " - " + bissext);
		
		nb_jours_per_rep = ((annee_rep - 1) * 365) + annee_rep_bissext - snbx + sbx + ((mois_rep - 1) * 30) + jour_rep;
		nb_jours_julien = nb_jours_debut_pcr + nb_jours_per_rep - 1;
		//alert (nb_jours_julien + " - " + nb_jours_per_rep+ " - " + annee_rep_bissext + " - " + snbx + " - " + sbx + " - " + ((mois_rep - 1) * 30) + " - " + jour_rep);
		
		
		// L'année grégorienne en cours est-elle bissextile ? si oui il faut régulariser
		// le jour calculé après le 59e jour.
		annee_bissex_en_cours = 0;
		if ((Annee % 4 == 0 && !(Annee % 100 == 0)) || Annee % 400 == 0) {
			annee_bissex_en_cours = 1;
			bissext = bissext - 1;
		}
		
		// Détermination définitive de l'année
		Annee = Math.floor((nb_jours_per_rep + 264 - bissext) / 365) + annee_dep_pcr;
			
		// Nb de jours dans l'année courante
		// La première estimation de l'année pouvant être fausse si la date est située dans
		// les premiers mois de l'année républicaine.
		nb_jours_annee_cour	= Math.floor((nb_jours_per_rep + 264 - bissext) % 365);
		
		//alert (Annee + " - " + annee_bissex_en_cours + " - " + bissext + " - " + nb_jours_annee_cour);
		bissext = 0;

		// Recherche du mois grégorien correspondant.
		var nb_jmois = 0;
		var	array_mois = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31); 
		
		for (i = 0 ; i < 13 ; i++ ){
			if ( i == 2 && annee_bissex_en_cours == 1) {
				nb_jmois += 1;
				annee_bissex_en_cours = 0;
			}
			nb_jmois += array_mois[i];
			//alert (nb_jours_annee_cour + " - " + i + " - " + nb_jmois);
			if (nb_jours_annee_cour - nb_jmois <= 0) {
				Mois = i;
				// Nombre de jour dans le mois en cours.
				Jour = nb_jours_annee_cour - nb_jmois + array_mois[i];
				//alert ( i + " - " + nb_jours_annee_cour + " - " + nb_jmois + " - " + Jour );
				break; 
			}
		}
		
		// appel du sous programme de recherche du nom du jour en calendrier grégorien.
		jour_semaine(nb_jours_julien);
		//alert (Jour + " - " + Mois + " - " + Annee);
		document.formlr.jour.value = Jour;
		document.formlr.mois.value = Mois;
		document.formlr.annee.value = Annee;
	}
	// Conversion calendrier grégorien vers calendrier républicain.
	// ------------------------------------------------------------
	else {
		// Calcul de l'année républicaine
		// nb_julien = valeur correspondant à la date républicaine
		if ((Annee % 4 == 0 && !(Annee % 100 == 0)) || Annee % 400 == 0) {
			nb_jours_rep = Math.round(nb_jours_julien - nb_jours_debut_pcr) + 1;
		}
		else {
			nb_jours_rep = Math.round(nb_jours_julien - nb_jours_debut_pcr);
		}
		// Détermination de l'année républicaine de base 
		// (jusqu'au 1er vendémiaire de l'année suivante)
		annee_rep = Annee - annee_dep_pcr;
		// Il s'agit de l'an 1 du calendrier républicain
		if (annee_rep == 0) {
			annee_rep = 1;
		}
		
		// Détermination des années républicaines sextiles.
		if ((annee_rep - 3) % 4 == 0 || annee_rep == 3){
			// Il s'agit d'une année républicaine sextile qu'il faut régulariser après 
			// le 365e jour de l'année en cours
			annee_rep_bissext = Math.floor((annee_rep - 3) / 4);
			annee_bissex_en_cours = 1;
		}
		else if (annee_rep > 3 && annee_bissex_en_cours == 0) {
			// L'année en cours a dépassée la 1ere année sextile et est une année ordinaire.
			annee_rep_bissext = Math.floor((annee_rep - 3) / 4) + 1;
			// Pour rester en phase avec l'équinoxe d'automne, il faut appliquer les mêmes règles 
			// que pour le calendrier grégorien et enlever du chiffre précedemment calculé 
			// les années sextiles correspondant avec un décalage de 1 an au années dont la centaine
			// est divisible par 100 (1800, 1900) ,l'année 2000, elle étant bissextile;
			// on reprendra les formeles de "snbx" et "sbx" précédentes mais avec 1792 en valeur talon.
			snbx =Math.floor((Annee - annee_dep_pcr) / 100);
			sbx = Math.floor((Annee - annee_dep_pcr) / 400) ;
			annee_rep_bissext = annee_rep_bissext  - snbx + sbx;
		}
		else {
			// L'année en cours est soit la première année du calendrier républicain soit la 2e.
			annee_rep_bissext = 0;
		}
		
		// Recherche du nombre de jours républicains de l'année courante.
		nb_jours_rep_annee_cour = Math.round(nb_jours_rep - (((annee_rep - 1) * 365) + annee_rep_bissext));
		message = (nb_jours_julien + " - " + nb_jours_rep + " - " + nb_jours_rep_annee_cour);
		message += (" - " + annee_rep_bissext);
		//alert (message);
		// Test de la période de fin d'année grégorienne ou l'année républicaine est augmentée de 1
		if (nb_jours_rep_annee_cour > 365 && annee_bissex_en_cours == 0) {
			nb_jours_rep_annee_cour = nb_jours_rep_annee_cour - 365;
			annee_rep = annee_rep + 1;
		}		
		else if (nb_jours_rep_annee_cour > 366 && annee_bissex_en_cours == 1) {
			nb_jours_rep_annee_cour = nb_jours_rep_annee_cour - 366;
			annee_rep = annee_rep + 1;
		}
		
		// Correction à 365 jours pour les années bissextiles du nombre de jours de l'année courante.
		if (annee_bissex_en_cours == 1 && !(nb_jours_rep_annee_cour / 365) <= 1){
			//nb_jours_rep_annee_cour = nb_jours_rep_annee_cour + 1;
		}
		// Recherche du mois en calendrier républicain
		mois_rep = Math.floor(nb_jours_rep_annee_cour / 30) + 1;
		// Recherche du jour du calendrier républicain 
		jour_rep = Math.floor((nb_jours_rep_annee_cour % 30));
		// si le reste est 0, en fait il s'agit du 30eme jour du mois précédent.
		if ( jour_rep == 0) { 
			jour_rep = 30; 
			mois_rep = mois_rep - 1;
		}
		annee_bissex_en_cours = 0;
		//alert (nb_jours_rep_annee_cour + " - " +  jour_rep + " - " + mois_rep + " - " + annee_rep);
		
		// Affichage de la date en format républicain
		// ------------------------------------------
		njour_calrep = new Array("","primidi","duodi","tridi","quartidi","quintidi","sextidi","septidi","octidi","nonidi","décadi");
					 
		nmois_calrep = new Array("","Vendémiaire","Brumaire","Frimaire","Nivôse","Pluviôse","Ventôse","Germinal","Floréal","Prairial","Messidor","Thermidor","Fructidor","SansCulottides");
		
		jours_calrep = new Array(13);
		jours_calrep[0] = new Array(1);
		jours_calrep[1] = new Array(30);
		jours_calrep[2] = new Array(30);
		jours_calrep[3] = new Array(30);
		jours_calrep[4] = new Array(30);
		jours_calrep[5] = new Array(30);
		jours_calrep[6] = new Array(30);
		jours_calrep[7] = new Array(30);
		jours_calrep[8] = new Array(30);
		jours_calrep[9] = new Array(30);
		jours_calrep[10] = new Array(30);
		jours_calrep[11] = new Array(30);
		jours_calrep[12] = new Array(30);
		jours_calrep[13] = new Array(5);
		
		// Saison d'Automne
		// ----------------
		jours_calrep[0] = new Array("");
		
		//Jours de "Vendémiaire",
		jours_calrep[1] = new Array("","Raisin","Safran","Châtaigne","Colchique","Cheval","Balsamine",
		"Carotte","Amaranthe","Panais","Cuve","Pomme de terre","Immortelle","Potiron","Réséda","Ane",
		"Belle de nuit","Citrouille","Sarrasin","Tournesol","Pressoir","Chanvre","Pêche","Navet",
		"Amarillis","Bœuf","Aubergine","Piment","Tomate","Orge","Tonneau");
		
		//Jours de "Brumaire",	
		jours_calrep[2] = new Array("","Pomme","Céleri","Poire","Betterave","Oie","Héliotrope",
		"Figue","Scorsonère","Alisier","Charrue","Salsifis","Macre","Topinambour","Endive","Dindon",
		"Chervis","Cresson","Dentelaire","Grenade","Herse","Bacchante","Azerole","Garance","Orange",
		"Faisan","Pistache","Macjonc","Coing","Cormier","Rouleau");
		
		//Jours de "Frimaire",
		jours_calrep[3] = new Array("","Raiponce","Turneps","Chicorée","Nèfle","Cochon","Mâche",
		"Chou-fleur","Miel","Genièvre","Pioche","Cire","Raifort","Cèdre","Sapin","Chevreuil","Ajonc",
		"Cyprès","Lierre","Sabine","Hoyau","Erable sucré","Bruyère","Roseau","Oseille","Grillon",
		"Pignon","Liège","Truffe","Olive","Pelle");
		
		// Saison d'Hiver
		// ----------------
		//Jours de "Nivôse",
		jours_calrep[4]= new Array("","Tourbe","Houille","Bitume","Soufre","Chien","Lave",
		"Terre végétale","Fumier","Salpêtre","Fléau","Granit","Argile","Ardoise","Grès","Lapin",
		"Silex","Marne","Pierre à chaux","Marbre","Van","Pierre à Plâtre","Sel","Fer","Cuivre",
		"Chat","Etain","Plomb","Zinc","Mercure","Crible");
		
		//Jours de "Pluviôse",
		jours_calrep[5] = new Array("","Lauréole","Mousse","Fragon","Perce Neige","Taureau",
		"Laurier thym","Amadouvier","Mézéréon","Peuplier","Coignée","Ellébore","Brocoli","Laurier",
		"Avelinier","Vache","Buis","Lichen","If","Pulmonaire","Serpette","Thlaspi","Thimèle",
		"Chiendent","Trainasse","Lièvre","Guède","Noisetier","Cyclamen","Chélidoine","Traineau");
		
		//Jours de "Ventôse",
		jours_calrep[6] = new Array("","Tussilage","Cornouiller","Violier","Troëne","Bouc","Asaret",
		"Alaterne","Violette","Marceau","Bêche","Narcisse","Orme","Fumeterre","Vélar","Chèvre",
		"Epinard","Doronic","Mouron","Cerfeuil","Cordeau","Mandragore","Persil","Cochiéaria",
		"Pâquerette","Thon","Pissenlit","Sylve","Capillaire","Frêne","Plantoir");
		
		// saison de Printemps
		// -------------------
		//Jours de "Germinal",
		jours_calrep[7] = new Array("","Primevère","Platane","Asperge","Tulipe","Poule","Bette",
		"Bouleau","Jonquille","Aulne","Couvoir","Pervenche","Charme","Morille","Hêtre","Abeille",
		"Laitue","Mélèze","Cigüe","Radis","Ruche","Gainier","Romaine","Marronnier","Roquette",
		"Pigeon","Lilas","Anémone","Pensée","Myrtille","Greffoir");
		
		//Jours de "Floréal",
		jours_calrep[8] = new Array("","Rose","Chêne","Fougère","Aubépine","Rossignol","Ancolie",
		"Muguet","Champignon","Hyacinthe","Rateau","Rhubarbe","Sainfoin","Bâton d'or","Chamerops",
		"Ver à soie","Consoude","Pimprenelle","Corbeille d'or","Arroche","Sarcloir","Statice",
		"Fritillaire","Bourache","Valériane","Carpe","Fusain","Civette","Buglosse","Sénevé",
		"Houlette");
		
		//Jours de "Prairial",
		jours_calrep[9] = new Array("","Luzerne","Hémérocalle","Trèfle","Angélique","Canard",
		"Mélisse","Fromental","Martagon","Serpolet","Faux","Fraise","Bétoine","Pois","Acacia",
		"Caille","Œillet","Sureau","Pavot","Tilleul","Fouche","Barbeau","Camomille","Chèvre-feuille",
		"Caille-lait","Tanche","Jasmin","Verveine","Thym","Pivoine","Chariot");
		
		// Saison d'été
		// ------------
		//Jours de "Messidor",
		jours_calrep[10] = new Array("","Seigle","Avoine","Oignon","Véronique","Mulet","Romarin",
		"Concombre","Echalotte","Absinthe","aucille","Coriandre","Artichaut","Girofle","Lavande",
		"Chamois","Tabac","Groseille","Gesse","Cerise","Parc","Menthe","Cumin","Haricot","Orcanète",
		"Pintade","Sauge","Ail","Vesce","Blé","Chalémie");
		
		//Jours de "Thermidor",
		jours_calrep[11] = new Array("","Epeautre","Bouillon blanc","Melon","Ivraie","Bélier",
		"Prêle","Armoise","Carthame","Mûre","Arrosoir","Panis","Salicorne","Abricot","Basilic",
		"Brebis","Guimauve","Lin","Amande","Gentiane","Ecluse","Carline","Câprier","Lentille",
		"Aunée","Loutre","Myrte","Colza","Lupin","Coton","Moulin");
		
		//Jours de "Fructidor",
		jours_calrep[12] = new Array("","Prune","Millet","Lycoperdon","Escourgeon","Saumon",
		"Tubéreuse","Sucrion","Apocyn","Réglisse","Echelle","Pastèque","Fenouil","Epine vinette",
		"Noix","Truite","Citron","Cardère","Nerprun","Tagette","Hotte","Eglantier","Noisette",
		"Houblon","Sorgho","Ecrevisse","Bigarade","Verge d'or","Maïs","Marron","Panier");
		
		// Jours Complémentaires
		jours_calrep[13] = new Array("","Fête de la Vertu","Fête du Génie","Fête du Travail",
		"Fête de l'Opinion","Fête des Récompenses","Fête de la Révolution");
		
		// 3eme décadi.
		if (jour_rep > 20){
			nom_jour_rep = njour_calrep[jour_rep - 20];
		}
		// 2eme décadi.
		else if (jour_rep > 10 && jour_rep <20){
			nom_jour_rep = njour_calrep[jour_rep - 10];
		}
		// 1er décadi.
		else {
			nom_jour_rep = njour_calrep[jour_rep];
		}
		// Nom du mois
		nom_mois_rep = nmois_calrep[mois_rep];
		// Nom du jour (1 parmi 366)
		nom_jour_annee = jours_calrep[mois_rep][jour_rep];
		// Validation de la touche "Date Répub"
		document.formlr.daterep.disabled=false;
		// Date républicaine complète pour affichage dans message.
		date_rep = "La date saisie en notation grégorienne correspond en notation républicaine à :\n\n";
		date_rep += ("\t\t" + nom_jour_rep + " " + jour_rep + " " + nom_mois_rep + " " + "an " + annee_rep + "\n");
		date_rep += ("\t\t nom du jour : " + nom_jour_annee + "\n\n");
		date_rep += ("Cliquez sur \"annuler\" pour fermer cette fenêtre de message et ");
		date_rep += ("sur \"OK\" pour remplacer la date grégorienne par son équivalent républicain.");
		//alert (date_rep);
		return (date_rep);
	}
}
// ---------------------------------------------------------------------------------
function aff_date_rep(){
	var trsf = false;
	trsf = confirm (date_rep);
	if (trsf) {
		document.formlr.jour.value = jour_rep;
		document.formlr.mois.value = nom_mois_rep.substring(0,4);
		document.formlr.annee.value = annee_rep;
	}
}
// ---------------------------------------------------------------------------------
// Détermination période calendaire
// ---------------------------------------------------------------------------------
var mess_pc = "En France, depuis l'époque la plus lointaine traitée par cet outil, nous avons ";
mess_pc += "connu 3 types de calendrier, le calendrier \"Julien\", le calendrier \"Grégorien\" ";
mess_pc += "et le calendrier \"Républicain\".\n\n";
mess_pc += "La valeur de l’année « Julienne » est trop longue par rapport à l’année solaire de :\n";
mess_pc += "	365j 6h – 365j 5h 48mn 45sec = 11mn et 14 sec soit 674 sec.\n\n";
mess_pc += "En 1582 sous le Pape Grégoire XIII, le retard avait atteint un décalage depuis le ";
mess_pc += "concile de Nicée (325) de 847218 sec, soit 9,8 jours aussi le Pape dans sa bulle ";
mess_pc += "«Inter Gravissimas» décréta t-il que le lendemain du Jeudi 4 octobre serait le ";
mess_pc += "vendredi 15 octobre, supprimant ainsi les 10 jours qui permettaient de corriger ";
mess_pc += "l’erreur et réforma le calendrier en supprimant toutes les années bissextiles des ";
mess_pc += "siècles se terminant par «00» qui ne seraient pas divisibles par 400, ainsi 1600 ";
mess_pc += "est bissextile, 1700 ne l’est pas.\n\n";
mess_pc += "L'écart résiduel n'est actuellement que de 24 heures en trop sur une période de ";
mess_pc += "4000 ans et le calendrier grégorien est toujours notre référence.\n\n";
mess_pc += "Il est à noter que l'Eglise Orthodoxe continue toujours à utiliser le calendrier Julien.\n";
mess_pc += "Le changement de calendrier a eu lieu le :\n";
mess_pc += "Du Julien vers le Grégorien le 4/10/1582,\n";
mess_pc += "Du Grégorien vers le Révolutionnaire le 22/09/1792,\n";
mess_pc += "Du Révolutionnaire vers le Grégorien le 31/12/1805.\n";
function aide_pc() {
	alert(mess_pc);
}

function periode_calendaire(Annee, Mois, Jour){

	if (nb_jours_julien <= nb_jours_ref){
		per_cal = "Julien";
	}
	else if ((nb_jours_julien >= nb_jours_debut_pcr) && (nb_jours_julien <= nb_jours_fin_pcr)){
		per_cal = "Révolutionnaire";
	}
	else {
		per_cal = "Grégorien";
	}
	return per_cal;
}
// ---------------------------------------------------------------------------------
// Détermination du type d'année (Normale ou bissextile ou sextile)
// ---------------------------------------------------------------------------------
var mess_ta = "Pour être bissextile, une année doit avoir son millésime divisible par 4.\n";
mess_ta += "Toutefois, les années dont le millésime est divisible par 100 ne sont bissextiles "; 
mess_ta += "que si leur millésime est aussi divisible par 400.\n";
mess_ta += "1792 de l'ère grégorienne est bissextile ainsi que tous les multiples de 4 qui lui ";
mess_ta += " sont additionnés. 1700, 1800, 1900 ne sont pas bissextiles, 2000 l'est.\n";
mess_ta += "L'an 3 républicain est sextile ainsi que tous les multiples de 4 qui lui sont ";
mess_ta += "additionnés y compris l'an 11 succédant à 1800 (non comptabilisée comme ";
mess_ta += "bissextile quant à elle dans le calendrier Grégorien), d'où un décalage apparaissant ";
mess_ta += "dans l'avancement du calendrier Républicain, par exemple, l'an 12 républicain ";
mess_ta += "commençant le 24 septembre 1803.\n";

function aide_ta() {
	alert(mess_ta);
}
// -------------------------------------------------------------------------------------
var type_an = 0;
function type_annee(){
	if (Annee <1582){
		abx = (Annee) % 4;
		if (abx == 0)  {
			type_an = "bissextile";
		}
	}
	else {
		// 1584 : année bissextile immédiatement après la réforme.
		abx = (Annee - 1584) % 4; 
		snbx = (Annee - 1600) % 100;
		sbx = (Annee - 1600) % 400;
		arbx = (annee_rep - 3) % 4 ;
		//alert (abx + " - " + snbx + " - " + sbx);
		if (abx == 0 && (snbx != 0 || sbx == 0) && format_rep == 0)  {
			type_an = "bissextile";
		}
		else if (format_rep == 0) {
			type_an = "normale";
		}
		else if ((arbx == 0 || annee_rep == 3 ) && format_rep == 1)  {
			type_an = "sextile";
		}
		else if (format_rep == 1) {
			type_an = "commune";
		}
	}
	return type_an;
}
// -------------------------------------------------------------------------------------
// ÉLÉMENTS DU COMPUT ÉCCLÉSIASTIQUE
// -------------------------------------------------------------------------------------
var mess_ce = "Le comput ecclésiastique est la base du fonctionnement de notre calendrier grégorien.\n";
mess_ce += "Il regroupe cinq indications qui sont publiées chaque année par la congrégation des ";
mess_ce += "rites, à Rome, elles permettent de déterminer la date du jour de Pâques et celles de ";
mess_ce += "la plupart des fêtes mobiles. Ce sont :\n"; 
mess_ce += "- Le Cycle Solaire,\n";
mess_ce += "- Le Nombre d'Or,\n";
mess_ce += "- L'Indiction Romaine,\n";
mess_ce += "- L'Epacte,\n";
mess_ce += "- La Lettre Dominicale.\n";
mess_ce += "Ces cinq éléments, qui caractérisent une année, figurent sur certains calendriers, ";
mess_ce += "en petits caractères, au bas de la colonne réservée au mois de février (là où il ";
mess_ce += "reste en fait un peu de place).\n";

function aide_ce() {
	alert(mess_ce);
}
// -------------------------------------------------------------------------------------
// le cycle solaire:
// -------------------------------------------------------------------------------------
var mess_cs = "Les années communes comportent 365 jours, soit 52 semaines plus un jour.\n"; 
mess_cs += "Le 1er janvier se décale de 1 jour d'une année sur l'autre sans les années bissextiles, "; 
mess_cs += "le calendrier se superposerait tous les sept ans, avec le jour supplémentaire introduit ";
mess_cs += "tous les quatre ans, la coïncidence des jours de la semaine se répète tous les 28 ans ";
mess_cs += "dans le calendrier julien.\n";
mess_cs += "- Dans le calendrier grégorien, il faut tenir compte des années séculaires non bissextiles.\n"; 
mess_cs += "- Le cycle solaire donne la position de l'année considérée dans ce cycle de 28 ans.\n";
mess_cs += "il est calculé en ajoutant 1 au reste de la division de l'année + 8 par 28.\n";
mess_cs += "- Le cycle solaire d'une année est: \n";
mess_cs += "cycle_solaire=[Annee + 8]28 + 1 \n";

function aide_cs() {
	alert(mess_cs);
}
// -------------------------------------------------------------------------------------
function cycle_solaire(Annee) {
	return ((( Annee + 8 ) % 28) + 1);
}
// -------------------------------------------------------------------------------------
// le nombre d'or:
// -------------------------------------------------------------------------------------
var mess_no = "- Un astronome Athénien \"Méton\" aurait découvert en 43? avant JC que la durée de ";
mess_no += "235 lunaisons était quasiment égale à celle de 19 années solaires autrement dit ";
mess_no += "qu'au bout de 19 ans, l'âge de la lune était identique aux mêmes dates de l'année.\n";
mess_no += "- Le rang d'une année dans ce cycle de 199 ans , appelé \"cycle de Méton\" est connu ";
mess_no += "sous le nom de nombre d'or en raison du fait qu'il était gravé en lettres d'or sur ";
mess_no += "le temple de Minerve. \n";
mess_no += "- Pour cette raison : chaque année possède un nombre d'or [compris entre 1 et 19] "; 
mess_no += "qui représente le rang qu'elle occupe dans le cycle de Méton. \n";
mess_no += "- Pour la première année d'un cycle de Méton, la lune est nouvelle le 23 janvier. \n";
mess_no += "La lune se décale de 11 jours tous les ans. Ainsi  une table de correspondance peut ";
mess_no += "être établie entre le nombre d'or et la date de la nouvelle lune de janvier et de mars.\n";
mess_no += "- Le nombre d'or défini par: \n";
mess_no += " nombre_d'or = [Annee]19 + 1 ";

function aide_no() {
	alert(mess_no);
}
// -------------------------------------------------------------------------------------
function nombre_dor(Annee) {
	nb_or = Annee % 19;
	return nb_or + 1;
}
// -------------------------------------------------------------------------------------
// le cycle d'indiction romaine
// -------------------------------------------------------------------------------------
var mess_ir = "C'est une période introduite à Rome par l'empereur Constantin en 316 qui désignait ";
mess_ir += "un impôt extraordinaire prélevé tous les 15 ans. \n";
mess_ir += "- Le premier cycle commença le jour de l'an 313 apr. J-C.\n";
mess_ir += "Plus tard elle a été employée comme note chronologique, apposée au bas des chartes ";
mess_ir += "et diplômes. \n";
mess_ir += "- L'indiction n'a aucune relation avec l'astronomie. \n";
mess_ir += "- Elle est encore utilisée dans les bulles de la papauté.\n"; 
mess_ir += "- Elle est calculée en ajoutant 1 au reste de la division de l'année + 2 par 15.\n";
mess_ir += "l' indiction d'une année est donc : \n";
mess_ir += "Indiction=[Y+2]15 + 1 \n";

function aide_ir() {
	alert(mess_ir);
}
// -------------------------------------------------------------------------------------
function indiction(Annee) {
	return ((( Annee + 2) % 15) + 1 );
}
// -------------------------------------------------------------------------------------
// la lettre dominicale
// -------------------------------------------------------------------------------------
var mess_ld = "C'est la lettre de l'alphabet qui correspond au dimanche au sein d'une année en ";
mess_ld += "attribuant la lettre A au premier jour de l'année , la lettre B au deuxième , etc.\n";
mess_ld += "La lettre dominicale est donc une lettre de A à G  qui correspond au premier dimanche ";
mess_ld += "de l'année.\n";
mess_ld += "Le rang de cette lettre est calculé en fonction du rang de la lettre dans l'alphabet"; 
mess_ld += "et varie de 1 à 7.\n";

function aide_ld() {
	alert(mess_ld);
}
// -------------------------------------------------------------------------------------
function lettre_dominicale(Annee) {
	siecle = Math.floor(Annee / 100);
	mod_siecle = Annee % 100;
	array_lettre = new Array("A","B","C","D","E","F","G","A");
	l = (siecle + 2 - mod_siecle - Math.floor(mod_siecle / 4)) %7;
	if (Annee > 1582) {
		l =((2 * siecle - Math.floor(siecle/4)) - mod_siecle - Math.floor(mod_siecle/4))%7;
	}
	if (l < 0){ l = l + 7; }
	lpu = l + 1;
	if (lpu < 0){ lpu = lpu + 7; }
	lettre_dom = array_lettre[l];
	if (Annee % 4 == 0 && mod_siecle % 4 == 0){
		lettre_dom = array_lettre[lpu] + array_lettre[l];
	}
	return lettre_dom;
}
// -------------------------------------------------------------------------------------
// l'épacte :
// -------------------------------------------------------------------------------------
var mess_ep = "Elle mesure l'âge de la lune (nombre de jours après la nouvelle lune) au ";
mess_ep += "premier janvier.\n";
mess_ep += "- dans le calendrier julien, l'âge de la lune est : épacte + 8 \n";
mess_ep += "- dans le calendrier grégorien, l'âge de la lune est : épacte \n";
mess_ep += "Si cette formule donne zéro, l'épacte = 0 et par convention épacte = 30 \n";
mess_ep += "(à cause de l'absence du zéro dans les chiffres romains celui-ci ne pouvait être ";
mess_ep += "représenté).\n"; 
mess_ep += "Comme le nombre d'or peut prendre 19 valeurs entre 1 et 19, il y a ";
mess_ep += "au moins 19 valeurs d'épacte entre 1 et 30.\n";
mess_ep += "(dans ce qui suit [a]b («a modulo b») = reste de la division entière de a par b)\n";
mess_ep += "- dans le calendrier julien l' épacte est définie par : \n";
mess_ep += "	épacte = [11 x (nombre d'or-1)]30 \n";
mess_ep += "- dans le calendrier grégorien l' épacte est définie à partir de l'épacte julienne : \n";
mess_ep += "		épacte = (11 * (nombre d'or -1)) mod 30 \n";
mess_ep += "- il est tenu compte du fait que 3 des 4 siècles ont une année bissextile de moins ";
mess_ep += "que dans le siècle du calendrier julien : \n";
mess_ep += "		épacte = épacte - (3 * siècle) / 4 \n";
mess_ep += "- il est tenu compte du fait que 19 ans n'est pas un nombre exact de mois synodiques \n";
mess_ep += "	épacte = épacte + (8 * siècle + 13) / 25 \n";
mess_ep += "- il est ajouté 8 pour en faire l'âge de la lune au premier janvier \n";
mess_ep += "	épacte = épacte + 8 \n";
mess_ep += "- il est ajouté ou retranché 30 pour que l'épacte ait une valeur entre 1 et 30 \n";

function aide_ep() {
	alert(mess_ep);
}
// -------------------------------------------------------------------------------------
function epacte(Annee) {
	//    calendrier julien
	cep = ( 11 * (nombre_dor( Annee ) - 1) + 8);
	ep =  cep % 30;
	//    calendrier grégorien
	if (Annee > 1582) { // année du changement du calendrier julien en grégorienelse { 
		ep = (cep - siecle + Math.floor ( siecle / 4) + Math.floor(( 8 * siecle + 13) / 25)) % 30;
	}
	if(ep < 0) ep = ep + 30;
	return ep;
}
// -------------------------------------------------------------------------------------
// Date de Pâques
// -------------------------------------------------------------------------------------
var mess_pq = "Elle fut définie au concile de Nicée, en 325. \n";
mess_pq += "- Il fut décidé que Pâques serait «le dimanche qui suit le quatorzième jour de la Lune ";
mess_pq += "qui tombe le 21 mars ou immédiatement après». \n";
mess_pq += "Pâques est donc le premier dimanche suivant la première pleine lune écclésiastique ";
mess_pq += "suivant ou coincidant avec le 21 mars avec cette règle, Pâques ne peut être plus tôt ";
mess_pq += "que le 22 mars et plus tard que le 25 avril. \n";
mess_pq += "- Pâques est le jour de la résurrection du Christ, soit deux jours après la Cène, ";
mess_pq += "dernier repas du Christ et des Apôtres à la fête juive de Pessah (12 nissan), la Pâque ";
mess_pq += "juive qui a lieu le 15 du mois (lunaire) de Nissan. \n";
mess_pq += "Toutefois, le début du mois de Nissan, marqué par la nouvelle lune, tombe au plus tôt ";
mess_pq += "le 8 mars. \n";
mess_pq += "Le quatorzième jour de la Lune tombe donc au plus tôt le 21 mars, ce qui éclaire la ";
mess_pq += "définition adoptée au concile de Nicée. \n";
mess_pq += "- En outre, cette date a une valeur symbolique, puisqu'elle correspond à l'équinoxe de ";
mess_pq += "printemps. \n";
mess_pq += "- La date de Pâques grégorienne en jours de mars est calculé par la formule :\n"; 
mess_pq += "	P = 45 - e' + [e' + l + 1]7 \n";
mess_pq += "	formule dans laquelle :\n";
mess_pq += "	e' = e si e < 24, e' = 25 si e = 24, et e' = e - 30 si e > 24.\n"; 
mess_pq += "- Hélas il y a une exception liée à la présence de deux épactes 25 dans le calendrier ";
mess_pq += "lunaire perpétuel grégorien, notées par exemple 25 et XXV pour les distinguer. \n";
mess_pq += "C'est la seconde qui est utilisée quand le nombre d'or est supérieur à 11, lorsque ";
mess_pq += "l'épacte vaut XXV, il faut prendre 	e' = 26. \n";
mess_pq += "- Avec cette complication nouvelle, il n'est pas surprenant de constater que dans le ";
mess_pq += "calendrier grégorien, les mêmes dates de Pâques ne reviennent que tous les 57 000 ";
mess_pq += "siècles, soit 5,7 millions d'années ! \n";

function aide_pq() {
	alert(mess_pq);
}
// -------------------------------------------------------------------------------------
function paques(Annee) {
	if (Annee < 325) {
		alert ("La date de Pâques n'est definie qu'à partir du concile de Nicée (325 ap. JC)");
		return "xxxxxx" ;
	}
	array_mois = new Array("janvier ","février","mars","avril","mai","juin");
	G = Annee % 19;     // nombre d'or-1
	if (Annee <= annee_reforme && Mois <= mois_reforme && Jour <= jour_reforme) {
		I = ( 19 * G + 15 ) % 30 ; 
		a = Math.floor( Annee / 4 );
		J = ( Annee + a + I ) % 7 ;
	}
	else {
		//C = Math.floor( Annee / 100 );
		a = Math.floor( siecle / 4 );
		b = Math.floor(( 8 * siecle + 13) / 25 );
		H = ( siecle - a - b + 19 * G + 15)% 30 ; // 23 - épacte (modulo 30)
		a = Math.floor( H / 28);
		b = Math.floor( 29 / ( H + 1));
		c = Math.floor(( 21 - G) / 11);
		I = H - a *( 1 - a * b * c);
		J = ( Annee + Math.floor( Annee / 4) + I + 2 - siecle + Math.floor( siecle / 4 )) % 7 ;
	}
	L = I - J;
	a = Math.floor(( L + 40 ) / 44);
	mois_paques = 3 + a;
	a = Math.floor( mois_paques / 4);
	jour_paques = L + 28 - 31 * a;
	date_paques = jour_paques + " " + array_mois [ mois_paques - 1 ] + " " + Annee;
	fetes_mobiles (jour_paques, mois_paques);
 	return date_paques;
}
// -------------------------------------------------------------------------------------
// Fêtes Mobiles
// -------------------------------------------------------------------------------------
var mess_fm = "Le calendrier comporte à la fois des fêtes dont la date est immuable (les fêtes fixes) ";
mess_fm += "et des fêtes dont la date varie d'année en année (les fêtes mobiles).\n";
mess_fm += "Les fêtes mobiles, pour la plupart, sont liées à la date du jour de Pâques et ";
mess_fm += "dépendent donc du Comput Ecclésiastique :\n";
mess_fm += "-	Mardi Gras : 47 jours avant Pâques \n";
mess_fm += "-	Mercredi des Cendres : 46 jours avant Pâques \n";
mess_fm += "-	Dimanche de Carême : 6ème dimanche avant Pâques \n";
mess_fm += "\t(avant 1969 : Quadragésime du latin quadragesimus = quarantième,\n\tpremier dimanche ";
mess_fm += "du Carême).\n";
mess_fm += "-	Mi-Carême : le jeudi, 24 jours avant Pâques \n";
mess_fm += "-	Passion : 2ème dimanche avant Pâques \n";
mess_fm += "-	Rameaux : 1er dimanche avant Pâques \n";
mess_fm += "-	Vendredi Saint : 2 jours avant Pâques \n";
mess_fm += "-	Quasimodo : 1er dimanche après Pâques \n";
mess_fm += "-	Ascension : le jeudi, 39 jours après Pâques \n";
mess_fm += "-	Pentecôte : 7ème dimanche après Pâques \n";
mess_fm += "-	Trinité : 1er dimanche après la Pentecôte \n";
mess_fm += "-	Fête-Dieu : 2ème jeudi après la Pentecôte - célébrée le dimanche suivant. \n";


function aide_fm() {
	alert(mess_fm);
}
// -------------------------------------------------------------------------------------
function fetes_mobiles (jour_paques, mois_paques) {
	
	if (mois_paques == 3){
		nb_jours_annee_paques = 59 + jour_paques;
	}
	else {
		nb_jours_annee_paques = 90 + jour_paques;
	}
	// Datation en calendrier "julien"
	nb_jours_julien_paques = Math.floor((jour_julien + Annee + 1) * annee_julienne) + nb_jours_annee_paques;
	// Datation en calendrier "grégorien"
	nb_jours_gregorien_paques = (Annee * annee_calendaire) + bissext + nb_jours_annee_paques + 6;
	if (nb_jours_julien_paques < nb_jours_ref) {
		nb_jours_paques = nb_jours_julien_paques;
		//alert (" Paques a lieu le " + nb_jours_julien_paques + "ème jour du calendrier julien.");
	}
	else {
		nb_jours_paques = nb_jours_gregorien_paques;
		//alert (" Paques a lieu le " + nb_jours_gregorien_paques + "ème jour du calendrier grégorien.");
	}
	
	ecart_fete = new Array(-47,-46,-42,-24,-14,-7,-2,0,7,39,49,56,63);
	
	nom_fete_ap = new Array("Mardi_Gras","Cendres","Carême","Mi_Carême","Passion","Rameaux","Vendredi_Saint");
	nom_fete_pp = new Array("Pâques","Quasimodo","Ascension","Pentecôte","Trinité","Fête_Dieu");
	nom_fete = nom_fete_ap.concat(nom_fete_pp);
	
	//alert (ecart_fete[6] + " : " + nom_fete[6] + " - " +  ecart_fete[10] + " : " + nom_fete[10]);
	
	m_fevrier = new Array("1-2","2-2","3-2","4-2","5-2","6-2","7-2","8-2","9-2","10-2","11-2","12-2","13-2","14-2","15-2","16-2","17-2","18-2","19-2","20-2","21-2","22-2","23-2","24-2","25-2","26-2","27-2","28-2");
	mb_fevrier = new Array("1-2","2-2","3-2","4-2","5-2","6-2","7-2","8-2","9-2","10-2","11-2","12-2","13-2","14-2","15-2","16-2","17-2","18-2","19-2","20-2","21-2","22-2","23-2","24-2","25-2","26-2","27-2","28-2","29-1");
	m_mars = new Array("1-3","2-3","3-3","4-3","5-3","6-3","7-3","8-3","9-3","10-3","11-3","12-3","13-3","14-3","15-3","16-3","17-3","18-3","19-3","20-3","21-3","22-3","23-3","24-3","25-3","26-3","27-3","28-3","29-3","30-3","31-3");
	m_avril = new Array("1-4","2-4","3-4","4-4","5-4","6-4","7-4","8-4","9-4","10-4","11-4","12-4","13-4","14-4","15-4","16-4","17-4","18-4","19-4","20-4","21-4","22-4","23-4","24-4","25-4","26-4","27-4","28-4","29-4","30-4");
	m_mai = new Array("1-5","2-5","3-5","4-5","5-5","6-5","7-5","8-5","9-5","10-5","11-5","12-5","13-5","14-5","15-5","16-5","17-5","18-5","19-5","20-5","21-5","22-5","23-5","24-5","25-5","26-5","27-5","28-5","29-5","30-5","31-5");
	m_juin = new Array("1-6","2-6","3-6","4-6","5-6","6-6","7-6","8-6","9-6","10-6","11-6","12-6","13-6","14-6","15-6","16-6","17-6","18-6","19-6","20-6","21-6","22-6","23-6","24-6","25-6","26-6","27-6","28-6","29-6","30-6","31-6");
	
	tab_mois = new Array("","","février","mars","avril","mai","juin");
	
	if (Annee % 4 == 0 || (nb_jours_julien_paques > nb_jours_ref && (Annee % 400 == 0 || !Annee % 100 == 0))) {
		per1 = mb_fevrier.concat(m_mars);
		per2 = per1.concat(m_avril);
		per3 = per2.concat(m_mai);
		per_tot = per3.concat(m_juin);
	}
	else {
		per1 = m_fevrier.concat(m_mars);
		per2 = per1.concat(m_avril);
		per3 = per2.concat(m_mai);
		per_tot = per3.concat(m_juin);
	}
	
	
	//alert (jour_paques + "-" +mois_paques);
	var ix_paques = 0;
	// Chercher l'indice de "Pâques"
	for (i = 0 ; i < 151 ; i++){
		if (per_tot[i] == (jour_paques + "-" + mois_paques)) {
			ix_paques = i;
		}
	}
	for (i = 0 ; i < 151 ; i++){
		for (j = 0 ; j < 13 ; j++) {
			if (i == (ix_paques + ecart_fete[j])) {
				pos_tiret = per_tot[i].indexOf("-");
				val_jour = per_tot[i].substring(0 , pos_tiret);
				val_mois = per_tot[i].substring(pos_tiret + 1 , pos_tiret + 2);
				mois_fete = tab_mois[val_mois];
				//alert (pos_tiret + " - " + val_jour + " - " + val_mois + " - " + mois_fete);
				fetes[j] = "\n" + nom_fete[j] + " le : \t" + val_jour + " " + mois_fete + " " + Annee ;
			}
		}
	}
	// Active le bouton "Afficher Fêtes"
	document.formlr.fetes.disabled=false;
	document.formlr.carte.disabled=false;
	return;
}
// -------------------------------------------------------------------------------------
function aff_fetes() {
		if (fetes == "") {
			fetes = "Aucun calcul de fêtes n'est actuellement disponible à l'affichage";
		}
		alert (fetes);
}
// ---------------------------------------------------------------------------------
function aff_carte() {
		siecle = Math.floor( Annee / 100 );
		//alert (siecle);
		if (siecle < 10) {
			siecle = "0" + siecle;
		}
		if (document.referrer != "") {	 
			adresse = "http://www.euratlas.net/AHP/histoire_europe/carte_europe_" + siecle + "00.htm";
		}
		else {
			// exemple : "euratlas_0900.html"
			adresse = "./cartes_euratlas/euratlas_" + siecle + "00.html";
		}
		if (siecle > 20) {
			alert ("Navré, Il n'existe pas de carte pour les périodes plus récentes que le 20eme siècle");
		}
		else {
			fenprops ="top=25,left=0,bgcolor=width=800,height=600,scrollbars=yes,toolbar=0,status=0";
		    fen = window.open(adresse,"Carte_Europe",fenprops);
		}
}
// ---------------------------------------------------------------------------------
 function maj() {
		fenprops = "top=25,left=0,width=500,height=500,scrollbars=yes,toolbar=0,status=0";
		window.open("nouveautes_epoque.html","Nouveautés_époque",fenprops);
}
// ---------------------------------------------------------------------------------

