
Calend = new Array (13) ;
Calend[1]= "Janvier " ;
Calend[2]= "F&eacute;vrier " ;
Calend[3]= "Mars " ;
Calend[4]= "Avril " ;
Calend[5]= "Mai " ;
Calend[6]= "Juin " ;
Calend[7]= "Juillet " ;
Calend[8]= "Aout " ;
Calend[9]= "Septembre " ;
Calend[10]= "Octobre " ;
Calend[11]= "Novembre " ;
Calend[12]= "D&eacute;cembre " ;

mhs = new Array(14) ;
mhs[1]="Tichri";
mhs[2]="Hechvan";
mhs[3]="Kislev";
mhs[4]="Tevet";
mhs[5]="Chevat";
mhs[6]="Adar_I";
mhs[7]="Adar_II";
mhs[8]="Nissan";
mhs[9]="Iyar";
mhs[10]="Sivan";
mhs[11]="Tamouz";
mhs[12]="Av";
mhs[13]="Eloul";

js = new Array(8) ;
js[0] = "Samedi" ;
js[1] = "Dimanche" ;
js[2] = "Lundi" ;
js[3] = "Mardi" ;
js[4] = "Mercredi" ;
js[5] = "Jeudi" ;
js[6] = "Vendredi" ;
js[7] = "Samedi" ;

JoursH = new Array(8) ;
JoursH[1] = "Yom Richon " ;
JoursH[2] = "Yom Sheni " ;
JoursH[3] = "Yom Shelechi " ;
JoursH[4] = "Yom Revihi " ;
JoursH[5] = "Yom Hamichi " ;
JoursH[6] = "Yom Shishi " ;
JoursH[7] = "Shabbat " ;

pj = new Array(8) ;
fci = new Array(8) ;

jmh = new Array(14) ;
jmh[1]=30;
jmh[4]=29;
jmh[5]=30;
jmh[6]=30;
jmh[7]=29;
jmh[8]=30;
jmh[9]=29;
jmh[10]=30;
jmh[11]=29;
jmh[12]=30;
jmh[13]=29;

fs=new Array(110) ;
fs[1]="ROCH-HACHANA" ;
fs[2]="JEUNE GUEDALIA" ;
fs[3]="KIPPOUR" ;
fs[4]="SOUCCOT" ;
fs[5]="HANOUCA" ;
fs[6]="JEUNE 10 TEVET" ;
fs[7]="TOU BICHEVAT" ;
fs[8]="JEUNE D'ESTHER" ;
fs[9]="POURIM" ;
fs[10]="PESSA'H" ;
fs[11]="LAG BA'OMER" ;
fs[12]="CHAVOU'OT" ;
fs[13]="JEUNE 17 TAMOUZ" ;
fs[14]="JEUNE DU 9 AV" ;
fs[15]="TOU BEAV" ;
fs[16]="'HANOUCA" ;
fs[21]="HOCHAANA RABBA" ;
fs[22]="CHEMINI ATSERET" ;
fs[23]="SIMHAT TORAH" ;
fs[25]="JEUNE 1ERS NES" ;
fs[51]="Berechit" ;
fs[52]="Noa'h" ;
fs[53]="Lekh-Lekha" ;
fs[54]="Vayera" ;
fs[55]="Haye-Sarah" ;
fs[56]="Toledot" ;
fs[57]="Vayetse" ;
fs[58]="Vayichla'h" ;
fs[59]="Vayechev" ;
fs[60]="Mikets" ;
fs[61]="Vayigache" ;
fs[62]="Vay'hi" ;
fs[63]="Chemot" ;
fs[64]="Vaera" ;
fs[65]="Bo" ;
fs[66]="Bechalla'h" ;
fs[67]="Yitro" ;
fs[68]="Michpatim" ;
fs[69]="Terouma" ;
fs[70]="Tetsavé" ;
fs[71]="Ki-Tissa" ;
fs[72]="Vayakhel" ;
fs[73]="Pekoude" ;
fs[74]="Vayikra" ;
fs[75]="Tsav" ;
fs[76]="Chemini" ;
fs[77]="Tazria" ;
fs[78]="Metsora" ;
fs[79]="A'hare-Mot" ;
fs[80]="kedochim" ;
fs[81]="Emor" ;
fs[82]="Behar" ;
fs[83]="Be'houkotai" ;
fs[84]="Bemidbar" ;
fs[85]="Nasso" ;
fs[86]="Behaalotkha" ;
fs[87]="Chelah-Leha" ;
fs[88]="Kora'h" ;
fs[89]="'Houkat" ;
fs[90]="Balak" ;
fs[91]="Pin'has" ;
fs[92]="Mattot" ;
fs[93]="Mass'e" ;
fs[94]="Devarim" ;
fs[95]="Vaet'hannan" ;
fs[96]="'Ekev" ;
fs[97]="Reeh" ;
fs[98]="Choftim" ;
fs[99]="Ki-Tetse" ;
fs[100]="Ki-Tavo" ;
fs[101]="Nitsavim" ;
fs[102]="Vayelekh" ;
fs[103]="Haazinou" ;
fs[104]="V.Haberakha" ;
fs[50]=fs[103] ;
fs[49]=fs[102] ;

