├── LICENSE ├── README.md ├── calendarGantt-monthDemo-src.html ├── calendarGantt-monthDemo.html ├── calendarGantt-weekDemo-src.html ├── calendarGantt-weekDemo.html ├── calendarGantt.html ├── css └── style.css ├── ganttCalendar-demo.png ├── ganttCalendar-src.js └── js ├── ganttCalendar ├── LICENCE.txt ├── css │ └── ganttCalendar.css ├── ganttCalendar-1.0.min.js ├── ganttCalendar-1.1-min.js ├── ganttCalendar-1.2-min.js ├── ganttCalendar-1.3-min.js ├── ganttCalendar-src.js └── img │ ├── bg-grid-100-empty.gif │ ├── bg-grid-100.gif │ ├── bg-grid-150-empty.gif │ ├── bg-grid-150.gif │ ├── bg-grid-20.gif │ ├── bg-grid-200-empty.gif │ ├── bg-grid-200.gif │ ├── bg-grid-30.gif │ ├── bg-grid-40.gif │ ├── bg-grid-50-empty.gif │ ├── bg-grid-50.gif │ ├── bg-grid.gif │ ├── button-inset-left.png │ ├── button-inset-right.png │ ├── button-inset-right.xcf │ ├── button-inset.png │ ├── empty.gif │ ├── glyphs-16 │ ├── flag.png │ ├── lock.png │ ├── star.png │ └── unlock.png │ ├── slider-handle.png │ └── slider.png ├── google-code-prettify ├── lang-apollo.js ├── lang-clj.js ├── lang-css.js ├── lang-go.js ├── lang-hs.js ├── lang-lisp.js ├── lang-lua.js ├── lang-ml.js ├── lang-n.js ├── lang-proto.js ├── lang-scala.js ├── lang-sql.js ├── lang-tex.js ├── lang-vb.js ├── lang-vhdl.js ├── lang-wiki.js ├── lang-xq.js ├── lang-yaml.js ├── prettify.css └── prettify.js ├── jquery ├── custom_jquery.js ├── date.js ├── jquery-1.4.1.min.js ├── jquery-ui-1.10.2.custom.css ├── jquery-ui.min.js ├── jquery.bind.js ├── jquery.datePicker.js ├── jquery.dimensions.js ├── jquery.filestyle.js ├── jquery.pngFix.pack.js ├── jquery.selectbox-0.5.js ├── jquery.selectbox-0.5_style_2.js ├── jquery.selectbox-0.5_style_3.js ├── jquery.tooltip.js ├── jquery.usermode.js ├── ui.checkbox.js └── ui.core.js └── tests ├── calendarGantt-test-01.html ├── calendarGantt-test-02.html ├── calendarGantt-test-03.html ├── calendarGantt-test-04.html ├── calendarGantt-test-05.html ├── calendarGantt-test-06.html ├── calendarGantt-test-07.html ├── calendarGantt-test-08.html └── calendarGantt-test-09.html /README.md: -------------------------------------------------------------------------------- 1 | # ganttCalendar 2 | Javascript library to display a calendar like a gantt planning 3 | 4 | ## Demo 5 | [Month demo](http://jc.specs.free.fr/ganttCalendar/calendarGantt-monthDemo.html) 6 | 7 | [Week demo](http://jc.specs.free.fr/ganttCalendar/calendarGantt-weekDemo.html) 8 | -------------------------------------------------------------------------------- /calendarGantt-monthDemo-src.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Calendar Gantt 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 130 | 131 | 132 | 133 | 134 | 135 | 136 |

GanttCalendar Demo

137 |

Démo du mode "Affichage mensuel" avec 4 niveaux de zoom. 138 |
139 | Retour à l'article 140 | | 141 | Calendrier Hebdomadaire 142 | 143 |

144 | 145 | 146 |
147 |
148 |
Zoom : 149 |
150 |
151 |
152 |
153 |
154 | 155 | 167 | 168 |
169 |
170 | 
171 | $(function() {
172 | 	// Definition : Event(ressourceId, eventId, startDay, endDay, label)
173 | 	
174 | 	// 2012 - oct :
175 | 	var evt1 = new EventCal(1, "event_001", 2, 5, "Event Paris - WSDD");
176 | 	var evt2 = new EventCal(2, "event_002", 2, 5, "Paris - WSDD(2-5)");
177 | 	var evt5 = new EventCal(3, "event_005", 4, 15, "Long journey");
178 | 	var evt6 = new EventCal(1, "event_006", 6, 10, "Visit Stan LONE");
179 | 	var evt7 = new EventCal(1, "event_007", 12, 19, "Confirm Dentist");
180 | 	var evt8 = new EventCal(4, "event_008", 6, 10, "Visit Stan LONE");
181 | 	var evt9 = new EventCal(5, "event_009", 10, 15, "Maintenance");
182 | 	
183 | 	// 2012 - nov :
184 | 	var evt3 = new EventCal(3, "event_002", 3, 5, "SF - EEES(3-5)");
185 | 	var evt3bis = new EventCal(3, "event_002BIS", 8, 14, "SF - Paintings");
186 | 	var evt4 = new EventCal(4, "event_003", 7, 9, "team (7-9)");
187 | 
188 | 	var timeline = new TimeLineMonth("myGanttCalendar",10, 2012,
189 | 			{groups: 
190 | 				[  {name: "Singers",
191 | 					id: 1,
192 | 					resources: [{name:"Henri", id:1}, 
193 | 					             {name:"Frank", id:2},
194 | 					             {name:"Jenny", id:3}]
195 | 				}, {name: "Objects",
196 | 					id: 2,
197 | 					resources: [{name:"Micro",id:4}, 
198 | 					             {name:"Ampli", id:5}]
199 | 				}]
200 | 			},
201 | 			function(){
202 | 				switch(this.year){
203 | 					case 2011:
204 | 						break;
205 | 					case 2012:
206 | 						switch (this.month) {
207 | 						case 10:
208 | 							evt1.drawIn(this);
209 | 							evt1.jObject.addClass("specialEvent");
210 | 							evt2.drawIn(this);
211 | 							evt2.jObject.addClass("flagEvent");
212 | 							evt5.drawIn(this);
213 | 							evt5.jObject.addClass("flagEvent");
214 | 							evt6.drawIn(this);
215 | 							evt6.jObject.addClass("lockEvent");
216 | 							evt7.drawIn(this);
217 | 							evt7.jObject.addClass("unlockEvent");
218 | 							evt8.drawIn(this);
219 | 							evt9.drawIn(this);
220 | 							break;
221 | 						case 11:
222 | 							evt3.drawIn(this);
223 | 							evt3bis.drawIn(this);
224 | 							evt3bis.jObject.addClass("lockEvent");
225 | 							evt4.drawIn(this);
226 | 							break;
227 | 
228 | 						default:
229 | 							break;
230 | 						}
231 | 						break;
232 | 					default:
233 | 						break;
234 | 				}
235 | 				this.updateOccupation();
236 | 			}
237 | 	);
238 | 
239 | 	timeline.lang = 'en';
240 | 	timeline.cellWidth = 40;
241 | 	timeline.drawElements();
242 | 	timeline.updateMonthCallback();
243 | 
244 | 	
245 | 	evt1.jObject.mouseover(
246 | 	function(e){
247 | 		var infoBox = $("#info_evt1");
248 | 		var x = e.pageX - this.offsetLeft;
249 | 		var y = e.pageY - this.offsetTop;
250 | 		infoBox.css("left",x+60);
251 | 		infoBox.css("top",y+15);
252 | 		infoBox.show();
253 | 	});
254 | 	evt1.jObject.mouseout(function(e){
255 | 		$("#info_evt1").hide();
256 | 	});
257 | 	
258 | 	
259 | 	/** 
260 | 	 * Zoom feature
261 | 	 */
262 | 	 $( "#zoomSlider" ).slider({ min:20, max: 50, step: 10, 
263 | 		 value: timeline.cellWidth, 
264 | 		 change: function( event, ui ) { 
265 | 			timeline.cellWidth = ui.value;
266 | 			timeline.drawElements();
267 | 			timeline.updateMonthCallback(); 
268 | 			$("#zoomValue").html(ui.value);
269 | 		 } 
270 | 	 });
271 | 	 $("#zoomValue").html(timeline.cellWidth);
272 | });
273 | 
274 | 275 | 276 | -------------------------------------------------------------------------------- /calendarGantt-monthDemo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Calendar Gantt 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 127 | 128 | 129 | 130 | 131 | 132 | 133 |

GanttCalendar Demo

134 |

Démo du mode "Affichage mensuel" avec 4 niveaux de zoom. 135 |
136 | Retour à l'article 137 | | 138 | Calendrier Hebdomadaire 139 | 140 |

141 | 142 | 143 |
144 |
145 |
Zoom : 146 |
147 |
148 |
149 |
150 |
151 | 152 | 164 | 165 |
166 |
167 | 
168 | $(function() {
169 | 	// Definition : Event(ressourceId, eventId, startDay, endDay, label)
170 | 	
171 | 	// 2012 - oct :
172 | 	var evt1 = new EventCal(1, "event_001", 2, 5, "Event Paris - WSDD");
173 | 	var evt2 = new EventCal(2, "event_002", 2, 5, "Paris - WSDD(2-5)");
174 | 	var evt5 = new EventCal(3, "event_005", 4, 15, "Long journey");
175 | 	var evt6 = new EventCal(1, "event_006", 6, 10, "Visit Stan LONE");
176 | 	var evt7 = new EventCal(1, "event_007", 12, 19, "Confirm Dentist");
177 | 	var evt8 = new EventCal(4, "event_008", 6, 10, "Visit Stan LONE");
178 | 	var evt9 = new EventCal(5, "event_009", 10, 15, "Maintenance");
179 | 	
180 | 	// 2012 - nov :
181 | 	var evt3 = new EventCal(3, "event_002", 3, 5, "SF - EEES(3-5)");
182 | 	var evt3bis = new EventCal(3, "event_002BIS", 8, 14, "SF - Paintings");
183 | 	var evt4 = new EventCal(4, "event_003", 7, 9, "team (7-9)");
184 | 
185 | 	var timeline = new TimeLineMonth("myGanttCalendar",10, 2012,
186 | 			{groups: 
187 | 				[  {name: "Singers",
188 | 					id: 1,
189 | 					resources: [{name:"Henri", id:1}, 
190 | 					             {name:"Frank", id:2},
191 | 					             {name:"Jenny", id:3}]
192 | 				}, {name: "Objects",
193 | 					id: 2,
194 | 					resources: [{name:"Micro",id:4}, 
195 | 					             {name:"Ampli", id:5}]
196 | 				}]
197 | 			},
198 | 			function(){
199 | 				switch(this.year){
200 | 					case 2011:
201 | 						break;
202 | 					case 2012:
203 | 						switch (this.month) {
204 | 						case 10:
205 | 							evt1.drawIn(this);
206 | 							evt1.jObject.addClass("specialEvent");
207 | 							evt2.drawIn(this);
208 | 							evt2.jObject.addClass("flagEvent");
209 | 							evt5.drawIn(this);
210 | 							evt5.jObject.addClass("flagEvent");
211 | 							evt6.drawIn(this);
212 | 							evt6.jObject.addClass("lockEvent");
213 | 							evt7.drawIn(this);
214 | 							evt7.jObject.addClass("unlockEvent");
215 | 							evt8.drawIn(this);
216 | 							evt9.drawIn(this);
217 | 							break;
218 | 						case 11:
219 | 							evt3.drawIn(this);
220 | 							evt3bis.drawIn(this);
221 | 							evt3bis.jObject.addClass("lockEvent");
222 | 							evt4.drawIn(this);
223 | 							break;
224 | 
225 | 						default:
226 | 							break;
227 | 						}
228 | 						break;
229 | 					default:
230 | 						break;
231 | 				}
232 | 			}
233 | 	);
234 | 
235 | 	timeline.lang = 'en';
236 | 	timeline.cellWidth = 40;
237 | 	timeline.drawElements();
238 | 	timeline.updateCallback();
239 | 
240 | 	
241 | 	evt1.jObject.mouseover(
242 | 	function(e){
243 | 		var infoBox = $("#info_evt1");
244 | 		var x = e.pageX - this.offsetLeft;
245 | 		var y = e.pageY - this.offsetTop;
246 | 		infoBox.css("left",x+60);
247 | 		infoBox.css("top",y+15);
248 | 		infoBox.show();
249 | 	});
250 | 	evt1.jObject.mouseout(function(e){
251 | 		$("#info_evt1").hide();
252 | 	});
253 | 	
254 | 	
255 | 	/** 
256 | 	 * Zoom feature
257 | 	 */
258 | 	 $( "#zoomSlider" ).slider({ min:20, max: 50, step: 10, 
259 | 		 value: timeline.cellWidth, 
260 | 		 change: function( event, ui ) { 
261 | 			timeline.cellWidth = ui.value;
262 | 			timeline.drawElements();
263 | 			timeline.updateMonthCallback(); 
264 | 			$("#zoomValue").html(ui.value);
265 | 		 } 
266 | 	 });
267 | 	 $("#zoomValue").html(timeline.cellWidth);
268 | });
269 | 
270 | 271 | 272 | -------------------------------------------------------------------------------- /calendarGantt-weekDemo-src.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Calendar Gantt 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 146 | 147 | 148 | 149 | 150 | 151 |

GanttCalendar Demo

152 |

Démo du mode "Affichage hebdomadaire" avec 4 niveaux de zoom. 153 |
154 | Retour à l'article 155 | | 156 | Calendrier Mensuel 157 |

158 | 159 |
160 |
161 | 162 |
Zoom : 163 |
164 |
165 |
166 |
167 |
168 | 169 | 170 | 182 | 183 |
184 |
185 | 
186 | $(function() {
187 | 	// Definition : EventCal(ressourceId, eventId, startDay, endDay, label)
188 | 	
189 | 	var evt1 = new EventCal(1, "event_001", 4, 5, "Event Paris - WSDD");
190 | 	var evt2 = new EventCal(2, "event_002", 5, 7, "Paris - WSDD(2-5)");
191 | 	var evt2_bis = new EventCal(2, "event_002_bis", 4, 6, "Réunion");
192 | 	var evt3 = new EventCal(2, "event_003", 14, 17, "Préparation Evènement");
193 | 	var evt5 = new EventCal(3, "event_005", 9, 11, "Week-end");
194 | 	var evt5_bis = new EventCal(3, "event_005_bis", 8, 9.5, "Réunion");
195 | 	var evt5_ter = new EventCal(3, "event_005_ter", 6.5, 8.5, "Transfert");
196 | 	var evt6 = new EventCal(4, "event_006", 9, 11, "Week-end");
197 | 	var evt7 = new EventCal(5, "event_007", 9, 11, "Week-end");
198 | 	var evt8 = new EventCal(6, "event_008", 9, 11, "Week-end");
199 | 	var evt9 = new EventCal(7, "event_009", 9, 11, "Week-end");
200 | 	var evt10 = new EventCal(8, "event_010", 9, 11, "Week-end");
201 | 	var evt11 = new EventCal(9, "event_011", 9, 11, "Week-end");
202 | 	var evt12 = new EventCal(10, "event_012", 9, 11, "Week-end");
203 | 	var evt13 = new EventCal(11, "event_013", 9, 11, "Week-end");
204 | 	var evt14 = new EventCal(1, "event_014", 9, 11, "Week-end");
205 | 	var evt15 = new EventCal(2, "event_015", 9, 11, "Week-end");
206 | 
207 | 	var evt101 = new EventCal(101, "event_101", 7, 8, "Répétition générale");
208 | 	var evt102 = new EventCal(102, "event_102", 6, 8, "Contrôle qualité");
209 | 
210 | 	var timeline = new TimeLineWeek("myGanttCalendar",10, 2013,
211 | 			{groups: 
212 | 				[  {name: "Singers",
213 | 					id: 1,
214 | 					resources: [{name:"Henri", id:1}, 
215 | 					             {name:"Frank", id:2},
216 | 					             {name:"Jenny", id:3},
217 | 					             {name:"Stan", id:4},
218 | 					             {name:"Sammy", id:5},
219 | 					             {name:"Jason", id:6},
220 | 					             {name:"Robert", id:7},
221 | 					             {name:"Madison", id:8},
222 | 					             {name:"Juliette", id:9},
223 | 					             {name:"Nassa", id:10},
224 | 					             {name:"Tamara", id:11}]
225 | 				}, {name: "Objects",
226 | 					id: 2,
227 | 					resources: [{name:"Micro",id:101}, 
228 | 					             {name:"Ampli", id:102}]
229 | 				}]
230 | 			},
231 | 			function(){ // updateWeekCallback()
232 | 				switch(this.year){
233 | 					case 2011:
234 | 						break;
235 | 					case 2013:
236 | 						switch (this.weekNumber) {
237 | 						case 10:
238 | 							evt1.drawIn(this);
239 | 							evt2.drawIn(this);
240 | 							evt2_bis.drawIn(this);
241 | 							evt5.drawIn(this);
242 | 							evt5_bis.drawIn(this);
243 | 							evt5_ter.drawIn(this);
244 | 							evt6.drawIn(this);
245 | 							evt7.drawIn(this);
246 | 							evt8.drawIn(this);
247 | 							evt9.drawIn(this);
248 | 							evt10.drawIn(this);
249 | 							evt11.drawIn(this);
250 | 							evt12.drawIn(this);
251 | 							evt13.drawIn(this);
252 | 							evt14.drawIn(this);
253 | 							evt15.drawIn(this);
254 | 							evt101.drawIn(this);
255 | 							evt102.drawIn(this);
256 | 							
257 | 							evt1.jObject.addClass("specialEvent");
258 | 							evt2.jObject.addClass("flagEvent");
259 | 							evt5.jObject.addClass("flagEvent");
260 | 							break;
261 | 						case 11:
262 | 							evt3.drawIn(this);
263 | 							break;
264 | 
265 | 						default:
266 | 							break;
267 | 						}
268 | 						break;
269 | 					default:
270 | 						break;
271 | 				}
272 | 			}
273 | 	);
274 | 
275 | 	timeline.lang = 'fr';
276 | 	timeline.cellWidth = 150;
277 | 	timeline.drawElements();
278 | 	
279 | 	evt1.jObject.mouseover(
280 | 	function(e){
281 | 		var infoBox = $("#info_evt1");
282 | 		var x = e.pageX - this.offsetLeft;
283 | 		var y = e.pageY - this.offsetTop;
284 | 		infoBox.css("left",x+10);
285 | 		infoBox.css("top",y+15);
286 | 		infoBox.show();
287 | 	});
288 | 	evt1.jObject.mouseout(function(e){
289 | 		$("#info_evt1").hide();
290 | 	});
291 | 	
292 | 	/** 
293 | 	 * Zoom feature
294 | 	 */
295 | 	 $( "#zoomSlider" ).slider({ min:50, max: 200, step: 50, 
296 | 		 value: timeline.cellWidth, 
297 | 		 change: function( event, ui ) { 
298 | 			timeline.cellWidth = ui.value;
299 | 			timeline.drawElements();
300 | 			$("#zoomValue").html(ui.value);
301 | 		 } 
302 | 	 });
303 | 	 $("#zoomValue").html(timeline.cellWidth);
304 | });
305 | 
306 | 307 | 308 | -------------------------------------------------------------------------------- /calendarGantt-weekDemo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Calendar Gantt 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 147 | 148 | 149 | 150 | 151 | 152 |

