PageSourceSearch

https://www.bmw-autofus.pl/www/js/load_dt_jquery.js

js bmw-autofus.pl collected 2026-10-08 00:00:11 UTC 46,717 bytes, 1,108 lines download raw bytes

1(function( $ ) { $.fn.dt = function (options) {
2
3    var date_data_dt_from = this.find('input[data-dt-type="date"]').attr('data-dt-from');
4    if (date_data_dt_from == '' || date_data_dt_from == 0 || date_data_dt_from == '0000-00-00' || date_data_dt_from == null || typeof date_data_dt_from === 'undefined') {
5        date_data_dt_from = new Date('1901-01-01');
6    }
7
8    var date_data_dt_to = this.find('input[data-dt-type="date"]').attr('data-dt-to');
9    if (typeof date_data_dt_to !== 'undefined' || date_data_dt_to == '0000-00-00') {
10        var a = date_data_dt_to.slice(0,10).split('-');
11        date_data_dt_to = new Date(parseInt(a[0]),parseInt(a[1])-1,parseInt(a[2]));
12    } else {
13        var a = new Date();
14        a[0] +=100;
15        date_data_dt_to = new Date(parseInt(a.getFullYear()) + 100,parseInt(a.getMonth()),a.getDate());
16    }
17
18    var date_inter = Math.floor($(this).find('input[data-dt-type="date"]').attr('data-dt-interval') << 0);
19    if (date_inter == '' || date_inter == '0' || typeof date_inter === 'undefined') {
20        date_inter = 0;
21    }
22
23    var hour_data_dt_from = Math.floor($(this).find('input[data-dt-type="hour"]').attr('data-dt-from') << 0);
24    if (hour_data_dt_from == '' || hour_data_dt_from == null || typeof hour_data_dt_from === 'undefined') {
25        hour_data_dt_from = '08.00' << 0;
26    }
27
28    var hour_data_dt_to = Math.floor($(this).find('input[data-dt-type="hour"]').attr('data-dt-to') << 0);
29    if (hour_data_dt_to == '' || hour_data_dt_to == null || typeof hour_data_dt_to === 'undefined') {
30        hour_data_dt_to = '18.00' << 0;
31    }
32
33    var hour_inter = Math.floor($(this).find('input[data-dt-type="hour"]').attr('data-dt-interval') << 0);
34    if (hour_inter == '' || hour_inter == null || hour_inter == '0' || typeof hour_inter === 'undefined') {
35        hour_inter = 1;
36    }
37
38    var minute_data_dt_from = Math.floor($(this).find('input[data-dt-type="minute"]').attr('data-dt-from') << 0);
39    if (minute_data_dt_from == '' || minute_data_dt_from == null || typeof minute_data_dt_from === 'undefined') {
40        minute_data_dt_from = 0;
41    }
42
43    var minute_data_dt_to = Math.floor($(this).find('input[data-dt-type="minute"]').attr('data-dt-to') << 0);
44    if (minute_data_dt_to == '' || minute_data_dt_to == null || typeof minute_data_dt_to === 'undefined') {
45        minute_data_dt_to = 59;
46    }
47
48    var minute_inter = Math.floor($(this).find('input[data-dt-type="minute"]').attr('data-dt-interval') << 0);
49    if (minute_inter == '' ||minute_inter == null || minute_inter == '0' || typeof minute_inter === 'undefined') {
50        minute_inter = 60;
51    }
52
53    var date_input_name = $(this).find('input[data-dt-type="date"]').attr('name');
54    if (date_input_name == null || typeof date_input_name === 'undefined') {
55        date_input_name = '';
56    }
57
58    var hour_input_name = $(this).find('input[data-dt-type="hour"]').attr('name');
59    if (hour_input_name == null || typeof hour_input_name === 'undefined') {
60        hour_input_name = '';
61    }
62
63    var minute_input_name = $(this).find('input[data-dt-type="hour"]').attr('name');
64    if (minute_input_name == null || typeof minute_input_name === 'undefined') {
65        minute_input_name = '';
66    }
67
68    var opening_times_text = $(this).find('input[data-dt-type="hour"]').attr('data-opening-times');
69    var time_range;
70
71    if (opening_times_text == null || opening_times_text == '' || typeof opening_times_text === 'undefined') {
72        time_range = {'default':[0,24]};
73    } else {
74        var opening_times_array = [];
75        opening_times_array = opening_times_text.split('–').join(',').split(',', 4);
76
77        for (var i = 0; i < 4; i++) {
78            opening_times_array[i] = $.trim(opening_times_array[i].replace('.00', ''));
79        }
80
81        time_range = {
82            'default': [opening_times_array[0], opening_times_array[1]],
83            '6': [opening_times_array[2], opening_times_array[3]]
84        }
85    }
86
87    var active_month = parseInt(new Date().getMonth());
88    var active_year = parseInt(new Date().getFullYear());
89
90    var settings = $.extend({
91        build: true, //
92        type:'single',
93        showHourMinute: true, //
94        dateFormat: 'calendar', // 'list', 'flexible'
95        dateFormatTreshhold: 15, //
96        activeMonth: active_month, //
97        activeYear: active_year, //
98        dateMin: date_data_dt_from, // yyyy-mm-dd
99        dateMax: date_data_dt_to, //
100        dateRange: date_inter, // w dniach; ustawia długość okresu na stałe : dateMin + dateRange
101        excludeDayOfWeek: [0], //
102        excludeDate: [], //
103        timeRange: time_range,
104        timeHourMin: hour_data_dt_from, //
105        timeHourMax: hour_data_dt_to, //
106        timeHourInterval: hour_inter, //
107        timeMinuteMin: minute_data_dt_from, //
108        timeMinuteMax: minute_data_dt_to, //
109        timeMinuteInterval: minute_inter, //
110        dateValidationRules: {},  // wg. jQuery.validate
111        hourValidationRules: {},  // wg. jQuery.validate
112        minuteValidationRules: {},  // wg. jQuery.validate
113        dateValidationMessages: {}, // wg. jQuery.validate
114        hourValidationMessages: {}, // wg. jQuery.validate
115        minuteValidationMessages: {}, // wg. jQuery.validate
116        dateContainerClass:'', //
117        hourContainerClass:'', //
118        minuteContainerClass:'',
119        datePlaceholder: 'yyyy-mm-dd',
120        dateSelectYearLength: 15,
121        dateInputName:date_input_name, //
122        hourInputName:hour_input_name, //
123        minuteInputName:minute_input_name, //
124        required: true,
125        date_ok: false //
126
127    }, options);
128
129    // console.log(this);
130    this.data('dt',settings);
131
132    // safety feature - czy jest zainicjalizowany
133    settings = this.data('dt');
134
135    //poprawki
136    if (settings.timeRange == {}) {
137        updatePlugin(this,{'timeRange':{'default':[0,24]}})
138    }
139
140    return this.each(function() {
141
142        var $releaser = $(this);
143        var settings = $releaser.data('dt');
144        var n_arr = [];
145
146        var focus_in, input_width;
147        var focus_out;
148        var items_array_day, items_array_hour, items_array_minute;
149        var opening_times_array = [];
150        var week_day = ['Pn', 'Wt', 'Śr', 'Cz', 'Pt', 'So', 'Nd'];
151        var month = ['Sty', 'Lut', 'Mar', 'Kwi', 'Maj', 'Cze', 'Lip', 'Sie', 'Wrz', 'Paź', 'Lis', 'Gru'];
152        var actual_month, actual_year;
153
154        actual_month = settings.activeMonth;
155        actual_year = settings.activeYear;
156
157
158        $(document).on('click', '#page-wrapper, .main, #main', function (e) {
159
160            if (!$(e.target).closest('.dt-calendar').length) {
161                setTimeout(function () {
162                    data_type = 'date';
163                    $('[class^="dt-option-container-"]')
164                        .not(
165                            $(e.target).siblings('[class^="dt-option-container-"]')
166                        ).slideUp(100, function () {
167                        // checkValues();
168                    });
169                }, 200);
170            } else {
171                e.preventDefault();
172                return false;
173            }
174        })
175
176        $releaser.on('focusin', 'input[type="dt"]', function (e) {
177
178            console.log(e.target);
179            focus_in = $(this).attr('data-dt-type');
180            var settings = $releaser.data('dt');
181
182            console.log(settings);
183
184            checkValues();
185            setTimeout(function () {
186                $releaser.find('[class*="dt-option-container-' + focus_in + '"]').slideDown(400, function() {
187                });
188            }, 250);
189        });
190
191        $releaser.on('click', '[data-dt-option]:not([disabled="disabled"])', function (e) {
192            // console.log('click', '.calendar [data-dt-option]');
193            e.preventDefault();
194
195            if ($(this).attr('disabled') == 'disabled') {
196                return false;
197            } else {
198                var root = $(this).closest('[data-dt="datetime"]');
199                var value = $(this).attr('data-dt-option');
200                var data_type = $(this).closest($('[class^="dt-option-container-"]')).attr('data-dt-type');
201
202                root.find('input[data-dt-type="' + data_type + '"]').val(value);
203                root.find('input[data-dt-type="' + data_type + '"]').trigger('change');
204
205
206                // console.log(root.attr('id'),value,data_type);
207
208                setTimeout(function () {
209                    $releaser.find('[class*="dt-option-container-' + data_type + '"]').slide
209Up(100, function () {
210                        checkValues();  // ************
211                    });
212                }, 350);
213            }
214            return false;
215        });
216
217        $releaser.on('change', 'select.select-dt-month', function (e) {
218            var settings = $releaser.data('dt');
219            // console.log('change', 'select.select-dt-month');
220            e.stopPropagation();
221            e.preventDefault();
222            actual_month = parseInt($(this).val());
223            updatePlugin($releaser, {activeMonth:actual_month});
224
225            setTimeout(function () {
226                // console.log($releaser, settings, actual_month);
227                renderContainer();
228            },500)
229
230        });
231
232        $releaser.on('change', 'select.select-dt-year', function (e) {
233            var settings = $releaser.data('dt');
234            // console.log('change', 'select.select-dt-year')
235            e.stopPropagation();
236            e.preventDefault();
237            actual_year = parseInt($(this).val());
238            if (isNaN(actual_year)){
239                console.log('NAN');
240                return;
241            } else {
242                updatePlugin($releaser, {activeYear:actual_year});
243
244            }
245
246            renderContainer();
247        });
248
249        $releaser.on('click', '.dt-option-container-date .next-month a', function (e) {
250            // console.log('click', '.dt-option-container-date .next-month a')
251            var settings = $releaser.data('dt');
252
253            actual_month = settings.activeMonth;
254            actual_year = parseInt(settings.activeYear);
255            var previousActiveYear = actual_year;
256            var previousActiveMonth = actual_month;
257            e.stopPropagation();
258            e.preventDefault();
259            $(this).off('click');
260
261            actual_month << 0;
262            actual_month = (actual_month + 1) % 12;
263
264            if (actual_month == 0) {
265                actual_year << 0;
266                actual_year += 1;
267                if (n_arr.indexOf(actual_year) < 0) {
268                    actual_year = previousActiveYear;
269                    actual_month = previousActiveMonth;
270                }
271            }
272            console.log(actual_year);
273            updatePlugin($releaser,{activeMonth: actual_month});
274            if (isNaN(actual_year)){
275                console.log('NAN');
276                return;
277            } else {
278                updatePlugin($releaser, {activeYear: actual_year});
279            }
280            renderContainer();
281        });
282
283        $releaser.on('click', '.dt-option-container-date .prev-month a', function (e) {
284            // console.log('click', '.dt-option-container-date .prev-month a')
285            var settings = $releaser.data('dt');
286            actual_month = settings.activeMonth;
287            actual_year = parseInt(settings.activeYear);
288            var previousActiveYear = actual_year;
289            var previousActiveMonth = actual_month;
290
291            e.stopPropagation();
292            e.preventDefault();
293            actual_month << 0;
294            if (actual_month == 0) {
295                actual_year << 0;
296                actual_year = actual_year - 1;
297
298                actual_month = 12;
299
300                if (n_arr.indexOf(actual_year) < 0) {
301                    actual_year = previousActiveYear;
302                    actual_month = previousActiveMonth + 1;
303                }
304            }
305            actual_month = (actual_month - 1);
306
307            updatePlugin($releaser,{activeMonth: actual_month});
308            if (isNaN(actual_year)){
309                console.log('NAN');
310                return;
311            } else {
312                updatePlugin($releaser, {activeYear: actual_year});
313            }
314            renderContainer();
315        });
316
317        $releaser.on('activateHourMinute', 'a', function () {
318            // console.log('activateHourMinute');
319            activateHourMinute();
320        })
321
322        function renderContainer(mode) {
323            var settings = $releaser.data('dt');
324
325            checkOpeningHours();
326            activateHourMinute();
327
328            if (settings.type == 'group') {
329                var value_from = $releaser.closest('[data-dt-group="group"]').attr('data-dt-from');
330                var value_to = $releaser.closest('[data-dt-group="group"]').attr('data-dt-to');
331
332                if ($releaser.attr('data-dt-group-type') == 'dt-from' ) {
333
334                    var init_date_from_value = value_from.slice(0, 10);
335                    var a = init_date_from_value.split('-');
336
337                    var init_hour_from_value = value_from.slice(11, 13);
338                    var init_minute_from_value = value_from.slice(14, 16);
339
340
341                    if ($releaser.find('[data-dt-type="date"]').val() == init_date_from_value ) {
342                        //
343                    } else if ($releaser.find('[data-dt-type="date"]').val() == '' ) {
344                        $releaser.find('[data-dt-type="date"]').val(init_date_from_value);
345
346                        actual_month = parseInt(a[1] - 1);
347                        actual_year = parseInt(a[0]);
348
349                        updatePlugin($releaser, {activeMonth:actual_month});
350                        if (isNaN(actual_year)){
351                            console.log('NAN');
352                            return;
353                        } else {
354                            updatePlugin($releaser, {activeYear: actual_year});
355                        }
356                        // activateHourMinute();
357                        checkValues();
358
359                    }
360
361                    if ($releaser.find('[data-dt-type="hour"]').val() == init_hour_from_value ) {
362                        //
363                    } else if ($releaser.find('[data-dt-type="hour"]').val() == '' ) {
364                        $releaser.find('[data-dt-type="hour"]').val(init_hour_from_value);
365                    }
366
367                    if ($releaser.find('[data-dt-type="minute"]').val() == init_minute_from_value ) {
368                        //
369                    } else if ($releaser.find('[data-dt-type="minute"]').val() == '' ) {
370                        $releaser.find('[data-dt-type="minute"]').val(init_minute_from_value);
371                    }
372                }
373                if ($releaser.attr('data-dt-group-type') == 'dt-to') {
374                    var init_date_to_value = value_to.slice(0,10);
375                    var a = init_date_to_value.split('-');
376                    var init_hour_to_value = value_to.slice(11, 13);
377                    var init_minute_to_value = value_to.slice(14, 16);
378
379                    if ($releaser.find('[data-dt-type="date"]').val() == init_date_to_value ) {
380                    } else if ($releaser.find('[data-dt-type="date"]').val() == '' ) {
381                        $releaser.find('[data-dt-type="date"]').val(init_date_to_value);
382                        actual_month = parseInt(a[1] - 1);
383                        actual_year = parseInt(a[0]);
384
385                        updatePlugin($releaser, {activeMonth:actual_month});
386                        if (isNaN(actual_year)){
387                            console.log('NAN');
388                            return;
389                        } else {
390                            updatePlugin($releaser, {activeYear: actual_year});
391                        }
392                        // activateHourMinute();
393                        checkValues();
394                    }
395
396                    if ($releaser.find('[data-dt-type="hour"]').val() == init_hour_to_value ) {
397                        //
398                    } else if ($releaser.find('[data-dt-type="hour"]').val() == '' ) {
399                        $releaser.find('[data-dt-type="hour"]').val(init_hour_to_value);
400                    }
401
402                    if ($releaser.find('[data-dt-type="minute"]').val() == init_minute_to_value ) {
403                        //
404                    } else if ($releaser.find('[data-dt-type="minute"]').val() == '' ) {
405                        $releaser.find('[data-dt-type="minute"]').val(init_minute_to_value);
406                    }
407                }
408
409            } else if (settings.type == 'single') {
410
411                // console.log($releaser);
412
413                var value = $releaser.attr('data-dt-value');
414
415                // console.log(value);
416
417                if (typeof value === 'undefined' || value == '' || value == 0) {
418                    // console.log(settings);
419                    // var a = (new Date()).toISOString().slice(0,10).split('-');
420                    // init_date_value = new Date(parseInt(a[0]),parseInt(a[1])-1,parseInt(a[2]))
421
422                    // value = (new Date()).toISOString();
423                } else {
424
425                    var init_date_value = value.slice(0, 10);
426                    var a = init_date_value.split('-');
427                    var init_hour_value = value.slice(11, 13);
428                    var init_minute_value = value.slice(14, 16);
429
430                    if ($releaser.find('[data-dt-type="date"]').val() == init_date_value) {
431                        //
432                    } else if ($releaser.find('[data-dt-type="date"]').val() == '') {
433                        $releaser.find('[data-dt-type="date"]').val(init_date_value);
434                        actual_month = parseInt(a[1] - 1);
435                        actual_year = parseInt(a[0]);
436
437                        updatePlugin($releaser, {activeMonth: actual_month});
438                        if (isNaN(actual_year)){
439                            console.log('NAN');
440                            return;
441                        } else {
442                            updatePlugin($releaser, {activeYear: actual_year});
443                        }
444                        // activateHourMinute();
445                        // checkValues();
446                    }
447
448                    if ($releaser.find('[data-dt-type="hour"]').val() == init_hour_value) {
449                        //
450                    } else if ($releaser.find('[data-dt-type="hour"]').val() == '') {
451                        $releaser.find('[data-dt-type="hour"]').val(init_hour_value);
452                    }
453
454                    if ($releaser.find('[data-dt-type="minute"]').val() == init_minute_value) {
455                        //
456                    } else if ($releaser.find('[data-dt-type="minute"]').val() == '') {
457                        $releaser.find('[data-dt-type="minute"]').val(init_minute_value);
458                    }
459                }
460            }
461
462
463            // console.log($releaser.find('input[type="dt"]'));
464            
465            $releaser.find('input[type="dt"]').each(function () {
466
467                // var data_type = $(this).attr('data-dt-type');
468                input_width = $(this).width() + 20;
469                var position = $(this).position().left + 2;
470
471
472                // console.log($(this));
473                if ($(this).attr('data-dt-type') == 'date') {
474                    var today = new Date();
475                    var min,max,inter;
476
477                    var text_date = settings.dateMin;
478                    // console.log(text_date);
479
480                    if (Object.prototype.toString.call(text_date) !== '[object Date]') {
481                        var text_date_arr = [];
482
483                        text_date_arr = text_date.split('-');
484                        min = new Date(text_date_arr[0], text_date_arr[1] - 1, text_date_arr[2]);
485                    } else {
486                        min = text_date;
487                    }
488 
489                    // console.log(min);
490                    updatePlugin($releaser,{dateMin:min});
491
492                    if (settings.dateRange == 0 || settings.dateRange == '' || settings.dateRange == {} ) {
493                        inter = '';
494                    } else {
495                        inter = settings.dateRange;
496                    }
497
498                    if (settings.dateRange == 0) {
499                        max = new Date(settings.dateMax);
500
501                    } else {
502                        var max = new Date(min.getFullYear(), min.getMonth(), min.getDate() + settings.dateRange);
503                    }
504
505                    updatePlugin($releaser,{dateMax:max})
506
507                    var items_array = [];
508                    var option_list = '';
509                    items_array_day = [];
510
511                    if (inter < 1) {
512                        inter = 1;
513                    }
514                    // createCalendarArray(min, max, inter);
515
516
517
518                    var diff = ((max - min) / (1000 * 60 * 60 * 24));
519
520                    var date_format = settings.dateFormat;
521
522                    if (date_format == 'calendar') {
523                        //
524                    } else if (date_format == 'list') {
525                        if (diff > 31 ) {diff = 31;}
526                    } else if (date_format == 'flexible') {
527                        var treshhold = settings.dateFormatTreshhold << 0;
528                        if (items_array_day.length > treshhold) {
529                            date_format = 'calendar';
530                        } else {
531                            date_format = 'list';
532                        }
533                    } else {
534                        date_format = 'calendar';
535                    }
536                    $releaser.find('.dt-option-container-date').addClass(date_format);
537
538
539                    if (date_format == 'calendar') {
540                        var min_tmp = new Date( parseInt(settings.activeYear), parseInt(settings.activeMonth), 1);
541
542                        var max_tmp = new Date( parseInt(settings.activeYear), parseInt(settings.activeMonth), 32);
543
544                        if (min<min_tmp) {
545                            min = min_tmp
546                        }
547                        if (max>max_tmp) {
548                            max = max_tmp
549                        }
550                    }
551
552
553
554                    diff = ((max - min) / (1000 * 60 * 60 * 24));
555                    if (diff>32){diff = 32};
556
557                    for (var i = 0; i <= diff; i++) {
558                        var item_date = new Date(min);
559
560                        item_date = new Date(parseInt(min.getFullYear()),parseInt(min.getMonth()),parseInt(min.getDate())+i);
561
562                        var item_date_format = item_date.toISOString().slice(0,10);
563
564                        if ($.inArray(item_date.getDay(), settings.excludeDayOfWeek) > -1 ||
565                            $.inArray(item_date_format, settings.excludeDate) > -1) {
566
567                        } else {
568                            if($.inArray(item_date,items_array) == -1) {
569                                items_array.push(item_date);
570                                item_date = convertDate(item_date);
571                                items_array_day.push(item_date);
572                            }
573                        }
574
575                    }
576
577                    if (date_format == 'calendar') {
578                        var calendar_area = createCalendarArray(min, max, inter);
579
580                        // console.log($releaser);
581                        // console.log($releaser.find('.dt-option-container-date'));
582                        // console.log(calendar_area);
583
584                        $releaser.find('.dt-option-container-date').html(calendar_area).css({
585                            'left': position,
586                            'width': input_width,
587                            'min-width': 286
588                        });
589
590                    } else if (date_format == 'list') {
591
592                        var date_value = $releaser.find('input[data-dt-type="date"]').val();
593
594                        for (var n = 0; n < items_array_day.length; n++) {
595
596                            if (date_value == items_array_day[n]) {
597                                selected_class = 'selected';
598                            } else {
599                                selected_class = '';
600                            }
601
602                            var dow;
603
604                            if (items_array_day[n].indexOf('-') > -1) {
605                                var dow_parts = items_array_day[n].split('-');
606                                dow = week_day[(new Date(dow_parts[0],dow_parts[1]-1,dow_parts[2]).getDay() + 6) %7 ];
607
608                            } else {
609                                var dow = '';
610                            }
611
612                            option_list = option_list +
613                                '<div class="'+selected_class+'" data-dt-option="' + items_array_day[n] + '"> '+items_array_day[n] +
614                                '<span class="dow">' +
615                                dow+'</span></div>'
616                        }
617
618                        $releaser.find('.dt-option-container-date').html(option_list).css({
619                            'left': position,
620                            'width': input_width
621                        });
622                    }
623
624                } else if ($(this).attr('data-dt-type') == 'hour') {
625                    var min = settings.timeHourMin;
626                    var max = settings.timeHourMax;
627                    var inter = settings.timeHourInterval;
628
629                    var option_list = '';
630                    items_array_hour = [];
631
632                    if (min > 24 || min < 0) {
633                        min = 0;
634                    }
635                    if (max > 24) {
636                        max = 24;
637                    }
638                    if (inter > 23 || inter < 1) {
639                        inter = 1;
640                    }
641
642                    for (var i = min; i < max; i = i + inter) {
643                        i_leading_0 = (i < 10) ? ("0" + i) : i.toString();
644
645                        if (items_array_hour.indexOf(i_leading_0) == -1) {
646                            items_array_hour.push(i_leading_0);
647                        }
648                    }
649
650                    var hour_value = $releaser.find('input[data-dt-type="hour"]').val();
651
652                    for (var n = 0; n < items_array_hour.length; n++) {
653
654                        if (hour_value == items_array_hour[n]) {
655                            selected_class = 'selected';
656                        } else {
657                            selected_class = '';
658                        }
659
660                        option_list = option_list +
661                            '<div class="'+selected_class+'" data-dt-option="' + items_array_hour[n] + '">' +
662                            items_array_hour[n] +
663                            '</div>'
664                    }
665
666                    $releaser.find('.dt-option-container-hour').html(option_list).css({'left': position, 'width': input_width});
667
668                } else if ($(this).attr('data-dt-type') == 'minute') {
669                    var min = settings.timeMinuteMin;
670                    var max = settings.timeMinuteMax;
671                    var inter = settings.timeMinuteInterval;
672                    var option_list = '';
673
674                    items_array_minute = [];
675
676                    if (min > 59 || min < 0 ) {
677                        min = 0;
678                    }
679                    if (max > 59) {
680                        max = 59;
681                    }
682                    if (inter < 5) {
683                        inter = 5;
684                    }
685
686                    for (var i = min; i <= max; i = i + inter) {
687                        i_leading_0 = (i < 10) ? ("0" + i) : i.toString();
688
689                        if (items_array_minute.indexOf(i_leading_0) == -1) {
690                            items_array_minute.push(i_leading_0);
691                        }
692                    }
693
694                    var minute_value = $releaser.find('input[data-dt-type="minute"]').val();
695
696                    for (var n = 0; n < items_array_minute.length; n++) {
697
698                        if (minute_value == items_array_minute[n]) {
699                            selected_class = 'selected';
700                        } else {
701                            selected_class = '';
702                        }
703
704                        option_list = option_list +
705                            '<div class="'+selected_class+'" data-dt-option="' + items_array_minute[n] + '">' +
706                            items_array_minute[n] +
707                            '</div>'
708                    }
709
710                    $releaser.find('.dt-option-container-minute').html(option_list).css({
711                        'left': position,
712                        'width': input_width
713                    });
714                }
715            });
716        }
717
718        function activateHourMinute() {
719            var settings = $releaser.data('dt');
720
721            if (settings.date_ok == false) {
722                $releaser.find('input[type="dt"][data-dt-type="hour"],input[type="dt"][data-dt-type="minute"]').prop('disabled', 'disabled').css('opacity', '0.4');
723            }
724            if (settings.date_ok == true) {
725                $releaser.find('input[type="dt"][data-dt-type="hour"],input[type="dt"][data-dt-type="minute"]').prop('disabled', false).css('opacity', '1');
726            }
727        }
728
729        function checkValues() {
730            var settings = $releaser.data('dt');
731            $releaser.find('input[type="dt"]').each(function () {
732                var data_type = $(this).attr('data-dt-type');
733                var $this = $(this);
734                var value = $this.val();
735
736                if (data_type == 'date') {
737                    var items_array = items_array_day;
738                } else if (data_type == 'hour') {
739                    var items_array = items_array_hour;
740                } else if (data_type == 'minute') {
741                    var items_array = items_array_minute;
742                }
743
744                if (typeof items_array === 'undefined') {
745                    items_array = [];
746                }
747
748                if (typeof value === 'undefined') {
749                    value = ''
750                }
751
752                if (typeof $this !== 'undefined') {
753                    if (items_array.indexOf(value) == -1) {
754                        if (settings.type != 'group')
755                            $this.val('');
756                    }
757                }
758
759
760                var current_date_value = value;
761
762                if(data_type == 'date') {
763
764                    if (current_date_value == '' || typeof current_date_value === 'undefined') {
765                        updatePlugin($releaser, {date_ok:false});
766                    } else {
767                        updatePlugin($releaser, {date_ok:true});
768                        var actual_date = new Date(current_date_value).getDay();
769                        if (actual_date == 6) {
770                            setDayOfWeek(actual_date, $(this));
771                        } else {
772                            setDayOfWeek(actual_date, $this);
773                        }
774                    }
775                }
776
777                $('[class^="dt-option-container-"]').each(function () {
778                    $(this).html('');
779                });
780
781                renderContainer();
782                activateHourMinute();
783
784            })
785        }
786
787        function setDayOfWeek(day_num, obj) {
788            var settings = $releaser.data('dt');
789
790            var min,max;
791
792            var opening_times = settings.timeRange;
793
794            if (day_num in opening_times) {
795                min = opening_times[day_num][0] << 0;
796                max = opening_times[day_num][1] << 0;
797            } else {
798                min = opening_times['default'][0] << 0;
799                max = opening_times['default'][1] << 0;
800            }
801
802            updatePlugin($releaser,{timeHourMin:min})
803            updatePlugin($releaser,{timeHourMax:max})
804
805        }
806
807        function checkOpeningHours() {
808            var settings = $releaser.data('dt');
809
810            var opening_times_text = $('[data-dt="datetime"]').find('input[type="dt"][data-dt-type="hour"]').attr('data-opening-times');
811
812            if (opening_times_text == '' || typeof opening_times_text === 'undefined') {
813                opening_times_text = settings.timeRange;
814            };
815
816            if (typeof opening_times_text !== 'object') {
817
818                if (opening_times_text.indexOf('–') > -1) {
819                    opening_times_array = opening_times_text.split('–').join(',').split(',', 4);
820                    for (var i = 0; i < 4; i++) {
821                        opening_times_array[i] = $.trim(opening_times_array[i].replace('.00', ''));
822                    }
823                } else {
824                    //
825                }
826            }
827        }
828
829        function convertDate(inputFormat) {
830            function pad(s) {
831                return (s < 10) ? '0' + s : s;
832            }
833
834            var d = new Date(inputFormat);
835            return [d.getFullYear(), pad(d.getMonth() + 1), pad(d.getDate())].join('-');
836
837        }
838
839        function createCalendarArray(min, max, inter) {
840
841            // console.log(min, max, inter);
842
843            var settings = $releaser.data('dt');
844
845
846            // console.log(settings);
847
848
849            var min_month = settings.dateMin.getMonth();
850            var max_month = settings.dateMax.getMonth();
851
852            var min_year = settings.dateMin.getFullYear();
853            var max_year = settings.dateMax.getFullYear();
854
855
856            var html = '';
857            var option_month = '';
858            var option_year = '';
859            var calendar_days = '';
860            var selected_month;
861            var selected_year;
862            actual_month = settings.activeMonth;
863            actual_year = settings.activeYear;
864
865            // console.log(actual_year);
866
867            for (var i = 0; i < month.length; i++) {
868
869                (i == actual_month) ? selected_month = 'selected="selected"' : selected_month = '';
870                option_month = option_month + '<option value="' + i + '" ' + selected_month + '>' + month[i] + '</option>'
871            }
872
873            var n = parseInt(settings.dateSelectYearLength/2);
874            n_arr = [];
875
876            for (var k = parseInt(settings.dateMin.getFullYear()); k < parseInt(settings.dateMax.getFullYear()) + 1; k++) {
877                n_arr.push(k);
878            }
879
880            // console.log(n_arr);
881            var przes = 0;
882            if (n_arr.indexOf(settings.activeYear - n) < 0) {
883                przes =  settings.activeYear - Math.min.apply(this, n_arr) - n ;
884            }
885            if (n_arr.indexOf(settings.activeYear + n) < 0) {
886                przes = settings.activeYear - Math.max.apply(this, n_arr) + n;
887            }
888
889            // console.log(przes);
890            for (var i = settings.activeYear - n - przes; i < settings.activeYear + n - przes + 1; i++) {
891                if (n_arr.indexOf(i)<0) continue;
892
893                actual_year = actual_year;
894                var new_year = i;
895                selected_year = (new_year == actual_year) ? 'selected="selected"' : '';
896
897                option_year = option_year + '<option id="' + new_year + '" ' + selected_year + '>' + new_year + '</option>'
898            }
899
900            calendar_days = renderCalendarDays(actual_month, actual_year);
901            html =
902                '<div class="dt-calendar">' +
903
904                '<div class="inline-block prev-month pull-left"><a href="#"><span class="bmw-pos-nav-previous-18"></span></a></div>' +
905
906                '<div class="select-dt"><select type="text" class="select-dt-month" ' + selected_month + ' >' + option_month + '</select></div>' +
907                '<div class="select-dt"><select type="text" class="select-dt-year">' + option_year + '</select></div>' +
908
909                '<div class="inline-block next-month pull-right"><a href="#"><span class="bmw-pos-nav-next-18"></a></span></div>' +
910
911                '<div class="calendar-area">' + calendar_days + '</div>' +
912
913                '</div>'
914
915            // console.log(option_year);
916
917            return html;
918        }
919
920        function renderCalendarDays(actual_month, actual_year) {
921            var settings = $releaser.data('dt');
922            actual_month = settings.activeMonth;
923            actual_year = settings.activeYear;
924
925            var calendar_days_html = '';
926            var calendar_days_row_html = '';
927            var date_1 = new Date(actual_year, actual_month, 1);
928            var offset = date_1.getUTCDay();
929            var month_leading_0 = actual_month << 0;
930            var header_class;
931            var holiday_class;
932            var today_class;
933            var selected_class;
934
935            month_leading_0 += 1;
936
937            month_leading_0 = (month_leading_0 < 10) ? ("0" + month_leading_0) : month_leading_0.toString();
938
939
940            for (var row = -1; row < 6; row++) {
941                // calendar_days_row_html = calendar_days_row_html + '<div class="row">';
942
943                if (row == -1) {
944                    header_class = 'calendar_header'
945                } else {
946                    header_class = ''
947                };
948                calendar_days_html = '<div class="row pl-5 margin-left-1 ' + header_class + ' ">';
949                for (var dow = 0; dow < 7; dow++) {
950
951                    var actual_day = (dow + 1) + row * 7 - offset;
952                    var day_leading_0 = actual_day << 0;
953                    day_leading_0 = (day_leading_0 < 10) ? ("0" + day_leading_0) : day_leading_0.toString();
954
955                    if (row == -1) {
956                        calendar_days_html = calendar_days_html + '<div class="col-lg-1 col-md-1 col-sm-1 col-xs-1 calendar-day-number"><span href="#" class="calendar-day-number no-border bold">' + week_day[dow] + '</span></div>'
957                    } else if (actual_day < 1) {
958                        calendar_days_html = calendar_days_html + '<div class="col-lg-1 col-md-1 col-sm-1 col-xs-1 calendar-day-number"><span href="#" class="calendar-day-number no-border"></span></div>'
959                    } else if (actual_day != (new Date(actual_year, actual_month, actual_day)).getDate()) {
960                        //
961                    } else {
962                        var date_value = $releaser.find('input[type="dt"]').val();
963                        var data_dt_option = actual_year + '-' + month_leading_0 + '-' + day_leading_0;
964                        var disabled_attr;
965
966                        if (actual_year == new Date().getFullYear() && actual_month == new Date().getMonth() && actual_day == new Date().getDate()) {
967                            today_class = 'today'
968                        } else {
969                            today_class = ''
970                        }
971
972                        if ($.inArray(data_dt_option, items_array_day) == -1) {
973                            disabled_attr = 'disabled="disabled"';
974                        } else {
975                            disabled_attr = '';
976                        }
977
978                        if (date_value == data_dt_option) {
979                            selected_class = 'selected'
980                        } else {
981                            selected_class = ''
982                        }
983
984                        calendar_days_html = calendar_days_html + '<div class="col-lg-1 col-md-1 col-sm-1 col-xs-1 calendar-day-number " data-dt-option="' + data_dt_option + '" ' + disabled_attr + '><a href="#" class="calendar-day-number ' + today_class + ' ' + selected_class + '">' + actual_day + '</a></div>'
985                    }
986                }
987
988                calendar_days_row_html = calendar_days_row_html + calendar_days_html + '</div>';
989
990            }
991            return calendar_days_row_html;
992        }
993
994
995
996        $(document).ready(function () {
997            if (settings.build) {
998                var class_date_separator = '';
999                var required = settings.required ? 'required' : '';
1000
1001                if (settings.showHourMinute) {
1002                    class_date_separator = 'date-time-separator';
1003                    var html = '<div class="col-lg-7 col-md-7 col
1003-sm-7 col-xs-7 typo-headlines-xs-mixed ul-no-padding '+ settings.dateContainerClass +'">' +
1004                        '<input type="dt" name="'+ settings.dateInputName +'" data-dt-type="date" ' +
1005                        'class="ul-no-padding '+ class_date_separator +'" value="" placeholder="'+settings.datePlaceholder+'" ' + required + ' readonly>' +
1006                        '</div>';
1007                } else {
1008                    var html = '<div class="col-xs-12 typo-headlines-xs-mixed ul-no-padding ' + settings.dateContainerClass + '">' +
1009                        '<input type="dt" name="' + settings.dateInputName + '" ' +' data-dt-type="date" ' +
1010                        'class="ul-no-padding ' + class_date_separator + '" value="" placeholder="'+settings.datePlaceholder+'" data-validation-rules="" ' + required + ' readonly>' +
1011                        '</div>';
1012                }
1013                if (settings.showHourMinute) {
1014                    html = html + '<div class="col-lg-5 col-md-5 col-sm-5 col-xs-5 typo-headlines-xs-mixed ul-no-padding">' +
1015                        '<div class="col-lg-6 col-md-6 col-sm-6 col-xs-6 typo-headlines-xs-mixed ul-no-padding hour-minute-separator '+ settings.hourContainerClass +'">' +
1016
1017                        '<input type="dt" name="'+ settings.hourInputName +'" data-dt-type="hour" class="ul-no-padding margin-left-1_2" value="" placeholder="hh" data-opening-times="" readonly>' +
1018                        '</div>' +
1019
1020                        '<div class="col-lg-6 col-md-6 col-sm-6 col-xs-6 typo-headlines-xs-mixed ul-no-padding '+ settings.minuteContainerClass +'">' +
1021                        '<input type="dt" name="'+ settings.minuteInputName +'" data-dt-type="minute" class="ul-no-padding" value="" placeholder="mm" readonly>' +
1022                        '</div>' +
1023                        '</div>';
1024                }
1025
1026                if ($releaser.attr('data-dt') !== 'datetime') {
1027                    $releaser.attr('data-dt', 'datetime');
1028                }
1029
1030                $releaser.html(html);
1031                // $releaser.find('input[type="dt"][data-dt-type="date"]').attr('data-validation-rules',JSON.stringify(settings.dateValidationRules));
1032                // $releaser.find('input[type="dt"][data-dt-type="date"]').attr('data-validation-messages',JSON.stringify(settings.dateValidationMessages));
1033                // console.log(settings.dateValidationMessages);
1034            }
1035
1036            var $this = $releaser.find('input[type="dt"][data-dt-type="date"]');
1037            var option_container_html =
1038                '<div class="dt-option-container-date " data-dt-type="date" style="display: none">' +
1039                '</div>';
1040            $(option_container_html).insertAfter($this);
1041
1042            var $this = $releaser.find('input[type="dt"][data-dt-type="hour"]');
1043            var option_container_html =
1044                '<div class="dt-option-container-hour list" data-dt-type="hour" style="display: none">' +
1045                '</div>';
1046            $(option_container_html).insertAfter($this);
1047
1048            var $this = $releaser.find('input[type="dt"][data-dt-type="minute"]');
1049            var option_container_html =
1050                '<div class="dt-option-container-minute list" data-dt-type="minute" style="display: none">' +
1051                '</div>';
1052            $(option_container_html).insertAfter($this);
1053
1054            setTimeout(function () {
1055                renderContainer();
1056            }, 450);
1057
1058
1059
1060            // var form = $releaser.closest('form');
1061            // if (form.length > 0 && form.data('validator')) {
1062            //     setTimeout(function () {
1063            //         $('form').validate();
1064            //
1065            //         $releaser.find('input[type="dt"][data-dt-type="date"]').rules( "add",
1066            //             {
1067            //                 rules: settings.dateValidationRules,
1068            //                 messages: settings.dateValidationMessages
1069            //             }
1070            //         );
1071            //         $releaser.on('input', 'input[type="dt"][data-dt-type="date"]', function() {$(this).val
1071id();
1072            //         console.log($(this).valid())});
1073            //
1074            //
1075            //         $releaser.find('input[type="dt"][data-dt-type="hour"]').rules( "add",
1076            //             {
1077            //                 rules: settings.hourValidationRules,
1078            //                 messages: settings.hourValidationMessages
1079            //             }
1080            //         );
1081            //         $releaser.find('input[type="dt"][data-dt-type="minute"]').rules( "add",
1082            //             {
1083            //                 rules: settings.minuteValidationRules,
1084            //                 messages: settings.minuteValidationMessages
1085            //             }
1086            //         );
1087            //     }, 700);
1088            // }
1089
1090
1091        });
1092    });
1093}
1094})( jQuery );
1095
1096
1097
1098function updatePlugin($selector, value) {
1099    $selector.data('dt',$.extend({},$selector.data('dt'),value));
1100    if ('date_ok' in value) {
1101        $selector.trigger('activateHourMinute');
1102        $selector.trigger('change');
1103        $selector.find('select').trigger('change');
1104
1105    }
1106}
1107
1108

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.