function InitDate() {
        ah = new Date()
        document.forms[0].jour.value = ah.getDate() ;
        document.forms[0].mois.selectedIndex = ah.getMonth() ;
        an = ah.getYear() ;
        document.forms[0].annee.value = (an<200) ? an+1900 : an;
		Convertir(0);
}

//annee embolismiques ?
function gosub3190() {
        x=ah-(Math.floor(ah/19)*19) ;
        mhs[6]="Adar_I" ;
        if (x==0||x==3||x==6||x==8||x==11||x==14||x==17) mois=13 ;
        else {
                mois=12 ;
                mhs[6]="Adar" ;
        }
}

//conversion
function goto3360() {
        mn=Math.floor(hl/18) ;
        hl=hl-18*mn ;
        hr=Math.floor(mn/60) ;
        mn=mn-60*hr ;
        j=Math.floor(hr/24) ;
        hr=hr-24*j ;
        sem=Math.floor(j/7) ;
        j=j-7*sem ;
        //conversion partielle
        if (j<1) j=j+7 ;
        if (j>7) j=j-7 ;
}

// report ?
function gosub3460() {
        if (j==2||j==3||j==5||j==7) return
        j=j+1 ;
        if (j<1) j=j+7 ;
        if (j>7) j=j-7 ;
        v=1 ;
}

//jour de roch-hachana
function gosub3540() {
        v=0 ;
        gosub3460() ; // report ?
        if (v==1) return
        if (hr>=18) {
                j=j+1 ;
                if (j<1) j=j+7 ;
                if (j>7) j=j-7 ;
                gosub3460() ;
                return ;
        }
        if (mois==13) return ;
        molad = hr*1080+mn*18+hl ;
        if (j==3&&molad>=9924) j=5 ;
        if (j==2&&molad>=16789) {
                ah=ah-1 ;
                gosub3190() ;
                if (mois==13) j=3 ;
                ah=ah+1 ;
                gosub3190()
        }
}

//caracteristiques partielles
function gosub2900() {
        gosub3190() ; //annee embolismiques ?
        cyl=Math.floor((ah-1)/19) ;
        rest=ah-1-19*cyl ;
        if (rest<19) emb=6 ;
        if (rest<17) emb=5 ;
        if (rest<14) emb=4 ;
        if (rest<11) emb=3 ;
        if (rest<8) emb=2 ;
        if (rest<6) emb=1 ;
        if (rest<3) emb=0 ;
        com=rest-emb ;
        molti=69715*cyl+113196*com+152869*emb+57444 ;
        hl=molti ;
        goto3360() ;//conversion
        gosub3540() ; //jour de roch-hachana
}

// annee bissextile
function gosub4210() {
        fev=28 ;
        z=28 ;
        if (ac==Math.floor(ac/4)*4) {
                fev=29 ;
                z=29 ;
        }
        if (ac==Math.floor(ac/100)*100) fev=28 ;
        if (ac==Math.floor(ac/400)*400) fev=29 ;
        dctn=34-fev+Math.floor((ac-1701)/100) ;
        dctn=dctn-Math.floor((ac-1601)/400) ;
        if (ac<1700) dctn=33-fev ;
        if (ac<1583) {
                dctn=23-z ;
                fev=z ;
        }      
}

