Calendrier juif minimaliste en javascript

Exemple

La function a mettre dans un script :

function calculeAnnee(num) {
  var an={  } ;
  an.nummois=[0,0,0,0];
  an.nbmois=[0,0,0] ;
  an.molad=[0,0];
  an.numjour=[0,0];
  
  an.numannee=num;
 // Calcul du nombre de mois 
  for (i = 0; i <= 3; i++) { 
   an.nummois[i]=Math.floor((235*(an.numannee-1+i)-234)/19);
  }
  for (i = 0; i <= 2; i++) { 
   an.nbmois[i]=an.nummois[i+1]-an.nummois[i];
  }	
// Calcul des 2 naissances de lune et des deux Rosh Hashana  
  for (i = 0; i <= 1; i++) { 
   an.molad[i]=an.nummois[i+1]*765433+63924;
   var jour = Math.floor(an.molad[i] / 1080 / 24);
   var joursem = jour - 7 * Math.floor(jour / 7);
   var heure = an.molad[i]- jour * 1080 * 24;
   if (joursem == 1 || joursem == 4 || joursem == 6 ){
     jour = jour + 1;
   } else if (an.nbmois[i+1] == 12 && joursem == 3 && heure >= 16404 ){
   jour = jour + 2
   }else if (an.nbmois[i]== 13 && joursem == 2 && heure >= 23269 ){
    jour = jour + 1
   }
   an.numjour[i]=jour;
   // calcrh = #1/1/1900# + (jour - 2067023 - 2)   
  }
// Infos anecdotiques  
  an.nbjour=an.numjour[1]-an.numjour[0];
  an.dec=an.nbjour-30*an.nbmois[1]+6;
  
 // Calcul des fĂȘtes les plus connues 
  an.rosh=new Date();
  an.rosh.setFullYear(1900,0,1,0,0,0,0);
  an.rosh.setDate(an.numjour[0]-2067024)  
  an.kippour=new Date(an.rosh);
  an.kippour.setDate(an.kippour.getDate()+9);  
  an.soukkot=new Date(an.rosh);
  an.soukkot.setDate(an.rosh.getDate()+14);  
  an.nbjour=an.numjour[1]-an.numjour[0];
  an.decalage=an.nbjour-30*an.nbmois[1]+6;
  an.hannouka=new Date(an.rosh);
  dechak=83;
  if (an.dec==1)
   dechak=84
  an.hannouka.setDate(an.rosh.getDate()+dechak);  
  debadar=148+an.dec;
  if (an.nbmois[1]==13)
   debadar=debadar+30;
  an.pourim=new Date(an.rosh);
  an.pourim.setDate(an.rosh.getDate()+debadar+13);  
  an.pessah=new Date(an.rosh);
  an.pessah.setDate(an.rosh.getDate()+debadar+43);  
  an.shavouot=new Date(an.rosh);
  an.shavouot.setDate(an.rosh.getDate()+debadar+93);  
  
  return an;
}

Exemple d'utilisation :

  a=calculeAnnee(5774);
  document.write("",5774,":",a.nbmois[1],
    " mois ", a.nbjour," jours, dec :",a.dec,"
"); document.write("Rosh :",formatDate(a.rosh),"
"); document.write("Kippour : ",formatDate(a.kippour),"
"); document.write("Soukkot : ",formatDate(a.soukkot),"
"); document.write("Hannouka : ", formatDate(a.hannouka),"
"); document.write("Pourim : ", formatDate(a.pourim),"
"); document.write("Pessah:",formatDate(a.pessah),"
"); document.write("Shavouot",formatDate(a.shavouot), "

");