GanttCalendar Demo

153 |

Démo du mode "Affichage hebdomadaire" avec 4 niveaux de zoom. 154 |
155 | Retour à l'article 156 | | 157 | Calendrier Mensuel 158 | | 159 | Tests des calendriers 160 |

161 | 162 |
163 |
164 | 165 |
Zoom : 166 |
167 |
168 |
169 |
170 |
171 | 172 | 173 | 185 | 186 |
187 |
188 | 
189 | $(function() {
190 | 	// Definition : EventCal(ressourceId, eventId, startDay, endDay, label)
191 | 	
192 | 	var evt1 = new EventCal(1, "event_001", 4, 5, "Event Paris - WSDD");
193 | 	var evt2 = new EventCal(2, "event_002", 5, 7, "Paris - WSDD(2-5)");
194 | 	var evt2_bis = new EventCal(2, "event_002_bis", 4, 6, "Réunion");
195 | 	var evt3 = new EventCal(2, "event_003", 14, 17, "Préparation Evènement");
196 | 	var evt5 = new EventCal(3, "event_005", 9, 11, "Week-end");
197 | 	var evt5_bis = new EventCal(3, "event_005_bis", 8, 9.5, "Réunion");
198 | 	var evt5_ter = new EventCal(3, "event_005_ter", 6.5, 8.5, "Transfert");
199 | 	var evt6 = new EventCal(4, "event_006", 9, 11, "Week-end");
200 | 	var evt7 = new EventCal(5, "event_007", 9, 11, "Week-end");
201 | 	var evt8 = new EventCal(6, "event_008", 9, 11, "Week-end");
202 | 	var evt9 = new EventCal(7, "event_009", 9, 11, "Week-end");
203 | 	var evt10 = new EventCal(8, "event_010", 9, 11, "Week-end");
204 | 	var evt11 = new EventCal(9, "event_011", 9, 11, "Week-end");
205 | 	var evt12 = new EventCal(10, "event_012", 9, 11, "Week-end");
206 | 	var evt13 = new EventCal(11, "event_013", 9, 11, "Week-end");
207 | 	var evt14 = new EventCal(1, "event_014", 9, 11, "Week-end");
208 | 	var evt15 = new EventCal(2, "event_015", 9, 11, "Week-end");
209 | 
210 | 	var evt101 = new EventCal(101, "event_101", 7, 8, "Répétition générale");
211 | 	var evt102 = new EventCal(102, "event_102", 6, 8, "Contrôle qualité");
212 | 
213 | 	var timeline = new TimeLineWeek("myGanttCalendar",10, 2013,
214 | 			{groups: 
215 | 				[  {name: "Singers",
216 | 					id: 1,
217 | 					resources: [{name:"Henri", id:1}, 
218 | 					             {name:"Frank", id:2},
219 | 					             {name:"Jenny", id:3},
220 | 					             {name:"Stan", id:4},
221 | 					             {name:"Sammy", id:5},
222 | 					             {name:"Jason", id:6},
223 | 					             {name:"Robert", id:7},
224 | 					             {name:"Madison", id:8},
225 | 					             {name:"Juliette", id:9},
226 | 					             {name:"Nassa", id:10},
227 | 					             {name:"Tamara", id:11}]
228 | 				}, {name: "Objects",
229 | 					id: 2,
230 | 					resources: [{name:"Micro",id:101}, 
231 | 					             {name:"Ampli", id:102}]
232 | 				}]
233 | 			},
234 | 			function(){ // updateCallback()
235 | 				switch(this.year){
236 | 					case 2011:
237 | 						break;
238 | 					case 2013:
239 | 						switch (this.weekNumber) {
240 | 						case 10:
241 | 							evt1.drawIn(this);
242 | 							evt2.drawIn(this);
243 | 							evt2_bis.drawIn(this);
244 | 							evt5.drawIn(this);
245 | 							evt5_bis.drawIn(this);
246 | 							evt5_ter.drawIn(this);
247 | 							evt6.drawIn(this);
248 | 							evt7.drawIn(this);
249 | 							evt8.drawIn(this);
250 | 							evt9.drawIn(this);
251 | 							evt10.drawIn(this);
252 | 							evt11.drawIn(this);
253 | 							evt12.drawIn(this);
254 | 							evt13.drawIn(this);
255 | 							evt14.drawIn(this);
256 | 							evt15.drawIn(this);
257 | 							evt101.drawIn(this);
258 | 							evt102.drawIn(this);
259 | 							
260 | 							evt1.jObject.addClass("specialEvent");
261 | 							evt2.jObject.addClass("flagEvent");
262 | 							evt5.jObject.addClass("flagEvent");
263 | 							break;
264 | 						case 11:
265 | 							evt3.drawIn(this);
266 | 							break;
267 | 
268 | 						default:
269 | 							break;
270 | 						}
271 | 						break;
272 | 					default:
273 | 						break;
274 | 				}
275 | 				this.updateOccupation();
276 | 			}
277 | 	);
278 | 
279 | 	timeline.lang = 'fr';
280 | 	timeline.cellWidth = 150;
281 | 	timeline.drawElements();
282 | 	timeline.updateCallback();
283 | 
284 | 	
285 | 	evt1.jObject.mouseover(
286 | 	function(e){
287 | 		var infoBox = $("#info_evt1");
288 | 		var x = e.pageX - this.offsetLeft;
289 | 		var y = e.pageY - this.offsetTop;
290 | 		infoBox.css("left",x+10);
291 | 		infoBox.css("top",y+15);
292 | 		infoBox.show();
293 | 	});
294 | 	evt1.jObject.mouseout(function(e){
295 | 		$("#info_evt1").hide();
296 | 	});
297 | 	
298 | 	/** 
299 | 	 * Zoom feature
300 | 	 */
301 | 	 $( "#zoomSlider" ).slider({ min:50, max: 200, step: 50, 
302 | 		 value: timeline.cellWidth, 
303 | 		 change: function( event, ui ) { 
304 | 			timeline.cellWidth = ui.value;
305 | 			timeline.drawElements();
306 | 			timeline.updateWeekCallback(); 
307 | 			$("#zoomValue").html(ui.value);
308 | 		 } 
309 | 	 });
310 | 	 $("#zoomValue").html(timeline.cellWidth);
311 | });
312 | 
313 | 314 | 315 | -------------------------------------------------------------------------------- /calendarGantt.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Calendar Gantt 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 98 | 99 | 100 | 101 | 102 | 103 | 104 |
105 |
106 | 107 | 119 | 120 | 121 | 122 | 123 | 124 | -------------------------------------------------------------------------------- /css/style.css: -------------------------------------------------------------------------------- 1 | @CHARSET "UTF-8"; 2 | 3 | .largeCalendar{ 4 | /*width: 601px;*/ 5 | height: 300px; 6 | border: 1px solid #555; 7 | border-radius: 3px; 8 | } 9 | 10 | 11 | .leftColumn { 12 | float: left; 13 | border-right: 1px solid #aaa; 14 | } 15 | .eventsContainer{ 16 | width: 300px; 17 | overflow:auto; 18 | float: right; 19 | } 20 | 21 | 22 | .debug{ 23 | border: 1px solid red; 24 | height: 50px; 25 | } 26 | 27 | .group{ 28 | font-weight: normal; 29 | 30 | height: 16px; 31 | color: #fff; 32 | font-family: arial; 33 | font-size: 11px; 34 | background-color: #33333a; 35 | display: block; 36 | clear: both; 37 | width: 100%; 38 | padding-top: 3px; 39 | } 40 | 41 | .ressource{ 42 | text-align: right; 43 | background-color: #e9e9e9; 44 | font-family: arial; 45 | font-size: 12px; 46 | padding-right: 5px; 47 | } 48 | 49 | .lineRessource { 50 | height: 21px; 51 | padding-top: 3px; 52 | } 53 | 54 | .lineOfDays{ 55 | display: block; 56 | clear: both; 57 | } 58 | 59 | .lineForRessource { 60 | display: block; 61 | clear: both; 62 | height: 23px; 63 | padding-top: 1px; 64 | background-image: url('img/bg-grid.gif'); 65 | position: relative; 66 | } 67 | 68 | .for31days { 69 | width: 1550px; /* = 50*31 */ 70 | } 71 | .for30days { 72 | width: 1500px; /* = 50*30 */ 73 | } 74 | .for29days { 75 | width: 1450px; /* = 50*29 */ 76 | } 77 | .for28days { 78 | width: 1400px; /* = 50*28 */ 79 | } 80 | 81 | .headerRessources, .day{ 82 | height: 25px; 83 | width: 50px; 84 | padding-top: 5px; 85 | float: left; 86 | text-align: center; 87 | 88 | color: #fff; 89 | font-family: arial; 90 | font-size: 10px; 91 | font-weight: bold; 92 | 93 | background: #4a4a53; /* Old browsers */ 94 | background: -moz-linear-gradient(top, #4a4a53 0%, #33333a 100%); /* FF3.6+ */ 95 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#4a4a53), color-stop(100%,#33333a)); /* Chrome,Safari4+ */ 96 | background: -webkit-linear-gradient(top, #4a4a53 0%,#33333a 100%); /* Chrome10+,Safari5.1+ */ 97 | background: -o-linear-gradient(top, #4a4a53 0%,#33333a 100%); /* Opera 11.10+ */ 98 | background: -ms-linear-gradient(top, #4a4a53 0%,#33333a 100%); /* IE10+ */ 99 | background: linear-gradient(to bottom, #4a4a53 0%,#33333a 100%); /* W3C */ 100 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#4a4a53', endColorstr='#33333a',GradientType=0 ); /* IE6-9 */ 101 | 102 | } 103 | 104 | .headerRessources { 105 | color: #fff; 106 | font-family: arial; 107 | font-size: 10px; 108 | border: none; 109 | min-width: 120px; 110 | width: 120px; 111 | height: 25px; 112 | padding-top: 5px; 113 | 114 | background: #4a4a53; /* Old browsers */ 115 | background: -moz-linear-gradient(top, #4a4a53 0%, #33333a 100%); /* FF3.6+ */ 116 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#4a4a53), color-stop(100%,#33333a)); /* Chrome,Safari4+ */ 117 | background: -webkit-linear-gradient(top, #4a4a53 0%,#33333a 100%); /* Chrome10+,Safari5.1+ */ 118 | background: -o-linear-gradient(top, #4a4a53 0%,#33333a 100%); /* Opera 11.10+ */ 119 | background: -ms-linear-gradient(top, #4a4a53 0%,#33333a 100%); /* IE10+ */ 120 | background: linear-gradient(to bottom, #4a4a53 0%,#33333a 100%); /* W3C */ 121 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#4a4a53', endColorstr='#33333a',GradientType=0 ); /* IE6-9 */ 122 | 123 | } 124 | 125 | .month { 126 | color: #fff; 127 | font-family: arial; 128 | font-size: 10px; 129 | border: none; 130 | min-width: 105px; 131 | width: 105px; 132 | height: 25px; 133 | padding-top: 5px; 134 | width: 100%; 135 | 136 | background: #4a4a53; /* Old browsers */ 137 | background: -moz-linear-gradient(top, #4a4a53 0%, #33333a 100%); /* FF3.6+ */ 138 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#4a4a53), color-stop(100%,#33333a)); /* Chrome,Safari4+ */ 139 | background: -webkit-linear-gradient(top, #4a4a53 0%,#33333a 100%); /* Chrome10+,Safari5.1+ */ 140 | background: -o-linear-gradient(top, #4a4a53 0%,#33333a 100%); /* Opera 11.10+ */ 141 | background: -ms-linear-gradient(top, #4a4a53 0%,#33333a 100%); /* IE10+ */ 142 | background: linear-gradient(to bottom, #4a4a53 0%,#33333a 100%); /* W3C */ 143 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#4a4a53', endColorstr='#33333a',GradientType=0 ); /* IE6-9 */ 144 | } 145 | 146 | .month .prevMonth { 147 | float: left; 148 | background-image: url('img/button-inset-left.png'); 149 | background-repeat: no-repeat; 150 | width: 15px; 151 | height: 15px; 152 | margin-left: 5px; 153 | padding-left: 5px; 154 | padding-top: 2px; 155 | cursor: pointer; 156 | } 157 | 158 | .month .prevMonth:HOVER, .month .nextMonth:HOVER { 159 | background-position: 0 -17px; 160 | } 161 | 162 | .month .nextMonth { 163 | float: right; 164 | background-image: url('img/button-inset-right.png'); 165 | background-repeat: no-repeat; 166 | width: 15px; 167 | height: 15px; 168 | margin-right: 5px; 169 | padding-right: 5px; 170 | padding-top: 2px; 171 | cursor: pointer; 172 | } 173 | 174 | .month .nameMonth { 175 | float: left; 176 | text-align: center; 177 | width: 75%; 178 | padding-left: 9%; 179 | font-size: 12px; 180 | font-weight: bold; 181 | padding-top: 2px; 182 | } 183 | 184 | 185 | .horizontalCalendarHeaders { 186 | } 187 | .horizontalCalendarContent { 188 | } 189 | 190 | .labelCenter{ 191 | text-align: right; 192 | width: 100%; 193 | } 194 | 195 | .labelLeft{ 196 | margin-left: 5px; 197 | text-align: left; 198 | } 199 | 200 | .labelRight{ 201 | margin-top: 5px; 202 | margin-right: 5px; 203 | text-align: right; 204 | } 205 | 206 | .event{ 207 | background-color: #ccc; 208 | height: 16px; 209 | border-radius: 3px; 210 | cursor: pointer; 211 | text-align: center; 212 | border: 1px solid #555; 213 | font-family: arial; 214 | color: #222; 215 | top: 1px; 216 | position: absolute; 217 | padding-top: 3px; 218 | font-size: 12px; 219 | } 220 | 221 | .event:hover{ 222 | box-shadow: 0 0 3px black; 223 | border: 1px solid #000; 224 | color: #000; 225 | } 226 | 227 | .eventContent{ 228 | 229 | } 230 | 231 | 232 | .specialEvent{ 233 | background-image: url('img/glyphs-16/star.png'); 234 | background-position: right; 235 | background-repeat: no-repeat; 236 | } 237 | 238 | .lockEvent{ 239 | background-image: url('img/glyphs-16/lock.png'); 240 | background-position: right; 241 | background-repeat: no-repeat; 242 | } 243 | 244 | .unlockEvent{ 245 | background-image: url('img/glyphs-16/unlock.png'); 246 | background-position: right; 247 | background-repeat: no-repeat; 248 | } 249 | 250 | .flagEvent{ 251 | background-image: url('img/glyphs-16/flag.png'); 252 | background-position: right; 253 | background-repeat: no-repeat; 254 | } 255 | 256 | /** 257 | * Info box 258 | */ 259 | .infoBox{ 260 | font-family: helvetica,​arial,​sans-serif; 261 | box-shadow: 0 0 10px #AAAAAA; 262 | border: 1px solid #999999; 263 | border-radius: 6px 6px 0px 0px; 264 | width: 250px; 265 | } 266 | .infoBox .header{ 267 | border-radius: 5px 5px 0px 0px; 268 | border-top-color: #0A81D0; 269 | text-shadow: 0 1px 0 #003D68; 270 | color: #FFFFFF; 271 | padding: 4px 8px; 272 | font-size: 14px; 273 | 274 | background: #7abcff; /* Old browsers */ 275 | background: -moz-linear-gradient(top, #7abcff 0%, #4c88c4 44%, #2b66a0 100%); /* FF3.6+ */ 276 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#7abcff), color-stop(44%,#4c88c4), color-stop(100%,#2b66a0)); /* Chrome,Safari4+ */ 277 | background: -webkit-linear-gradient(top, #7abcff 0%,#4c88c4 44%,#2b66a0 100%); /* Chrome10+,Safari5.1+ */ 278 | background: -o-linear-gradient(top, #7abcff 0%,#4c88c4 44%,#2b66a0 100%); /* Opera 11.10+ */ 279 | background: -ms-linear-gradient(top, #7abcff 0%,#4c88c4 44%,#2b66a0 100%); /* IE10+ */ 280 | background: linear-gradient(to bottom, #7abcff 0%,#4c88c4 44%,#2b66a0 100%); /* W3C */ 281 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#7abcff', endColorstr='#2b66a0',GradientType=0 ); /* IE6-9 */ 282 | 283 | } 284 | .infoBox .content{ 285 | color: #333; 286 | text-shadow: 0 1px 0 #FFFFFF; 287 | font-size: 10px; 288 | padding: 5px 10px 5px 10px; 289 | 290 | background: #d9dbd4; /* Old browsers */ 291 | background: -moz-linear-gradient(top, #d9dbd4 0%, #bcbcbc 100%); /* FF3.6+ */ 292 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#d9dbd4), color-stop(100%,#bcbcbc)); /* Chrome,Safari4+ */ 293 | background: -webkit-linear-gradient(top, #d9dbd4 0%,#bcbcbc 100%); /* Chrome10+,Safari5.1+ */ 294 | background: -o-linear-gradient(top, #d9dbd4 0%,#bcbcbc 100%); /* Opera 11.10+ */ 295 | background: -ms-linear-gradient(top, #d9dbd4 0%,#bcbcbc 100%); /* IE10+ */ 296 | background: linear-gradient(to bottom, #d9dbd4 0%,#bcbcbc 100%); /* W3C */ 297 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#d9dbd4', endColorstr='#bcbcbc',GradientType=0 ); /* IE6-9 */ 298 | 299 | 300 | } 301 | 302 | -------------------------------------------------------------------------------- /ganttCalendar-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/ganttCalendar-demo.png -------------------------------------------------------------------------------- /js/ganttCalendar/ganttCalendar-1.0.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Gantt Calendar by Julien CORON - 2012 3 | * Copyright 2012 Julien CORON 4 | * 5 | * Licence : 6 | Ce programme est un logiciel libre ; vous pouvez le redistribuer ou le 7 | modifier suivant les termes de la GNU General Public License telle que 8 | publiée par la Free Software Foundation ; soit la version 3 de la licence, 9 | soit (à votre gré) toute version ultérieure. 10 | 11 | Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE 12 | GARANTIE ; pas même la garantie implicite de COMMERCIABILISABILITÉ ni 13 | d'ADÉQUATION à UN OBJECTIF PARTICULIER. Consultez la GNU General Public 14 | License pour plus de détails. 15 | * 16 | * 17 | This program is free software: you can redistribute it and/or modify 18 | it under the terms of the GNU General Public License as published by 19 | the Free Software Foundation, either version 3 of the License, or 20 | (at your option) any later version. 21 | 22 | This program is distributed in the hope that it will be useful, 23 | but WITHOUT ANY WARRANTY; without even the implied warranty of 24 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 | GNU General Public License for more details. 26 | 27 | You should have received a copy of the GNU General Public License 28 | along with this program. If not, see . 29 | */ 30 | TimeLineMonth=function(a,e,d,c,b){return this.init(a,e,d,c,b)};$.extend(TimeLineMonth.prototype,{container:"",month:"",year:"",days:{1:[31,31],2:[28,29],3:[31,31],4:[30,30],5:[31,31],6:[30,30],7:[31,31],8:[31,31],9:[30,30],10:[31,31],11:[30,30],12:[31,31]},lang:"fr",months:{fr:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Décembre"],en:["January","February","March","April","May","June","July","Agust","September","October","November","December"]},ressourcesColumnHeader:"Ressources",init:function(a,e,d,c,b){this.container=a;this.month=e;this.year=d;this.ressources=c;this.updateMonthCallback=b||function(){};this.drawElements();this.updateMonthCallback();return this},drawElements:function(){var i,p,l,g,f,n,b,m,d,h,c,q,a,o,j,r,k,e;i=$("#"+this.container);i.timeLineMonth=this;p=$(document.createElement("div")).addClass("largeCalendar");i.html(p);l=$(document.createElement("div")).addClass("month");p.html(l);l.html('
'+this.months[this.lang][this.month-1]+" "+this.year+'
');g=$(document.createElement("div")).addClass("leftColumn horizontalCalendarHeaders");p.append(g);f=$(document.createElement("div")).addClass("eventsContainer");p.append(f);n=$(document.createElement("div")).addClass("headerRessources");g.html(n);f.width(p.width()-n.width()-1);b=$(document.createElement("span")).addClass("labelCenter").html(this.ressourcesColumnHeader);n.html(b);m=$(document.createElement("div")).addClass("listRessources");g.append(m);for(d=0;d '+h.name+" ");for(c=0;c '+q.name+" ")}}a=((this.year%4==0&&this.year%100!=0)||this.year%400==0)?(1):(0);o=$(document.createElement("div")).addClass("horizontalCalendarContent for"+this.days[this.month][a]+"days").attr("tabindex","0");f.append(o);j=$(document.createElement("div")).addClass("lineOfDays");o.html(j);r="";for(k=1;k<=this.days[this.month][a];k++){e=(k<10)?("0"+k):(k);r+='
'+e+"
"}j.html(r);for(d=0;d ');for(c=0;c')}}this.defineEvents(this)},goToNextMonth:function(){if(this.month==12){this.month=1;this.year++}else{this.month++}this.drawElements();this.updateMonthCallback()},goToPrevMonth:function(){if(this.month==1){this.month=12;this.year--}else{this.month--}this.drawElements();this.updateMonthCallback()},updateWidth:function(){$(".eventsContainer").width($(".largeCalendar").width()-$(".headerRessources").width()-1)},defineEvents:function(a){$(".prevMonth").click(function(){a.goToPrevMonth()});$(".nextMonth").click(function(){a.goToNextMonth()});$(".horizontalCalendarContent").keydown(function(b){switch(b.keyCode){case 34:a.goToPrevMonth();$(".horizontalCalendarContent").focus();break;case 33:a.goToNextMonth();$(".horizontalCalendarContent").focus();break;default:break}});$(window).resize(function(){a.drawElements();a.updateMonthCallback()})}});Event=function(e,b,d,c,a){this.init(e,b,d,c,a)};$.extend(Event.prototype,{ressourceId:"",eventId:"",startDay:"",endDay:"",label:"",jObject:null,init:function(e,b,d,c,a){this.ressourceId=e;this.eventId=b;this.startDay=d;this.endDay=c;this.label=a},drawIn:function(a){var c,b;c=50*(this.startDay-1);b=50*(this.endDay-this.startDay)-3;$("#"+a).find("#events_r_"+this.ressourceId).append('
'+this.label+"
");this.jObject=$("#"+this.eventId);$("#"+a).find("#"+this.eventId).draggable({axis:"x",containment:"parent",opacity:0.5,snap:true});$("#"+a).find("#events_r_"+this.ressourceId).droppable({drop:function(e,h){var d,g,f;d=$(this).offset().left;g=h.offset.left;f=1+((g-d)/50);$(".debug").html("newDayStart: "+f)}});return this}}); 31 | -------------------------------------------------------------------------------- /js/ganttCalendar/ganttCalendar-1.1-min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Gantt Calendar by Julien CORON - 2013 3 | * Copyright 2013 Julien CORON 4 | * 5 | * Licence : 6 | Ce programme est un logiciel libre ; vous pouvez le redistribuer ou le 7 | modifier suivant les termes de la GNU General Public License telle que 8 | publiée par la Free Software Foundation ; soit la version 3 de la licence, 9 | soit (à votre gré) toute version ultérieure. 10 | 11 | Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE 12 | GARANTIE ; pas même la garantie implicite de COMMERCIABILISABILITÉ ni 13 | d'ADÉQUATION à UN OBJECTIF PARTICULIER. Consultez la GNU General Public 14 | License pour plus de détails. 15 | * 16 | * 17 | This program is free software: you can redistribute it and/or modify 18 | it under the terms of the GNU General Public License as published by 19 | the Free Software Foundation, either version 3 of the License, or 20 | (at your option) any later version. 21 | 22 | This program is distributed in the hope that it will be useful, 23 | but WITHOUT ANY WARRANTY; without even the implied warranty of 24 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 | GNU General Public License for more details. 26 | 27 | You should have received a copy of the GNU General Public License 28 | along with this program. If not, see . 29 | */ 30 | 31 | 32 | TimeLineMonth=function(e,t,s,r,n){return this.init(e,t,s,r,n)},$.extend(TimeLineMonth.prototype,{TimeLineClass:"MONTH",container:"",month:"",year:"",days:{1:[31,31],2:[28,29],3:[31,31],4:[30,30],5:[31,31],6:[30,30],7:[31,31],8:[31,31],9:[30,30],10:[31,31],11:[30,30],12:[31,31]},lang:"fr",months:{fr:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Décembre"],en:["January","February","March","April","May","June","July","Agust","September","October","November","December"]},weekDays:{fr:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],en:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},eventsByGroup:{},eventsByResource:{},cellWidth:20,resourcesColumnHeader:"Resources",init:function(e,t,s,r,n){return this.container=e,this.month=t,this.year=s,this.resources=r,this.updateMonthCallback=n||function(){},this},getNbDaysInMonth:function(){var e=this.year%4==0&&this.year%100!=0||this.year%400==0?1:0;return this.days[this.month][e]},drawElements:function(){var e,t,s,r,n,i,a,o,d,h,u,l,c,p,v,m,g;e=$("#"+this.container),e.timeLineMonth=this,t=$(document.createElement("div")).addClass("largeCalendar"),e.html(t),s=$(document.createElement("div")).addClass("month"),t.html(s),s.html('
'+this.months[this.lang][this.month-1]+" "+this.year+'
'),r=$(document.createElement("div")).addClass("leftColumn horizontalCalendarHeaders"),t.append(r),n=$(document.createElement("div")).addClass("eventsContainer container-grid-"+this.cellWidth),t.append(n),i=$(document.createElement("div")).addClass("headerResources"),r.html(i),e.width($("body").outerWidth()-1),this.cellWidth*this.getNbDaysInMonth()+i.width()+3 '+h.name+" "),u=0;u '+l.name+" ");for(c=$(document.createElement("div")).addClass("horizontalCalendarContent for"+this.getNbDaysInMonth()+"days").attr("tabindex","0"),n.append(c),p=$(document.createElement("div")).addClass("lineOfDays"),c.html(p),v="",m=1;m<=this.getNbDaysInMonth();m++)g=10>m?"0"+m:m,jsDate=new Date(this.year,this.month-1,m),v+='
'+g+'
'+this.weekDays[this.lang][jsDate.getDay()]+"
";for(p.html(v),firstDayOfMonth=new Date(this.year,this.month-1,1),d=0;d '),u=0;u');this.defineEvents(this)},goToNextMonth:function(){12==this.month?(this.month=1,this.year++):this.month++,this.drawElements(),this.updateMonthCallback()},goToPrevMonth:function(){1==this.month?(this.month=12,this.year--):this.month--,this.drawElements(),this.updateMonthCallback()},updateWidth:function(){$(".eventsContainer").width($(".largeCalendar").width()-$(".headerResources").width()-1)},defineEvents:function(e){$(".prevMonth").click(function(){e.goToPrevMonth()}),$(".nextMonth").click(function(){e.goToNextMonth()}),$(".horizontalCalendarContent").keydown(function(t){switch(t.keyCode){case 34:e.goToPrevMonth(),$(".horizontalCalendarContent").focus();break;case 33:e.goToNextMonth(),$(".horizontalCalendarContent").focus()}}),$(window).resize(function(){e.drawElements(),e.updateMonthCallback()})},findGroupHavingResource:function(e){for(var t=0;t'+this.label+""),this.jObject=$("#"+this.eventId),$("#"+containerId).find("#"+this.eventId).draggable({axis:"x",containment:"parent",opacity:.5,snap:!0}),$("#"+containerId).find("#events_r_"+this.resourceId).droppable({drop:function(t,s){var r,n,i;r=$(this).offset().left,n=s.offset.left,i=1+(n-r)/e.cellWidth,$(".debug").html("newDayStart: "+i)}}),this},asVector:function(e){var t;return"MONTH"==e.TimeLineClass?t=new Vector(this.startDay-1,this.endDay-this.startDay):"WEEK"==e.TimeLineClass&&(newStartDay=this.startDay-e.mondayOfWeek.getDate(),newEndDay=this.endDay-e.mondayOfWeek.getDate(),t=new Vector(2*newStartDay,2*(newEndDay-newStartDay))),t}}),TimeLineWeek=function(e,t,s,r,n){return this.init(e,t,s,r,n)},$.extend(TimeLineWeek.prototype,{TimeLineClass:"WEEK",groups:[],container:"",weekNumber:"",year:"",lang:"fr",weekDays:{fr:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],en:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},eventsByGroup:{},eventsByResource:{},cellWidth:20,mondayOfWeek:null,sundayOfWeek:null,resourcesColumnHeader:"Resources",init:function(e,t,s,r,n){return this.container=e,this.weekNumber=t,this.year=s,this.resources=r,this.updateWeekCallback=n||function(){},this},findGroupHavingResource:function(e){for(var t=0;t
'+this.dateFormat()+'
'),r=$(document.createElement("div")).addClass("leftColumn horizontalCalendarHeaders"),t.append(r),n=$(document.createElement("div")).addClass("eventsContainer container-grid-"+this.cellWidth+" forWeek"),t.append(n),i=$(document.createElement("div")).addClass("headerResources"),r.html(i),e.width($("body").outerWidth()-1),7*this.cellWidth+i.width()+3 '+h.name+" "),u=0;u '+l.name+" ");c=$(document.createElement("div")).addClass("horizontalCalendarContent").attr("tabindex","0").width(7*this.cellWidth),n.append(c),p=$(document.createElement("div")).addClass("lineOfDays"),c.html(p),v="";var D=new Date(this.mondayOfWeek.getTime());for(m=1;7>=m;m++)g=D.getDate()<10?"0"+D.getDate():D.getDate(),v+='
'+g+'
'+this.weekDays[this.lang][m%7]+"
",D.setDate(D.getDate()+1);for(p.html(v),firstDayOfWeek=new Date(this.mondayOfWeek.getTime()),d=0;d '),u=0;u');this.defineEvents(this)},goToNextWeek:function(){52==this.weekNumber?(this.weekNumber=1,this.year++):this.weekNumber++,this.drawElements(),this.updateWeekCallback()},goToPrevWeek:function(){1==this.weekNumber?(this.weekNumber=52,this.year--):this.weekNumber--,this.drawElements(),this.updateWeekCallback()},updateWidth:function(){$(".eventsContainer").width($(".largeCalendar").width()-$(".headerResources").width()-1)},defineEvents:function(e){$(".prevWeek").click(function(){e.goToPrevWeek()}),$(".nextWeek").click(function(){e.goToNextWeek()}),$(".horizontalCalendarContent").keydown(function(t){switch(t.keyCode){case 34:e.goToPrevWeek(),$(".horizontalCalendarContent").focus();break;case 33:e.goToNextWeek(),$(".horizontalCalendarContent").focus()}}),$(window).resize(function(){e.drawElements(),e.updateWeekCallback()})},addEvent:function(e){var t=this.findGroupHavingResource(e.resourceId);null==t&&console.log("Error: Event id="+e.eventId+" has an error. Please check resourceId."),null==this.eventsByGroup[t.id]&&(this.eventsByGroup[t.id]=Array()),this.eventsByGroup[t.id].push(e),null==this.eventsByResource[e.resourceId]&&(this.eventsByResource[e.resourceId]=Array()),this.eventsByResource[e.resourceId].push(e)},updateOccupation:function(){for(var e=0;e. 29 | */ 30 | 31 | TimeLineMonth=function(e,t,s,n,r){return this.init(e,t,s,n,r)},$.extend(TimeLineMonth.prototype,{TimeLineClass:"MONTH",container:"",month:"",year:"",days:{1:[31,31],2:[28,29],3:[31,31],4:[30,30],5:[31,31],6:[30,30],7:[31,31],8:[31,31],9:[30,30],10:[31,31],11:[30,30],12:[31,31]},lang:"fr",months:{fr:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Décembre"],en:["January","February","March","April","May","June","July","Agust","September","October","November","December"]},weekDays:{fr:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],en:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},eventsByGroup:{},eventsByResource:{},cellWidth:20,resourcesColumnHeader:"Resources",init:function(e,t,s,n,r){return this.container=e,this.month=t,this.year=s,this.resources=n,this.updateMonthCallback=r||function(){},this},getNbDaysInMonth:function(){var e=this.year%4==0&&this.year%100!=0||this.year%400==0?1:0;return this.days[this.month][e]},drawElements:function(){var e,t,s,n,r,i,a,o,d,h,u,l,c,p,v,m,y;this.eventsByGroup={},this.eventsByResource={},e=$("#"+this.container),e.timeLineMonth=this,t=$(document.createElement("div")).addClass("largeCalendar"),e.html(t),s=$(document.createElement("div")).addClass("month"),t.html(s),s.html('
'+this.months[this.lang][this.month-1]+" "+this.year+'
'),n=$(document.createElement("div")).addClass("leftColumn horizontalCalendarHeaders"),t.append(n),r=$(document.createElement("div")).addClass("eventsContainer container-grid-"+this.cellWidth),t.append(r),i=$(document.createElement("div")).addClass("headerResources"),n.html(i),e.width($("body").outerWidth()-1),this.cellWidth*this.getNbDaysInMonth()+i.width()+3 '+h.name+" "),u=0;u '+l.name+" ");for(c=$(document.createElement("div")).addClass("horizontalCalendarContent for"+this.getNbDaysInMonth()+"days").attr("tabindex","0"),r.append(c),p=$(document.createElement("div")).addClass("lineOfDays"),c.html(p),v="",m=1;m<=this.getNbDaysInMonth();m++)y=10>m?"0"+m:m,jsDate=new Date(this.year,this.month-1,m),v+='
'+y+'
'+this.weekDays[this.lang][jsDate.getDay()]+"
";for(p.html(v),firstDayOfMonth=new Date(this.year,this.month-1,1),d=0;d '),u=0;u');this.defineEvents(this)},goToNextMonth:function(){12==this.month?(this.month=1,this.year++):this.month++,this.drawElements(),this.updateMonthCallback()},goToPrevMonth:function(){1==this.month?(this.month=12,this.year--):this.month--,this.drawElements(),this.updateMonthCallback()},updateWidth:function(){$(".eventsContainer").width($(".largeCalendar").width()-$(".headerResources").width()-1)},defineEvents:function(e){$(".prevMonth").click(function(){e.goToPrevMonth()}),$(".nextMonth").click(function(){e.goToNextMonth()}),$(".horizontalCalendarContent").keydown(function(t){switch(t.keyCode){case 34:e.goToPrevMonth(),$(".horizontalCalendarContent").focus();break;case 33:e.goToNextMonth(),$(".horizontalCalendarContent").focus()}})},findGroupHavingResource:function(e){for(var t=0;t'+this.label+""),this.jObject=$("#"+this.eventId),$("#"+containerId).find("#"+this.eventId).draggable({axis:"x",containment:"parent",opacity:.5,snap:!0}),$("#"+containerId).find("#events_r_"+this.resourceId).droppable({drop:function(t,s){var n,r,i;n=$(this).offset().left,r=s.offset.left,i=1+(r-n)/e.cellWidth,$(".debug").html("newDayStart: "+i)}}),this},asVector:function(e){var t;return"MONTH"==e.TimeLineClass?t=new Vector(this.startDay-1,this.endDay-this.startDay):"WEEK"==e.TimeLineClass&&(newStartDay=this.startDay-e.mondayOfWeek.getDate(),newEndDay=this.endDay-e.mondayOfWeek.getDate(),t=new Vector(2*newStartDay,2*(newEndDay-newStartDay))),t}}),TimeLineWeek=function(e,t,s,n,r){var i=this.init(e,t,s,n,r);return $(window).resize(function(){i.drawElements(),i.updateWeekCallback()}),i},$.extend(TimeLineWeek.prototype,{TimeLineClass:"WEEK",groups:[],container:"",weekNumber:"",year:"",lang:"fr",weekDays:{fr:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],en:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},eventsByGroup:{},eventsByResource:{},cellWidth:20,mondayOfWeek:null,sundayOfWeek:null,resourcesColumnHeader:"Resources",init:function(e,t,s,n,r){return this.container=e,this.weekNumber=t,this.year=s,this.resources=n,this.updateWeekCallback=r||function(){},this},findGroupHavingResource:function(e){for(var t=0;t
'+this.dateFormat()+'
'),n=$(document.createElement("div")).addClass("leftColumn horizontalCalendarHeaders"),t.append(n),r=$(document.createElement("div")).addClass("eventsContainer container-grid-"+this.cellWidth+" forWeek"),t.append(r),i=$(document.createElement("div")).addClass("headerResources"),n.html(i),e.width($("body").outerWidth()-1),7*this.cellWidth+i.width()+3 '+h.name+" "),u=0;u '+l.name+" ");c=$(document.createElement("div")).addClass("horizontalCalendarContent").attr("tabindex","0").width(7*this.cellWidth),r.append(c),p=$(document.createElement("div")).addClass("lineOfDays"),c.html(p),v="";var D=new Date(this.mondayOfWeek.getTime());for(m=1;7>=m;m++)y=D.getDate()<10?"0"+D.getDate():D.getDate(),v+='
'+y+'
'+this.weekDays[this.lang][m%7]+"
",D.setDate(D.getDate()+1);p.html(v),firstDayOfWeek=new Date(this.mondayOfWeek.getTime());var C=$(document.createElement("div")).addClass("eventsAndGroupContainer");for(c.append(C),d=0;d '),u=0;u');this.defineEvents(this)},goToNextWeek:function(){52==this.weekNumber?(this.weekNumber=1,this.year++):this.weekNumber++,this.drawElements(),this.updateWeekCallback()},goToPrevWeek:function(){1==this.weekNumber?(this.weekNumber=52,this.year--):this.weekNumber--,this.drawElements(),this.updateWeekCallback()},updateWidth:function(){$(".eventsContainer").width($(".largeCalendar").width()-$(".headerResources").width()-1)},defineEvents:function(e){$(".prevWeek").click(function(){e.goToPrevWeek()}),$(".nextWeek").click(function(){e.goToNextWeek()}),$(".horizontalCalendarContent").keydown(function(t){switch(t.keyCode){case 34:e.goToPrevWeek(),$(".horizontalCalendarContent").focus();break;case 33:e.goToNextWeek(),$(".horizontalCalendarContent").focus()}})},addEvent:function(e){var t=this.findGroupHavingResource(e.resourceId);null==t&&alert("Error: Event id="+e.eventId+" has an error. Please check resourceId."),null==this.eventsByGroup[t.id]&&(this.eventsByGroup[t.id]=Array()),this.eventsByGroup[t.id].push(e),null==this.eventsByResource[e.resourceId]&&(this.eventsByResource[e.resourceId]=Array()),this.eventsByResource[e.resourceId].push(e)},updateOccupation:function(){for(var e,t,s=this,n=13,r=0;r1)for(var v,m=1,y=d[0],g=1;g. 29 | */ 30 | 31 | TimeLine=function(e,t,s,i,r){var n=this.init(e,t,s,i,r);return $(window).resize(function(){n.drawElements(),n.updateCallback(),this.updateOccupation()}),n},$.extend(TimeLine.prototype,{TimeLineClass:null,container:"",year:"",lang:"fr",weekDays:{fr:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],en:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},months:{fr:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Décembre"],en:["January","February","March","April","May","June","July","Agust","September","October","November","December"]},resourcesColumnHeader:{fr:"Ressources",en:"Resources"},days:{1:[31,31],2:[28,29],3:[31,31],4:[30,30],5:[31,31],6:[30,30],7:[31,31],8:[31,31],9:[30,30],10:[31,31],11:[30,30],12:[31,31]},eventsByGroup:{},eventsByResource:{},cellWidth:20,_superInit:function(e,t,s,i){this.container=e,this.year=t,this.resources=s,this.updateCallback=i||function(){}},init:function(e,t,s,i,r){return this._superInit(e,s,i,r),this.sub_init(t),this},sub_init:function(){},nbDays:function(){return 0},nbSteps:function(){return 0},firstDay:function(){return 0},findGroupHavingResource:function(e){for(var t=0;t '+group.name+" "),groupResources=$(document.createElement("div")).addClass("resourcesForGroup").attr("id","resourcesForGroup_"+group.id).data("group",group.id),listResources.append(groupResources),indexResource=0;indexResource '+resource.name+" ");return headerResources},_prepareDrawings:function(){return this.eventsByGroup={},this.eventsByResource={},this.containerObj=$("#"+this.container),this.containerObj.timeLineMonth=this,largeCalendar=$(document.createElement("div")).addClass("largeCalendar"),this.containerObj.html(largeCalendar),largeCalendar},_setZoomFeatures:function(e,t,s){this.containerObj.width($("body").outerWidth()-1);var i=this.nbDays();this.cellWidth*i+t.width()+3 '),groupResources=$(document.createElement("div")).addClass("eventsForGroup").attr("id","eventsForGroup_"+group.id).data("group",group.id),t.append(groupResources),indexResource=0;indexResource')},addEvent:function(e){var t=this.findGroupHavingResource(e.resourceId);null==t&&alert("Error: Event id="+e.eventId+" has an error. Please check resourceId."),null==this.eventsByGroup[t.id]&&(this.eventsByGroup[t.id]=Array()),this.eventsByGroup[t.id].push(e),null==this.eventsByResource[e.resourceId]&&(this.eventsByResource[e.resourceId]=Array()),this.eventsByResource[e.resourceId].push(e)},updateOccupation:function(){for(var e,t,s=this,i=this.nbSteps(),r=0;r1)for(var m,v=1,f=d[0],y=1;y .toggleImg");t.html("1px"==$("#resourcesForGroup_"+e).css("height")?"▼":"▶")},defineHeader:function(){this.header=this.containerObj.clone().attr("id","headerCalendar"),this.header.find(".listResources").remove(),this.header.find(".eventsAndGroupContainer").remove(),this.header.find(".eventsContainer").removeClass("y-scroll").addClass("no-scroll"),this.header.hide(),this.containerObj.append(this.header)},updateScrollWindow:function(){var e=this.containerObj.offset(),t=$(window).scrollTop(),s=$(".y-scroll").scrollLeft(),i=this.header.height();t>e.top&&t
'+this.months[this.lang][this.month-1]+" "+this.year+'
');var i=this._drawResourcesIn(e);for(s=$(document.createElement("div")).addClass("eventsContainer y-scroll container-grid-"+this.cellWidth),e.append(s),this._setZoomFeatures(e,i,s),r=$(document.createElement("span")).addClass("labelCenter").html(this.resourcesColumnHeader[this.lang]),i.html(r),n=$(document.createElement("div")).addClass("horizontalCalendarContent for"+this.nbDays()+"days").attr("tabindex","0"),s.append(n),a=$(document.createElement("div")).addClass("lineOfDays"),n.html(a),o="",d=1;d<=this.nbDays();d++)h=10>d?"0"+d:d,jsDate=new Date(this.year,this.month-1,d),o+='
'+h+'
'+this.weekDays[this.lang][jsDate.getDay()]+"
";a.html(o),this._drawGridEvents(n),this.defineHeader(),this.defineEvents(),this.updateCallback(),this.updateOccupation()},goToNext:function(){12==this.month?(this.month=1,this.year++):this.month++,this.drawElements()},goToPrev:function(){1==this.month?(this.month=12,this.year--):this.month--,this.drawElements()},updateWidth:function(){$(".eventsContainer").width($(".largeCalendar").width()-$(".headerResources").width()-1)},sub_defineEvents:function(){}}),TimeLineWeek=function(e,t,s,i,r){return this.init(e,t,s,i,r)},TimeLineWeek.prototype=Object.create(TimeLine.prototype),$.extend(TimeLineWeek.prototype,{TimeLineClass:"WEEK",weekNumber:"",mondayOfWeek:null,sundayOfWeek:null,sub_init:function(e){this.weekNumber=e},dateFormat:function(){var e=this.weekDays[this.lang][1],t=this.weekDays[this.lang][0],s={year:"numeric",month:"2-digit",day:"2-digit"};return e+" "+this.mondayOfWeek.toLocaleDateString(this.lang,s)+" - "+t+" "+this.sundayOfWeek.toLocaleDateString(this.lang,s)},nbDays:function(){return 7},nbSteps:function(){return 13},offset:function(){return new Date(this.mondayOfWeek.getTime()).getDay()},drawElements:function(){var e,t,s,i,r,n,a,o,d,h,u=new Date(this.year,0,1),c=6048e5*(this.weekNumber-1),l=u.getTime()+c-864e5;this.mondayOfWeek=new Date(l),this.sundayOfWeek=new Date(l),this.sundayOfWeek.setDate(this.mondayOfWeek.getDate()+6);var e=this._prepareDrawings();t=$(document.createElement("div")).addClass("week"),e.html(t),t.html('
'+this.dateFormat()+'
');var i=this._drawResourcesIn(e);s=$(document.createElement("div")).addClass("eventsContainer y-scroll container-grid-"+this.cellWidth+" forWeek"),e.append(s),this._setZoomFeatures(e,i,s),r=$(document.createElement("span")).addClass("labelCenter").html(this.resourcesColumnHeader[this.lang]),i.html(r),n=$(document.createElement("div")).addClass("horizontalCalendarContent").attr("tabindex","0").width(7*this.cellWidth),s.append(n),a=$(document.createElement("div")).addClass("lineOfDays"),n.html(a),o="";var p=new Date(this.mondayOfWeek.getTime());for(d=1;7>=d;d++)h=p.getDate()<10?"0"+p.getDate():p.getDate(),o+='
'+h+'
'+this.weekDays[this.lang][d%7]+"
",p.setDate(p.getDate()+1);a.html(o),this._drawGridEvents(n),this.defineHeader(),this.defineEvents(),this.updateCallback(),this.updateOccupation()},goToNext:function(){52==this.weekNumber?(this.weekNumber=1,this.year++):this.weekNumber++,this.drawElements()},goToPrev:function(){1==this.weekNumber?(this.weekNumber=52,this.year--):this.weekNumber--,this.drawElements()},updateWidth:function(){$(".eventsContainer").width($(".largeCalendar").width()-$(".headerResources").width()-1)},sub_defineEvents:function(){}}),TimeLineDay=function(e,t,s,i,r,n){return this.init(e,t,s,i,r,n)},TimeLineDay.prototype=Object.create(TimeLineMonth.prototype),$.extend(TimeLineDay.prototype,{TimeLineClass:"DAY",init:function(e,t,s,i,r,n){return this._superInit(e,i,r,n),this.sub_init(t,s),this},sub_init:function(e,t){this.day=e,this.month=t},nbHours:function(){return 12},startHour:function(){return 8},nbSteps:function(){return this.nbHours()-1},offset:function(){return this.startHour()},_setZoomFeatures:function(e,t,s){this.containerObj.width($("body").outerWidth()-1);var i=this.nbHours();this.cellWidth*i+t.width()+3
'+this.weekDays[this.lang][jsDate.getDay()]+" "+this.day+" "+this.months[this.lang][this.month-1]+" "+this.year+'
');var i=this._drawResourcesIn(e);for(s=$(document.createElement("div")).addClass("eventsContainer y-scroll hourContainer container-grid-"+this.cellWidth),e.append(s),this._setZoomFeatures(e,i,s),r=$(document.createElement("span")).addClass("labelCenter").html(this.resourcesColumnHeader[this.lang]),i.html(r),n=$(document.createElement("div")).addClass("horizontalCalendarContent for"+this.nbHours()+"hours").attr("tabindex","0"),s.append(n),lineOfHours=$(document.createElement("div")).addClass("lineOfHours"),n.html(lineOfHours),htmlHours="",indexHour=this.startHour();indexHour'+hour2digits+"h";lineOfHours.html(htmlHours),this._drawGridEvents(n),this.defineHeader(),this.defineEvents(),this.updateCallback(),this.updateOccupation()},sub_defineEvents:function(){},goToNext:function(){this.day++;var e=this.year%4==0&&this.year%100!=0||this.year%400==0?1:0;this.day>this.days[this.month][e]&&(this.day=1,12==this.month?(this.month=1,this.year++):this.month++),this.drawElements()},goToPrev:function(){this.day--;var e=this.year%4==0&&this.year%100!=0||this.year%400==0?1:0;0==this.day&&(1==this.month?(this.month=12,this.year--):this.month--,this.day=this.days[this.month][e]),this.drawElements()}}),EventCal=function(e,t,s,i,r){this.init(e,t,s,i,r)},$.extend(EventCal.prototype,{resourceId:"",eventId:"",startDay:"",endDay:"",label:"",jObject:null,init:function(e,t,s,i,r){this.resourceId=e,this.eventId=t,this.startDay=s,this.endDay=i,this.label=r},drawIn:function(e){var t,s,i=0,r=0;if(containerId=e.container,"MONTH"==e.TimeLineClass)i=e.cellWidth*(this.startDay-1),r=e.cellWidth*(this.endDay-this.startDay)-3;else if("WEEK"==e.TimeLineClass)t=this.startDay-e.mondayOfWeek.getDate(),s=this.endDay-e.mondayOfWeek.getDate(),i=e.cellWidth*t,r=e.cellWidth*(s-t)-3;else if("DAY"==e.TimeLineClass){var n=this.startDay-e.startHour(),a=this.endDay-e.startHour();i=e.cellWidth*n,r=e.cellWidth*(a-n)-3}return e.addEvent(this),$("#"+containerId).find("#events_r_"+this.resourceId).append('
'+this.label+"
"),this.jObject=$("#"+this.eventId),$("#"+containerId).find("#"+this.eventId).draggable({axis:"x",containment:"parent",opacity:.5,snap:!0}),$("#"+containerId).find("#events_r_"+this.resourceId).droppable({drop:function(t,s){var i,r,n;i=$(this).offset().left,r=s.offset.left,n=1+(r-i)/e.cellWidth,$(".debug").html("newDayStart: "+n)}}),this},asVector:function(e){var t;return"MONTH"==e.TimeLineClass?t=new Vector(this.startDay-1,this.endDay-this.startDay):"WEEK"==e.TimeLineClass?(newStartDay=this.startDay-e.mondayOfWeek.getDate(),newEndDay=this.endDay-e.mondayOfWeek.getDate(),t=new Vector(2*newStartDay,2*(newEndDay-newStartDay))):"DAY"==e.TimeLineClass&&(newStartDay=this.startDay-e.startHour(),newEndDay=this.endDay-e.startHour(),t=new Vector(newStartDay,newEndDay-newStartDay)),t}}); 32 | -------------------------------------------------------------------------------- /js/ganttCalendar/img/bg-grid-100-empty.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/ganttCalendar/img/bg-grid-100-empty.gif -------------------------------------------------------------------------------- /js/ganttCalendar/img/bg-grid-100.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/ganttCalendar/img/bg-grid-100.gif -------------------------------------------------------------------------------- /js/ganttCalendar/img/bg-grid-150-empty.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/ganttCalendar/img/bg-grid-150-empty.gif -------------------------------------------------------------------------------- /js/ganttCalendar/img/bg-grid-150.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/ganttCalendar/img/bg-grid-150.gif -------------------------------------------------------------------------------- /js/ganttCalendar/img/bg-grid-20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/ganttCalendar/img/bg-grid-20.gif -------------------------------------------------------------------------------- /js/ganttCalendar/img/bg-grid-200-empty.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/ganttCalendar/img/bg-grid-200-empty.gif -------------------------------------------------------------------------------- /js/ganttCalendar/img/bg-grid-200.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/ganttCalendar/img/bg-grid-200.gif -------------------------------------------------------------------------------- /js/ganttCalendar/img/bg-grid-30.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/ganttCalendar/img/bg-grid-30.gif -------------------------------------------------------------------------------- /js/ganttCalendar/img/bg-grid-40.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/ganttCalendar/img/bg-grid-40.gif -------------------------------------------------------------------------------- /js/ganttCalendar/img/bg-grid-50-empty.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/ganttCalendar/img/bg-grid-50-empty.gif -------------------------------------------------------------------------------- /js/ganttCalendar/img/bg-grid-50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/ganttCalendar/img/bg-grid-50.gif -------------------------------------------------------------------------------- /js/ganttCalendar/img/bg-grid.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/ganttCalendar/img/bg-grid.gif -------------------------------------------------------------------------------- /js/ganttCalendar/img/button-inset-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/ganttCalendar/img/button-inset-left.png -------------------------------------------------------------------------------- /js/ganttCalendar/img/button-inset-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/ganttCalendar/img/button-inset-right.png -------------------------------------------------------------------------------- /js/ganttCalendar/img/button-inset-right.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/ganttCalendar/img/button-inset-right.xcf -------------------------------------------------------------------------------- /js/ganttCalendar/img/button-inset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/ganttCalendar/img/button-inset.png -------------------------------------------------------------------------------- /js/ganttCalendar/img/empty.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/ganttCalendar/img/empty.gif -------------------------------------------------------------------------------- /js/ganttCalendar/img/glyphs-16/flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/ganttCalendar/img/glyphs-16/flag.png -------------------------------------------------------------------------------- /js/ganttCalendar/img/glyphs-16/lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/ganttCalendar/img/glyphs-16/lock.png -------------------------------------------------------------------------------- /js/ganttCalendar/img/glyphs-16/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/ganttCalendar/img/glyphs-16/star.png -------------------------------------------------------------------------------- /js/ganttCalendar/img/glyphs-16/unlock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/ganttCalendar/img/glyphs-16/unlock.png -------------------------------------------------------------------------------- /js/ganttCalendar/img/slider-handle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/ganttCalendar/img/slider-handle.png -------------------------------------------------------------------------------- /js/ganttCalendar/img/slider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/ganttCalendar/img/slider.png -------------------------------------------------------------------------------- /js/google-code-prettify/lang-apollo.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/google-code-prettify/lang-apollo.js -------------------------------------------------------------------------------- /js/google-code-prettify/lang-clj.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2011 Google Inc. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | var a=null; 17 | PR.registerLangHandler(PR.createSimpleLexer([["opn",/^[([{]+/,a,"([{"],["clo",/^[)\]}]+/,a,")]}"],["com",/^;[^\n\r]*/,a,";"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \xa0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:def|if|do|let|quote|var|fn|loop|recur|throw|try|monitor-enter|monitor-exit|defmacro|defn|defn-|macroexpand|macroexpand-1|for|doseq|dosync|dotimes|and|or|when|not|assert|doto|proxy|defstruct|first|rest|cons|defprotocol|deftype|defrecord|reify|defmulti|defmethod|meta|with-meta|ns|in-ns|create-ns|import|intern|refer|alias|namespace|resolve|ref|deref|refset|new|set!|memfn|to-array|into-array|aset|gen-class|reduce|map|filter|find|nil?|empty?|hash-map|hash-set|vec|vector|seq|flatten|reverse|assoc|dissoc|list|list?|disj|get|union|difference|intersection|extend|extend-type|extend-protocol|prn)\b/,a], 18 | ["typ",/^:[\dA-Za-z-]+/]]),["clj"]); 19 | -------------------------------------------------------------------------------- /js/google-code-prettify/lang-css.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", 2 | /^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); 3 | -------------------------------------------------------------------------------- /js/google-code-prettify/lang-go.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/google-code-prettify/lang-go.js -------------------------------------------------------------------------------- /js/google-code-prettify/lang-hs.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t-\r ]+/,null,"\t\n \r "],["str",/^"(?:[^\n\f\r"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["str",/^'(?:[^\n\f\r'\\]|\\[^&])'?/,null,"'"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,null,"0123456789"]],[["com",/^(?:--+[^\n\f\r]*|{-(?:[^-]|-+[^}-])*-})/],["kwd",/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^\d'A-Za-z]|$)/, 2 | null],["pln",/^(?:[A-Z][\w']*\.)*[A-Za-z][\w']*/],["pun",/^[^\d\t-\r "'A-Za-z]+/]]),["hs"]); 3 | -------------------------------------------------------------------------------- /js/google-code-prettify/lang-lisp.js: -------------------------------------------------------------------------------- 1 | var a=null; 2 | PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,a,"("],["clo",/^\)+/,a,")"],["com",/^;[^\n\r]*/,a,";"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \xa0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,a], 3 | ["lit",/^[+-]?(?:[#0]x[\da-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[de][+-]?\d+)?)/i],["lit",/^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[_a-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/i],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["cl","el","lisp","scm"]); 4 | -------------------------------------------------------------------------------- /js/google-code-prettify/lang-lua.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/google-code-prettify/lang-lua.js -------------------------------------------------------------------------------- /js/google-code-prettify/lang-ml.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/google-code-prettify/lang-ml.js -------------------------------------------------------------------------------- /js/google-code-prettify/lang-n.js: -------------------------------------------------------------------------------- 1 | var a=null; 2 | PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:'(?:[^\n\r'\\]|\\.)*'|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,a,'"'],["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,a,"#"],["pln",/^\s+/,a," \r\n\t\xa0"]],[["str",/^@"(?:[^"]|"")*(?:"|$)/,a],["str",/^<#[^#>]*(?:#>|$)/,a],["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,a],["com",/^\/\/[^\n\r]*/,a],["com",/^\/\*[\S\s]*?(?:\*\/|$)/, 3 | a],["kwd",/^(?:abstract|and|as|base|catch|class|def|delegate|enum|event|extern|false|finally|fun|implements|interface|internal|is|macro|match|matches|module|mutable|namespace|new|null|out|override|params|partial|private|protected|public|ref|sealed|static|struct|syntax|this|throw|true|try|type|typeof|using|variant|virtual|volatile|when|where|with|assert|assert2|async|break|checked|continue|do|else|ensures|for|foreach|if|late|lock|new|nolate|otherwise|regexp|repeat|requires|return|surroundwith|unchecked|unless|using|while|yield)\b/, 4 | a],["typ",/^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\b/,a],["lit",/^@[$_a-z][\w$@]*/i,a],["typ",/^@[A-Z]+[a-z][\w$@]*/,a],["pln",/^'?[$_a-z][\w$@]*/i,a],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,a,"0123456789"],["pun",/^.[^\s\w"-$'./@`]*/,a]]),["n","nemerle"]); 5 | -------------------------------------------------------------------------------- /js/google-code-prettify/lang-proto.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.sourceDecorator({keywords:"bytes,default,double,enum,extend,extensions,false,group,import,max,message,option,optional,package,repeated,required,returns,rpc,service,syntax,to,true",types:/^(bool|(double|s?fixed|[su]?int)(32|64)|float|string)\b/,cStyleComments:!0}),["proto"]); 2 | -------------------------------------------------------------------------------- /js/google-code-prettify/lang-scala.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/google-code-prettify/lang-scala.js -------------------------------------------------------------------------------- /js/google-code-prettify/lang-sql.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/google-code-prettify/lang-sql.js -------------------------------------------------------------------------------- /js/google-code-prettify/lang-tex.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/google-code-prettify/lang-tex.js -------------------------------------------------------------------------------- /js/google-code-prettify/lang-vb.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/google-code-prettify/lang-vb.js -------------------------------------------------------------------------------- /js/google-code-prettify/lang-vhdl.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/google-code-prettify/lang-vhdl.js -------------------------------------------------------------------------------- /js/google-code-prettify/lang-wiki.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jchome/ganttCalendar/020fcd07bb0d4cdbeecd24a9c6cbba058138424b/js/google-code-prettify/lang-wiki.js -------------------------------------------------------------------------------- /js/google-code-prettify/lang-yaml.js: -------------------------------------------------------------------------------- 1 | var a=null; 2 | PR.registerLangHandler(PR.createSimpleLexer([["pun",/^[:>?|]+/,a,":|>?"],["dec",/^%(?:YAML|TAG)[^\n\r#]+/,a,"%"],["typ",/^&\S+/,a,"&"],["typ",/^!\S*/,a,"!"],["str",/^"(?:[^"\\]|\\.)*(?:"|$)/,a,'"'],["str",/^'(?:[^']|'')*(?:'|$)/,a,"'"],["com",/^#[^\n\r]*/,a,"#"],["pln",/^\s+/,a," \t\r\n"]],[["dec",/^(?:---|\.\.\.)(?:[\n\r]|$)/],["pun",/^-/],["kwd",/^\w+:[\n\r ]/],["pln",/^\w+/]]),["yaml","yml"]); 3 | -------------------------------------------------------------------------------- /js/google-code-prettify/prettify.css: -------------------------------------------------------------------------------- 1 | .pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} 2 | 3 | 4 | /* Pretty printing styles. Used with prettify.js. */ 5 | /* Vim sunburst theme by David Leibovic */ 6 | 7 | pre .str, code .str { color: #65B042; } /* string - green */ 8 | pre .kwd, code .kwd { color: #E28964; } /* keyword - dark pink */ 9 | pre .com, code .com { color: #AEAEAE; font-style: italic; } /* comment - gray */ 10 | pre .typ, code .typ { color: #89bdff; } /* type - light blue */ 11 | pre .lit, code .lit { color: #3387CC; } /* literal - blue */ 12 | pre .pun, code .pun { color: #fff; } /* punctuation - white */ 13 | pre .pln, code .pln { color: #fff; } /* plaintext - white */ 14 | pre .tag, code .tag { color: #89bdff; } /* html/xml tag - light blue */ 15 | pre .atn, code .atn { color: #bdb76b; } /* html/xml attribute name - khaki */ 16 | pre .atv, code .atv { color: #65B042; } /* html/xml attribute value - green */ 17 | pre .dec, code .dec { color: #3387CC; } /* decimal - blue */ 18 | 19 | pre.prettyprint, code.prettyprint { 20 | background-color: #000; 21 | -moz-border-radius: 8px; 22 | -webkit-border-radius: 8px; 23 | -o-border-radius: 8px; 24 | -ms-border-radius: 8px; 25 | -khtml-border-radius: 8px; 26 | border-radius: 8px; 27 | } 28 | 29 | pre.prettyprint { 30 | width: 95%; 31 | margin: 1em auto; 32 | padding: 1em; 33 | white-space: pre-wrap; 34 | } 35 | 36 | 37 | /* Specify class=linenums on a pre to get line numbering */ 38 | ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE; } /* IE indents via margin-left */ 39 | li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none } 40 | /* Alternate shading for lines */ 41 | li.L1,li.L3,li.L5,li.L7,li.L9 { } 42 | 43 | @media print { 44 | pre .str, code .str { color: #060; } 45 | pre .kwd, code .kwd { color: #006; font-weight: bold; } 46 | pre .com, code .com { color: #600; font-style: italic; } 47 | pre .typ, code .typ { color: #404; font-weight: bold; } 48 | pre .lit, code .lit { color: #044; } 49 | pre .pun, code .pun { color: #440; } 50 | pre .pln, code .pln { color: #000; } 51 | pre .tag, code .tag { color: #006; font-weight: bold; } 52 | pre .atn, code .atn { color: #404; } 53 | pre .atv, code .atv { color: #060; } 54 | } 55 | 56 | -------------------------------------------------------------------------------- /js/google-code-prettify/prettify.js: -------------------------------------------------------------------------------- 1 | var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; 2 | (function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= 3 | [],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), 9 | l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, 10 | q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, 11 | q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, 12 | "");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), 13 | a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} 14 | for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], 18 | "catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], 19 | H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], 20 | J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ 21 | I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), 22 | ["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", 23 | /^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), 24 | ["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", 25 | hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= 26 | !k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p this.getDate()) 302 | this.addDays(-this.getDate()); 303 | 304 | return this; 305 | }); 306 | 307 | /** 308 | * Add a number of days to the date object. 309 | * 310 | * @example var dtm = new Date("01/12/2008"); 311 | * dtm.addDays(1); 312 | * dtm.toString(); 313 | * @result 'Sun Jan 13 2008 00:00:00' 314 | * 315 | * @name addDays 316 | * @type Date 317 | * @cat Plugins/Methods/Date 318 | */ 319 | add("addDays", function(num) { 320 | //this.setDate(this.getDate() + num); 321 | this.setTime(this.getTime() + (num*86400000) ); 322 | return this; 323 | }); 324 | 325 | /** 326 | * Add a number of hours to the date object. 327 | * 328 | * @example var dtm = new Date("01/12/2008"); 329 | * dtm.addHours(24); 330 | * dtm.toString(); 331 | * @result 'Sun Jan 13 2008 00:00:00' 332 | * 333 | * @name addHours 334 | * @type Date 335 | * @cat Plugins/Methods/Date 336 | */ 337 | add("addHours", function(num) { 338 | this.setHours(this.getHours() + num); 339 | return this; 340 | }); 341 | 342 | /** 343 | * Add a number of minutes to the date object. 344 | * 345 | * @example var dtm = new Date("01/12/2008"); 346 | * dtm.addMinutes(60); 347 | * dtm.toString(); 348 | * @result 'Sat Jan 12 2008 01:00:00' 349 | * 350 | * @name addMinutes 351 | * @type Date 352 | * @cat Plugins/Methods/Date 353 | */ 354 | add("addMinutes", function(num) { 355 | this.setMinutes(this.getMinutes() + num); 356 | return this; 357 | }); 358 | 359 | /** 360 | * Add a number of seconds to the date object. 361 | * 362 | * @example var dtm = new Date("01/12/2008"); 363 | * dtm.addSeconds(60); 364 | * dtm.toString(); 365 | * @result 'Sat Jan 12 2008 00:01:00' 366 | * 367 | * @name addSeconds 368 | * @type Date 369 | * @cat Plugins/Methods/Date 370 | */ 371 | add("addSeconds", function(num) { 372 | this.setSeconds(this.getSeconds() + num); 373 | return this; 374 | }); 375 | 376 | /** 377 | * Sets the time component of this Date to zero for cleaner, easier comparison of dates where time is not relevant. 378 | * 379 | * @example var dtm = new Date(); 380 | * dtm.zeroTime(); 381 | * dtm.toString(); 382 | * @result 'Sat Jan 12 2008 00:01:00' 383 | * 384 | * @name zeroTime 385 | * @type Date 386 | * @cat Plugins/Methods/Date 387 | * @author Kelvin Luck 388 | */ 389 | add("zeroTime", function() { 390 | this.setMilliseconds(0); 391 | this.setSeconds(0); 392 | this.setMinutes(0); 393 | this.setHours(0); 394 | return this; 395 | }); 396 | 397 | /** 398 | * Returns a string representation of the date object according to Date.format. 399 | * (Date.toString may be used in other places so I purposefully didn't overwrite it) 400 | * 401 | * @example var dtm = new Date("01/12/2008"); 402 | * dtm.asString(); 403 | * @result '12/01/2008' // (where Date.format == 'dd/mm/yyyy' 404 | * 405 | * @name asString 406 | * @type Date 407 | * @cat Plugins/Methods/Date 408 | * @author Kelvin Luck 409 | */ 410 | add("asString", function(format) { 411 | var r = format || Date.format; 412 | if (r.split('mm').length>1) { // ugly workaround to make sure we don't replace the m's in e.g. noveMber 413 | r = r.split('mmmm').join(this.getMonthName(false)) 414 | .split('mmm').join(this.getMonthName(true)) 415 | .split('mm').join(_zeroPad(this.getMonth()+1)) 416 | } else { 417 | r = r.split('m').join(this.getMonth()+1); 418 | } 419 | r = r.split('yyyy').join(this.getFullYear()) 420 | .split('yy').join((this.getFullYear() + '').substring(2)) 421 | .split('dd').join(_zeroPad(this.getDate())) 422 | .split('d').join(this.getDate()); 423 | return r; 424 | }); 425 | 426 | /** 427 | * Returns a new date object created from the passed String according to Date.format or false if the attempt to do this results in an invalid date object 428 | * (We can't simple use Date.parse as it's not aware of locale and I chose not to overwrite it incase it's functionality is being relied on elsewhere) 429 | * 430 | * @example var dtm = Date.fromString("12/01/2008"); 431 | * dtm.toString(); 432 | * @result 'Sat Jan 12 2008 00:00:00' // (where Date.format == 'dd/mm/yyyy' 433 | * 434 | * @name fromString 435 | * @type Date 436 | * @cat Plugins/Methods/Date 437 | * @author Kelvin Luck 438 | */ 439 | Date.fromString = function(s) 440 | { 441 | var f = Date.format; 442 | 443 | var d = new Date('01/01/1970'); 444 | 445 | if (s == '') return d; 446 | 447 | s = s.toLowerCase(); 448 | var matcher = ''; 449 | var order = []; 450 | var r = /(dd?d?|mm?m?|yy?yy?)+([^(m|d|y)])?/g; 451 | var results; 452 | while ((results = r.exec(f)) != null) 453 | { 454 | switch (results[1]) { 455 | case 'd': 456 | case 'dd': 457 | case 'm': 458 | case 'mm': 459 | case 'yy': 460 | case 'yyyy': 461 | matcher += '(\\d+\\d?\\d?\\d?)+'; 462 | order.push(results[1].substr(0, 1)); 463 | break; 464 | case 'mmm': 465 | matcher += '([a-z]{3})'; 466 | order.push('M'); 467 | break; 468 | } 469 | if (results[2]) { 470 | matcher += results[2]; 471 | } 472 | 473 | } 474 | var dm = new RegExp(matcher); 475 | var result = s.match(dm); 476 | for (var i=0; i") 33 | .css({ 34 | "width": settings.imagewidth + "px", 35 | "height": settings.imageheight + "px", 36 | "background": "url(" + settings.image + ") 0 0 no-repeat", 37 | "background-position": "right", 38 | "display": "inline", 39 | "position": "absolute", 40 | "overflow": "hidden" 41 | }); 42 | 43 | var filename = $('') 44 | .addClass($(self).attr("class")) 45 | .css({ 46 | "display": "inline", 47 | "width": settings.width + "px" 48 | }); 49 | 50 | $(self).before(filename); 51 | // nouveau code : 52 | $(self).before(wrapper); 53 | //code avant modification : 54 | //$(self).wrap(wrapper); 55 | 56 | $(self).css({ 57 | "position": "relative", 58 | "height": settings.imageheight + "px", 59 | "width": settings.width + "px", 60 | "display": "inline", 61 | "cursor": "pointer", 62 | "opacity": "0.0" 63 | }); 64 | 65 | if ($.browser.mozilla) { 66 | if (/Win/.test(navigator.platform)) { 67 | $(self).css("margin-left", "-142px"); 68 | } else { 69 | $(self).css("margin-left", "-168px"); 70 | }; 71 | } else { 72 | $(self).css("margin-left", settings.imagewidth - settings.width + "px"); 73 | }; 74 | 75 | $(self).bind("change", function() { 76 | filename.val($(self).val()); 77 | }); 78 | 79 | }); 80 | 81 | 82 | }; 83 | 84 | })(jQuery); 85 | -------------------------------------------------------------------------------- /js/jquery/jquery.pngFix.pack.js: -------------------------------------------------------------------------------- 1 | /** 2 | * -------------------------------------------------------------------- 3 | * jQuery-Plugin "pngFix" 4 | * Version: 1.1, 11.09.2007 5 | * by Andreas Eberhard, andreas.eberhard@gmail.com 6 | * http://jquery.andreaseberhard.de/ 7 | * 8 | * Copyright (c) 2007 Andreas Eberhard 9 | * Licensed under GPL (http://www.opensource.org/licenses/gpl-license.php) 10 | */ 11 | eval(function(p,a,c,k,e,r){e=function(c){return(c<62?'':e(parseInt(c/62)))+((c=c%62)>35?String.fromCharCode(c+29):c.toString(36))};if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'([237-9n-zA-Z]|1\\w)'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(s(m){3.fn.pngFix=s(c){c=3.extend({P:\'blank.gif\'},c);8 e=(o.Q=="t R S"&&T(o.u)==4&&o.u.A("U 5.5")!=-1);8 f=(o.Q=="t R S"&&T(o.u)==4&&o.u.A("U 6.0")!=-1);p(3.browser.msie&&(e||f)){3(2).B("img[n$=.C]").D(s(){3(2).7(\'q\',3(2).q());3(2).7(\'r\',3(2).r());8 a=\'\';8 b=\'\';8 g=(3(2).7(\'E\'))?\'E="\'+3(2).7(\'E\')+\'" \':\'\';8 h=(3(2).7(\'F\'))?\'F="\'+3(2).7(\'F\')+\'" \':\'\';8 i=(3(2).7(\'G\'))?\'G="\'+3(2).7(\'G\')+\'" \':\'\';8 j=(3(2).7(\'H\'))?\'H="\'+3(2).7(\'H\')+\'" \':\'\';8 k=(3(2).7(\'V\'))?\'float:\'+3(2).7(\'V\')+\';\':\'\';8 d=(3(2).parent().7(\'href\'))?\'cursor:hand;\':\'\';p(2.9.v){a+=\'v:\'+2.9.v+\';\';2.9.v=\'\'}p(2.9.w){a+=\'w:\'+2.9.w+\';\';2.9.w=\'\'}p(2.9.x){a+=\'x:\'+2.9.x+\';\';2.9.x=\'\'}8 l=(2.9.cssText);b+=\'\';p(a!=\'\'){b=\'\'+b+\'\'}3(2).hide();3(2).after(b)});3(2).B("*").D(s(){8 a=3(2).11(\'I-12\');p(a.A(".C")!=-1){8 b=a.13(\'url("\')[1].13(\'")\')[0];3(2).11(\'I-12\',\'none\');3(2).14(0).15.J="K:L.t.M(n=\'"+b+"\',N=\'O\')"}});3(2).B("input[n$=.C]").D(s(){8 a=3(2).7(\'n\');3(2).14(0).15.J=\'K:L.t.M(n=\\\'\'+a+\'\\\', N=\\\'O\\\');\';3(2).7(\'n\',c.P)})}return 3}})(3);',[],68,'||this|jQuery||||attr|var|style||||||||||||||src|navigator|if|width|height|function|Microsoft|appVersion|border|padding|margin|span|px|indexOf|find|png|each|id|class|title|alt|background|filter|progid|DXImageTransform|AlphaImageLoader|sizingMethod|scale|blankgif|appName|Internet|Explorer|parseInt|MSIE|align|position|relative|display|inline|block|css|image|split|get|runtimeStyle'.split('|'),0,{})) -------------------------------------------------------------------------------- /js/jquery/jquery.selectbox-0.5.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery selectbox plugin 3 | * 4 | * Copyright (c) 2007 Sadri Sahraoui (brainfault.com) 5 | * Licensed under the GPL license and MIT: 6 | * http://www.opensource.org/licenses/GPL-license.php 7 | * http://www.opensource.org/licenses/mit-license.php 8 | * 9 | * The code is inspired from Autocomplete plugin (http://www.dyve.net/jquery/?autocomplete) 10 | * 11 | * Revision: $Id$ 12 | * Version: 0.5 13 | * 14 | * Changelog : 15 | * Version 0.5 16 | * - separate css style for current selected element and hover element which solve the highlight issue 17 | * Version 0.4 18 | * - Fix width when the select is in a hidden div @Pawel Maziarz 19 | * - Add a unique id for generated li to avoid conflict with other selects and empty values @Pawel Maziarz 20 | */ 21 | jQuery.fn.extend({ 22 | selectbox: function(options) { 23 | return this.each(function() { 24 | new jQuery.SelectBox(this, options); 25 | }); 26 | } 27 | }); 28 | 29 | 30 | /* pawel maziarz: work around for ie logging */ 31 | if (!window.console) { 32 | var console = { 33 | log: function(msg) { 34 | } 35 | } 36 | } 37 | /* */ 38 | 39 | jQuery.SelectBox = function(selectobj, options) { 40 | 41 | var opt = options || {}; 42 | opt.inputClass = opt.inputClass || "selectbox"; 43 | opt.containerClass = opt.containerClass || "selectbox-wrapper"; 44 | opt.hoverClass = opt.hoverClass || "current"; 45 | opt.currentClass = opt.selectedClass || "selected" 46 | opt.debug = opt.debug || false; 47 | 48 | var elm_id = selectobj.id; 49 | var active = -1; 50 | var inFocus = false; 51 | var hasfocus = 0; 52 | //jquery object for select element 53 | var $select = $(selectobj); 54 | // jquery container object 55 | var $container = setupContainer(opt); 56 | //jquery input object 57 | var $input = setupInput(opt); 58 | // hide select and append newly created elements 59 | $select.hide().before($input).before($container); 60 | 61 | 62 | init(); 63 | 64 | $input 65 | .click(function(){ 66 | if (!inFocus) { 67 | $container.toggle(); 68 | } 69 | }) 70 | .focus(function(){ 71 | if ($container.not(':visible')) { 72 | inFocus = true; 73 | $container.show(); 74 | } 75 | }) 76 | .keydown(function(event) { 77 | switch(event.keyCode) { 78 | case 38: // up 79 | event.preventDefault(); 80 | moveSelect(-1); 81 | break; 82 | case 40: // down 83 | event.preventDefault(); 84 | moveSelect(1); 85 | break; 86 | //case 9: // tab 87 | case 13: // return 88 | event.preventDefault(); // seems not working in mac ! 89 | $('li.'+opt.hoverClass).trigger('click'); 90 | break; 91 | case 27: //escape 92 | hideMe(); 93 | break; 94 | } 95 | }) 96 | .blur(function() { 97 | if ($container.is(':visible') && hasfocus > 0 ) { 98 | if(opt.debug) console.log('container visible and has focus') 99 | } else { 100 | hideMe(); 101 | } 102 | }); 103 | 104 | 105 | function hideMe() { 106 | hasfocus = 0; 107 | $container.hide(); 108 | } 109 | 110 | function init() { 111 | $container.append(getSelectOptions($input.attr('id'))).hide(); 112 | var width = $input.css('width'); 113 | $container.width(width); 114 | } 115 | 116 | function setupContainer(options) { 117 | var container = document.createElement("div"); 118 | $container = $(container); 119 | $container.attr('id', elm_id+'_container'); 120 | $container.addClass(options.containerClass); 121 | 122 | return $container; 123 | } 124 | 125 | function setupInput(options) { 126 | var input = document.createElement("input"); 127 | var $input = $(input); 128 | $input.attr("id", elm_id+"_input"); 129 | $input.attr("type", "text"); 130 | $input.addClass(options.inputClass); 131 | $input.attr("autocomplete", "off"); 132 | $input.attr("readonly", "readonly"); 133 | $input.attr("tabIndex", $select.attr("tabindex")); // "I" capital is important for ie 134 | 135 | return $input; 136 | } 137 | 138 | function moveSelect(step) { 139 | var lis = $("li", $container); 140 | if (!lis) return; 141 | 142 | active += step; 143 | 144 | if (active < 0) { 145 | active = 0; 146 | } else if (active >= lis.size()) { 147 | active = lis.size() - 1; 148 | } 149 | 150 | lis.removeClass(opt.hoverClass); 151 | 152 | $(lis[active]).addClass(opt.hoverClass); 153 | } 154 | 155 | function setCurrent() { 156 | var li = $("li."+opt.currentClass, $container).get(0); 157 | var ar = (''+li.id).split('_'); 158 | var el = ar[ar.length-1]; 159 | $select.val(el); 160 | $input.val($(li).html()); 161 | return true; 162 | } 163 | 164 | // select value 165 | function getCurrentSelected() { 166 | return $select.val(); 167 | } 168 | 169 | // input value 170 | function getCurrentValue() { 171 | return $input.val(); 172 | } 173 | 174 | function getSelectOptions(parentid) { 175 | var select_options = new Array(); 176 | var ul = document.createElement('ul'); 177 | $select.children('option').each(function() { 178 | var li = document.createElement('li'); 179 | li.setAttribute('id', parentid + '_' + $(this).val()); 180 | li.innerHTML = $(this).html(); 181 | if ($(this).is(':selected')) { 182 | $input.val($(this).html()); 183 | $(li).addClass(opt.currentClass); 184 | } 185 | ul.appendChild(li); 186 | $(li) 187 | .mouseover(function(event) { 188 | hasfocus = 1; 189 | if (opt.debug) console.log('over on : '+this.id); 190 | jQuery(event.target, $container).addClass(opt.hoverClass); 191 | }) 192 | .mouseout(function(event) { 193 | hasfocus = -1; 194 | if (opt.debug) console.log('out on : '+this.id); 195 | jQuery(event.target, $container).removeClass(opt.hoverClass); 196 | }) 197 | .click(function(event) { 198 | var fl = $('li.'+opt.hoverClass, $container).get(0); 199 | if (opt.debug) console.log('click on :'+this.id); 200 | $('li.'+opt.currentClass).removeClass(opt.currentClass); 201 | $(this).addClass(opt.currentClass); 202 | setCurrent(); 203 | hideMe(); 204 | }); 205 | }); 206 | return ul; 207 | } 208 | 209 | }; 210 | -------------------------------------------------------------------------------- /js/jquery/jquery.selectbox-0.5_style_2.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery selectbox plugin 3 | * 4 | * Copyright (c) 2007 Sadri Sahraoui (brainfault.com) 5 | * Licensed under the GPL license and MIT: 6 | * http://www.opensource.org/licenses/GPL-license.php 7 | * http://www.opensource.org/licenses/mit-license.php 8 | * 9 | * The code is inspired from Autocomplete plugin (http://www.dyve.net/jquery/?autocomplete) 10 | * 11 | * Revision: $Id$ 12 | * Version: 0.5 13 | * 14 | * Changelog : 15 | * Version 0.5 16 | * - separate css style for current selected element and hover element which solve the highlight issue 17 | * Version 0.4 18 | * - Fix width when the select is in a hidden div @Pawel Maziarz 19 | * - Add a unique id for generated li to avoid conflict with other selects and empty values @Pawel Maziarz 20 | */ 21 | jQuery.fn.extend({ 22 | selectbox: function(options) { 23 | return this.each(function() { 24 | new jQuery.SelectBox(this, options); 25 | }); 26 | } 27 | }); 28 | 29 | 30 | /* pawel maziarz: work around for ie logging */ 31 | if (!window.console) { 32 | var console = { 33 | log: function(msg) { 34 | } 35 | } 36 | } 37 | /* */ 38 | 39 | jQuery.SelectBox = function(selectobj, options) { 40 | 41 | var opt = options || {}; 42 | opt.inputClass = opt.inputClass || "selectbox2"; 43 | opt.containerClass = opt.containerClass || "selectbox-wrapper2"; 44 | opt.hoverClass = opt.hoverClass || "current2"; 45 | opt.currentClass = opt.selectedClass || "selected2" 46 | opt.debug = opt.debug || false; 47 | 48 | var elm_id = selectobj.id; 49 | var active = -1; 50 | var inFocus = false; 51 | var hasfocus = 0; 52 | //jquery object for select element 53 | var $select = $(selectobj); 54 | // jquery container object 55 | var $container = setupContainer(opt); 56 | //jquery input object 57 | var $input = setupInput(opt); 58 | // hide select and append newly created elements 59 | $select.hide().before($input).before($container); 60 | 61 | 62 | init(); 63 | 64 | $input 65 | .click(function(){ 66 | if (!inFocus) { 67 | $container.toggle(); 68 | } 69 | }) 70 | .focus(function(){ 71 | if ($container.not(':visible')) { 72 | inFocus = true; 73 | $container.show(); 74 | } 75 | }) 76 | .keydown(function(event) { 77 | switch(event.keyCode) { 78 | case 38: // up 79 | event.preventDefault(); 80 | moveSelect(-1); 81 | break; 82 | case 40: // down 83 | event.preventDefault(); 84 | moveSelect(1); 85 | break; 86 | //case 9: // tab 87 | case 13: // return 88 | event.preventDefault(); // seems not working in mac ! 89 | $('li.'+opt.hoverClass).trigger('click'); 90 | break; 91 | case 27: //escape 92 | hideMe(); 93 | break; 94 | } 95 | }) 96 | .blur(function() { 97 | if ($container.is(':visible') && hasfocus > 0 ) { 98 | if(opt.debug) console.log('container visible and has focus') 99 | } else { 100 | hideMe(); 101 | } 102 | }); 103 | 104 | 105 | function hideMe() { 106 | hasfocus = 0; 107 | $container.hide(); 108 | } 109 | 110 | function init() { 111 | $container.append(getSelectOptions($input.attr('id'))).hide(); 112 | var width = $input.css('width'); 113 | $container.width(width); 114 | } 115 | 116 | function setupContainer(options) { 117 | var container = document.createElement("div"); 118 | $container = $(container); 119 | $container.attr('id', elm_id+'_container'); 120 | $container.addClass(options.containerClass); 121 | 122 | return $container; 123 | } 124 | 125 | function setupInput(options) { 126 | var input = document.createElement("input"); 127 | var $input = $(input); 128 | $input.attr("id", elm_id+"_input"); 129 | $input.attr("type", "text"); 130 | $input.addClass(options.inputClass); 131 | $input.attr("autocomplete", "off"); 132 | $input.attr("readonly", "readonly"); 133 | $input.attr("tabIndex", $select.attr("tabindex")); // "I" capital is important for ie 134 | 135 | return $input; 136 | } 137 | 138 | function moveSelect(step) { 139 | var lis = $("li", $container); 140 | if (!lis) return; 141 | 142 | active += step; 143 | 144 | if (active < 0) { 145 | active = 0; 146 | } else if (active >= lis.size()) { 147 | active = lis.size() - 1; 148 | } 149 | 150 | lis.removeClass(opt.hoverClass); 151 | 152 | $(lis[active]).addClass(opt.hoverClass); 153 | } 154 | 155 | function setCurrent() { 156 | var li = $("li."+opt.currentClass, $container).get(0); 157 | var ar = (''+li.id).split('_'); 158 | var el = ar[ar.length-1]; 159 | $select.val(el); 160 | $input.val($(li).html()); 161 | return true; 162 | } 163 | 164 | // select value 165 | function getCurrentSelected() { 166 | return $select.val(); 167 | } 168 | 169 | // input value 170 | function getCurrentValue() { 171 | return $input.val(); 172 | } 173 | 174 | function getSelectOptions(parentid) { 175 | var select_options = new Array(); 176 | var ul = document.createElement('ul'); 177 | $select.children('option').each(function() { 178 | var li = document.createElement('li'); 179 | li.setAttribute('id', parentid + '_' + $(this).val()); 180 | li.innerHTML = $(this).html(); 181 | if ($(this).is(':selected')) { 182 | $input.val($(this).html()); 183 | $(li).addClass(opt.currentClass); 184 | } 185 | ul.appendChild(li); 186 | $(li) 187 | .mouseover(function(event) { 188 | hasfocus = 1; 189 | if (opt.debug) console.log('over on : '+this.id); 190 | jQuery(event.target, $container).addClass(opt.hoverClass); 191 | }) 192 | .mouseout(function(event) { 193 | hasfocus = -1; 194 | if (opt.debug) console.log('out on : '+this.id); 195 | jQuery(event.target, $container).removeClass(opt.hoverClass); 196 | }) 197 | .click(function(event) { 198 | var fl = $('li.'+opt.hoverClass, $container).get(0); 199 | if (opt.debug) console.log('click on :'+this.id); 200 | $('li.'+opt.currentClass).removeClass(opt.currentClass); 201 | $(this).addClass(opt.currentClass); 202 | setCurrent(); 203 | hideMe(); 204 | }); 205 | }); 206 | return ul; 207 | } 208 | 209 | }; 210 | -------------------------------------------------------------------------------- /js/jquery/jquery.selectbox-0.5_style_3.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery selectbox plugin 3 | * 4 | * Copyright (c) 2007 Sadri Sahraoui (brainfault.com) 5 | * Licensed under the GPL license and MIT: 6 | * http://www.opensource.org/licenses/GPL-license.php 7 | * http://www.opensource.org/licenses/mit-license.php 8 | * 9 | * The code is inspired from Autocomplete plugin (http://www.dyve.net/jquery/?autocomplete) 10 | * 11 | * Revision: $Id$ 12 | * Version: 0.5 13 | * 14 | * Changelog : 15 | * Version 0.5 16 | * - separate css style for current selected element and hover element which solve the highlight issue 17 | * Version 0.4 18 | * - Fix width when the select is in a hidden div @Pawel Maziarz 19 | * - Add a unique id for generated li to avoid conflict with other selects and empty values @Pawel Maziarz 20 | */ 21 | jQuery.fn.extend({ 22 | selectbox: function(options) { 23 | return this.each(function() { 24 | new jQuery.SelectBox(this, options); 25 | }); 26 | } 27 | }); 28 | 29 | 30 | /* pawel maziarz: work around for ie logging */ 31 | if (!window.console) { 32 | var console = { 33 | log: function(msg) { 34 | } 35 | } 36 | } 37 | /* */ 38 | 39 | jQuery.SelectBox = function(selectobj, options) { 40 | 41 | var opt = options || {}; 42 | opt.inputClass = opt.inputClass || "selectbox3"; 43 | opt.containerClass = opt.containerClass || "selectbox-wrapper3"; 44 | opt.hoverClass = opt.hoverClass || "current3"; 45 | opt.currentClass = opt.selectedClass || "selected3" 46 | opt.debug = opt.debug || false; 47 | 48 | var elm_id = selectobj.id; 49 | var active = -1; 50 | var inFocus = false; 51 | var hasfocus = 0; 52 | //jquery object for select element 53 | var $select = $(selectobj); 54 | // jquery container object 55 | var $container = setupContainer(opt); 56 | //jquery input object 57 | var $input = setupInput(opt); 58 | // hide select and append newly created elements 59 | $select.hide().before($input).before($container); 60 | 61 | 62 | init(); 63 | 64 | $input 65 | .click(function(){ 66 | if (!inFocus) { 67 | $container.toggle(); 68 | } 69 | }) 70 | .focus(function(){ 71 | if ($container.not(':visible')) { 72 | inFocus = true; 73 | $container.show(); 74 | } 75 | }) 76 | .keydown(function(event) { 77 | switch(event.keyCode) { 78 | case 38: // up 79 | event.preventDefault(); 80 | moveSelect(-1); 81 | break; 82 | case 40: // down 83 | event.preventDefault(); 84 | moveSelect(1); 85 | break; 86 | //case 9: // tab 87 | case 13: // return 88 | event.preventDefault(); // seems not working in mac ! 89 | $('li.'+opt.hoverClass).trigger('click'); 90 | break; 91 | case 27: //escape 92 | hideMe(); 93 | break; 94 | } 95 | }) 96 | .blur(function() { 97 | if ($container.is(':visible') && hasfocus > 0 ) { 98 | if(opt.debug) console.log('container visible and has focus') 99 | } else { 100 | hideMe(); 101 | } 102 | }); 103 | 104 | 105 | function hideMe() { 106 | hasfocus = 0; 107 | $container.hide(); 108 | } 109 | 110 | function init() { 111 | $container.append(getSelectOptions($input.attr('id'))).hide(); 112 | var width = $input.css('width'); 113 | $container.width(width); 114 | } 115 | 116 | function setupContainer(options) { 117 | var container = document.createElement("div"); 118 | $container = $(container); 119 | $container.attr('id', elm_id+'_container'); 120 | $container.addClass(options.containerClass); 121 | 122 | return $container; 123 | } 124 | 125 | function setupInput(options) { 126 | var input = document.createElement("input"); 127 | var $input = $(input); 128 | $input.attr("id", elm_id+"_input"); 129 | $input.attr("type", "text"); 130 | $input.addClass(options.inputClass); 131 | $input.attr("autocomplete", "off"); 132 | $input.attr("readonly", "readonly"); 133 | $input.attr("tabIndex", $select.attr("tabindex")); // "I" capital is important for ie 134 | 135 | return $input; 136 | } 137 | 138 | function moveSelect(step) { 139 | var lis = $("li", $container); 140 | if (!lis) return; 141 | 142 | active += step; 143 | 144 | if (active < 0) { 145 | active = 0; 146 | } else if (active >= lis.size()) { 147 | active = lis.size() - 1; 148 | } 149 | 150 | lis.removeClass(opt.hoverClass); 151 | 152 | $(lis[active]).addClass(opt.hoverClass); 153 | } 154 | 155 | function setCurrent() { 156 | var li = $("li."+opt.currentClass, $container).get(0); 157 | var ar = (''+li.id).split('_'); 158 | var el = ar[ar.length-1]; 159 | $select.val(el); 160 | $input.val($(li).html()); 161 | return true; 162 | } 163 | 164 | // select value 165 | function getCurrentSelected() { 166 | return $select.val(); 167 | } 168 | 169 | // input value 170 | function getCurrentValue() { 171 | return $input.val(); 172 | } 173 | 174 | function getSelectOptions(parentid) { 175 | var select_options = new Array(); 176 | var ul = document.createElement('ul'); 177 | $select.children('option').each(function() { 178 | var li = document.createElement('li'); 179 | li.setAttribute('id', parentid + '_' + $(this).val()); 180 | li.innerHTML = $(this).html(); 181 | if ($(this).is(':selected')) { 182 | $input.val($(this).html()); 183 | $(li).addClass(opt.currentClass); 184 | } 185 | ul.appendChild(li); 186 | $(li) 187 | .mouseover(function(event) { 188 | hasfocus = 1; 189 | if (opt.debug) console.log('over on : '+this.id); 190 | jQuery(event.target, $container).addClass(opt.hoverClass); 191 | }) 192 | .mouseout(function(event) { 193 | hasfocus = -1; 194 | if (opt.debug) console.log('out on : '+this.id); 195 | jQuery(event.target, $container).removeClass(opt.hoverClass); 196 | }) 197 | .click(function(event) { 198 | var fl = $('li.'+opt.hoverClass, $container).get(0); 199 | if (opt.debug) console.log('click on :'+this.id); 200 | $('li.'+opt.currentClass).removeClass(opt.currentClass); 201 | $(this).addClass(opt.currentClass); 202 | setCurrent(); 203 | hideMe(); 204 | }); 205 | }); 206 | return ul; 207 | } 208 | 209 | }; 210 | -------------------------------------------------------------------------------- /js/jquery/jquery.tooltip.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery Tooltip plugin 1.2 3 | * 4 | * http://bassistance.de/jquery-plugins/jquery-plugin-tooltip/ 5 | * http://docs.jquery.com/Plugins/Tooltip 6 | * 7 | * Copyright (c) 2006 - 2008 Jörn Zaefferer 8 | * 9 | * $Id: jquery.tooltip.js 4569 2008-01-31 19:36:35Z joern.zaefferer $ 10 | * 11 | * Dual licensed under the MIT and GPL licenses: 12 | * http://www.opensource.org/licenses/mit-license.php 13 | * http://www.gnu.org/licenses/gpl.html 14 | */ 15 | 16 | ;(function($) { 17 | 18 | // the tooltip element 19 | var helper = {}, 20 | // the current tooltipped element 21 | current, 22 | // the title of the current element, used for restoring 23 | title, 24 | // timeout id for delayed tooltips 25 | tID, 26 | // IE 5.5 or 6 27 | IE = $.browser.msie && /MSIE\s(5\.5|6\.)/.test(navigator.userAgent), 28 | // flag for mouse tracking 29 | track = false; 30 | 31 | $.tooltip = { 32 | blocked: false, 33 | defaults: { 34 | delay: 200, 35 | showURL: true, 36 | extraClass: "", 37 | top: 15, 38 | left: 15, 39 | id: "tooltip" 40 | }, 41 | block: function() { 42 | $.tooltip.blocked = !$.tooltip.blocked; 43 | } 44 | }; 45 | 46 | $.fn.extend({ 47 | tooltip: function(settings) { 48 | settings = $.extend({}, $.tooltip.defaults, settings); 49 | createHelper(settings); 50 | return this.each(function() { 51 | $.data(this, "tooltip-settings", settings); 52 | // copy tooltip into its own expando and remove the title 53 | this.tooltipText = this.title; 54 | $(this).removeAttr("title"); 55 | // also remove alt attribute to prevent default tooltip in IE 56 | this.alt = ""; 57 | }) 58 | .hover(save, hide) 59 | .click(hide); 60 | }, 61 | fixPNG: IE ? function() { 62 | return this.each(function () { 63 | var image = $(this).css('backgroundImage'); 64 | if (image.match(/^url\(["']?(.*\.png)["']?\)$/i)) { 65 | image = RegExp.$1; 66 | $(this).css({ 67 | 'backgroundImage': 'none', 68 | 'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='" + image + "')" 69 | }).each(function () { 70 | var position = $(this).css('position'); 71 | if (position != 'absolute' && position != 'relative') 72 | $(this).css('position', 'relative'); 73 | }); 74 | } 75 | }); 76 | } : function() { return this; }, 77 | unfixPNG: IE ? function() { 78 | return this.each(function () { 79 | $(this).css({'filter': '', backgroundImage: ''}); 80 | }); 81 | } : function() { return this; }, 82 | hideWhenEmpty: function() { 83 | return this.each(function() { 84 | $(this)[ $(this).html() ? "show" : "hide" ](); 85 | }); 86 | }, 87 | url: function() { 88 | return this.attr('href') || this.attr('src'); 89 | } 90 | }); 91 | 92 | function createHelper(settings) { 93 | // there can be only one tooltip helper 94 | if( helper.parent ) 95 | return; 96 | // create the helper, h3 for title, div for url 97 | helper.parent = $('
') 98 | // add to document 99 | .appendTo(document.body) 100 | // hide it at first 101 | .hide(); 102 | 103 | // apply bgiframe if available 104 | if ( $.fn.bgiframe ) 105 | helper.parent.bgiframe(); 106 | 107 | // save references to title and url elements 108 | helper.title = $('h6', helper.parent); 109 | helper.body = $('div.body', helper.parent); 110 | helper.url = $('div.url', helper.parent); 111 | } 112 | 113 | function settings(element) { 114 | return $.data(element, "tooltip-settings"); 115 | } 116 | 117 | // main event handler to start showing tooltips 118 | function handle(event) { 119 | // show helper, either with timeout or on instant 120 | if( settings(this).delay ) 121 | tID = setTimeout(show, settings(this).delay); 122 | else 123 | show(); 124 | 125 | // if selected, update the helper position when the mouse moves 126 | track = !!settings(this).track; 127 | $(document.body).bind('mousemove', update); 128 | 129 | // update at least once 130 | update(event); 131 | } 132 | 133 | // save elements title before the tooltip is displayed 134 | function save() { 135 | // if this is the current source, or it has no title (occurs with click event), stop 136 | if ( $.tooltip.blocked || this == current || (!this.tooltipText && !settings(this).bodyHandler) ) 137 | return; 138 | 139 | // save current 140 | current = this; 141 | title = this.tooltipText; 142 | 143 | if ( settings(this).bodyHandler ) { 144 | helper.title.hide(); 145 | var bodyContent = settings(this).bodyHandler.call(this); 146 | if (bodyContent.nodeType || bodyContent.jquery) { 147 | helper.body.empty().append(bodyContent) 148 | } else { 149 | helper.body.html( bodyContent ); 150 | } 151 | helper.body.show(); 152 | } else if ( settings(this).showBody ) { 153 | var parts = title.split(settings(this).showBody); 154 | helper.title.html(parts.shift()).show(); 155 | helper.body.empty(); 156 | for(var i = 0, part; part = parts[i]; i++) { 157 | if(i > 0) 158 | helper.body.append("
"); 159 | helper.body.append(part); 160 | } 161 | helper.body.hideWhenEmpty(); 162 | } else { 163 | helper.title.html(title).show(); 164 | helper.body.hide(); 165 | } 166 | 167 | // if element has href or src, add and show it, otherwise hide it 168 | if( settings(this).showURL && $(this).url() ) 169 | helper.url.html( $(this).url().replace('http://', '') ).show(); 170 | else 171 | helper.url.hide(); 172 | 173 | // add an optional class for this tip 174 | helper.parent.addClass(settings(this).extraClass); 175 | 176 | // fix PNG background for IE 177 | if (settings(this).fixPNG ) 178 | helper.parent.fixPNG(); 179 | 180 | handle.apply(this, arguments); 181 | } 182 | 183 | // delete timeout and show helper 184 | function show() { 185 | tID = null; 186 | helper.parent.show(); 187 | update(); 188 | } 189 | 190 | /** 191 | * callback for mousemove 192 | * updates the helper position 193 | * removes itself when no current element 194 | */ 195 | function update(event) { 196 | if($.tooltip.blocked) 197 | return; 198 | 199 | // stop updating when tracking is disabled and the tooltip is visible 200 | if ( !track && helper.parent.is(":visible")) { 201 | $(document.body).unbind('mousemove', update) 202 | } 203 | 204 | // if no current element is available, remove this listener 205 | if( current == null ) { 206 | $(document.body).unbind('mousemove', update); 207 | return; 208 | } 209 | 210 | // remove position helper classes 211 | helper.parent.removeClass("viewport-right").removeClass("viewport-bottom"); 212 | 213 | var left = helper.parent[0].offsetLeft; 214 | var top = helper.parent[0].offsetTop; 215 | if(event) { 216 | // position the helper 15 pixel to bottom right, starting from mouse position 217 | left = event.pageX + settings(current).left; 218 | top = event.pageY + settings(current).top; 219 | helper.parent.css({ 220 | left: left + 'px', 221 | top: top + 'px' 222 | }); 223 | } 224 | 225 | var v = viewport(), 226 | h = helper.parent[0]; 227 | // check horizontal position 228 | if(v.x + v.cx < h.offsetLeft + h.offsetWidth) { 229 | left -= h.offsetWidth + 20 + settings(current).left; 230 | helper.parent.css({left: left + 'px'}).addClass("viewport-right"); 231 | } 232 | // check vertical position 233 | if(v.y + v.cy < h.offsetTop + h.offsetHeight) { 234 | top -= h.offsetHeight + 20 + settings(current).top; 235 | helper.parent.css({top: top + 'px'}).addClass("viewport-bottom"); 236 | } 237 | } 238 | 239 | function viewport() { 240 | return { 241 | x: $(window).scrollLeft(), 242 | y: $(window).scrollTop(), 243 | cx: $(window).width(), 244 | cy: $(window).height() 245 | }; 246 | } 247 | 248 | // hide helper and restore added classes and the title 249 | function hide(event) { 250 | if($.tooltip.blocked) 251 | return; 252 | // clear timeout if possible 253 | if(tID) 254 | clearTimeout(tID); 255 | // no more current element 256 | current = null; 257 | 258 | helper.parent.hide().removeClass( settings(this).extraClass ); 259 | 260 | if( settings(this).fixPNG ) 261 | helper.parent.unfixPNG(); 262 | } 263 | 264 | $.fn.Tooltip = $.fn.tooltip; 265 | 266 | })(jQuery); 267 | -------------------------------------------------------------------------------- /js/jquery/jquery.usermode.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author trixta 3 | */ 4 | (function($){ 5 | $.userMode = (function(){ 6 | var userBg, 7 | timer, 8 | testDiv, 9 | boundEvents = 0; 10 | 11 | function testBg(){ 12 | testDiv = testDiv || $('
').css({position: 'absolute', left: '-999em', top: '-999px', width: '0px', height: '0px'}).appendTo('body'); 13 | var black = $.curCSS( testDiv.css({backgroundColor: '#000000'})[0], 'backgroundColor', true), 14 | white = $.curCSS( testDiv.css({backgroundColor: '#ffffff'})[0], 'backgroundColor', true), 15 | newBgStatus = (black === white || white === 'transparent'); 16 | if(newBgStatus != userBg){ 17 | userBg = newBgStatus; 18 | $.event.trigger('_internalusermode'); 19 | } 20 | return userBg; 21 | } 22 | 23 | function init(){ 24 | testBg(); 25 | timer = setInterval(testBg, 3000); 26 | } 27 | 28 | function stop(){ 29 | clearInterval(timer); 30 | testDiv.remove(); 31 | testDiv = null; 32 | } 33 | 34 | $.event.special.usermode = { 35 | setup: function(){ 36 | (!boundEvents && init()); 37 | boundEvents++; 38 | var jElem = $(this) 39 | .bind('_internalusermode', $.event.special.usermode.handler); 40 | //always trigger 41 | setTimeout(function(){ 42 | jElem.triggerHandler('_internalusermode'); 43 | }, 1); 44 | return true; 45 | }, 46 | teardown: function(){ 47 | boundEvents--; 48 | (!boundEvents && stop()); 49 | $(this).unbind('_internalusermode', $.event.special.usermode.handler); 50 | return true; 51 | }, 52 | handler: function(e){ 53 | e.type = 'usermode'; 54 | e.disabled = !userBg; 55 | e.enabled = userBg; 56 | return jQuery.event.handle.apply(this, arguments); 57 | } 58 | }; 59 | 60 | return { 61 | get: testBg 62 | }; 63 | 64 | })(); 65 | 66 | $.fn.userMode = function(fn){ 67 | return this[(fn) ? 'bind' : 'trigger']('usermode', fn); 68 | }; 69 | 70 | $(function(){ 71 | $('html').userMode(function(e){ 72 | $('html')[e.enabled ? 'addClass' : 'removeClass']('hcm'); 73 | }); 74 | }); 75 | })(jQuery); 76 | -------------------------------------------------------------------------------- /js/jquery/ui.checkbox.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author alexander.farkas 3 | * @version 1.3 4 | */ 5 | (function($){ 6 | $.widget('ui.checkBox', { 7 | _init: function(){ 8 | var that = this, 9 | 10 | opts = this.options, 11 | 12 | toggleHover = function(e){ 13 | if(this.disabledStatus){ 14 | return false; 15 | } 16 | that.hover = (e.type == 'focus' || e.type == 'mouseenter'); 17 | that._changeStateClassChain(); 18 | }; 19 | if(!this.element.is(':radio,:checkbox')){ 20 | return false; 21 | } 22 | this.labels = $([]); 23 | 24 | this.checkedStatus = false; 25 | this.disabledStatus = false; 26 | this.hoverStatus = false; 27 | 28 | this.radio = (this.element.is(':radio')); 29 | 30 | this.visualElement = $('') 31 | .addClass(this.radio ? 'ui-radio' : 'ui-checkbox') 32 | .bind('mouseenter.checkBox mouseleave.checkBox', toggleHover) 33 | .bind('click.checkBox', function(e){ 34 | that.element[0].click(); 35 | //that.element.trigger('click'); 36 | return false; 37 | }); 38 | 39 | if (opts.replaceInput) { 40 | this.element 41 | .addClass('ui-helper-hidden-accessible') 42 | .after(this.visualElement[0]) 43 | .bind('usermode', function(e){ 44 | (e.enabled && 45 | that.destroy.call(that, true)); 46 | }); 47 | } 48 | 49 | this.element 50 | .bind('click.checkBox', $.bind(this, this.reflectUI)) 51 | .bind('focus.checkBox blur.checkBox', toggleHover); 52 | 53 | if(opts.addLabel){ 54 | //ToDo: Add Closest Ancestor 55 | this.labels = $('label[for=' + this.element.attr('id') + ']') 56 | .bind('mouseenter.checkBox mouseleave.checkBox', toggleHover); 57 | } 58 | 59 | this.reflectUI({type: 'initialReflect'}); 60 | }, 61 | _changeStateClassChain: function(){ 62 | var stateClass = (this.checkedStatus) ? '-checked' : '', 63 | baseClass = 'ui-'+((this.radio) ? 'radio' : 'checkbox')+'-state'; 64 | 65 | stateClass += (this.disabledStatus) ? '-disabled' : ''; 66 | stateClass += (this.hover) ? '-hover' : ''; 67 | 68 | if(stateClass){ 69 | stateClass = baseClass + stateClass; 70 | } 71 | 72 | function switchStateClass(){ 73 | var classes = this.className.split(' '), 74 | found = false; 75 | $.each(classes, function(i, classN){ 76 | if(classN.indexOf(baseClass) === 0){ 77 | found = true; 78 | classes[i] = stateClass; 79 | return false; 80 | } 81 | }); 82 | if(!found){ 83 | classes.push(stateClass); 84 | } 85 | 86 | this.className = classes.join(' '); 87 | } 88 | 89 | this.labels.each(switchStateClass); 90 | this.visualElement.each(switchStateClass); 91 | }, 92 | destroy: function(onlyCss){ 93 | this.element.removeClass('ui-helper-hidden-accessible'); 94 | this.visualElement.addClass('ui-helper-hidden'); 95 | if (!onlyCss) { 96 | var o = this.options; 97 | this.element.unbind('.checkBox'); 98 | this.visualElement.remove(); 99 | this.labels 100 | .unbind('.checkBox') 101 | .removeClass('ui-state-hover ui-state-checked ui-state-disabled'); 102 | } 103 | }, 104 | 105 | disable: function(){ 106 | this.element[0].disabled = true; 107 | this.reflectUI({type: 'manuallyDisabled'}); 108 | }, 109 | 110 | enable: function(){ 111 | this.element[0].disabled = false; 112 | this.reflectUI({type: 'manuallyenabled'}); 113 | }, 114 | 115 | toggle: function(e){ 116 | this.changeCheckStatus((this.element.is(':checked')) ? false : true, e); 117 | }, 118 | 119 | changeCheckStatus: function(status, e){ 120 | if(e && e.type == 'click' && this.element[0].disabled){ 121 | return false; 122 | } 123 | this.element.attr({'checked': status}); 124 | this.reflectUI(e || { 125 | type: 'changeCheckStatus' 126 | }); 127 | }, 128 | 129 | propagate: function(n, e, _noGroupReflect){ 130 | if(!e || e.type != 'initialReflect'){ 131 | if (this.radio && !_noGroupReflect) { 132 | //dynamic 133 | $(document.getElementsByName(this.element.attr('name'))) 134 | .checkBox('reflectUI', e, true); 135 | } 136 | return this._trigger(n, e, { 137 | options: this.options, 138 | checked: this.checkedStatus, 139 | labels: this.labels, 140 | disabled: this.disabledStatus 141 | }); 142 | } 143 | }, 144 | 145 | reflectUI: function(elm, e){ 146 | var oldChecked = this.checkedStatus, 147 | oldDisabledStatus = this.disabledStatus; 148 | e = e || 149 | elm; 150 | 151 | this.disabledStatus = this.element.is(':disabled'); 152 | this.checkedStatus = this.element.is(':checked'); 153 | 154 | if (this.disabledStatus != oldDisabledStatus || this.checkedStatus !== oldChecked) { 155 | this._changeStateClassChain(); 156 | 157 | (this.disabledStatus != oldDisabledStatus && 158 | this.propagate('disabledChange', e)); 159 | 160 | (this.checkedStatus !== oldChecked && 161 | this.propagate('change', e)); 162 | } 163 | 164 | } 165 | }); 166 | $.ui.checkBox.defaults = { 167 | replaceInput: true, 168 | addLabel: true 169 | }; 170 | 171 | })(jQuery); 172 | -------------------------------------------------------------------------------- /js/tests/calendarGantt-test-01.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Calendar Gantt 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 75 | 76 | 77 | 78 | 79 | 80 |

GanttCalendar Test

81 |

Calendrier Hebdo vide 82 |
83 | | 84 | Suite 85 |

86 | 87 |
88 |
89 | 90 |
Zoom : 91 |
92 |
93 |
94 |
95 |
96 | 97 | 98 | 99 | -------------------------------------------------------------------------------- /js/tests/calendarGantt-test-02.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Calendar Gantt 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 99 | 100 | 101 | 102 | 103 | 104 |

GanttCalendar Test

105 |

Calendrier Hebdo, pas de chavauchement, calcul de l'occupation, affichage réduit 106 |
107 | Précédent 108 | | 109 | Suite 110 |

111 | 112 |
113 |
114 | 115 |
Zoom : 116 |
117 |
118 |
119 |
120 |
121 | 122 | 123 | 124 | -------------------------------------------------------------------------------- /js/tests/calendarGantt-test-03.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Calendar Gantt 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 102 | 103 | 104 | 105 | 106 | 107 |

GanttCalendar Test

108 |

Calendrier Hebdo, chevauchement d'évènements 109 |
110 | Précédent 111 | | 112 | Suite 113 |

114 | 115 |
116 |
117 | 118 |
Zoom : 119 |
120 |
121 |
122 |
123 |
124 | 125 | 126 | 127 | -------------------------------------------------------------------------------- /js/tests/calendarGantt-test-04.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Calendar Gantt 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 74 | 75 | 76 | 77 | 78 | 79 |

GanttCalendar Test

80 |

Calendrier mensuel vide 81 |
82 | Précédent 83 | | 84 | Suite 85 |

86 | 87 |
88 |
89 | 90 |
Zoom : 91 |
92 |
93 |
94 |
95 |
96 | 97 | 98 | 99 | -------------------------------------------------------------------------------- /js/tests/calendarGantt-test-05.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Calendar Gantt 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 98 | 99 | 100 | 101 | 102 | 103 |

GanttCalendar Test

104 |

Calendrier mensuel, pas de chavauchement, calcul de l'occupation, affichage réduit 105 |
106 | Précédent 107 | | 108 | Suite 109 |

110 | 111 |
112 |
113 | 114 |
Zoom : 115 |
116 |
117 |
118 |
119 |
120 | 121 | 122 | 123 | -------------------------------------------------------------------------------- /js/tests/calendarGantt-test-06.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Calendar Gantt 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 103 | 104 | 105 | 106 | 107 | 108 |

GanttCalendar Test

109 |

Calendrier mensuel, chevauchement d'évènements 110 |
111 | Précédent 112 | | 113 | Suite 114 |

115 | 116 |
117 |
118 | 119 |
Zoom : 120 |
121 |
122 |
123 |
124 |
125 | 126 | 127 | 128 | -------------------------------------------------------------------------------- /js/tests/calendarGantt-test-07.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Calendar Gantt 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 73 | 74 | 75 | 76 | 77 | 78 |

GanttCalendar Test

79 |

Calendrier quotidien vide 80 |
81 | Précédent 82 | | 83 | Suite 84 |

85 | 86 |
87 |
88 | 89 |
Zoom : 90 |
91 |
92 |
93 |
94 |
95 | 96 | 97 | 98 | -------------------------------------------------------------------------------- /js/tests/calendarGantt-test-08.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Calendar Gantt 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 102 | 103 | 104 | 105 | 106 | 107 |

GanttCalendar Test

108 |

Calendrier quotidien, pas de chavauchement, calcul de l'occupation, affichage réduit 109 |
110 | Précédent 111 | | 112 | Suite 113 |

114 | 115 |
116 |
117 | 118 |
Zoom : 119 |
120 |
121 |
122 |
123 |
124 | 125 | 126 | 127 | -------------------------------------------------------------------------------- /js/tests/calendarGantt-test-09.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Calendar Gantt 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 105 | 106 | 107 | 108 | 109 | 110 |

GanttCalendar Test

111 |

Calendrier quotidien, chevauchement d'évènements 112 |
113 | Précédent 114 | | 115 | Suite 116 |

117 | 118 |
119 |
120 | 121 |
Zoom : 122 |
123 |
124 |
125 |
126 |
127 | 128 | 129 | 130 | --------------------------------------------------------------------------------