| [ Index ] |
PHP Cross Reference of IEUF |
[Summary view] [Print] [Text view]
1 2 function Calendrier(d_act, fct_date, id_pos, an_min, an_max, inst) { 3 //Privées (locales) 4 var t_noms_mois= new Array( 5 'janvier', 'février', 'mars', 6 'avril', 'mai', 'juin', 7 'juillet', 'août', 'septembre', 8 'octobre', 'novembre', 'décembre'); 9 var liste_mois= document.createElement("select"); 10 liste_mois.setAttribute("style", "width: 80px"); 11 var liste_ans= document.createElement("select"); 12 liste_ans.setAttribute("style", "width:50px"); 13 var d_aff= new Date(d_act.getFullYear(), d_act.getMonth(), d_act.getDate()); //Le tableau contient cette date 14 var tableau= document.createElement("table"); 15 var tbody= document.createElement("tbody"); //Nécessaire pour IE 16 var thead = document.createElement("thead"); 17 thead.style.height = "0px"; 18 var tfoot = document.createElement("tfoot"); 19 tfoot.style.height = "0px"; 20 tableau.appendChild(tbody); 21 var t_lignes= new Array(6); 22 23 /////Fonctions publiques 24 25 /**** Fonctions de commande *****/ 26 this.Ferme= function() { 27 d_aff= new Date(d_act.getFullYear(), d_act.getMonth(), d_act.getDate()); 28 tableau.style.visibility= 'hidden'; 29 } 30 31 this.Valide= function(j) { 32 var d= d_aff; 33 var t; 34 d.setDate(j); 35 t= d.getTime(); 36 tableau.style.visibility= 'hidden'; 37 eval(fct_date+"('"+t+"')"); 38 } 39 40 this.SelMois= function() { 41 d_aff.setMonth(liste_mois.selectedIndex); 42 this.AfficheCalendrier(); 43 } 44 45 this.MoisPrecedent= function() { 46 var mois, annee, d= d_aff; 47 mois= d.getMonth() 48 annee= d.getFullYear(); 49 mois--; 50 if (mois < 0) { 51 mois= 11; 52 annee--; 53 } 54 if (annee < an_min) {alert("Année invalide");return;} 55 d.setYear(annee); 56 d.setMonth(mois); 57 d_aff= d; 58 this.AfficheCalendrier(); 59 } 60 61 this.MoisSuivant= function() { 62 var mois, annee, d= d_aff; 63 mois= d.getMonth() 64 annee= d.getFullYear(); 65 mois++; 66 if (mois > 11) { 67 mois= 0; 68 annee++; 69 } 70 if (annee > an_max) {alert("Année invalide");return;} 71 d.setYear(annee); 72 d.setMonth(mois); 73 d_aff= d; 74 this.AfficheCalendrier(); 75 } 76 77 this.SelAn= function() { 78 id= liste_ans.selectedIndex; 79 d_aff.setYear(liste_ans.options[id].value); 80 this.AfficheCalendrier(); 81 } 82 83 this.AnPrecedent= function() { 84 var annee, d= d_aff; 85 annee= d.getFullYear() - 1; 86 if (annee < an_min) {alert("Année invalide");return;} 87 d.setYear(annee); 88 d_aff= d; 89 this.AfficheCalendrier(); 90 } 91 92 this.AnSuivant= function() { 93 var annee, d= d_aff; 94 annee= d.getFullYear() + 1; 95 if (annee > an_max) {alert("Année invalide");return;} 96 d.setYear(annee); 97 d_aff= d; 98 this.AfficheCalendrier(); 99 } 100 101 this.AfficheCalendrier= function() { 102 //Calcul des nombres de jours 103 var j_act, m_act, a_act, j_cur, m_cur, a_cur, m_aff, a_aff; 104 var fl_act, fl_cur; 105 var n_sem, njv, njm; 106 107 //Date initiale 108 j_act= d_act.getDate(); 109 m_act= d_act.getMonth() 110 a_act= d_act.getFullYear(); 111 if (a_act < an_min || a_act > an_max) {alert("Année invalide");return;} 112 //Date courante 113 d_cur= new Date(); 114 j_cur= d_cur.getDate(); 115 m_cur= d_cur.getMonth() 116 a_cur= d_cur.getFullYear(); 117 //Date affichée 118 m_aff= d_aff.getMonth() 119 a_aff= d_aff.getFullYear(); 120 //Pour affichage de jours particuliers' 121 fl_act= (a_act == a_aff) && (m_act == m_aff); 122 fl_cur= (a_cur == a_aff) && (m_cur == m_aff); 123 124 //Calcul de la position des jours dans le mois 125 d_aff.setDate(1); //1° jour du mois affiché 126 njv= (d_aff.getDay()-1 + 7)%7; //Décalage 1°cellule tableau calendrier 127 //Nombre de jours de ce mois pour années de 1901 à 2099 128 if (m_aff == 1) njm= (a_aff % 4 == 0) ? 29 : 28; 129 else if (m_aff==3 || m_aff==5 || m_aff==8 || m_aff==10) njm= 30; 130 else njm= 31; 131 132 //Calcul du numéro de semaine en début de mois affiché 133 var t= Math.floor(d_aff.getTime()/86400000); //Jours depuis 1/1/1970 0:0:0 134 var d= new Date(a_aff, 0, 4); //4 janvier année affichée : semaine 1; 135 n_sem= Math.floor((d_aff.getTime()-d)/86400000)-1; //Nbre de de jours depuis ce 4 janvier 136 n_sem= Math.floor((n_sem+3)/7)+1; //N° de semaines en début de mois 137 138 //Affichage 139 tableau.style.visibility= 'visible'; 140 141 //Ligne de titre 142 liste_mois.options[m_aff].selected= true; 143 for (var a=0; a < liste_ans.length; a++) { 144 if (liste_ans.options[a].value == a_aff) 145 liste_ans.options[a].selected= true; 146 } 147 148 //Contenu 149 var l, c, cel; 150 var j= 1-njv; 151 for (l= 0; l < t_lignes.length; l++) { 152 cel= t_lignes[l].firstChild; 153 cel.firstChild.data= n_sem != 0 ? n_sem : " "; //N° semaine 154 n_sem++; 155 cel= cel.nextSibling; 156 for (c= 0; c < 7; c++) { // Jours 157 if (j > 0 && j <= njm) { //Jours du mois 158 if (fl_cur && fl_act && j == j_cur && j == j_act) 159 cel.setAttribute("style", "border: 2px solid red; color: #ff0000;"); 160 else if (fl_act && j == j_act) cel.setAttribute("style", "border: 2px solid red;"); //Aujourd'hui' 161 else if (fl_cur && j == j_cur) cel.setAttribute("style", "color: #ff0000;"); //Initialement sélectionné 162 else cel.setAttribute("style", " "); 163 cel.setAttribute("onclick", inst+".Valide("+j+")"); 164 cel.setAttribute("title", "Cliquer sur un jour pour valider"); 165 cel.setAttribute("class", "lien"); 166 cel.firstChild.data= j; 167 } 168 else { // Cellules sans jours 169 cel.setAttribute("onclick", ""); 170 cel.setAttribute("title", ""); 171 cel.setAttribute("class", ""); 172 cel.firstChild.data= " "; 173 } 174 //Fin 'if' jours du mois' 175 cel= cel.nextSibling; 176 j++; 177 } //Fin 'for' cellules 178 }//Fin 'for' lignes 179 180 } 181 182 //// Fonction privée (locale) 183 /**** Intitialisation calendrier (instanciation)*****/ 184 function InitialiseCalendrier() { 185 /*** Pour IE, selon les attibuts, il faut utiliser différentes formes ??? ***/ 186 var classe_tableau = document.createAttribute("class"); 187 classe_tableau.nodeValue = "style_calendrier"; 188 tableau.setAttributeNode(classe_tableau); 189 tableau.border= "0"; 190 tableau.setAttribute("cellpadding", "0"); 191 tableau.setAttribute("cellspacing", "0"); 192 tableau.setAttribute("width", "100%"); 193 tableau.style.visibility= 'hidden'; 194 195 var t_nj= new Array('sem.', 'lu', 'ma', 'me', 'je', 've', 'sa', 'di'); 196 var lien, ligne, cellule, contenu, option_mois, option_an, texte; 197 var l, j, m, a; 198 199 /*** Construction du tableau, mais les cellules de numéros de semaine et de jours restent vides ***/ 200 201 //Ligne titre 202 ligne= document.createElement("tr"); 203 ligne.setAttribute("class", "titre"); 204 //Mois 205 cellule= document.createElement("td"); 206 cellule.setAttribute("colspan", "4"); 207 lien= document.createElement("span"); 208 lien.setAttribute("onclick", inst+".MoisPrecedent()"); 209 lien.setAttribute("title", "Mois précédent"); 210 lien.setAttribute("class", "lien"); 211 contenu= document.createTextNode("< "); 212 lien.appendChild(contenu); 213 cellule.appendChild(lien); 214 for (m in t_noms_mois) { 215 option_mois= document.createElement("option"); 216 texte= document.createTextNode(t_noms_mois[m]); 217 option_mois.appendChild(texte); 218 liste_mois.appendChild(option_mois); 219 } 220 liste_mois.setAttribute("onchange", inst+".SelMois()"); 221 liste_mois.setAttribute("title", "Mois"); 222 cellule.appendChild(liste_mois); 223 lien= document.createElement("span"); 224 lien.setAttribute("onclick", inst+".MoisSuivant()"); 225 lien.setAttribute("title", "Mois suivant"); 226 lien.setAttribute("class", "lien"); 227 contenu= document.createTextNode(" >"); 228 lien.appendChild(contenu); 229 cellule.appendChild(lien); 230 ligne.appendChild(cellule); 231 //Année 232 cellule= document.createElement("td"); 233 cellule.setAttribute("colspan", "3"); 234 lien= document.createElement("span"); 235 lien.setAttribute("onclick", inst+".AnPrecedent()"); 236 lien.setAttribute("title", "Année précédente"); 237 lien.setAttribute("class", "lien"); 238 contenu= document.createTextNode("< "); 239 lien.appendChild(contenu); 240 cellule.appendChild(lien); 241 for (a= an_min; a <= an_max; a++) { 242 option_an= document.createElement("option"); 243 option_an.setAttribute("value", a); 244 texte= document.createTextNode(a); 245 option_an.appendChild(texte); 246 liste_ans.appendChild(option_an); 247 } 248 liste_ans.setAttribute("onchange", inst+".SelAn()"); 249 liste_ans.setAttribute("title", "Année"); 250 cellule.appendChild(liste_ans); 251 lien= document.createElement("span"); 252 lien.setAttribute("onclick", inst+".AnSuivant()"); 253 lien.setAttribute("title", "Année suivante"); 254 lien.setAttribute("class", "lien"); 255 contenu= document.createTextNode(" >"); 256 lien.appendChild(contenu); 257 cellule.appendChild(lien); 258 ligne.appendChild(cellule); 259 //Fermeture 260 cellule= document.createElement("td"); 261 cellule.setAttribute("style", "color: #ff8888; font-weight: bold;"); 262 cellule.setAttribute("class", "lien"); 263 cellule.setAttribute("onclick", inst+".Ferme()"); 264 cellule.setAttribute("title", "Annulation"); 265 contenu= document.createTextNode("X"); 266 cellule.appendChild(contenu); 267 ligne.appendChild(cellule); 268 269 tbody.appendChild(ligne); 270 271 //Ligne nom des jours de semaine 272 ligne= document.createElement("tr"); 273 ligne.setAttribute("class","njours"); 274 for (j= 0; j < t_nj.length; j++) { 275 cellule= document.createElement("td"); 276 contenu= document.createTextNode(t_nj[j]); 277 cellule.appendChild(contenu); 278 ligne.appendChild(cellule); 279 } 280 tbody.appendChild(ligne); 281 282 //Lignes n° des jours 283 for (l= 0; l < t_lignes.length ; l++) { 284 //Cellule semaine 285 t_lignes[l]= ligne= document.createElement("tr"); 286 cellule= document.createElement("td"); 287 cellule.setAttribute("class","njours"); 288 contenu= document.createTextNode("ss"); 289 cellule.appendChild(contenu); 290 ligne.appendChild(cellule); 291 //Cellules jours 292 for (j= 0; j < t_nj.length-1; j++) { 293 cellule= document.createElement("td"); 294 contenu= document.createTextNode("--"); 295 cellule.appendChild(contenu); 296 ligne.appendChild(cellule); 297 } 298 tbody.appendChild(ligne); 299 } 300 document.getElementById(id_pos).appendChild(tableau); 301 302 } 303 304 InitialiseCalendrier(); //Instantiation 305 306 } 307
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Fri Jan 31 19:59:00 2014 | Cross-referenced by PHPXref 0.7.1 |