//Définition de variables globales
var vRevJour = 0
var vRevMois = ""
var vRevAn = ""
var vDate = ""
var vGregMois = 0
var vGregJour = 0
var vGregAn = 0
var result = ""

// Définition du squelette tableau
function Tableau(n){
	this.length = n
	for (var i = 1; i <= n; i++) {
		this[i] = 0
	}
	return this
}

//Définition du tableau des mois
function tMois(MoisRep, NbjMoisRep) {
   this.MoisRep = MoisRep    
   this.NbjMoisRep = NbjMoisRep
}

// Remplissage du tableau des mois républicain et cumul jours
tRevMois = new Tableau(13)
tRevMois[1] = new tMois("Vendémiaire",30)
tRevMois[2] = new tMois("Brumaire",30)
tRevMois[3] = new tMois("Frimaire",30)
tRevMois[4] = new tMois("Nivôse",30)
tRevMois[5] = new tMois("Pluviôse",30)
tRevMois[6] = new tMois("Ventôse",30)
tRevMois[7] = new tMois("Germinal",30)
tRevMois[8] = new tMois("Floréal",30)
tRevMois[9] = new tMois("Prairial",30)
tRevMois[10] = new tMois("Messidor",30)
tRevMois[11] = new tMois("Thermidor",30)
tRevMois[12] = new tMois("Fructidor",30)
tRevMois[13] = new tMois("Complémentaires",5)

//Définition du tableau des année
function tAn(AnRep, NbjAnRep){
   this.AnRep = AnRep
   this.NbjAnRep = NbjAnRep
}

// Remplissage du tableau des années républicaines et cumul jours
tRevAn = new Tableau(14)
tRevAn[1] = new tAn("I",365)
tRevAn[2] = new tAn("II",365)
tRevAn[3] = new tAn("III",366)
tRevAn[4] = new tAn("IV",365)
tRevAn[5] = new tAn("V",365)
tRevAn[6] = new tAn("VI",365)
tRevAn[7] = new tAn("VII",366)
tRevAn[8] = new tAn("VIII",365)
tRevAn[9] = new tAn("IX",365)
tRevAn[10] = new tAn("X",365)
tRevAn[11] = new tAn("XI",366)
tRevAn[12] = new tAn("XII",365)
tRevAn[13] = new tAn("XIII",365)
tRevAn[14] = new tAn("XIV",100)

// Définition du tabelau des mois grégorien
tMoisGreg = new Tableau(12)
tMoisGreg[1] = "Janvier"
tMoisGreg[2] = "Février"
tMoisGreg[3] = "Mars"
tMoisGreg[4] = "Avril"
tMoisGreg[5] = "Mai"
tMoisGreg[6] = "Juin"
tMoisGreg[7] = "Juillet"
tMoisGreg[8] = "Août"
tMoisGreg[9] = "Septembre"
tMoisGreg[10] = "Octobre"
tMoisGreg[11] = "Novembre"
tMoisGreg[12] = "Décembre"

// fonction de conversion de la date
function ConvDat(form){
vRevJour = form.RevJour.options[form.RevJour.selectedIndex].text
vRevMois = form.RevMois.options[form.RevMois.selectedIndex].text
vRevAn = form.RevAn.options[form.RevAn.selectedIndex].text
vDate = vRevJour + " " + vRevMois + " An " + vRevAn

if (vRevMois == "Complémentaires")
 {
    if (vRevAn != "III" && vRevAn != "VII" && vRevAn != "XI")
	 {
	     if (vRevJour > 5)
		   {
             alert("Choix impossible, le " + vDate + " n'existe pas")
             return
           }
     }
  }

if (vRevMois == "Complémentaires")
 {
    if (vRevAn == "III" || vRevAn == "VII" || vRevAn == "XI")
	 {
	     if (vRevJour > 6)
		   {
            alert("Choix impossible, le " + vDate + " n'existe pas")
             return
           }
     }
  }
  
// Calcul du jour julien par rapport à la date républicaine saisie
var vPremJour = 2375839.5
var vDernJour = 2381052.5
var vCumJour = 0

vCumJour = vPremJour

for (var i=1; i<=form.RevAn.selectedIndex; i++) {
vCumJour += tRevAn[i].NbjAnRep
}

for (var i=1; i<=form.RevMois.selectedIndex; i++) {
vCumJour += tRevMois[i].NbjMoisRep
}

vCumJour += form.RevJour.selectedIndex

var vZ = 0
var vF = 0
var vA = 0
var vA2 = 0
var vB = 0
var vC = 0
var vD = 0
var vE = 0

vZ = Math.floor(vCumJour + 0.5)
vF = vCumJour + 0.5 - vZ
if (vZ >= 2299161){
 vA2 = Math.floor((vZ - 1867216.25) / 36524.25)
 vA = vZ + 1 + vA2 - Math.floor(vA2/4)}
  else
  {vA = vZ}
vB = vA + 1524
vC = Math.floor((vB - 122.1) / 365.25)
vD = Math.floor(365.25 * vC)
vE = Math.floor((vB - vD) / 30.6001)
// Détermination du jour grégorien
vGregJour = vB - vD - Math.floor(30.6001 * vE) + vF
// Détermination du mois grégorien
if (vE <= 13)
	{
	vGregMois = vE - 1}
	else
	{vGregMois = vE - 13}

// Détermination de l'année grégorienne
if (vGregMois > 2)
	{
	vGregAn = vC - 4716}
	else
	{vGregAn = vC - 4715}

MoisGreg(vGregMois)
alert("Le " + vDate + " correspond au " + vGregJour + "  " + vMoisGregLet + "  " + vGregAn + "")
}
  
var vMoisGregLet = ""
function MoisGreg(nummois){
vMoisGregLet = tMoisGreg[vGregMois]
return vMoisGregLet
}