PageSourceSearch

https://www.schwimmschule-walkmuehltal.de/templates-default/vendor…/zabuto_calendar.minified.35012.js

js schwimmschule-walkmuehltal.de collected 2026-10-07 05:16:16 UTC 32,888 bytes, 775 lines download raw bytes

1/**
2 * Zabuto Calendar
3 *
4 * Dependencies
5 * - jQuery (2.0.3)
6 * - Twitter Bootstrap (3.0.2)
7 */
8
9if (typeof jQuery == 'undefined') {
10    throw new Error('jQuery is not loaded');
11}
12
13/**
14 * Create calendar
15 *
16 * @param options
17 * @returns {*}
18 */
19$.fn.zabuto_calendar = function (options) {
20    var opts = $.extend({}, $.fn.zabuto_calendar_defaults(), options);
21    var languageSettings = $.fn.zabuto_calendar_language(opts.language);
22    opts = $.extend({}, opts, languageSettings);
23
24    this.each(function () {
25        var $calendarElement = $(this);
26        $calendarElement.attr('id', "zabuto_calendar_" + Math.floor(Math.random() * 99999).toString(36));
27
28        $calendarElement.data('initYear', opts.year);
29        $calendarElement.data('initMonth', opts.month);
30        $calendarElement.data('monthLabels', opts.month_labels);
31        $calendarElement.data('weekStartsOn', opts.weekstartson);
32        $calendarElement.data('navIcons', opts.nav_icon);
33        $calendarElement.data('dowLabels', opts.dow_labels);
34        $calendarElement.data('showToday', opts.today);
35        $calendarElement.data('showDays', opts.show_days);
36        $calendarElement.data('showPrevious', opts.show_previous);
37        $calendarElement.data('showNext', opts.show_next);
38        $calendarElement.data('cellBorder', opts.cell_border);
39        $calendarElement.data('jsonData', opts.data);
40        $calendarElement.data('ajaxSettings', opts.ajax);
41        $calendarElement.data('legendList', opts.legend);
42        $calendarElement.data('actionFunction', opts.action);
43        $calendarElement.data('actionNavFunction', opts.action_nav);
44
45        drawCalendar();
46
47        function drawCalendar() {
48            var dateInitYear = parseInt($calendarElement.data('initYear'));
49            var dateInitMonth = parseInt($calendarElement.data('initMonth')) - 1;
50            var dateInitObj = new Date(dateInitYear, dateInitMonth, 1, 0, 0, 0, 0);
51            $calendarElement.data('initDate', dateInitObj);
52
53            var tableClassHtml = ($calendarElement.data('cellBorder') === true) ? ' table-bordered' : '';
54
55            var $tableObj = $('<table class="table' + tableClassHtml + '"></table>');
56            $tableObj = drawTable($calendarElement, $tableObj, dateInitObj.getFullYear(), dateInitObj.getMonth());
57
58            var $legendObj = drawLegend($calendarElement);
59
60            var $containerHtml = $('<div class="zabuto_calendar"></div>');
61            $containerHtml.append($tableObj);
62            $containerHtml.append($legendObj);
63
64            $calendarElement.append($containerHtml);
65
66            var jsonData = $calendarElement.data('jsonData');
67            if (false !== jsonData) {
68                checkEvents($calendarElement, dateInitObj.getFullYear(), dateInitObj.getMonth());
69            }
70        }
71
72        function drawTable($calendarElement, $tableObj, year, month) {
73            var dateCurrObj = new Date(year, month, 1, 0, 0, 0, 0);
74            $calendarElement.data('currDate', dateCurrObj);
75
76            $tableObj.empty();
77            $tableObj = appendMonthHeader($calendarElement, $tableObj, year, month);
78            $tableObj = appendDayOfWeekHeader($calendarElement, $tableObj);
79            $tableObj = appendDaysOfMonth($calendarElement, $tableObj, year, month);
80            checkEvents($calendarElement, year, month);
81            return $tableObj;
82        }
83
84        function drawLegend($calendarElement) {
85            var $legendObj = $('<div class="legend" id="' + $calendarElement.attr('id') + '_legend"></div>');
86            var legend = $calendarElement.data('legendList');
87            if (typeof (legend) == 'object' && legend.length > 0) {
88                $(legend).each(function (index, item) {
89                    if (typeof (item) == 'object') {
90                        if ('type' in item) {
91                            var itemLabel = '';
92                            if ('label' in item) {
93                                itemLabel = item.label;
94                            }
95
96                            switch (item.type) {
97                                case 'text':
98                                    if (itemLabel !== '') {
99                                        var itemBadge = '';
100                                        if ('badge' in item) {
101                                            if (typeof (item.classname) === 'undefined') {
102                                                var badgeClassName = 'badge-event';
103                                            } else {
104                                                var badgeClassName = item.classname;
105                                            }
106                                            itemBadge = '<span class="badge ' + badgeClassName + '">' + item.badge + '</span> ';
107                                        }
108                                        $legendObj.append('<span class="legend-' + item.type + '">' + itemBadge + itemLabel + '</span>');
109                                    }
110                                    break;
111                                case 'block':
112                                    if (itemLabel !== '') {
113                                        itemLabel = '<span>' + itemLabel + '</span>';
114                                    }
115                                    if (typeof (item.classname) === 'undefined') {
116                                        var listClassName = 'event';
117                                    } else {
118                                        var listClassName = 'event-styled ' + item.classname;
119                                    }
120                                    $legendObj.append('<span class="legend-' + item.type + '"><ul class="legend"><li class="' + listClassName + '"></li></ul>' + itemLabel + '</span>');
121                                    break;
122                                case 'list':
123                                    if ('list' in item && typeof (item.list) == 'object' && item.list.length > 0) {
124                                        var $legendUl = $('<ul class="legend"></ul>');
125                                        $(item.list).each(function (listIndex, listClassName) {
126                                            $legendUl.append('<li class="' + listClassName + '"></li>');
127                                        });
128                                        $legendObj.append($legendUl);
129                                    }
130                                    break;
131                                case 'spacer':
132                                    $legendObj.append('<span class="legend-' + item.type + '"> </span>');
133                                    break;
134
135                            }
136                        }
137                    }
138                });
139            }
140
141            return $legendObj;
142        }
143
144        function appendMonthHeader($calendarElement, $tableObj, year, month) {
145            var navIcons = $calendarElement.data('navIcons');
146            var $prevMonthNavIcon = $('<span><span class="glyphicon glyphicon-chevron-left"></span></span>');
147            var $nextMonthNavIcon = $('<span><span class="glyphicon glyphicon-chevron-right"></span></span>');
148            if (typeof (navIcons) === 'object') {
149                if ('prev' in navIcons) {
150                    $prevMonthNavIcon.html(navIcons.prev);
151                }
152                if ('next' in navIcons) {
153                    $nextMonthNavIcon.html(navIcons.next);
154                }
155            }
156
157            var prevIsValid = $calendarElement.data('showPrevious');
158            if (typeof (prevIsValid) === 'number' || prevIsValid === false) {
159                prevIsValid = checkMonthLimit($calendarElement.data('showPrevious'), true);
160            }
161
162            var $prevMonthNav = $('<div class="calendar-month-navigation"></div>');
163            $prevMonthNav.attr('id', $calendarElement.attr('id') + '_nav-prev');
164            $prevMonthNav.data('navigation', 'prev');
165            if (prevIsValid !== false) {
166                var prevMonth = (month - 1);
167                var prevYear = year;
168                if (prevMonth == -1) {
169                    prevYear = (prevYear - 1);
170                    prevMonth = 11;
171                }
172                $prevMonthNav.data('to', {year: prevYear, month: (prevMonth + 1)});
173                $prevMonthNav.append($prevMonthNavIcon);
174                if (typeof ($calendarElement.data('actionNavFunction')) === 'function') {
175                    $prevMonthNav.click($calendarElement.data('actionNavFunction'));
176                }
177                $prevMonthNav.click(function (e) {
178                    drawTable($calendarElement, $tableObj, prevYear, prevMonth);
179                });
180            }
181
182            var nextIsValid = $calendarElement.data('showNext');
183            if (typeof (nextIsValid) === 'number' || nextIsValid === false) {
184                nextIsValid = checkMonthLimit($calendarElement.data('showNext'), false);
185            }
186
187            var $nextMonthNav = $('<div class="calendar-month-navigation"></div>');
188            $nextMonthNav.attr('id', $calendarElement.attr('id') + '_nav-next');
189            $nextMonthNav.data('navigation', 'next');
190            if (nextIsValid !== false) {
191                var nextMonth = (month + 1);
192                var nextYear = year;
193                if (nextMonth == 12) {
194                    nextYear = (nextYear + 1);
195                    nextMonth = 0;
196                }
197                $nextMonthNav.data('to', {year: nextYear, month: (nextMonth + 1)});
198                $nextMonthNav.append($nextMonthNavIcon);
199                if (typeof ($calendarElement.data('actionNavFunction')) === 'function') {
200                    $nextMonthNav.click($calendarElement.data('actionNavFunction'));
201                }
202                $nextMonthNav.click(function (e) {
203                    drawTable($calendarElement, $tableObj, nextYear, nextMonth);
204                });
205            }
206
207            var monthLabels = $calendarElement.data('monthLabels');
208
209            var $prevMonthCell = $('<td></td>').append($prevMonthNav);
210            var $nextMonthCell = $('<td></td>').append($nextMonthNav);
211
212            var $currMonthLabel = $('<span>' + monthLabels[month] + ' ' + year + '</span>');
213            $currMonthLabel.dblclick(function () {
214                var dateInitObj = $calendarElement.data('initDate');
215                drawTable($calendarElement, $tableObj, dateInitObj.getFullYear(), dateInitObj.getMonth());
216            });
217
218            var $currMonthCell = $('<td colspan="5"></td>');
219            $currMonthCell.append($currMonthLabel);
220
221            var $monthHeaderRow = $('<tr class="calendar-month-header"></tr>');
222            $monthHeaderRow.append($prevMonthCell, $currMonthCell, $nextMonthCell);
223
224            $tableObj.append($monthHeaderRow);
225            return $tableObj;
226        }
227
228        function appendDayOfWeekHeader($calendarElement, $tableObj) {
229            if ($calendarElement.data('showDays') === true) {
230                var weekStartsOn = $calendarElement.data('weekStartsOn');
231                var dowLabels = $calendarElement.data('dowLabels');
232                if (weekStartsOn === 0) {
233                    var dowFull = $.extend([], dowLabels);
234                    var sunArray = new Array(dowFull.pop());
235                    dowLabels = sunArray.concat(dowFull);
236                }
237
238                var $dowHeaderRow = $('<tr class="calendar-dow-header"></tr>');
239                $(dowLabels).each(function (index, value) {
240                    $dowHeaderRow.append('<th>' + value + '</th>');
241                });
242                $tableObj.append($dowHeaderRow);
243            }
244            return $tableObj;
245        }
246
247        function appendDaysOfMonth($calendarElement, $tableObj, year, month) {
248            var ajaxSettings = $calendarElement.data('ajaxSettings');
249            var weeksInMonth = calcWeeksInMonth(year, month);
250            var lastDayinMonth = calcLastDayInMonth(year, month);
251            var firstDow = calcDayOfWeek(year, month, 1);
252            var lastDow = calcDayOfWeek(year, month, lastDayinMonth);
253            var currDayOfMonth = 1;
254
255            var weekStartsOn = $calendarElement.data('weekStartsOn');
256            if (weekStartsOn === 0) {
257                if (lastDow == 6) {
258                    weeksInMonth++;
259                }
260                if (firstDow == 6 && (lastDow == 0 || lastDow == 1 || lastDow == 5)) {
261                    weeksInMonth--;
262                }
263                firstDow++;
264                if (firstDow == 7) {
265                    firstDow = 0;
266                }
267            }
268
269            for (var wk = 0; wk < weeksInMonth; wk++) {
270                var $dowRow = $('<tr class="calendar-dow"></tr>');
271                for (var dow = 0; dow < 7; dow++) {
272                    if (dow < firstDow || currDayOfMonth > lastDayinMonth) {
273                        $dowRow.append('<td></td>');
274                    } else {
275                        var dateId = $calendarElement.attr('id') + '_' + dateAsString(year, month, currDayOfMonth);
276                        var dayId = dateId + '_day';
277
278                        var $dayElement = $('<div id="' + dayId + '" class="day" >' + currDayOfMonth + '</div>');
279                        $dayElement.data('day', currDayOfMonth);
280
281                        if (isToday(year, month, currDayOfMonth)) {
282                            $dayElement.addClass('today');
283                            if ($calendarElement.data('showToday') === true) {
284                                $dayElement.html('<span class="badge badge-today">' + currDayOfMonth + '</span>');
285                            }
286                        }
287
288                        var $dowElement = $('<td id="' + dateId + '"></td>');
289                        $dowElement.append($dayElement);
290
291                        $dowElement.data('date', dateAsString(year, month, currDayOfMonth));
292                        $dowElement.data('hasEvent', false);
293
294                        if (typeof ($calendarElement.data('actionFunction')) === 'function') {
295                            $dowElement.addClass('dow-clickable');
296                            $dowElement.click(function () {
297                                $calendarElement.data('selectedDate', $(this).data('date'));
298                            });
299                            $dowElement.click($calendarElement.data('actionFunction'));
300                        }
301
302                        $dowRow.append($dowElement);
303
304                        currDayOfMonth++;
305                    }
306                    if (dow == 6) {
307                        firstDow = 0;
308                    }
309                }
310
311                $tableObj.append($dowRow);
312            }
313            return $tableObj;
314        }
315
316        /* ----- Modal functions ----- */
317
318        function createModal(id, title, body, footer) {
319            var $modalHeaderButton = $('<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>');
320            var $modalHeaderTitle = $('<h4 class="modal-title" id="' + id + '_modal_title">' + title + '</h4>');
321
322            var $modalHeader = $('<div class="modal-header"></div>');
323            $modalHeader.append($modalHeaderButton);
324            $modalHeader.append($modalHeaderTitle);
325
326            var $modalBody = $('<div class="modal-body" id="' + id + '_modal_body">' + body + '</div>');
327
328            var $modalFooter = $('<div class="modal-footer" id="' + id + '_modal_footer"></div>');
329            if (typeof (footer) !== 'undefined') {
330                var $modalFooterAddOn = $('<div>' + footer + '</div>');
331                $modalFooter.append($modalFooterAddOn);
332            }
333
334            var $modalContent = $('<div class="modal-content"></div>');
335            $modalContent.append($modalHeader);
336            $modalContent.append($modalBody);
337            $modalContent.append($modalFooter);
338
339            var $modalDialog = $('<div class="modal-dialog"></div>');
340            $modalDialog.append($modalContent);
341
342            var $modalFade = $('<div class="modal fade" id="' + id + '_modal" tabindex="-1" role="dialog" aria-labelledby="' + id + '_modal_title" aria-hidden="true"></div>');
343            $modalFade.append($modalDialog);
344
345            $modalFade.data('dateId', id);
346            $modalFade.attr("dateId", id);
347
348            return $modalFade;
349        }
350
351        /* ----- Event functions ----- */
352
353        function checkEvents($calendarElement, year, month) {
354            var jsonData = $calendarElement.data('jsonData');
355            var ajaxSettings = $calendarElement.data('ajaxSettings');
356
357            $calendarElement.data('events', false);
358
359            if (false !== jsonData) {
360                return jsonEvents($calendarElement);
361            } else if (false !== ajaxSettings) {
362                return ajaxEvents($calendarElement, year, month);
363            }
364
365            return true;
366        }
367
368        function jsonEvents($calendarElement) {
369            var jsonData = $calendarElement.data('jsonData');
370            $calendarElement.data('events', jsonData);
371            drawEvents($calendarElement, 'json');
372            return true;
373        }
374
375        function ajaxEvents($calendarElement, year, month) {
376            var ajaxSettings = $calendarElement.data('ajaxSettings');
377
378            if (typeof (ajaxSettings) != 'object' || typeof (ajaxSettings.url) == 'undefined') {
379                alert('Invalid calendar event settings');
380                return false;
381            }
382
383            var data = {year: year, month: (month + 1)};
384
385            $.ajax({
386                type: 'GET',
387                url: ajaxSettings.url,
388                data: data,
389                dataType: 'json'
390            }).done(function (response) {
391                var events = [];
392                $.each(response.events, function (k, v) {
393                    events.push(response.events[k]);
394                });
395                $calendarElement.data('events', events);
396                $calendarElement.data('data', response);
397                drawEvents($calendarElement, 'ajax');
398            });
399
400            return true;
401        }
402
403        function drawEvents($calendarElement, type) {
404            var jsonData = $calendarElement.data('jsonData');
405            var ajaxSettings = $calendarElement.data('ajaxSettings');
406
407            var events = $calendarElement.data('events');
408            if (events !== false) {
409                $(events).each(function (index, value) {
410                    var id = $calendarElement.attr('id') + '_' + value.date;
411                    var $dowElement = $('#' + id);
412                    var $dayElement = $('#' + id + '_day');
413
414                    $dowElement.data('hasEvent', true);
415
416                    if (typeof (value.title) !== 'undefined') {
417                        $dowElement.attr('title', value.title);
418                    }
419
420                    if (typeof (value.classname) === 'undefined') {
421                        $dowElement.addClass('event');
422                    } else {
423                        $dowElement.addClass('event-styled');
424                        $dayElement.addClass(value.classname);
425                    }
426
427                    if (typeof (value.badge) !== 'undefined' && value.badge !== false) {
428                        var badgeClass = (value.badge === true) ? '' : ' badge-' + value.badge;
429                        var dayLabel = $dayElement.data('day');
430                        $dayElement.html('<span class="badge badge-event' + badgeClass + '">' + dayLabel + '</span>');
431                    }
432
433                    if (typeof (value.body) !== 'undefined') {
434                        var modalUse = false;
435                        if (type === 'json' && typeof (value.modal) !== 'undefined' && value.modal === true) {
436                            modalUse = true;
437                        } else if (type === 'ajax' && 'modal' in ajaxSettings && ajaxSettings.modal === true) {
438                            modalUse = true;
439                        }
440
441                        if (modalUse === true) {
442                            $dowElement.addClass('event-clickable');
443
444                            var $modalElement = createModal(id, value.title, value.body, value.footer);
445                            $('body').append($modalElement);
446
447                            $('#' + id).click(function () {
448                                $('#' + id + '_modal').modal();
449                            });
450                        }
451                    }
452                });
453            }
454
455            opts.callback();
456        }
457
458        /* ----- Helper functions ----- */
459
460        function isToday(year, month, day) {
461            var todayObj = new Date();
462            var dateObj = new Date(year, month, day);
463            return (dateObj.toDateString() == todayObj.toDateString());
464        }
465
466        function dateAsString(year, month, day) {
467            var m, d;
468            d = (day < 10) ? '0' + day : day;
469            m = month + 1;
470            m = (m < 10) ? '0' + m : m;
471            return year + '-' + m + '-' + d;
472        }
473
474        function calcDayOfWeek(year, month, day) {
475            var dateObj = new Date(year, month, day, 0, 0, 0, 0);
476            var dow = dateObj.getDay();
477            if (dow == 0) {
478                dow = 6;
479            } else {
480                dow--;
481            }
482            return dow;
483        }
484
485        function calcLastDayInMonth(year, month) {
486            var day = 28;
487            while (checkValidDate(year, month + 1, day + 1)) {
488                day++;
489            }
490            return day;
491        }
492
493        function calcWeeksInMonth(year, month) {
494            var daysInMonth = calcLastDayInMonth(year, month);
495            var firstDow = calcDayOfWeek(year, month, 1);
496            var lastDow = calcDayOfWeek(year, month, daysInMonth);
497            var days = daysInMonth;
498            var correct = (firstDow - lastDow);
499            if (correct > 0) {
500                days += correct;
501            }
502            return Math.ceil(days / 7);
503        }
504
505        function checkValidDate(y, m, d) {
506            return m > 0 && m < 13 && y > 0 && y < 32768 && d > 0 && d <= (new Date(y, m, 0)).getDate();
507        }
508
509        function checkMonthLimit(count, invert) {
510            if (count === false) {
511                count = 0;
512            }
513            var d1 = $calendarElement.data('currDate');
514            var d2 = $calendarElement.data('initDate');
515
516            var months;
517            months = (d2.getFullYear() - d1.getFullYear()) * 12;
518            months -= d1.getMonth() + 1;
519            months += d2.getMonth();
520
521            if (invert === true) {
522                if (months < (parseInt(count) - 1)) {
523                    return true;
524                }
525            } else {
526                if (months >= (0 - parseInt(count))) {
527                    return true;
528                }
529            }
530            return false;
531        }
532    }); // each()
533
534    return this;
535};
536
537/**
538 * Default settings
539 *
540 * @returns object
541 *   language:          string,
542 *   year:              integer,
543 *   month:             integer,
544 *   show_previous:     boolean|integer,
545 *   show_next:         boolean|integer,
546 *   cell_border:       boolean,
547 *   today:             boolean,
548 *   show_days:         boolean,
549 *   weekstartson:      integer (0 = Sunday, 1 = Monday),
550 *   nav_icon:          object: prev: string, next: string
551 *   ajax:              object: url: string, modal: boolean,
552 *   legend:            object array, [{type: string, label: string, classname: string}]
553 *   action:            function
554 *   action_nav:        function
555 */
556$.fn.zabuto_calendar_defaults = function () {
557    var now = new Date();
558    var year = now.getFullYear();
559    var month = now.getMonth() + 1;
560    var settings = {
561        language: false,
562        year: year,
563        month: month,
564        show_previous: true,
565        show_next: true,
566        cell_border: false,
567        today: false,
568        show_days: true,
569        weekstartson: 1,
570        nav_icon: false,
571        data: false,
572        ajax: false,
573        legend: false,
574        action: false,
575        action_nav: false
576    };
577    return settings;
578};
579
580/**
581 * Language settings
582 *
583 * @param lang
584 * @returns {{month_labels: Array, dow_labels: Array}}
585 */
586$.fn.zabuto_calendar_language = function (lang) {
587    if (typeof (lang) == 'undefined' || lang === false) {
588        lang = 'en';
589    }
590
591    switch (lang.toLowerCase()) {
592        case 'ar':
593            return {
594                month_labels: ["يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"],
595                dow_labels: ["أثنين", "ثلاثاء", "اربعاء", "خميس", "جمعه", "سبت", "أحد"]
596            };
597            break;
598
599        case "az":
600            return {
601                month_labels: ["Yanvar", "Fevral", "Mart", "Aprel", "May", "İyun", "İyul", "Avqust", "Sentyabr", "Oktyabr", "Noyabr", "Dekabr"],
602                dow_labels: ["B.e", "Ç.A", "Çərş", "C.A", "Cümə", "Şən", "Baz"]
603            };
604            break;
605
606        case 'ca':
607            return {
608                month_labels: ["Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"],
609                dow_labels: ["Dl", "Dt", "Dc", "Dj", "Dv", "Ds", "Dg"]
610            };
611            break;
612
613        case "cn":
614            return {
615                month_labels: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
616                dow_labels: ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
617            };
618            break;
619
620        case "cs":
621            return {
622                month_labels: ["Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"],
623                dow_labels: ["Po", "Út", "St", "Čt", "Pá", "So", "Ne"]
624            };
625            break;
626
627        case 'de':
628            return {
629                month_labels: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
630                dow_labels: ["Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"]
631            };
632            break;
633
634        case 'en':
635            return {
636                month_labels: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "
636November", "December"],
637                dow_labels: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
638            };
639            break;
640
641        case 'he':
642            return {
643                month_labels: ["ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר"],
644                dow_labels: ["ב", "ג", "ד", "ה", "ו", "ש", "א"]
645            };
646            break;
647
648        case 'es':
649            return {
650                month_labels: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"],
651                dow_labels: ["Lu", "Ma", "Mi", "Ju", "Vi", "Sá", "Do"]
652            };
653            break;
654
655        case 'fi':
656            return {
657                month_labels: ["Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kesäkuu", "Heinäkuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu"],
658                dow_labels: ["Ma", "Ti", "Ke", "To", "Pe", "La", "Su"]
659            };
660            break;
661
662        case 'fr':
663            return {
664                month_labels: ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"],
665                dow_labels: ["Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim"]
666            };
667            break;
668
669        case 'hu':
670            return {
671                month_labels: ["Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"],
672                dow_labels: ["Hé", "Ke", "Sze", "Cs", "Pé", "Szo", "Va"]
673            };
674            break;
675
676        case 'id':
677            return {
678                month_labels: ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"],
679                dow_labels: ["Senin", "Selasa", "Rabu", "Kamis", "Jum'at", "Sabtu", "Minggu"]
680            };
681            break;
682
683        case 'it':
684            return {
685                month_labels: ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"],
686                dow_labels: ["Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom"]
687            };
688            break;
689
690        case 'jp':
691            return {
692                month_labels: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
693                dow_labels: ["月", "火", "水", "木", "金", "土", "日"]
694            };
695            break;
696
697        case 'kr':
698            return {
699                month_labels: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
700                dow_labels: ["월", "화", "수", "목", "금", "토", "일"]
701            };
702            break;
703
704        case 'nl':
705            return {
706                month_labels: ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"],
707                dow_labels: ["Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"]
708            };
709            break;
710
711        case 'no':
712            return {
713                month_labels: ["Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"],
714                dow_labels: ["Ma", "Ti", "On", "To", "Fr", "L\u00f8", "S\u00f8"]
715            };
716            break;
717
718        case 'pl':
719            return {
720                month_labels: ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"],
721                dow_labels: ["pon.", "wt.", "śr.", "czw.", "pt.", "sob.", "niedz."]
722            };
723            break;
724
725        case 'pt':
726            return {
727                month_labels: ["Janeiro", "Fevereiro", "Marco", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
728                dow_labels: ["S", "T", "Q", "Q", "S", "S", "D"]
729            };
730            break;
731
732        case 'ru':
733            return {
734                month_labels: ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"],
735                dow_labels: ["Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вск"]
736            };
737            break;
738
739        case 'se':
740            return {
741                month_labels: ["Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "
741November", "December"],
742                dow_labels: ["Mån", "Tis", "Ons", "Tor", "Fre", "Lör", "Sön"]
743            };
744            break;
745
746        case 'sk':
747            return {
748                month_labels: ["Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December"],
749                dow_labels: ["Po", "Ut", "St", "Å t", "Pi", "So", "Ne"]
750            };
751            break;
752
753        case 'sr':
754            return {
755                month_labels: ["Јануар", "Фебруар", "Март", "Април", "Мај", "Јун", "Јул", "Август", "Септембар", "Октобар", "Новембар", "Децембар"],
756                dow_labels: ["Пон", "Уто", "Сре", "Чет", "Пет", "Суб", "Нед"]
757            };
758            break;
759
760        case 'tr':
761            return {
762                month_labels: ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"],
763                dow_labels: ["Pts", "Salı", "Çar", "Per", "Cuma", "Cts", "Paz"]
764            };
765            break;
766
767        case 'ua':
768            return {
769                month_labels: ["Січень", "Лютий", "Березень", "Квітень", "Травень", "Червень", "Липень", "Серпень", "Вересень", "Жовтень", "Листопад", "Грудень"],
770                dow_labels: ["Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Нд"]
771            };
772            break;
773    }
774
775};

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.