PageSourceSearch

https://sede.algamitas.es/opencms/export/system/modules/gsede/resources/js/zabuto-calendar.js

js algamitas.es collected 2026-10-02 21:20:04 UTC 17,998 bytes, 649 lines download raw bytes

1if (typeof jQuery == "undefined") {
2	throw new Error("jQuery is not loaded")
3}
4$.fn.zabuto_calendar = function(b) {
5	var c = $.extend({}, $.fn.zabuto_calendar_defaults(), b);
6	var a = $.fn.zabuto_calendar_language(c.language);
7	c = $.extend({}, c, a);
8	this
9			.each(function() {
10				var j = $(this);
11				j.attr("id", "zabuto_calendar_"
12						+ Math.floor(Math.random() * 99999).toString(36));
13				j.data("initYear", c.year);
14				j.data("initMonth", c.month);
15				j.data("monthLabels", c.month_labels);
16				j.data("weekStartsOn", c.weekstartson);
17				j.data("navIcons", c.nav_icon);
18				j.data("dowLabels", c.dow_labels);
19				j.data("showToday", c.today);
20				j.data("showDays", c.show_days);
21				j.data("showPrevious", c.show_previous);
22				j.data("showNext", c.show_next);
23				j.data("cellBorder", c.cell_border);
24				j.data("jsonData", c.data);
25				j.data("ajaxSettings", c.ajax);
26				j.data("legendList", c.legend);
27				j.data("actionFunction", c.action);
28				j.data("actionNavFunction", c.action_nav);
29				l();
30				function l() {
31					var y = parseInt(j.data("initYear"));
32					var B = parseInt(j.data("initMonth")) - 1;
33					var C = new Date(y, B, 1, 0, 0, 0, 0);
34					j.data("initDate", C);
35					var D = (j.data("cellBorder") === true) ? " table-bordered"
36							: "";
37					$tableObj = $('<table class="table' + D + '"></table>');
38					$tableObj = w(j, $tableObj, C.getFullYear(), C.getMonth());
39					$legendObj = g(j);
40					var z = $('<div class="zabuto_calendar" id="'
41							+ j.attr("id") + '"></div>');
42					z.append($tableObj);
43					z.append($legendObj);
44					j.append(z);
45					var A = j.data("jsonData");
46					if (false !== A) {
47						r(j, C.getFullYear(), C.getMonth())
48					}
49				}
50				function w(A, C, z, B) {
51					var y = new Date(z, B, 1, 0, 0, 0, 0);
52					A.data("currDate", y);
53					C.empty();
54					C = s(A, C, z, B);
55					C = e(A, C);
56					C = q(A, C, z, B);
57					r(A, z, B);
58					return C
59				}
60				function g(A) {
61					var y = $('<div class="legend" id="' + A.attr("id")
62							+ '_legend"></div>');
63					var z = A.data("legendList");
64					if (typeof (z) == "object" && z.length > 0) {
65						$(z)
66								.each(
67										function(E, G) {
68											if (typeof (G) == "object") {
69												if ("type" in G) {
70													var F = "";
71													if ("label" in G) {
72														F = G.label
73													}
74													switch (G.type) {
75													case "text":
76														if (F !== "") {
77															var D = "";
78															if ("badge" in G) {
79																if (typeof (G.classname) === "undefined") {
80																	var H = "badge-event"
81																} else {
82																	var H = G.classname
83																}
84																D = '<span class="badge '
85																		+ H
86																		+ '">'
87																		+ G.badge
88																		+ "</span> "
89															}
90															y
91																	.append('<span class="legend-'
92																			+ G.type
93																			+ '">'
94																			+ D
95																			+ F
96																			+ "</span>")
97														}
98														break;
99													case "block":
100														if (F !== "") {
101															F = "<span>" + F
102																	+ "</span>"
103														}
104														if (typeof (G.classname) === "undefined") {
105															var C = "event"
106														} else {
107															var C = "event-styled "
108																	+ G.classname
109														}
110														y
111																.append('<span class="legend-'
112																		+ G.type
113																		+ '"><ul class="legend"><li class="'
114																		+ C
115																		+ '"></li></u>'
116																		+ F
117																		+ "</span>");
118														break;
119													case "list":
120														if ("list" in G
121																&& typeof (G.list) == "object"
122																&& G.list.length > 0) {
123															var B = $('<ul class="legend"></u>');
124															$(G.list)
125																	.each(
126																			function(
127																					J,
128																					I) {
129																				B
130																						.append('<li class="'
131																								+ I
132																								+ '"></li>')
133																			});
134															y.append(B)
135														}
136														break;
137													case "spacer":
138														y
139																.append('<span class="legend-'
140																		+ G.type
141																		+ '"> </span>');
142														break
143													}
144												}
145											}
146										})
147					}
148					return y
149				}
150				function s(N, B, K, I) {
151					var J = N.data("navIcons");
152					var G = $('<span><span class="glyphicon glyphicon-chevron-left"></span></span>');
153					var H = $('<span><span class="glyphicon glyphicon-chevron-right"></span></span>');
154					if (typeof (J) === "object") {
155						if ("prev" in J) {
156							G.html(J.prev)
157						}
158						if ("next" in J) {
159							H.html(J.next)
160						}
161					}
162					var M = N.data("showPrevious");
163					if (typeof (M) === "number" || M === false) {
164						M = p(N.data("showPrevious"), true)
165					}
166					var L = $('<div class="calendar-month-navigation"></div>');
167					L.attr("id", N.attr("id") + "_nav-prev");
168					L.data("navigation", "prev");
169					if (M !== false) {
170						prevMonth = (I - 1);
171						prevYear = K;
172						if (prevMonth == -1) {
173							prevYear = (prevYear - 1);
174							prevMonth = 11
175						}
176						L.data("to", {
177							year : prevYear,
178							month : (prevMonth + 1)
179						});
180						L.append(G);
181						if (typeof (N.data("actionNavFunction")) === "function") {
182							L.click(N.data("actionNavFunction"))
183						}
184						L.click(function(P) {
185							w(N, B, prevYear, prevMonth)
186						})
187					}
188					var F = N.data("showNext");
189					if (typeof (F) === "number" || F === false) {
190						F = p(N.data("showNext"), false)
191					}
192					var D = $('<div class="calendar-month-navigation"></div>');
193					D.attr("id", N.attr("id") + "_nav-next");
194					D.data("navigation", "next");
195					if (F !== false) {
196						nextMonth = (I + 1);
197						nextYear = K;
198						if (nextMonth == 12) {
199							nextYear = (nextYear + 1);
200							nextMonth = 0
201						}
202						D.data("to", {
203							year : nextYear,
204							month : (nextMonth + 1)
205						});
206						D.append(H);
207						if (typeof (N.data("actionNavFunction")) === "function") {
208							D.click(N.data("actionNavFunction"))
209						}
210						D.click(function(P) {
211							w(N, B, nextYear, nextMonth)
212						})
213					}
214					var O = N.data("monthLabels");
215					var E = $("<th></th>").append(L);
216					var y = $("<th></th>").append(D);
217					var C = $("<span>" + O[I] + " " + K + "</span>");
218					C.dblclick(function() {
219						var P = N.data("initDate");
220						w(N, B, P.getFullYear(), P.getMonth())
221					});
222					var z = $('<th colspan="5"></th>');
223					z.append(C);
224					var A = $('<tr class="calendar-month-header"></tr>');
225					A.append(E, z, y);
226					B.append(A);
227					return B
228				}
229				function e(B, D) {
230					if (B.data("showDays") === true) {
231						var y = B.data("weekStartsOn");
232						var z = B.data("dowLabels");
233						if (y === 0) {
234							var C = $.extend([], z);
235							var E = new Array(C.pop());
236							z = E.concat(C)
237						}
238						var A = $('<tr class="calendar-dow-header"></tr>');
239						$(z).each(function(F, G) {
240							A.append("<th>" + G + "</th>")
241						});
242						D.append(A)
243					}
244					return D
245				}
246				function q(G, F, I, N) {
247					var E = G.data("ajaxSettings");
248					var H = t(I, N);
249					var y = o(I, N);
250					var D = i(I, N, 1);
251					var P = i(I, N, y);
252					var C = 1;
253					var B = G.data("weekStartsOn");
254					if (B === 0) {
255						if (P == 6) {
256							H++
257						}
258						if (D == 6 && (P == 0 || P == 1 || P == 5)) {
259							H--
260						}
261						D++;
262						if (D == 7) {
263							D = 0
264						}
265					}
266					for (var A = 0; A < H; A++) {
267						var z = $('<tr class="calendar-dow"></tr>');
268						for (var K = 0; K < 7; K++) {
269							if (K < D || C > y) {
270								z.append("<td></td>")
271							} else {
272								var O = G.attr("id") + "_" + k(I, N, C);
273								var M = O + "_day";
274								var L = $('<div id="' + M + '" class="day" >'
275										+ C + "</div>");
276								L.data("day", C);
277								if (G.data("showToday") === true) {
278									if (x(I, N, C)) {
279										L
280												.html('<span class="badge badge-today">'
281														+ C + "</span>")
282									}
283								}
284								var J = $('<td id="' + O + '"></td>');
285								J.append(L);
286								J.data("date", k(I, N, C));
287								J.data("hasEvent", false);
288								if (typeof (G.data("actionFunction")) === "function") {
289									J.addClass("dow-clickable");
290									J.click(function() {
291										G.data("selectedDate", $(this).data(
292												"date"))
293									});
294									J.click(G.data("actionFunction"))
295								}
296								z.append(J);
297								C++
298							}
299							if (K == 6) {
300								D = 0
301							}
302						}
303						F.append(z)
304					}
305					return F
306				}
307				function h(B, H, G, J) {
308					var I = $('<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>');
309					var A = $('<h4 class="modal-title" id="' + B
310							+ '_modal_title">' + H + "</h4>");
311					var K = $('<div class="modal-header"></div>');
312					K.append(I);
313					K.append(A);
314					var F = $('<div class="modal-body" id="' + B
315							+ '_modal_body">' + G + "</div>");
316					var E = $('<div class="modal-footer" id="' + B
317							+ '_modal_footer"></div>');
318					if (typeof (J) !== "undefined") {
319						var z = $("<div>" + J + "</div>");
320						E.append(z)
321					}
322					var C = $('<div class="modal-content"></div>');
323					C.append(K);
324					C.append(F);
325					C.append(E);
326					var y = $('<div class="modal-dialog"></div>');
327					y.append(C);
328					var D = $('<div class="modal fade" id="'
329							+ B
330							+ '_modal" tabindex="-1" role="dialog" aria-labelledby="'
331							+ B + '_modal_title" aria-hidden="true"></div>');
332					D.append(y);
333					D.data("dateId", B);
334					D.attr("dateId", B);
335					return D
336				}
337				function r(A, z, C) {
338					var y = A.data("jsonData");
339					var B = A.data("ajaxSettings");
340					A.data("events", false);
341					if (false !== y) {
342						return n(A)
343					} else {
344						if (false !== B) {
345							return u(A, z, C)
346						}
347					}
348					return true
349				}
350				function n(z) {
351					var y = z.data("jsonData");
352					z.data("events", y);
353					f(z, "json");
354					return true
355				}
356				function u(z, y, C) {
357					var B = z.data("ajaxSettings");
358					if (typeof (B) != "object" || typeof (B.url) == "undefined") {
359						alert("Invalid calendar event settings");
360						return false
361					}
362					var A = {
363						year : y,
364						month : (C + 1)
365					};
366					$.ajax({
367						type : "GET",
368						url : B.url,
369						data : A,
370						dataType : "json"
371					}).done(function(D) {
372						var E = [];
373						$.each(D, function(G, F) {
374							E.push(D[G])
375						});
376						z.data("events", E);
377						f(z, "ajax")
378					});
379					return true
380				}
381				function f(B, A) {
382					var z = B.data("jsonData");
383					var C = B.data("ajaxSettings");
384					var y = B.data("events");
385					if (y !== false) {
386						$(y)
387								.each(
388										function(H, J) {
389											var D = B.attr("id") + "_" + J.date;
390											var F = $("#" + D);
391											var K = $("#" + D + "_day");
392											F.data("hasEvent", true);
393											if (typeof (J.title) !== "undefined") {
394												F.attr("title", J.title)
395											}
396											if (typeof (J.classname) === "undefined") {
397												F.addClass("event")
398											} else {
399												F.addClass("event-styled");
400												K.addClass(J.classname)
401											}
402											if (typeof (J.badge) !== "undefined"
403													&& J.badge !== false) {
404												var E = (J.badge === true) ? ""
405														: " badge-" + J.badge;
406												var G = K.data("day");
407												K
408														.html('<span class="badge badge-event'
409																+ E
410																+ '">'
411																+ G
412																+ "</span>")
413											}
414											if (typeof (J.body) !== "undefined") {
415												var I = false;
416												if (A === "json"
417														&& typeof (J.modal) !== "undefined"
418														&& J.modal === true) {
419													I = true
420												} else {
421													if (A === "ajax"
422															&& "modal" in C
423															&& C.modal === true) {
424														I = true
425													}
426												}
427												if (I === true) {
428													F
429															.addClass("event-clickable");
430													var L = h(D, J.title,
431															J.body, J.footer);
432													$("body").append(L);
433													$("#" + D)
434															.click(
435																	function() {
436																		$(
437																				"#"
438																						+ D
439																						+ "_modal")
440																				.modal()
441																	})
442												}
443											}
444										})
445					}
446				}
447				function x(A, B, z) {
448					var C = new Date();
449					var y = new Date(A, B, z);
450					return (y.toDateString() == C.toDateString())
451				}
452				function k(z, A, y) {
453					d = (y < 10) ? "0" + y : y;
454					m = A + 1;
455					m = (m < 10) ? "0" + m : m;
456					return z + "-" + m + "-" + d
457				}
458				function i(A, B, z) {
459					var y = new Date(A, B, z, 0, 0, 0, 0);
460					var C = y.getDay();
461					if (C == 0) {
462						C = 6
463					} else {
464						C--
465					}
466					return C
467				}
468				function o(z, A) {
469					var y = 28;
470					while (v(z, A + 1, y + 1)) {
471						y++
472					}
473					return y
474				}
475				function t(A, C) {
476					var y = o(A, C);
477					var E = i(A, C, 1);
478					var B = i(A, C, y);
479					var D = y;
480					var z = (E - B);
481					if (z > 0) {
482						D += z
483					}
484					return Math.ceil(D / 7)
485				}
486				function v(B, z, A) {
487					return z > 0 && z < 13 && B > 0 && B < 32768 && A > 0
488							&& A <= (new Date(B, z, 0)).getDate()
489				}
490				function p(A, C) {
491					if (A === false) {
492						A = 0
493					}
494					var B = j.data("currDate");
495					var z = j.data("initDate");
496					var y;
497					y = (z.getFullYear() - B.getFullYear()) * 12;
498					y -= B.getMonth() + 1;
499					y += z.getMonth();
500					if (C === true) {
501						if (y < (parseInt(A) - 1)) {
502							return true
503						}
504					} else {
505						if (y >= (0 - parseInt(A))) {
506							return true
507						}
508					}
509					return false
510				}
511			});
512	return this
513};
514$.fn.zabuto_calendar_defaults = function() {
515	var a = new Date();
516	var c = a.getFullYear();
517	var e = a.getMonth() + 1;
518	var b = {
519		language : false,
520		year : c,
521		month : e,
522		show_previous : true,
523		show_next : true,
524		cell_border : false,
525		today : false,
526		show_days : true,
527		weekstartson : 1,
528		nav_icon : false,
529		data : false,
530		ajax : false,
531		legend : false,
532		action : false,
533		action_nav : false
534	};
535	return b
536};
537$.fn.zabuto_calendar_language = function(a) {
538	if (typeof (a) == "undefined" || a === false) {
539		a = "en"
540	}
541	switch (a.toLowerCase()) {
542	case "de":
543		return {
544			month_labels : [ "Januar", "Februar", "März", "April", "Mai",
545					"Juni", "Juli", "August", "September", "Oktober",
546					"November", "Dezember" ],
547			dow_labels : [ "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So" ]
548		};
549		break;
550	case "en":
551		return {
552			month_labels : [ "January", "February", "March", "April", "May",
553					"June", "July", "August", "September", "October",
554					"November", "December" ],
555			dow_labels : [ "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" ]
556		};
557		break;
558	case "es":
559		return {
560			month_labels : [ "Enero", "Febrero", "Marzo", "Abril", "Mayo",
561					"Junio", "Julio", "Agosto", "Septiembre", "Octubre",
562					"Noviembre", "Diciembre" ],
563			dow_labels : [ "Lu", "Ma", "Mi", "Ju", "Vi", "Sá", "Do" ]
564		};
565		break;
566	case "gl":
567		return {
568			month_labels : [ "Xaneiro", "Febreiro", "Marzo", "Abril", "Maio",
569					"Xuño", "Xullo", "Agosto", "Setembro", "Outubro",
570					"Novembro", "Decembro" ],
571			dow_labels : [ "Lu", "Ma", "Mé", "Xo", "Ve", "Sá", "Do" ]
572		};
573		break;
574	case "va":
575		return {
576			month_labels : [ "Gener", "Febrer", "Març", "Abril", "Maig",
577					"Juny", "Juliol", "Agost", "Setembre", "Octubre",
578					"Novembre", "Desembre" ],
579			dow_labels : [ "Dl", "Dt", "Dc", "Dj", "Dv", "Ds", "Dg" ]
580		};
581		break;
582	case "ca":
583		return {
584			month_labels : [ "Gener", "Febrer", "Març", "Abril", "Maig",
585					"Juny", "Juliol", "Agost", "Setembre", "Octubre",
586					"Novembre", "Desembre" ],
587			dow_labels : [ "Dl", "Dt", "Dc", "Dj", "Dv", "Ds", "Dg" ]
588		};
589		break;
590		
591		
592	case "fr":
593		return {
594			month_labels : [ "Janvier", "Février", "Mars", "Avril", "Mai",
595					"Juin", "Juillet", "Août", "Septembre", "Octobre",
596					"Novembre", "Décembre" ],
597			dow_labels : [ "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim" ]
598		};
599		break;
600	case "it":
601		return {
602			month_labels : [ "Gennaio", "Febbraio", "Marzo", "Aprile",
603					"Maggio", "Giugno", "Luglio", "Agosto", "Settembre",
604					"Ottobre", "Novembre", "Dicembre" ],
605			dow_labels : [ "Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom" ]
606		};
607		break;
608	case "nl":
609		return {
610			month_labels : [ "Januari", "Februari", "Maart", "April", "Mei",
611					"Juni", "Juli", "Augustus", "September", "Oktober",
612					"November", "December" ],
613			dow_labels : [ "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo" ]
614		};
615		break;
616	case "pt":
617		return {
618			month_labels : [ "Janeiro", "Fevereiro", "Marco", "Abril", "Maio",
619					"Junho", "Julho", "Agosto", "Setembro", "Outubro",
620					"Novembro", "Dezembro" ],
621			dow_labels : [ "S", "T", "Q", "Q", "S", "S", "D" ]
622		};
623		break;
624	case "ru":
625		return {
626			month_labels : [ "Январь", "Февраль", "Март", "Апрель", "Май",
627					"Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь",
628					"Декабрь" ],
629			dow_labels : [ "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вск" ]
630		};
631		break;
632	case "se":
633		return {
634			month_labels : [ "Januari", "Februari", "Mars", "April", "Maj",
635					"Juni", "Juli", "Augusti", "September", "Oktober",
636					"November", "December" ],
637			dow_labels : [ "Mån", "Tis", "Ons", "Tor", "Fre", "Lör", "Sön" ]
638		};
639		break;
640	case "tr":
641		return {
642			month_labels : [ "Ocak", "Şubat", "Mart", "Nisan", "Mayıs",
643					"Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım",
644					"Aralık" ],
645			dow_labels : [ "Pts", "Salı", "Çar", "Per", "Cuma", "Cts", "Paz" ]
646		};
647		break
648	}
649};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.