PageSourceSearch

https://powiat-sredzki.pl/wp-content/themes/powiat-sredzki.pl/zabuto-calendar/zabuto_calendar.js?ver=1.1

js powiat-sredzki.pl collected 2026-10-02 09:59:11 UTC 33,655 bytes, 801 lines download raw bytes

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

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.