//caracteristiques completes de l'annee juive
function gosub2780() {
        ah=ah+1 ;
        gosub2900() ; //caracteristiques partielles
        ros=j ;
        ah=ah-1 ;
        gosub2900() ;
        ro=j ;
        molni=molti+56598 ;
        hl=molni
        if (ros<=ro) ros=ros+7 ;
        u = ros-ro ;
        h = 29 ;
        k = 30 ;
        if (mois==12) u=u+2 ;
        if (u==5) {
                nis=ro+mois-11 ;
                k=29 ;
        }
        if (u==6) nis=ro+mois-10 ;
        if (u==7) {
                nis=ro+mois-9 ;
                h=30 ;
        }
        if (nis>7) nis=nis-7 ;
}

//caracteristiques completes
function gosub3970() {
        gosub4210() ;
        gosub2780() ; //caract.completes
        rs=cyl*1565+com*282084-emb*483349-191802 ;
        ms=mois-12 ;
        hl=molni+rs ;
        goto3360() ;
        jtkn = j ;
        hl = rs ;
        goto3360() ;
        if (j==7) sem=sem-1 ;
        if (sem<0) sem=0 ;
        qrs=j+7*sem ;
        j=nis+qrs-1-Math.floor(qrs/7)*7 ;
        if (j<1) j=j+7 ;
        if (j>7) j=j-7 ;
        jrs=j ;
        if (jtkn<jrs) jrs=jrs-7 ;
        if ((jtkn-jrs)>4) jrs=jrs+7 ;
        dhtn=qrs+jtkn-jrs ;        
}

//Intervalle civil puis hebr
function gosub4460() {
        if (mc==9) ic=-184-fev ;
        if (mc==10) ic=-154-fev ;
        if (mc==11) ic=-123-fev ;
        if (mc==12) ic=-93-fev ;
        if (mc==1) ic=-62-fev ;
        if (mc==2) ic=-31-fev ;
        if (mc==3) ic=-31 ;
        if (mc==4) ic=0 ;
        if (mc==5) ic=30 ;
        if (mc==6) ic=61 ;
        if (mc==7) ic=91 ;
        if (mc==8) ic=122 ;
        ic=ic+qc-dctn ;
        ih=106+mois+h+k+dhtn ;
        ich=ic+ih+JN ;
        while (true) {
                j=ich-(Math.floor(ich/7)*7)+ro-1 ;
                if (j<1) j=j+7 ;
                if (j>7) j=j-7 ;
                jah=295+30*ms+h+k ;
                if (ich>jah) {
                        ah=ah+1 ;
                        gosub2780() ;
                        ich=ich-jah ;
                }
                else {
                        if (ich<=jah) { mh=13 ; jah=jah-29 ; }
                        if (ich<=jah) { mh=12 ; jah=jah-30 ; }
                        if (ich<=jah) { mh=11 ; jah=jah-29 ; }
                        if (ich<=jah) { mh=10 ; jah=jah-30 ; }
                        if (ich<=jah) { mh=9 ; jah=jah-29 ; }
                        if (ich<=jah) { mh=8 ; jah=jah-30 ; }
                        if (ich<=jah) { mh=7 ; jah=jah-29*ms ; }
                        if (ich<=jah) { mh=6 ; jah=jah-29-ms ; }
                        if (ich<=jah) { mh=5 ; jah=jah-30 ; }
                        if (ich<=jah) { mh=4 ; jah=jah-29 ; }
                        if (ich<=jah) { mh=3 ; jah=jah-k ; }
                        if (ich<=jah) { mh=2 ; jah=jah-h ; }
                        if (ich<=jah) { mh=1 ; jah=jah-30 ; }
                        qh=ich-jah ;
                        if (qh>0) return ;
                        ah=ah-1 ;
                        gosub2780() ;
                        ms=mois-12 ;
                        ich=ich+295+30*ms+h+k ;
                }
        }
}

