//Fonction qui a en entrée une année à 4 chiffres et qui retourne les 3 jours fériés au format "jj/mm
//le lundi de paques dans feriesaleatoires[0], le jeudi de l'ascension dans feriesaleatoires[1] et le lundi de pentecôte dans feriesaleatoires[2
//Selon l'alorithme de Thomas O'Beirne...
// !! Valable uniquement pour les années de 1900 à 2099 inclus !!

  function jours_feries(year)
  {

    var M;
		M = year;
 
                                //ALGORITHME DE Thomas O'Beirne
    n = (M - 1900);             //année - 1900
    a = (n % 19);               //reste de la division entière par 19 (correspond au modulo)
    a2= (a * 7 + 1);            //...
    b = Math.floor(a2 / 19);    //utilisation de la librairie math pour avoir le résultat entier de la division par 19
    b2= ((11 * a) - b + 4);     //...
    c = (b2 % 29);              //...
    d = Math.floor(n / 4);      //...
    d2= (n - c + d + 31);       //...
    e = (d2 % 7);               //...
    P = (25 - c - e);           //L'algorithme renseigne un indice P, qui selon qu'il soit égal, sup. ou inf. à 0 déterminera le jour de paques
    //alert("l'indice P = "+P);

    
    
    //*****************************************
    //* 1er cas: l'indice P est supérieur à 0 *
    //*****************************************
    if (P > 0) {

    paques = (P + 1);
    paques_aff = paques;
    if(paques_aff < 10){paques_aff = ("0"+paques_aff)}
    //alert("En "+sAnnee+", Le lundi de Pâques sera le "+paques_aff+" Avril \n "+paques_aff+"/04/"+M);
    feriesaleatoires[0] = paques_aff+"/04";
    
    ascension = ((paques + 38) - 30);  
    ascension_aff = ascension;
      
      if (ascension < 31){
      mois = 0;
      if(ascension_aff < 10){ascension_aff = ("0"+ascension_aff)}
      //alert("Le jeudi de l'Ascension sera le "+ascension_aff+" Mai \n "+ascension_aff+"/05/"+M);
      feriesaleatoires[1] = ascension_aff+"/05";
      }
      
      if (ascension > 31){
      ascension = ascension - 31;
      ascension_aff = ascension;
      mois = 1;
      if(ascension_aff < 10){ascension_aff = ("0"+ascension_aff)}
      //alert("Le jeudi de l'Ascension sera le "+ascension_aff+" Juin \n "+ascension_aff+"/06/"+M);
      feriesaleatoires[1] = ascension_aff+"/06";
      }
      
    pentecote = (ascension + 11);
    pentecote_aff = pentecote;
      
      if ((pentecote > 31) && (mois == 0)){
      pentecote = (pentecote - 31);
      pentecote_aff = pentecote;
      if(pentecote_aff < 10){pentecote_aff = ("0"+pentecote_aff)}
      //alert("Le lundi de Pentecôte sera le "+pentecote_aff+" Juin \n "+pentecote_aff+"/06/"+M);
      feriesaleatoires[2] = pentecote_aff+"/06";
      }
      
      else if ((pentecote < 31) && (mois == 0)){
      if(pentecote_aff < 10){pentecote_aff = ("0"+pentecote_aff)}      
      //alert("Le lundi de Pentecôte sera le "+pentecote_aff+" Mai \n "+pentecote_aff+"/05/"+M);
      feriesaleatoires[2] = pentecote_aff+"/05";
      }
      
      else if ((pentecote < 31) && (mois == 1)){
      if(pentecote_aff < 10){pentecote_aff = ("0"+pentecote_aff)}      
      //alert("Le lundi de Pentecôte sera le "+pentecote_aff+" Juin \n "+pentecote_aff+"/06/"+M);
      feriesaleatoires[2] = pentecote_aff+"/06";
      }
    }

    //*************************************
    //* 2ème cas: l'indice P est égal à 0 *
    //*************************************
    if (P == 0) {
    paques = 1;
    ascension = ((paques + 38) - 30);
    pentecote = (ascension + 11);
    
    if (paques < 10){paques = ("0"+paques)}
    //alert("En "+sAnnee+", Le lundi de Pâques sera le "+paques+" Avril \n "+paques+"/04/"+M);
    feriesaleatoires[0] = paques+"/04";
    
    if (ascension < 10){paques = ("0"+ascension)}    
    //alert("Le jeudi de l'Ascension sera le "+ascension+" Mai \n "+ascension+"/05/"+M);
    feriesaleatoires[1] = ascension+"/05";
    
    if (pentecote < 10){paques = ("0"+pentecote)}
    //alert("Le lundi de Pentecôte sera le "+pentecote+" Mai \n "+pentecote+"/05/"+M);
    feriesaleatoires[2] = pentecote+"/05";
    }
    
    //******************************************
    //* 3ème cas: l'indice P est inférieur à 0 *
    //******************************************
    if (P < 0) {
    paques = ((31 + P) + 1);
    ascension = ((paques + 38) - 61);
    pentecote = (ascension + 11);
    
    if (paques < 10){paques = ("0"+paques)}
    //alert("En "+sAnnee+", Le lundi de Pâques sera le "+paques+" Mars \n " +paques+"/03/"+M);
    feriesaleatoires[0] = paques+"/03";
    
    if (ascension < 10){ascension = ("0"+ascension)}    
    //alert("Le jeudi de l'Ascension sera le "+ascension+" Mai \n "+ascension+"/05/"+M);
    feriesaleatoires[1] = ascension+"/05";
    
    if (pentecote < 10){pentecote = ("0"+pentecote)}
    //alert("Le lundi de Pentecôte sera le "+pentecote+" Mai \n "+pentecote+"/05/"+M);
    feriesaleatoires[2] = pentecote+"/05";
    }
  }
  
  //Remarques:
  //Le lundi de pentecôte n'est plus considéré comme un jour férié depuis 2004, mais le code l'affichera quand même
  //Ascension et Pentecote sont fonctions de Paques:
  //Ascension = Paques + 39
  //Pentecote = Paques + 50 (ou bien Pentecote = Ascension + 11)
  //Comme nous travaillons sur le lundi de paques uniquement, l'indice P sera donc toujours incrémenté de 1 avant d'être traité.


