 var Ferie=new Array("01/01","01/05","08/05","14/07","15/08","01/11","11/11","25/12");
 var LesMois=new Array("Janvier","F&eacute;vrier","Mars","Avril","Mai","Juin","Juillet","Ao&ucirc;t","Septembre","Octobre","Novembre","D&eacute;cembre");
 var Semaine = new Array("Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche");
 var DernierJour = new Array("31", "28", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31");
 var aMois = new Array("01","02","03","04","05","06","07","08","09","10","11","12");
 var aJour = new Array("00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31");
 var CouleurFond = new Array("white","silver" , "darkgray" , "#808080" , "#999999");
 var Bordure = new Array("gray", "blue");
 var Police = new Array("Arial" , "Verdana" , "Verdana" , "Arial");
 var TaillePolice = new Array("1" , "1" , "2" , "-1");
 var CouleurPolice = new Array("white" , "black", "silver" , "darkgray");
 var PositionTexteH = new Array("left" , "center" , "right");
 var PositionTexteV = new Array("top","middle","bottom");
 var CeJour = new Date();
 var n = CeJour.getDay();          // Jour de la semaine
 var j = CeJour.getDate();         // Jour du mois
 var m = CeJour.getMonth();        // Mois
 var a = CeJour.getFullYear();     // Année
 var s = getWeek(a,m,j);           // week
 var DimanchePaques = false ;
 var evenementsup = "";
      
  
 function getWeek(year,month,day)
 {
    month += 1; 
    var a = Math.floor((14-(month))/12);
    var y = year+4800-a;
    var m = (month)+(12*a)-3;
    var jd = day + Math.floor(((153*m)+2)/5) + 
                 (365*y) + Math.floor(y/4) - Math.floor(y/100) + 
                 Math.floor(y/400) - 32045;     

    var d4 = (jd+31741-(jd%7))%146097%36524%1461;
    var L = Math.floor(d4/1460);
    var d1 = ((d4-L)%365)+L;
    NumberOfWeek = Math.floor(d1/7) + 1;
    return NumberOfWeek;        
} 
  
  
  
 function Ecrit(txt) 
 { 
 	///////document.getElementById("id_calendrier").innerHTML += txt ;
 	///////document.getElementById("msg_debug").value += txt;
 	return txt;
 }
 /* 
 function annuel(Lannee) 
 {
 Ecrit('<table>');
 for (var Trim = 0 ; Trim <4 ; Trim ++) {
   Ecrit("<tr>");
   for (var moi = 0 ; moi <3 ; moi ++){
    Ecrit("<td valign='"+PositionTexteV[0]+"' align='"+PositionTexteH[1]+"'>");
    calendrier(3*Trim+moi+1,Lannee);
    Ecrit("</td>");
    }
   Ecrit("</tr>");
 }
 Ecrit("</table>");
 }
 */
 
 /* 
 function trimestre(Trim,Lannee, Option)
 {
 Ecrit('<table>');
 if (Option == 'h') {
 Ecrit("<tr>");    
 for (var tt = 0 ; tt < 3 ; tt++) {
     Ecrit("<td align='"+PositionTexteH[1]+"' valign='"+PositionTexteV[0]+"'>");
     calendrier(3*(Trim-1)+tt+1,Lannee);
     Ecrit("</td>");
 }
 Ecrit("</tr>");
 }
 else
 {
 for (var tt = 0 ; tt < 3 ; tt++) {
     Ecrit("<tr><td align='"+PositionTexteH[1]+"' valign='"+PositionTexteV[0]+"'>");
     calendrier(3*(Trim-1)+tt+1,Lannee);
     Ecrit("</td></tr>");
     }
 }
 Ecrit("</table>");
 }
 */
 function isFerie(jf,mf) 
 {
    var i=0
        for(var i in Ferie) {
     if ( test=(((jf<10)?'0'+jf:jf)+'/'+((mf<10)?'0'+mf:mf)) == Ferie[i++]) return true;}
     return false;
 }
  
 function isBissextile(an){ return ((( an % 4 == 0 ) && ( an % 100 != 0 || an % 400 == 0 )) ? true : false ); }
  
 function isWeekEnd(jwe){ return ( ((jwe == 5) || (jwe == 6)) ? true : false ); }
  
 function isPaques(pan)
 {
 DimanchePaques = true;
 var b=pan-1900;
 var c=pan%19;
 var d=Math.floor((7*c+1)/19);
 var e=(11*c+4-d)%29;
 var f=Math.floor(b/4);
 var g=(b+f+31-e)%7;
 var date=25-e-g;
 if (date>0) {mois = 4}
 else    {date=31+date; mois=3};
 date = ( (date<10)? '0'+date:date);
 Ferie.push( ((date<10)? '0'+date:date)+'/'+((mois<10)?'0'+mois:mois)); // Dimanche de Pâques
 date+=1;
 if ( (date>31) && (mois=3)) {date=1;mois+=1}
 Ferie.push(((date<10)? '0'+date:date)+'/'+((mois<10)?'0'+mois:mois)); //Lundi de Pâques férié
 date+=38;
 while (date>31) {var tt=0; date-=DernierJour[mois-1+tt]; tt++ ; mois+=1}
 Ferie.push(((date<10)? '0'+date:date)+'/'+((mois<10)?'0'+mois:mois)); // Jeudi de l'ascencion
 date+=10;
 while (date>31) {var tt=0; date-=DernierJour[mois-1+tt]; mois+=1}
 Ferie.push(((date<10)? '0'+date:date)+'/'+((mois<10)?'0'+mois:mois)); // Pentecote
  
 }
  
 function calendrier(LeMois, Lannee,Laselection) 
 {
 	var res = "";
 	document.getElementById("id_calendrier").innerHTML = "";
 	var oldLeMois = LeMois - 1;
 	var oldLannee = Lannee;
 	if(oldLeMois == 0)
 	{
 	  oldLeMois = 12;
 	  oldLannee = oldLannee - 1; 		
 	}
 	
 	var ifafter = "";
 	
 	
 	
 	 var CeJour = new Date();
    var myJ = CeJour.getMonth() + 1;        
 	 var myY = CeJour.getFullYear();  
 	 if(myJ != LeMois || myY != Lannee)
 	 {
 	 	 	var newLeMois = LeMois + 1;
 			var newLannee = Lannee;
 			if(newLeMois == 13)
 			{
 	  			newLeMois = 1;
 	  			newLannee = newLannee + 1; 		
 			}	
 	 	ifafter = '<span style="cursor: pointer;color:black;" onClick="calendrier('+newLeMois+', '+newLannee+');">&gt;&gt;</span>';
 	 }
 	
     var EnCours = new Date(Lannee,LeMois-1);
     var PremierJour = EnCours.getDay();
     if (PremierJour == 0) PremierJour = 7 ;
     if (isBissextile(Lannee)) {DernierJour[1] = 29 ;}
     if (!DimanchePaques) isPaques(Lannee);
     var jour=0;
     
     res = res + Ecrit('<TABLE  cellspacing="0" cellpadding="0" >');
     var bordercolor = '';
     if(  Laselection == Lannee + '-' + aMois[LeMois-1] + '-01@' + Lannee + '-' + aMois[LeMois-1] + '-' + DernierJour[LeMois-1] )
     	bordercolor = 'border:solid 1px #AA1D1D;';
     res = res + Ecrit('<TR><TD style="text-align:center;"><span style="cursor: pointer;color:black;" onClick="calendrier('+oldLeMois+', '+oldLannee+');">&lt;&lt;</span>&nbsp;&nbsp;<span onClick="document.getElementById(\'periode\').value = \'' + Lannee + '-' + aMois[LeMois-1] + '-01@' + Lannee + '-' + aMois[LeMois-1] + '-' + DernierJour[LeMois-1] + '\';'+evenementsup+'document.getElementById(\'f\').submit();" style="cursor: pointer;color:black;font-size:16px;font-family:Verdana;font-weight:bolder;'+bordercolor+'">'+LesMois[LeMois-1]+' '+Lannee+'</span>&nbsp;&nbsp;'+ifafter+'</TD></TR>');
     res = res + Ecrit('<TR><TD><TABLE border="1" cellspacing="0" cellpadding="2" bordercolorlight="'+Bordure[0]+'" bordercolordark="'+Bordure[1]+'">');
     res = res + Ecrit("<TR>");
     var tt = 0;
     for (temp in Semaine) {
      res = res + Ecrit("<TD width='10' bgcolor='"+CouleurFond[4]+"' valign='"+PositionTexteV[0]+"' align='"+PositionTexteH[0]+"'><FONT face='"+Police[2]+"' size='"+TaillePolice[3]+"'color='"+CouleurPolice[1]+"'>"+Semaine[tt++].substring(0,1)+"</FONT></TD>");    }
     res = res + Ecrit("</TR>");
     for(var i=0;i<6;i++) {
         res = res + Ecrit("<TR>");
         for (j=0;j<7;j++) 
         {
            jour=7*i+j-PremierJour+2;   
            
         	var bordercolorj = '';
     			if(  Laselection == Lannee + '-' + aMois[LeMois-1] + '-'+aJour[jour]+'@' + Lannee + '-' + aMois[LeMois-1] + '-' + aJour[jour]  )
     				bordercolorj = 'border:solid 1px #AA1D1D;';
              
             if ((7*i+j>=PremierJour-1)&&(jour<=DernierJour[LeMois-1])) 
             {
              if ((jour==j)&&(LeMois==m+1)&&(Lannee==a)) 
              {
              	res = res + Ecrit('<TD width="10" bgcolor="'+CouleurFond[3]+'" valign="'+PositionTexteV[1]+'" align="'+PositionTexteH[1]+'"><span onClick="document.getElementById(\'periode\').value = \'' + Lannee + '-' + aMois[LeMois-1] + '-'+aJour[jour]+'@' + Lannee + '-' + aMois[LeMois-1] + '-' + aJour[jour] + '\';'+evenementsup+'document.getElementById(\'f\').submit();" style="cursor: pointer;font-family:'+Police[0]+';font-size:'+TaillePolice[3]+';'+bordercolorj+'color:'+CouleurFond[1]+';">'+jour+'</span></TD>');
              }
              else if (isFerie(jour,LeMois) )
                  res = res + Ecrit('<TD width="10" bgcolor="'+CouleurFond[2]+'" valign="'+PositionTexteV[1]+'" align="'+PositionTexteH[1]+'"><span onClick="document.getElementById(\'periode\').value = \'' + Lannee + '-' + aMois[LeMois-1] + '-'+aJour[jour]+'@' + Lannee + '-' + aMois[LeMois-1] + '-' + aJour[jour] + '\';'+evenementsup+'document.getElementById(\'f\').submit();" style="cursor: pointer;'+bordercolorj+'color:'+CouleurPolice[1]+';">'+jour+'</span></TD>');
              else if ( isWeekEnd(j) )
              {
                  res = res + Ecrit('<TD width="10" bgcolor="'+CouleurFond[1]+'" valign="'+PositionTexteV[1]+'" align="'+PositionTexteH[1]+'"><span onClick="document.getElementById(\'periode\').value = \'' + Lannee + '-' + aMois[LeMois-1] + '-'+aJour[jour]+'@' + Lannee + '-' + aMois[LeMois-1] + '-' + aJour[jour] + '\';'+evenementsup+'document.getElementById(\'f\').submit();" style="cursor: pointer;'+bordercolorj+'color:'+CouleurFond[0]+';">'+jour+'</span></TD>');
              }
              else
                  res = res + Ecrit('<TD width="10" bgcolor="'+CouleurFond[0]+'" valign="'+PositionTexteV[1]+'" align="'+PositionTexteH[1]+'"><span onClick="document.getElementById(\'periode\').value = \'' + Lannee + '-' + aMois[LeMois-1] + '-'+aJour[jour]+'@' + Lannee + '-' + aMois[LeMois-1] + '-' + aJour[jour] + '\';'+evenementsup+'document.getElementById(\'f\').submit();" style="cursor: pointer;'+bordercolorj+'color:'+CouleurPolice[1]+';">'+jour+'</span></TD>');
             }
             else
              res = res + Ecrit('<TD width="10" bgcolor="'+CouleurFond[0]+'">&nbsp;</TD>');
         }
         // semaine
         var jourold = jour - 6;
         var mmm = LeMois-1;
         if(jourold < 1)
         {
         	mmm = mmm - 1;
         	if(mmm < 0)
         		mmm = 11;
         	if(LeMois-2 > 0)
         	{
         		jourold = jourold * -1;
         		var tmm = DernierJour[LeMois-2];
         		jourold = tmm - jourold;
         	}
        		 else
         		jourold = 31 + jourold;
         }
         
         var bordercolors = '';
     			if(  Laselection == Lannee + '-' + aMois[mmm] + '-'+aJour[jourold]+'@' + Lannee + '-' + aMois[LeMois-1] + '-' + aJour[jour]  )
     				bordercolors = 'border:solid 1px #AA1D1D;';
     		var lien = '';
        if( aMois[mmm] == '12' &&  aMois[LeMois-1] == '01')
					lien = 'onClick="document.getElementById(\'periode\').value = \'' + (Lannee-1) + '-' + aMois[mmm] + '-'+aJour[jourold]+'@' + Lannee + '-' + aMois[LeMois-1] + '-' + aJour[jour] + '\';'+evenementsup+'document.getElementById(\'f\').submit();"  style="color:red;cursor: pointer;"';
				else
      		lien = 'onClick="document.getElementById(\'periode\').value = \'' + Lannee + '-' + aMois[mmm] + '-'+aJour[jourold]+'@' + Lannee + '-' + aMois[LeMois-1] + '-' + aJour[jour] + '\';'+evenementsup+'document.getElementById(\'f\').submit();"  style="color:green;cursor: pointer;"';
        
         var www = '';
         
      	//var nn = 0;
         if(jour <= ( DernierJour[LeMois-1] + 0 ))
         {
         	www = getWeek(Lannee,LeMois-1,jour);
         	//var tm = new Date(Lannee,LeMois-1,jour);
         	//nn =  tm.getDay(); 
      	}
      	else
      	{
      		www = getWeek(Lannee,LeMois-1,DernierJour[LeMois-1] + 0);
      		//var tm = new Date(Lannee,LeMois-1,DernierJour[LeMois-1] + 0);
         	//nn =  tm.getDay(); 
      	}
			if( jour > DernierJour[LeMois - 1] )
			{
					lien = '';
			}
      	res = res + Ecrit('<TD width="10" bgcolor="'+CouleurFond[0]+'"><span style="'+bordercolors+'" '+lien+'>'+www+'</span></TD>'); 
      		
      		
      		
         res = res + Ecrit("</TR>");
         if (jour >= DernierJour[LeMois - 1]) {break};
     }
     res = res + Ecrit("</TABLE>");
     res = res + Ecrit("</TD></TR></TABLE>");

 	document.getElementById("id_calendrier").innerHTML = res;
 }
