Date:
001 | ( function ($){ |
002 | var nomJours = [ "dimanche" , "lundi" , "mardi" , "mercredi" , "jeudi" , "vendredi" , "samedi" ]; |
003 | |
004 | var nomMois = [ "janvier" , "février" , "mars" , "avril" , "mai" , "juin" , "juillet" , "août" , "septembre" , "octobre" , "novembre" , "décembre" ]; |
005 | |
006 | var vacances = [[13, 7, 2009],[14, 7, 2009],[15, 7, 2009],[16, 7, 2009],[17, 7, 2009],[20, 7, 2009],[21, 7, 2009],[22, 7, 2009],[23, 7, 2009],[24, 7, 2009],[23, 12, 2009],[24, 12, 2009],[25, 12, 2009],[26, 12, 2009],[27, 12, 2009],[28, 12, 2009],[29, 12, 2009],[30, 12, 2009],[31, 12, 2009]]; |
007 | |
008 | var reunions = [[9, 7, 2009],[12, 8, 2009],[17, 9, 2009],[22, 10, 2009],[26, 11, 2009],[22, 12, 2009]]; |
009 | |
010 | var reserver = [[18, 8, 2009]]; |
011 | |
012 | setDays = function (day, month, year) { |
013 | var result = [ true , '' , '' ]; //par défaut, on affiche la date |
014 | var boolVacances = false ; |
015 | var boolReunion = false ; |
016 | var boolLundiMercredi = false ; |
017 | var rl = 0; |
018 | var i = 0; |
019 | |
020 | /* |
021 | * Les données peuvent contenir, par erreur, des chevauchements de dates ! |
022 | * Priorité des événements : Vacances > Reunion > LundiMercredi > Reserver ! |
023 | * Évite l'ajout de la "class" d'un événement non prioritaire ! |
024 | */ |
025 | |
026 | if (vacances != null ) { |
027 | rl = vacances.length; |
028 | |
029 | for (i = 0; i < rl; i++) { |
030 | if ((day == vacances[i][0]) && (month == vacances[i][1] - 1) && (year == vacances[i][2])) { |
031 | result = [ false , '' , "On est en vacances !" ]; |
032 | boolVacances = true ; |
033 | } |
034 | } |
035 | } |
036 | |
037 | if ((!boolVacances) && (reunions != null )) { |
038 | rl = reunions.length; |
039 | |
040 | for (i = 0; i < rl; i++) { |
041 | if ((day == reunions[i][0]) && (month == reunions[i][1] - 1) && (year == reunions[i][2])) { |
042 | result = [ true , "important" , "Réunion !" ]; |
043 | boolReunion = true ; |
044 | } |
045 | } |
046 | } |
047 | |
048 | //getDay() retourne un entier correspondant au jour de la semaine |
049 | // 0 (dimanche), 1 (lundi), 2 (mardi), 3 (mercredi), 4 (jeudi), 5 (vendredi), 6 (samedi) |
050 | var jourSemaine = new Date(year, month, day).getDay(); |
051 | |
052 | if ((!boolReunion) && (!boolVacances) && ((jourSemaine == 1) || (jourSemaine == 3))) { |
053 | result = [ true , "lundiMercredi" , 'Loisirs studieux !' ]; |
054 | boolLundiMercredi = true ; |
055 | } |
056 | |
057 | if ((!boolReunion) && (!boolVacances) && (!boolLundiMercredi) && (reserver != null )) { |
058 | rl = reserver.length; |
059 | |
060 | for (i = 0; i < rl; i++) { |
061 | if ((day == reserver[i][0]) && (month == reserver[i][1] - 1) && (year == reserver[i][2])) { |
062 | result = [ true , "reserver" , "La salle des jeux est déjà réservée !" ]; |
063 | } |
064 | } |
065 | } |
066 | |
067 | return result; |
068 | } |
069 | |
070 | selectedDay = function (day, month, year) { |
071 | var boolReunion = false ; |
072 | var boolLundiMercredi = false ; |
073 | var boolReserver = false ; |
074 | var rl = 0; |
075 | var i = 0; |
076 | |
077 | /* |
078 | * Les données peuvent contenir, par erreur, des chevauchements de dates ! |
079 | * Priorité des événements : Vacances > Reunion > LundiMercredi > Reserver ! |
080 | * Ici on ne s'occupe pas des jours de vacances puisque l'utilisateur ne peut pas les choisir ! |
081 | */ |
082 | |
083 | //getDay() retourne un entier correspondant au jour de la semaine |
084 | // 0 (dimanche), 1 (lundi), 2 (mardi), 3 (mercredi), 4 (jeudi), 5 (vendredi), 6 (samedi) |
085 | var jourSemaine = new Date(year, month, day).getDay(); |
086 | |
087 | $( "#affiche" ).html( "<p>Vous avez sélectionné le " + |
088 | nomJours[jourSemaine] + " " + day + " " + nomMois[month] + " " + year + "</p>" ); |
089 | |
090 | if (reunions != null ) { |
091 | rl = reunions.length; |
092 | |
093 | for (i = 0; i < rl; i++) { |
094 | if ((day == reunions[i][0]) && (month == reunions[i][1] - 1) && (year == reunions[i][2])) { |
095 | $( "#important" ).dialog( "open" ); |
096 | boolReunion = true ; |
097 | } |
098 | } |
099 | } |
100 | |
101 | // Il ne faut pas afficher le dialogue lundiMercredi s'il s'agit d'un jour de réunion ! |
102 | if ((!boolReunion) && ((jourSemaine == 1) || (jourSemaine == 3))) { |
103 | $( "#lundiMercredi" ).dialog( "open" ); |
104 | boolLundiMercredi = true ; |
105 | } |
106 | |
107 | if ((!boolReunion) && (!boolLundiMercredi) && (reserver != null )) { |
108 | rl = reserver.length; |
109 | |
110 | for (i = 0; i < rl; i++) { |
111 | if ((day == reserver[i][0]) && (month == reserver[i][1] - 1) && (year == reserver[i][2])) { |
112 | boolReserver = true ; |
113 | } |
114 | } |
115 | } |
116 | |
117 | /* |
118 | * Ce n'est pas un jour de réunion ! |
119 | * Ce n'est ni un lundi ni un mercredi ! |
120 | * La salle des jeux n'est pas encore réservée ! |
121 | * La date n'est pas dépassée ! |
122 | */ |
123 | if ((!boolReunion) && (!boolLundiMercredi) && (!boolReserver) && ( new Date(year,month,day) >= new Date())) { |
124 | reserver.push([day, month+1, year]); |
125 | $( "#affiche" ).append( "<p style='margin-top:12px;'>Votre réservation de la salle des jeux est enregistrée pour la date ci-dessus.</p>" ); |
126 | } else { |
127 | $( "#affiche" ).append( "<p style='margin-top:12px;'>Désolé, la salle des jeux est déjà réservée<br />ou le jour choisi n'est pas disponible (lundi,mercredi et les jours de réunions)<br />ou la date choisie est dépassée.</p>" ); |
128 | } |
129 | |
130 | //$("#ui-datepicker-div").mouseover(); |
131 | } |
132 |
133 | $(document).ready( function (){ |
134 | $( "#lundiMercredi" ).dialog({ |
135 | autoOpen: false , |
136 | height: 240, |
137 | width: 400, |
138 | modal: true , |
139 | overlay: { |
140 | backgroundColor: '#000000' , |
141 | opacity: 0.5 |
142 | }, |
143 | buttons: { |
144 | 'Fermer' : function () { |
145 | $( this ).dialog( 'close' ); |
146 | } |
147 | }, |
148 | close: function () { |
149 | // pour colorer les dates choisies chaque fois que le datepicker se redessine ! |
150 | $( "#ui-datepicker-div" ).mouseover(); |
151 | } |
152 | }); |
153 | |
154 | $( "#important" ).dialog({ |
155 | autoOpen: false , |
156 | height: 240, |
157 | width: 400, |
158 | modal: true , |
159 | overlay: { |
160 | backgroundColor: '#000000' , |
161 | opacity: 0.5 |
162 | }, |
163 | buttons: { |
164 | 'Fermer' : function () { |
165 | $( this ).dialog( 'close' ); |
166 | } |
167 | }, |
168 | close: function () { |
169 | // pour colorer les dates choisies chaque fois que le datepicker se redessine ! |
170 | $( "#ui-datepicker-div" ).mouseover(); |
171 | } |
172 | }); |
173 | |
174 | $( "#datepicker" ).datepicker({ |
175 | changeMonth: true , |
176 | changeYear: true , |
177 | showButtonPanel: true , |
178 | currentText: "Aujourd'hui" , |
179 | nextText: "Suivant" , |
180 | prevText: "Précédent" , |
181 | showOn: "button" , |
182 | buttonText: "Choisir une date" , |
183 | dateFormat: "DD, d MM yy" , |
184 | beforeShowDay: function (date) { |
185 | var noWeekend = $.datepicker.noWeekends(date); //samedi et dimanche non sélectionable ! |
186 | //var noWeekend = [true, '', '']; // on garde le samedi et le dimanche ! |
187 | |
188 | if (noWeekend[0]) { |
189 | return setDays(date.getDate(), date.getMonth(), date.getFullYear()); |
190 | } else { |
191 | return noWeekend; |
192 | } |
193 | |
194 | /* |
195 | * Si parmi les dates à colorer il y a des samedis ou des dimanches alors |
196 | * mettez en commentaire tout ce qui précède et remplacez-le par : |
197 | * return setDays(date.getDate(), date.getMonth(), date.getFullYear()); |
198 | */ |
199 | }, |
200 | onSelect: function (dateText) { |
201 | //le format de dateText est donné par l'option dateFormat |
202 | //transforme la date donnée au format texte (Mardi, 4 Août 2009) en day (4), month (7), year (2009) |
203 | var dt = dateText.split( ' ' ); |
204 | var month; |
205 | |
206 | switch (dt[2]){ |
207 | case "Janvier" : |
208 | month = 0; |
209 | break ; |
210 | case "Février" : |
211 | month = 1; |
212 | break ; |
213 | case "Mars" : |
214 | month = 2; |
215 | break ; |
216 | case "Avril" : |
217 | month = 3; |
218 | break ; |
219 | case "Mai" : |
220 | month = 4; |
221 | break ; |
222 | case "Juin" : |
223 | month = 5; |
224 | break ; |
225 | case "Juillet" : |
226 | month = 6; |
227 | break ; |
228 | case "Août" : |
229 | month = 7; |
230 | break ; |
231 | case "Septembre" : |
232 | month = 8; |
233 | break ; |
234 | case "Octobre" : |
235 | month = 9; |
236 | break ; |
237 | case "Novembre" : |
238 | month = 10; |
239 | break ; |
240 | case "Décembre" : |
241 | month = 11; |
242 | break ; |
243 | default : |
244 | alert( "erreur de date dans la fonction onSelect du Datepicker" ); |
245 | break ; |
246 | }; |
247 | |
248 | selectedDay( |
249 | parseInt(dt[1],10), |
250 | month, |
251 | parseInt(dt[3],10) |
252 | ); |
253 | } |
254 | }); |
255 | }); //fin document ready |
256 | |
257 | $(window).load( function (){ |
258 | /* |
259 | * Bricolage indispensable pour colorer les dates choisies |
260 | * chaque fois que le datepicker se redessine ! |
261 | */ |
262 | $( "#ui-datepicker-div" ).bind( "mouseover" , function (){ |
263 | if ($( "td.important > a" , this ).eq(0).css( "color" ) != "#FF0000" ) { |
264 | $( "td.important > a" , this ).css( "color" , "#FF0000" ); |
265 | $( "td.lundiMercredi > a" , this ).css( "color" , "#33CC00" ); |
266 | $( "td.reserver > a" , this ).css( "color" , "#0033CC" ); |
267 | } |
268 | }); |
269 | |
270 | // nécessaire s'il n'y a pas de bouton |
271 | $( "#datepicker" ).click( function (){ |
272 | $( "#ui-datepicker-div" ).mouseover(); |
273 | }); |
274 | |
275 | // nécessaire s'il y a un bouton |
276 | $( "button.ui-datepicker-trigger" ).click( function (){ |
277 | $( "#ui-datepicker-div" ).mouseover(); |
278 | }); |
279 | }); //fin window load |
280 | })(jQuery); |