function gosub4910() {
        if (mh==1) ih=-118-k-h-ms ;
        if (mh==2) ih=-88-k-h-ms ;
        if (mh==3) ih=-88-k-ms ;
        if (mh==4) ih=-88-ms ;
        if (mh==5) ih=-59-ms ;
        if (mh==6) ih=-29-ms ;
        if (mh==7) ih=0 ;
        if (mh==8) ih=29*ms ;
        if (mh==9) ih=29*ms+30 ;
        if (mh==10) ih=29*ms+59 ;
        if (mh==11) ih=29*ms+89 ;
        if (mh==12) ih=29*ms+118 ;
        if (mh==13) ih=29*ms+148 ;
        ih=ih+qh-dhtn+ms+DIFF ;
        ic=184+fev+dctn-ms ;
        ihc=ih+ic ;
        VF=true ;
        while (VF) {
                VF=false ;
                gosub4210() ;
                jac=337+fev ;
                y=0 ;
                if (ihc>=jac) {
                        ihc=ihc-jac ;
                        ac=ac+1 ;
                        y=1
                }
                if (y==1) VF=true ;
        }
        if (ihc<=jac) { mc=8 ; jac=jac-31 ;}
        if (ihc<=jac) { mc=7 ; jac=jac-31 ;}
        if (ihc<=jac) { mc=6 ; jac=jac-30 ;}
        if (ihc<=jac) { mc=5 ; jac=jac-31 ;}
        if (ihc<=jac) { mc=4 ; jac=jac-30 ;}
        if (ihc<=jac) { mc=3 ; jac=jac-31 ;}
        if (ihc<=jac) { mc=2 ; jac=jac-fev ;}
        if (ihc<=jac) { mc=1 ; jac=jac-31 ;}
        if (ihc<=jac) { mc=12 ; jac=jac-31 ; ac=ac-1 }
        if (ihc<=jac) { mc=11 ; jac=jac-30 ;}
        if (ihc<=jac) { mc=10 ; jac=jac-31 ;}
        if (ihc<=jac) { mc=9 ; jac=jac-30 ;}
        qc=ihc-jac ;
        if (qc<1) {
                qc=qc+31 ;
                mc=8 ;
        }
        j=jtkn+ih ;
        if (mois==13) j=j-1 ;
        sem=Math.floor(j/7) ;
        j=j-7*sem ;
        if (j<1) j=j+7 ;
        if (j>7) j=j-7 ;
}

function gosub6200() {
        f=0 ;
        if (mh==1) {
                if (qh==1||qh==2) f=1 ;
                if ((qh==3&&j<7)||(qh==4&&j==1)) f=2 ;
                if (qh==10) f=3 ;
                if (qh==15||qh==16) f=4 ;
                if (qh>=17&&qh<=20) f=4 ;
                if (qh==21) f=21 ;
                if (qh==22) f=22 ;
                if (qh==23) f=23 ;
                return ;                
        }
        if (mh==3&&qh>24) f=16 ;
        if (mh==4) {
                if (qh<(33-k)) f=16 ;
                if ((qh==10&&j<7)||(qh==11&&j==1)) f=6 ;
        }
        if ((mh==6&&mois==12)||mh==7) {
                if ((qh==11&&j==5)||(qh==13&&j<7)) f=8 ;
                if (qh==14) f=9 ;
        }
        if (mh==8) {
                if ((qh==14&&j<7)||(qh==12&&j==5)) f=25 ;
                if (qh==15||qh==16||qh==21||qh==22) f=10 ;
                if (qh>=17&&qh<=20) f=10 ;
        }
        if (mh==10&&(qh==6||qh==7)) f=12 ;
        if (mh==11&&((qh==17&&j<7)||(qh==18&&j==1))) f=13 ;
        if (mh==12) {
                if ((qh==9&&j<7)||(qh==10&&j==1)) f=14;
        }
        return ;
}

function gosub5310() {
        for (x=1;x<=7;x++) {
                pj[x]=150 ;
                fci[x]=0 ;
        }                
        hk = h + k ;
        fci[3] = 1 ;
        fci[4] = 2 ;
        fci[5] = 2
        if (mois==13) {
                if ((ro==2&&hk==60)||(ro==3&&hk==59)) {
                        fci[4]=3 ;
                        fci[5]=3 ;
                        pj[6]=92 ;
                }
                if ((ro==2&&hk==58)||(ro==7&&hk==60)) {
                        fci[5]=3 ;
                        pj[5]=89 ;
                        pj[6]=92 ;
                        pj[7]=101 ;
                }
                if (ro==5&&hk==60) pj[7]=101 ;
                if (ro==7&&hk==58) { pj[6]=92 ; pj[7]=101 } ;
        }
        else { 
                pj[1]=72 ;
                pj[2]=77 ;
                pj[3]=79 ;
                pj[4]=82 ;
                pj[5]=89 ;
                pj[6]=92 ;
                pj[7]=101 ;
                if ((ro==2&&hk==60)||(ro==3&&hk==59)) fci[5]=3 ;
                if ((ro==2&&hk==58)||(ro==7&&hk==60)) pj[5]=150 ;
                if (ro==5&&hk==60) { pj[1]=150 ; pj[5]=150 ; pj[7]=150 ; }
                if (ro==5&&hk==59) { fci[4]=3 ; fci[5]=3 ; pj[5]=150 ; pj[7]=150 ; }
                if (ro==7&&hk==58) { pj[5]=150 ; pj[7]=150 ; }
        }
        return ;
}

