1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208
|
/***********************************************************************************/
/* Fonction qui permet en fonction du numéro du mois et de l'annee de trouver le nombre de jours */
/***********************************************************************************/
function NbJoursMois(mois,annee)
{
/* ATTENTION, ici on parle du uméro réel du mois, c'est à dire de 1 à 12 */
var nbjours;
switch(mois)
{
case 1 :
nbjours = 31;
break;
case 2 :
if(annee%4==0 && annee%100!=0 || annee%400==0)
{
nbjours = 29;
}
else
{
nbjours = 28;
}
break;
case 3 :
nbjours = 31;
break;
case 4 :
nbjours = 30;
break;
case 5 :
nbjours = 31;
break;
case 6 :
nbjours = 30;
break;
case 7 :
nbjours = 31;
break;
case 8 :
nbjours = 31;
break;
case 9 :
nbjours = 30;
break;
case 10 :
nbjours = 31;
break;
case 11 :
nbjours = 30;
break;
case 12 :
nbjours = 31;
break;
default :
document.write('Il y a un probleme pour calculer le nombre de jour dans le mois');
}
return nbjours;
}
function EcrireDate(jour,mois,annee,ecrire)
{
var date ="";
if(jour<10)
{
date +="0";
}
date +=jour+"/";
if(mois<10)
{
date +="0";
}
date +=mois+"/"+annee;
ecrire.value=date;
return true;
}
/***********************************************************************************/
/* Fonction qui permet en fonction du numéro du mois et de l'annee de trouver le nombre de blancs à laisser au début du mois*/
/***********************************************************************************/
function NbBlancs(mois,annee)
{
/** ATTENTION, ici on parle du uméro réel du mois, c'est à dire de 1 à 12 */
var N_jours = new Array('Di','Lu','Ma','Me','Je','Ve','Sa');
var date_premier_jour = new Date(annee,mois-1,1);
var premier_jour = N_jours[date_premier_jour.getDay()];
var nb_blancs;
switch(premier_jour)
{
case "Lu" :
nb_blancs = 0;
break;
case "Ma" :
nb_blancs = 1;
break;
case "Me" :
nb_blancs = 2;
break;
case "Je" :
nb_blancs = 3;
break;
case "Ve" :
nb_blancs = 4;
break;
case "Sa" :
nb_blancs = 5;
break;
case "Di" :
nb_blancs = 6;
break;
default :
document.write('Il y a un probleme pour déterminer le nombre de blancs à laisser au début du mois');
}
return nb_blancs;
}
/***********************************************************************************/
/******************** Fonction pour l'affichage du calendrier ****************************/
/***********************************************************************************/
function calendrier(mois,annee,affiche,ecrire)
{
/** ATTENTION, ici on parle du uméro réel du mois, c'est à dire de 1 à 12 */
/** Deux tableaux pour l'écriture en français **/
var N_mois = new Array('Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre');
var N_jours = new Array('Di','Lu','Ma','Me','Je','Ve','Sa');
/** Information sur la date du jour **/
var maintenant = new Date();
var ce_mois = maintenant.getMonth();
var ce_annee = maintenant.getFullYear();
var ce_jour = N_jours[maintenant.getDay()];
/** Nombre de jours de ce mois **/
var nb_jours_mois = NbJoursMois(mois,annee);
/** Compteur du nombre de jour dans la semaine **/
var jours_par_semaine = 1;
/** Compteur permettant d'insérer le numéro du jour dans le calendrier et de repérer la fin du mois **/
var jours = 1;
/** Compteur du nombre de blancs à laisser avant de commencer */
var nb_blancs = NbBlancs(mois,annee);
/* Les mois d'avants et d'après */
var mois_avant = mois-1;
var mois_apres = mois+1;
var annee_avant = annee;
var annee_apres = annee;
if(mois==1)
{
mois_avant = 12;
annee_avant = annee-1;
}
if(mois==12)
{
mois_apres = 1;
annee_apres = annee+1;
}
var htm ="<table>";
htm +="<tr>";
htm +='<th style="cursor:pointer;" onClick="calendrier('+mois_avant+','+annee_avant+','+(affiche.id)+');"> < </th>';
htm +="<th colspan=5>"+N_mois[mois-1]+" "+annee+"</th>";
htm +='<th style="cursor:pointer;" onClick="calendrier('+mois_apres+','+annee_apres+','+(affiche.id)+');"> > </th>';
htm +="</tr>";
htm +="<tr>";
htm +="<td>Lu</td><td>Ma</td><td>Me</td><td>Je</td><td>Ve</td><td>Sa</td><td>Di</td>";
htm +="</tr>";
htm +="<tr>";
/*debut du tableau : on laisse certaines cases vides*/
while(nb_blancs>0) /* Décompte du nombre de blancs*/
{
htm +="<td></td>"; /*on saute une case*/
nb_blancs--;; /*on décrémente le nombre de blancs*/
jours_par_semaine++; /*on incrémente le compteur du nombre de jours dans une semaine*/
}
/*Partie principale du tableau*/
while(jours <= nb_jours_mois) /*Tant que l'on a pas dépassé le nombre de jours du mois courant*/
{
htm += '<td style="cursor:pointer" >'+jours+'</td>'; /* on construit et remplit une case avec le numéro du jour*/
jours++; /* on passe au jour suivant*/
jours_par_semaine++; /* on incrémente le compteur du nombre de jours dans une semaine*/
if (jours_par_semaine > 7) /*On teste si le compteur du nombre de jours dans une semaine est arrivé à son maximum*/
{
htm += "</tr><tr>"; /*si oui, on finit la ligne du tableau et on e commence une nouvelle*/
jours_par_semaine = 1; /*puis on remet le compteur du nombre de jours dans une semaine à sa valeur minimale 1*/
}
/*Sinon, on ne fait rien ici*/
}
/*Fin du tableau : on laisse la fin des cases vides*/
while (jours_par_semaine >1 && jours_par_semaine <=7)
{
htm += "<td></td>"; /* on met une case vide*/
jours_par_semaine++; /*On incémente le compteur du nombre de jours dans une semaine une dernière fois*/
}
/*fin de la construction du tableau*/
htm += "</tr></table>";
affiche.innerHTML=htm;
affiche.style.visibility="";
} |
Partager