function gosub6670() {
        ns=0;
        gosub5310() ;
        if (mois==12) { jmh[6]=29 ; jmh[7]=0 ; }
        else { jmh[6]=30 ; jmh[7]=29 ;}

        for (x=1;x<=(mh-1);x++) ns=ns+jmh[x]
        ns=(Math.floor((ns+qh-23)/7))+52 ;
        if (mh>1||(qh>23&&mh==1)) fc=3 ;
        if (mh>8||(qh>22&&mh==8)) fc=4 ;
        if (mh>10||(qh>6&&mh==10)) fc=5 ;
        if (f==0&&mh==1) {
                if (qh==13||qh==12||qh==3||qh==8) f=50 ;
                if (qh==5||qh==6) f=49 ;
        }
        if (f==0) f=ns-fci[fc] ;
        for (x=1;x<=7;x++) { if (f>pj[x]) f=f+1  ; }
        for (x=1;x<=7;x++) {
                fh=fs[f] ;
                if (f==16) fh=fh+" "+fs[ns-fci[fc]] ;
                if (f==pj[x]) {
                        fh=fh+" "+fs[f+1] ;
                        return ;
                }
        }
}

function EcritureH(nb) 
{
        millier=Math.floor(nb/1000) ;
        nb-=millier*1000 ;
        centaine=Math.floor(nb/100) ;
        nb-=centaine*100 ;
        dizaine=Math.floor(nb/10) ;
        nb-=dizaine*10 ;
        unique = -1 ;
        premier = true ;
        if (millier) unique++ ;
        if (centaine) unique++ ;
        if (dizaine) unique++ ;
        if (nb) unique++ ;
        if (!unique) document.write("<img src='images/AppS.gif'>") ;
        if (nb+dizaine*10==15||nb+dizaine*10==16) {
                document.write("<img src='images/"+(nb+1)+".gif'><img src='images/AppD.gif'><img src='images/9.gif'>") ;
                premier=false ;
        }
        else {
                if (nb) {
                        document.write("<img src='images/"+nb+".gif'>") ;
                        if (unique&&premier) document.write("<img src='images/AppD.gif'>") ;
                        premier = false ;
                }        
                if (dizaine) {
                        if (premier&&unique) document.write("<img src='images/"+dizaine+"0s.gif'>") ;
                        else document.write("<img src='images/"+dizaine+"0.gif'>") ;
                        if (unique&&premier) document.write("<img src='images/AppD.gif'>") ;
                        premier = false ;
                }
        }
        if (centaine%4!=0) {
                document.write("<img src='images/"+centaine%4+"00.gif'>") ;
                if (unique&&premier) document.write("<img src='images/AppD.gif'>") ;
                premier = false ;
        }
        while (centaine>=4) {
                document.write("<img src='images/400.gif'>") ;
                centaine-=4;
                if (unique&&premier) document.write("<img src='images/AppD.gif'>") ;
                premier = false ;
        }
        if (millier) document.write("<img src='images/"+millier+".gif'>") ; 
}

function Convertir(i) 
{
		qc=parseInt(document.forms[i].jour.value) ;
		qcc=qc ;
		mc=parseInt(document.forms[i].mois.selectedIndex)+1 ;
		mcc=mc ;
		ac=parseInt(document.forms[i].annee.value) ;
		acc=ac ;
		JN=0 ;
		if (mc>8) ac=ac+1 ;
		ah=ac+3760 ;
		gosub3970() ; //caracteristiques completes
		gosub4460() ; //Intervalle civil puis hebr      
		document.forms[i].jourh.value = qh ;
		document.forms[i].moish.value = mhs[mh] ;
		document.forms[i].anh.value = ah;
}

