PageSourceSearch

https://krabi-railaybay.com/assets/plugins/ibe_2020/js/t-datepicker.min.js?v=8

js krabi-railaybay.com collected 2026-10-05 03:03:20 UTC 56,642 bytes, 1,136 lines download raw bytes

1//Last update : 31.01.23
2const months_en = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', "Dec"]
3const months_th = ['ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.', 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', 'ธ.ค.']
4const months_cn = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']
5
6const days_en = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']
7const days_th = ['จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.', 'อา.']
8const days_cn = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
9
10const nights_en = ['Night']
11const nights_th = ['คืน']
12
13var months = months_en
14var monthsShow = 3
15var days = days_en
16var nights = nights_en
17
18if (current_language === 'th') {
19    months = months_th
20    monthsShow = 5
21    days = days_th
22    nights = nights_th
23}
24else if (current_language === 'cn') {
25    var months = months_cn
26    monthsShow = 4
27    var days = days_cn
28}
29
30function newDayAdd(inputDate, addDay) {
31    var d = new Date(inputDate);
32    d.setDate(d.getDate() + addDay);
33    mkMonth = d.getMonth() + 1;
34    mkMonth = new String(mkMonth);
35    if (mkMonth.length == 1) {
36        mkMonth = "0" + mkMonth;
37    }
38    mkDay = d.getDate();
39    mkDay = new String(mkDay);
40    if (mkDay.length == 1) {
41        mkDay = "0" + mkDay;
42    }
43    mkYear = d.getFullYear();
44    return mkYear + "-" + mkMonth + "-" + mkDay; // แสดงผลลัพธ์ในรูปแบบ เดือน/วัน/ปี
45}
46// var NumCalendar = (window.innerWidth < '1280') ? 1 : 2;
47(function($) {
48    'use strict';
49    var Defaults = {
50        autoClose: false,
51        durationArrowTop: 200,
52        numCalendar: 1,
53        titleCheckIn: 'Check-in',
54        titleCheckOut: 'Check-out',
55        titleToday: 'Today',
56        titleDateRange: title_night,
57        titleDateRanges: CONSTANT.TITLE_DATE_RANGES,
58        // titleDays: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],
59        titleDays:days,
60        titleMonths: months,
61        titleMonthsLimitShow: monthsShow,
62        showFullMonth: false,
63        replaceTitleMonths: null,
64        showDateTheme: null,
65        iconArrowTop: true,
66        iconDate: '',
67        arrowPrev: '&#x276E;',
68        arrowNext: '&#x276F;',
69        toDayShowTitle: false,
70        dateRangesShowTitle: true,
71        dateRangesHover: true,
72        toDayHighlighted: false,
73        nextDayHighlighted: false,
74        daysOfWeekHighlighted: [0, 6],
75        formatDate: 'yyyy-mm-dd',
76        dateCheckIn: null,
77        dateCheckOut: null,
78        startDate: null,
79        endDate: null,
80        limitPrevMonth: 0,
81        limitNextMonth: 12,
82        limitDateRanges: 365,
83        showFullDateRanges: false,
84        fnDataEvent: null
85    };
86
87    var update_options;
88    $.fn.tDatePicker = function(pr_el, options) {
89        var d = new Date();
90        var m = d.getMonth();
91        var y = d.getFullYear();
92        var toDay = Date.UTC(d.getFullYear(), d.getMonth(), d.getDate());
93
94        function getToday() {
95            return Date.UTC(d.getFullYear(), d.getMonth(), d.getDate());
96        }
97
98        function getNextDay(currentDay) {
99            var nextDay = currentDay + (24 * 60 * 60 * 1000);
100            return nextDay;
101        }
102
103        if (options === undefined && typeof(pr_el) !== 'string') {
104            update_options = pr_el;
105        }
106
107        update_options.formatDate = update_options.formatDate || Defaults.formatDate;
108        update_options.startDate = update_options.startDate || toDay;
109
110        //Define Start Date
111        if (update_options.startDate === '' || update_options.startDate === 'null') {
112            update_options.startDate = toDay;
113        }
114
115        update_options.startDate = convertDateUTC(convertFormatDf(update_options.startDate)); // 1555632000000
116        var sd = new Date(update_options.startDate); //Fri Apr 19 2019 07:00:00 GMT+0700 (Indochina Time)
117        var nextDay = Date.UTC(sd.getFullYear(), sd.getMonth(), sd.getDate() + 1); // 1555632000000
118
119        if (pr_el === 'setStartDate' && typeof(pr_el) === 'string') {
120            update_options.startDate = convertDateUTC(convertFormatDf(options))
121        }
122        if (pr_el === 'setEndDate' && typeof(pr_el) === 'string') {
123            update_options.endDate = convertDateUTC(convertFormatDf(options))
124        }
125        if (update_options.dateCheckIn === '' || update_options.dateCheckIn === 'null') {
126            update_options.dateCheckIn = null;
127        }
128        if (update_options.dateCheckOut === '' || update_options.dateCheckOut === 'null') {
129            update_options.dateCheckOut = null;
130        }
131        if (update_options.endDate === '' || update_options.endDate === 'null') {
132            update_options.endDate = null;
133        }
134
135        if (options !== undefined) {
136            update_options.numCalendar = update_options.numCalendar || 2;
137            var num_Limit = update_options.limitDateRanges || 31;
138            var num_month_Limit = update_options.limitNextMonth || 11;
139            var limitEndDate = new Date(sd.getFullYear(), sd.getMonth() + update_options.numCalendar + num_month_Limit - 1, sd.getDate());
140            limitEndDate = convertDateUTC(convertFormatDf(limitEndDate));
141
142            console.log(pr_el);
143            if (pr_el === 'update') {
144                if (options.length === 2) {
145                    checkCI(options[0]);
146                    checkCO(options[1]);
147                } else {
148                    checkCI(options);
149                }
150                if (options === '') {
151                    update_options.dateCheckIn = null;
152                    update_options.dateCheckOut = null;
153                }
154            }
155            if (pr_el === 'updateCI') {
156                checkCI(options);
157            }
158            if (pr_el === 'updateCO') {
159                checkCO(options)
160            }
161        }
162
163        function checkCI(pr_options) {
164            if (pr_options === '') {
165                update_options.dateCheckIn = null;
166                update_options.dateCheckOut = null;
167                return;
168            }
169            var CI = convertDateUTC(convertFormatDf(pr_options));
170            var date = new Date(CI);
171            var dateLimit = new Date(date.getFullYear(), date.getMonth(), date.getDate() + num_Limit);
172            dateLimit = convertDateUTC(convertFormatDf(dateLimit))
173            var op_CO = convertDateUTC(convertFormatDf(update_options.dateCheckOut));
174            update_options.dateCheckIn = CI;
175            if (CI < update_options.startDate) {
176                update_options.dateCheckIn = update_options.startDate;
177            }
178            if (CI > limitEndDate) {
179                update_options.dateCheckIn = limitEndDate;
180            }
181            if (CI >= op_CO || op_CO > dateLimit) {
182                update_options.dateCheckOut = null;
183            }
184        }
185
186        function checkCO(pr_options) {
187            var op_CI = convertDateUTC(convertFormatDf(update_options.dateCheckIn));
188            if (pr_options === '') {
189                update_options.dateCheckIn = op_CI;
190                if (isNaN(op_CI)) {
191                    update_options.dateCheckIn = null;
192                }
193                update_options.dateCheckOut = null;
194                return;
195            }
196            var CO = convertDateUTC(convertFormatDf(pr_options));
197            var date = new Date(CO);
198            var CO_dateLimit = new Date(date.getFullYear(), date.getMonth(), date.getDate() - num_Limit);
199            CO_dateLimit = convertDateUTC(convertFormatDf(CO_dateLimit))
200            if (CO > limitEndDate) {
201                update_options.dateCheckOut = limitEndDate;
202                update_options.dateCheckIn = CO_dateLimit;
203                return;
204            }
205            if (CO > update_options.startDate) {
206                if (update_options.dateCheckIn === undefined || update_options.dateCheckIn === null) {
207                    update_options.dateCheckOut = CO;
208                    if (update_options.startDate > CO_dateLimit) {
209                        update_options.dateCheckIn = update_options.startDate;
210                    } else {
211                        update_options.dateCheckIn = CO_dateLimit;
212                    }
213                } else {
214                    update_options.dateCheckOut = CO;
215                    if (update_options.startDate > CO_dateLimit) {
216                        update_options.dateCheckIn = op_CI;
217                        if (CO < op_CI) {
218                            update_options.dateCheckIn = update_options.startDate;
219                        }
220                    } else {
221                        if (op_CI > CO_dateLimit) {
222                            update_options.dateCheckIn = op_CI;
223                        } else {
224                            update_options.dateCheckIn = CO_dateLimit;
225                        }
226                        if (op_CI > CO) {
227                            update_options.dateCheckIn = CO_dateLimit;
228                        }
229                    }
230                }
231            } else {
232                update_options.dateCheckIn = update_options.startDate;
233                update_options.dateCheckOut = nextDay;
234            }
235        }
236
237
238        var findValueCI = this.find('.t-input-check-in').val();
239        var findValueCO = this.find('.t-input-check-out').val();
240
241        if (typeof(pr_el) === 'string') {
242            if (pr_el === 'show' || pr_el === 'hide') {
243                if (findValueCI !== 'null') {
244                    update_options.dateCheckIn = findValueCI;
245                }
246                if (findValueCO !== 'null') {
247                    update_options.dateCheckOut = findValueCO;
248                }
249            }
250            if (findValueCI === 'null') {
251                if (pr_el === 'getDate' || pr_el === 'getDateInput' || pr_el === 'getDateUTC') {
252                    return null;
253                }
254                if (pr_el === 'getDates' || pr_el === 'getDateInputs' || pr_el === 'getDateUTCs') {
255                    return [null, null];
256                }
257            }
258            if (findValueCI !== 'null') {
259                if (findValueCO === 'null') {
260                    if (pr_el === 'getDates') {
261                        return [new Date(findValueCI), null]
262                    }
263                    if (pr_el === 'getDateInputs') {
264                        return [findValueCI, null]
265                    }
266                    if (pr_el === 'getDateUTCs') {
267                        var d_CI = convertDateUTC(convertFormatDf(findValueCI));
268                        return [d_CI, null]
269                    }
270                }
271                if (pr_el === 'getDate') {
272                    return new Date(findValueCI)
273                }
274                if (pr_el === 'getDates') {
275                    return [new Date(findValueCI), new Date(findValueCO)]
276                }
277                if (pr_el === 'getDateInput') {
278                    return findValueCI;
279                }
280                if (pr_el === 'getDateInputs') {
281                    return [findValueCI, findValueCO]
282                }
283                if (pr_el === 'getDateUTC') {
284                    return convertDateUTC(convertFormatDf(findValueCI));
285                }
286                if (pr_el === 'getDateUTCs') {
287                    var d_CI = convertDateUTC(convertFormatDf(findValueCI));
288                    var d_CO = convertDateUTC(convertFormatDf(findValueCO));
289                    return [d_CI, d_CO]
290                }
291            }
292        }
293
294        var this_el = this;
295        var settings = $.extend({}, Defaults, update_options);
296        settings.durationArrowTop = Number(settings.durationArrowTop)
297        settings.limitPrevMonth = Number(settings.limitPrevMonth)
298        settings.limitNextMonth = Number(settings.limitNextMonth)
299        settings.numCalendar = Number(settings.numCalendar)
300        settings.limitDateRanges = Number(settings.limitDateRanges)
301        settings.titleMonthsLimitShow = Number(settings.titleMonthsLimitShow)
302        if (typeof(pr_el) === 'string') {
303            var get_startDate = settings.startDate || settings.dateCheckIn;
304            if (pr_el === 'getStartDate') {
305                return new Date(get_startDate)
306            }
307            if (pr_el === 'getStartDateUTC') {
308                return convertDateUTC(convertFormatDf(get_startDate))
309            }
310            var get_endDate = settings.endDate || new Date(sd.getFullYear(), sd.getMonth() + settings.numCalendar + settings.limitNextMonth - 1, sd.getDate());
311            if (pr_el === 'getEndDate') {
312                return new Date(get_endDate);
313            }
314            if (pr_el === 'getEndDateUTC') {
315                return convertDateUTC(convertFormatDf(get_endDate));
316            }
317        }
318
319        //transform to two digit
320        function check_num_10(pr_el) {
321            if (pr_el < 10) {
322                return pr_el = '0' + pr_el //01
323            } else {
324                return pr_el; //10
325            }
326        }
327
328        //Mo Tu We Th Fr Sa Su
329        function convertArrayToString(pr_array) {
330            pr_array = pr_array.toString();
331            pr_array = pr_array.replace(/,/g, '');
332            return pr_array;
333        }
334
335        //Function Parents when hover on td -> <td class="t-day t-highlighted" data-t-date="1557619200000">12</td>, "t-datepicker"
336        function fnParents(pr_el_parent, pr_el_class) {
337            var i = 0;
338            while (pr_el_parent.className.match(pr_el_class) === null) {
339                if (pr_el_parent.className === pr_el_class) {
340                    return pr_el_parent;
341                }
342                if (pr_el_parent.nodeName === 'HTML') {
343                    return pr_el_parent;
344                }
345                pr_el_parent = pr_el_parent.parentElement;
346                if (pr_el_parent === null) {
347                    return document.body.parentElement;
348                }
349                i++;
350                if (i > 500) {
351                    return;
352                }
353            }
354            return pr_el_parent;
355        }
356
357        // Function Append for toDay, hover day show num night
358        // <td class="t-day t-highlighted" data-t-date="1558742400000">25</td> "t-hover-day" "t-hover-day-content" "12 nights"
359        function appendSpan(pr_el, pr_class, pr_class_span, pr_text_node) {
360            if (pr_class != '') {
361                pr_el.className = pr_el.className + ' ' + pr_class;
362            } else {
363                pr_el.className = pr_el.className + pr_class;
364            }
365            var node = document.createElement("span");
366            node.className = pr_class_span;
367            var textnode = document.createTextNode(pr_text_node);
368            node.appendChild(textnode);
369            pr_el.appendChild(node);
370        }
371
372        // GLOBAL VARIABLE
373        // titleDays => ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']
374        var aDays = settings.titleDays;
375
376        // Theme Function  set type day of week
377        //<th>Mo</th><th>Tu</th><th>We</th><th>Th</th><th>Fr</th><th>Sa</th><th>Su</th>
378        function setDayOfWeek() {
379            for (var i = 0; i < aDays.length; i++) {
380                if (aDays[i].indexOf('<th>') === -1) {
381                    aDays[i] = '<th>' + aDays[i] + '</th>';
382                } else {
383                    aDays[i] = aDays[i];
384                }
385            }
386            return convertArrayToString(aDays)
387        }
388
389        // Create Calendar
390        var setTemplate = '<div class="t-table-wrap"><table class="t-table-condensed">' + '<thead>' + '<tr>' + '<th class="t-arrow t-prev">' + settings.arrowPrev + '</th>' + '<th colspan="5" class="t-month"></th>' + '<th class="t-arrow t-next">' + settings.arrowNext + '</th>' + '</tr>' + '<tr>' +
391            setDayOfWeek() + '</tr>' + '</thead>' + '<tbody></tbody>' + '</table></div>';
392
393        var numCalendar = settings.numCalendar;
394
395        var checkNumCalendar = '';
396
397        if (Number(numCalendar) > 1) {
398            var checkNumCalendar = ' t-datepicker-days'
399        }
400
401        var dataTheme = [];
402        var setNumTheme = numCalendar;
403        while (setNumTheme > 0) {
404            dataTheme.push(setTemplate);
405            setNumTheme--;
406        }
407        numCalendar = numCalendar - 1;
408
409        function AppendDaysInMonth(pr_num) {
410            var i = 0;
411            var setTr = '';
412            while (i < pr_num) {
413                setTr = setTr + '<tr>' + '<td class="t-day">1</td>' + '<td class="t-day">2</td>' + '<td class="t-day">3</td>' + '<td class="t-day">4</td>' + '<td class="t-day">5</td>' + '<td class="t-day">6</td>' + '<td class="t-day">0</td>' + '</tr>';
414                i++;
415            }
416            return setTr;
417        }
418
419        // Theme t-check-in && t-check-out default show for website
420        // 8 January 2020, check-in, 1579737600000, "check_in", "2020-01-23"
421        // 8 January 2020, check-in, 1579996800000, "check_out", "2020-01-26"
422        function setThemeCheckDate(pr_title, pr_class, pr_data_utc, pr_input, pr_fm_input) {
423            if (pr_fm_input === null && pr_class === 'check-in') {
424                const dateInDefault = new Date().getFullYear() + '-' + (new Date().getMonth() + 1) + '-' + new Date().getDate();
425                pr_fm_input = dateInDefault
426            } else if (pr_fm_input === null && pr_class === 'check-out') {
427                const dateOutDefault = new Date().getFullYear() + '-' + (new Date().getMonth() + 1) + '-' + (new Date().getDate());
428                pr_fm_input = dateOutDefault
429            }
430
431            var d = new Date()
432            let day = '.t-day-' + pr_class
433            let month = '.t-month-' + pr_class
434            let year = '.t-year-' + pr_class
435            if (pr_class == 'check-in') {
436                $(day).html(d.getDate())
437                $(month).html(months[d.getMonth()])
438                $(year).html(d.getFullYear())
439            } else {
440                var addDay = new Date(newDayAdd(pr_fm_input, 1));
441                $(day).html(addDay.getDate())
442                $(month).html(months[addDay.getMonth()])
443                $(year).html(addDay.getFullYear())
444            }
445            // return '<div class="t-dates t-date-' + pr_class + '">' +
446            //     settings.iconDate + '<label class="t-date-info-title">' + pr_title + '</label>' +
447            //     showThemeDate(pr_class, pr_data_utc) + '</div>' + '<input type="hidden" class="t-input-' + pr_class + '"' + ' value="' + pr_fm_input + '" name="' + pr_input + '">'
448            $('.t-date-' + pr_class).remove()
449            $('.t-input-' + pr_class).remove()
450            setTimeout(function() {
451                dateDifference()
452            }, 500)
453            if (pr_class == 'check-in') {
454                return '<div class="t-dates t-date-' + pr_class + '">' + showThemeDate(pr_class, pr_data_utc) + '</div>' + '<input id="' + pr_class + '" type="hidden" class="t-input-' + pr_class + '"' + ' value="' + pr_fm_input + '" name="' + pr_input + '">'
455            } else {
456                return '<div class="t-dates t-date-' + pr_class + '">' + showThemeDate(pr_class, pr_data_utc) + '</div>' + '<input id="' + pr_class + '" type="hidden" class="t-input-' + pr_class + '"' + ' value="' + newDayAdd(pr_fm_input, 0) + '" name="' + pr_input + '">'
457            }
458
459            /*
460            return '<div class="t-dates t-date-' + pr_class + '">' +
461                // setInfoTitle(pr_title, 't-date-info-title')
462                // settings.iconDate +
463                '<label class="t-date-info-title">' + pr_title + '</label>' +
464                showThemeDate(pr_class, pr_data_utc) +
465                '</div>' +
466                '<input type="hidden" class="t-input-' + pr_class + '"' + ' value="' + pr_fm_input + '" name="' + pr_input + '">'
467            // +'<div class="datepicker"></div>'
468            */
469        }
470
471        function showThemeDate(pr_class, pr_data_utc) {
472            if (pr_data_utc !== 0 && pr_data_utc !== null) {
473                var d = new Date(pr_data_utc)
474                if (settings.showFullMonth) {
475                    var showMonths = settings.titleMonths[d.getMonth()]; // 19 July 2018
476                } else var showMonths = settings.titleMonths[d.getMonth()].slice(0, settings.titleMonthsLimitShow); // 19 Jul 2018
477                if (settings.replaceTitleMonths !== null) {
478                    showMonths = settings.replaceTitleMonths + ' ' + check_num_10(d.getMonth() + 1);
479                }
480                if (settings.showDateTheme === 'dd') {
481                    return '<span class="t-day-' + pr_class + '"> ' + check_num_10(d.getDate()) + '</span>'
482                } else if (settings.showDateTheme === 'dd/mm' || settings.showDateTheme === 'dd-mm') {
483                    return '<span class="t-day-' + pr_class + '"> ' + check_num_10(d.getDate()) + '</span>' + '<span class="t-month-' + pr_class + '"> ' + showMonths + ' </span>'
484                } else {
485
486                    let day = '.t-day-' + pr_class
487                    let month = '.t-month-' + pr_class
488                    let year = '.t-year-' + pr_class
489                    $(day).html(check_num_10(d.getDate()))
490                    $(month).html(showMonths)
491                    $(year).html(check_num_10(d.getFullYear()))
492
493                    return '';
494                    // return '<span class="t-day-' + pr_class + '"> ' + check_num_10(d.getDate()) + '</span>' + '<span class="t-month-' + pr_class + '"> ' + showMonths + ' </span>' + '<span class="t-year-' + pr_class + '"> ' + check_num_10(d.getFullYear()) + '</span>'
495                }
496            } else {
497                return '';
498            }
499
500            /*
501            if (pr_data_utc !== 0 && pr_data_utc !== null) {
502                var d = new Date(pr_data_utc)
503                if(settings.showFullMonth) {
504                    var showMonths = settings.titleMonths[d.getMonth()]; // 19 July 2018
505                }else var showMonths = settings.titleMonths[d.getMonth()].slice(0, settings.titleMonthsLim
505itShow); // 19 Jul 2018
506                if (settings.replaceTitleMonths !== null) {
507                    showMonths = settings.replaceTitleMonths + ' ' + check_num_10(d.getMonth() + 1);
508                }
509                if (settings.showDateTheme === 'dd') {
510                    return '<span class="t-day-' + pr_class + '"> ' + check_num_10(d.getDate()) + '</span>'
511                } else if (settings.showDateTheme === 'dd/mm' || settings.showDateTheme === 'dd-mm') {
512                    return '<span class="t-day-' + pr_class + '"> ' + check_num_10(d.getDate()) + '</span>' +
513                        '<span class="t-month-' + pr_class + '"> ' + showMonths + ' </span>'
514                } else {
515                    return '<span class="t-day-' + pr_class + '"> ' + check_num_10(d.getDate()) + '</span>' +
516                        '<span class="t-month-' + pr_class + '"> ' + showMonths + ' </span>' +
517                        '<span class="t-year-' + pr_class + '"> ' + check_num_10(d.getFullYear()) + '</span>'
518                }
519            } else {
520                return '';
521            }
522            */
523        }
524
525        // fn convert to date_utc: 2018/02/27 -> 1519689600000 // YY/MM/DD
526        function convertDateUTC(pr_date_utc) {
527            var date = new Date(pr_date_utc);
528            var date_utc = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate());
529            if (date_utc === 0) {
530                date_utc = null
531            }
532            return date_utc;
533        }
534
535        // pr_date 1519689600000
536        function convertFormatDf(pr_date) {
537            if (typeof(pr_date) === 'object' && pr_date !== null) {
538                return pr_date = convertDateUTC(pr_date)
539            }
540
541            if (typeof(pr_date) === 'string' && pr_date !== 'null') {
542                var yyyy_mm_dd;
543                if (pr_date.indexOf('/') !== -1) {
544                    pr_date = pr_date.replace(/\//g, '-')
545                }
546                var dd = pr_date.split('-');
547                if (update_options.formatDate === 'mm-dd-yyyy' && dd[2].length === 4 && dd[0] < 13) {
548                    yyyy_mm_dd = dd[2] + '-' + dd[0] + '-' + dd[1];
549                }
550                if (update_options.formatDate === 'dd-mm-yyyy' && dd[2].length === 4 && dd[1] < 13) {
551                    yyyy_mm_dd = dd[2] + '-' + dd[1] + '-' + dd[0];
552                }
553                if (update_options.formatDate === 'yyyy-dd-mm' && dd[0].length === 4 && dd[2] < 13) {
554                    yyyy_mm_dd = dd[0] + '-' + dd[2] + '-' + dd[1];
555                }
556                if (update_options.formatDate === 'yyyy-mm-dd' && dd[0].length === 4 && dd[1] < 13) {
557                    yyyy_mm_dd = dd[0] + '-' + dd[1] + '-' + dd[2];
558                }
559                if (isNaN(new Date(yyyy_mm_dd))) {
560                    return console.log("'Thank you for using t-datepicker. Please, check formatDate :'%c " + settings.formatDate + ' ', 'background: #f16d99; color: #fff');
561                }
562                return yyyy_mm_dd;
563            }
564            return pr_date;
565        }
566
567        // pr_date to 2020-01-29
568        function showValueInput(pr_date) {
569            if (pr_date !== null) {
570                var d = new Date(pr_date);
571
572                pr_date = check_num_10(d.getDate()) + '-' + (check_num_10(d.getMonth() + 1)) + '-' + d.getFullYear();
573                if (settings.formatDate === 'mm-dd-yyyy') {
574                    pr_date = (check_num_10(d.getMonth() + 1)) + '-' + check_num_10(d.getDate()) + '-' + d.getFullYear();
575                }
576                if (settings.formatDate === 'yyyy-dd-mm') {
577                    pr_date = d.getFullYear() + '-' + check_num_10(d.getDate()) + '-' + (check_num_10(d.getMonth() + 1));
578                }
579                if (settings.formatDate === 'yyyy-mm-dd') {
580                    pr_date = d.getFullYear() + '-' + (check_num_10(d.getMonth() + 1)) + '-' + check_num_10(d.getDate());
581                }
582            }
583            return pr_date;
584        }
585
586        // Function get && show default theme for website include (2018/02/27 || 1519689600000)
587        var tmp_out;
588
589        function getDateUTC(pr_in, pr_out) {
590            console.log(pr_in, pr_out);
591            if (pr_in === null && pr_out === null) {
592                pr_in = getToday();
593                pr_out = getNextDay(pr_in);
594                tmp_out = pr_out;
595            } else {
596                if (pr_in >= tmp_out) {
597                    pr_out = pr_out = getNextDay(pr_in);
598                    tmp_out = pr_out;
599                }
600            }
601
602            var Array_In_Out = ['check-in', 'check-out'];
603            Array_In_Out.forEach(function(e) {
604                var label_title = settings.titleCheckIn;
605                var getDay = pr_in;
606                var Input = 'check_in'
607                if (pr_in !== null) {
608                    label_title = '';
609                }
610                if (e === 'check-out') {
611                    label_title = settings.titleCheckOut;
612                    getDay = pr_out;
613                    if (pr_in === pr_out) {
614                        getDay = null;
615                    } else if (pr_out !== null) {
616                        label_title = '';
617                    }
618                    Input = 'check_out'
619                }
620                getDay = convertFormatDf(getDay)
621                var formatDate = showValueInput(getDay);
622                getDay = convertDateUTC(getDay);
623                this_el.find('.t-' + e).append(setThemeCheckDate(label_title, e, getDay, Input, formatDate))
624                // this_el.find('.t-' + e).html(setThemeCheckDate(label_title, e, getDay, Input, formatDate))
625            })
626            if (pr_in === null && pr_out === null) {
627                pr_in = settings.startDate;
628                var date = new Date(pr_in);
629                pr_out = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate() + 1);
630            }
631            if (pr_in !== null && pr_out !== null) {
632                if (convertDateUTC(convertFormatDf(pr_in)) > convertDateUTC(convertFormatDf(pr_out))) {
633                    pr_in = pr_out;
634                }
635            }
636            if (pr_in !== null && pr_out === null) {
637                pr_out = pr_in;
638            }
639            if (pr_in === null && pr_out !== null) {
640                pr_in = pr_out;
641            }
642            pr_in = convertFormatDf(pr_in)
643            pr_out = convertFormatDf(pr_out)
644            return [convertDateUTC(pr_in), convertDateUTC(pr_out)];
645        }
646
647        var dataUTC = getDateUTC(settings.dateCheckIn, settings.dateCheckOut);
648
649        function setDaysInMonth(pr_el, pr_data_utc) {
650            var tswitch = pr_el.find('.t-month');
651            if (numCalendar >= 0) {
652                for (var i_num = 0; i_num <= numCalendar; i_num++) {
653                    var date = new Date(pr_data_utc)
654                    var newDate = new Date(Date.UTC(date.getFullYear(), (date.getMonth() + i_num)));
655                    tswitch[i_num].innerHTML = settings.titleMonths[newDate.getMonth()] + ' ' + newDate.getFullYear();
656                    var dataDays = [];
657                    var dataUTCDate = [];
658                    var days = [];
659                    var nextDate = Date.UTC(date.getFullYear(), (date.getMonth() + i_num));
660                    var date = new Date(nextDate)
661                    while (Date.UTC(date.getFullYear(), (date.getMonth())) === nextDate) {
662                        days.push(date.getDay());
663                        dataDays.push(date.getDate());
664                        dataUTCDate.push(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()))
665                        date.setDate(date.getDate() + 1);
666                    }
667                    var beforeDay = days[0];
668                    if (beforeDay === 0) {
669                        while (beforeDay < 6) {
670                            dataDays.unshift('');
671                            dataUTCDate.unshift('');
672                            beforeDay++;
673                        }
674                    } else {
675                        while (beforeDay > 1) {
676                            dataDays.unshift('');
677                            dataUTCDate.unshift('');
678                            beforeDay--;
679                        }
680                    }
681                    var afterDay = days[days.length - 1];
682                    while (afterDay < 7) {
683                        dataDays.push('');
684                        dataUTCDate.push('');
685                        afterDay++;
686                    }
687                    setThemeData(dataDays, dataUTCDate, i_num, pr_el)
688                }
689            }
690            getStyleDays(pr_el, pr_data_utc);
691        }
692
693        function setThemeData(dataDays, dataUTCDate, pr_num, pr_el) {
694            var checkdataDays = dataDays.slice(-7)[0]
695            if (checkdataDays === '') {
696                dataDays = dataDays.slice(0, -7)
697            }
698            var getTH = pr_el.find('tbody')
699            getTH[pr_num].innerHTML = AppendDaysInMonth(Math.round(dataDays.length / 7));
700            var getTD = getTH[pr_num].querySelectorAll('td')
701            for (var td = 0; td < getTD.length; td++) {
702                getTD[td].setAttribute('data-t-date', dataUTCDate[td]);
703                getTD[td].innerHTML = dataDays[td];
704            }
705        }
706
707        function getStyleDays(pr_el, pr_data_utc) {
708
709            var limitdateN = clickEvent(pr_el, pr_data_utc)
710            var limitEndDate = convertDateUTC(convertFormatDf(settings.endDate)) || limitdateN;
711            var toDayElement = pr_el.find('td')
712            var d_utc = new Date(dataUTC[0]);
713            var d_utc_co = new Date(dataUTC[1]);
714            var limitRange = Date.UTC(d_utc.getFullYear(), d_utc.getMonth(), d_utc.getDate() + settings.limitDateRanges);
715            var limitRangeCO = Date.UTC(d_utc_co.getFullYear(), d_utc_co.getMonth(), d_utc_co.getDate() - settings.limitDateRanges);
716
717            for (var i = 0; i < toDayElement.length; i++) {
718                var dayselect = toDayElement[i].getAttribute('data-t-date');
719
720                //Date in calendar less than startDate can't choose
721                if (Number(dayselect) < settings.startDate) {
722                    toDayElement[i].className = 't-disabled';
723                }
724
725                if (pr_el.hasClass('t-check-out') === true) {
726                    if (Number(dayselect) < dataUTC[0]) {
727                        toDayElement[i].className = 't-disabled';
728                    }
729                    if (Number(dayselect) > dataUTC[1] || Number(dayselect) >= limitRange) {
730                        toDayElement[i].className = 't-disabled';
731                    }
732                    if (Number(dayselect) != 0 && Number(dayselect) > dataUTC[0] && Number(dayselect) < limitRange && Number(dayselect) != dataUTC[1]) {
733                        toDayElement[i].className = 't-day';
734                    }
735                    if (Number(dayselect) === dataUTC[0]) {
736                        var Arrow = pr_el.parent().find('.t-arrow');
737                        Arrow[0].className = Arrow[0].className.replace(' t-disabled', '') + ' t-disabled'
738                        Arrow[0].onclick = function() {
739                            return;
740                        }
741                    }
742                    var CI_Arrow = settings.dateCheckIn || toDay;
743                    var ci_d = new Date(CI_Arrow);
744                    var co_n = Date.UTC(ci_d.getFullYear(), ci_d.getMonth(), ci_d.getDate() + settings.limitDateRanges)
745                    if ($(pr_el).find('[data-t-date="' + co_n + '"]')[0] !== undefined) {
746                        var Arrow = pr_el.parent().find('.t-arrow');
747                        Arrow[Arrow.length - 1].className = Arrow[Arrow.length - 1].className.replace(' t-disabled', '') + ' t-disabled'
748                        Arrow[Arrow.length - 1].onclick = function() {
749                            return;
750                        }
751                    }
752                }
753
754                if (Number(dayselect) > dataUTC[0] && Number(dayselect) < dataUTC[1] && dataUTC[0] >= settings.startDate && dataUTC[1] <= limitEndDate) {
755                    toDayElement[i].className = 't-range';
756                }
757
758                //Date in calendar more than limitEndDate can't choose
759                if (Number(dayselect) > limitEndDate) {
760                    toDayElement[i].className = 't-disabled';
761                }
762
763                if (Number(dayselect) === dataUTC[0]) {
764                    var this_picker = $(toDayElement[i]).parents('.t-datepicker')
765                    if (this_picker.find('.t-input-check-in').val() !== 'null' || settings.toDayHighlighted !== false) {
766                        toDayElement[i].className = 'check_in';
767                    }
768                }
769                if (Number(dayselect) === dataUTC[1]) {
770                    var this_picker = $(toDayElement[i]).parents('.t-datepicker')
771                    if (this_picker.find('.t-input-check-out').val() !== 'null' || settings.nextDayHighlighted !== false) {
772                        toDayElement[i].className = 'check_out';
773                    }
774                }
775                if (Number(dayselect) === toDay) {
776                    if (settings.toDayShowTitle === true || settings.toDayShowTitle === 'true') {
777                        appendSpan(toDayElement[i], 't-hover-day', 't-hover-day-content', settings.titleToday)
778                        toDayElement[i].className = toDayElement[i].className.replace(' t-today', '') + ' t-today';
779                    }
780                }
781                var Cn = new Date(Number(dayselect))
782                Cn = Cn.getDay()
783                settings.daysOfWeekHighlighted.forEach(function(e) {
784                    if (Cn == e) {
785                        toDayElement[i].className = toDayElement[i].className.replace(' t-highlighted', '') + ' t-highlighted';
786                    }
787                })
788                toDayElement[i].onclick = function(e) {
789                    e.stopPropagation();
790                    if ($(this).hasClass('t-disabled') === true) {
791                        return;
792                    }
793                    var data_utc_in, data_utc_out;
794                    var get_utc = $(this).attr('data-t-date')
795                    var datepicker = $(this).parents('.t-check-out');
796                    get_utc = Number(get_utc)
797                    if ($(this).parents('.t-check-in').hasClass('t-check-in') === true) {
798                        if (Number($(this).attr('data-t-date')) > limitEndDate) {
799                            return;
800                        }
801                        $(pr_el).trigger('selectedCI', Number(get_utc))
802                        var setChangeDate = $(this).parents('.t-check-in').find('.t-input-check-in').val();
803                        if (convertDateUTC(convertFormatDf(setChangeDate)) != get_utc) {
804                            $(pr_el).trigger('onChangeCI', Number(get_utc))
805                        }
806                        var d = new Date(dataUTC[1]);
807                        var limitdate = Date.UTC(d.getFullYear(), d.getMonth(), d.getDate() - settings.limitDateRanges);
808                        data_utc_in = get_utc;
809                        data_utc_out = dataUTC[1];
810                        if (get_utc === settings.startDate && $(this).hasClass('check_in') === false && dataUTC[0] >= settings.startDate) {
811                            data_utc_out = dataUTC[0];
812                        }
813                        if (get_utc > dataUTC[1] || get_utc === dataUTC[1] || get_utc <= limitdate) {
814                            data_utc_out = get_utc;
815                        }
816                        if ($(this).parents('.t-picker-only').hasClass('t-picker-only') === true) {
817                            data_utc_out = data_utc_in;
818                        }
819                        datepicker = $(this).parents('.t-datepicker').find('.t-check-out')
820                        if (datepicker.length === 0) {
821                            datepicker = $(this_el).find('.t-picker-only')
822                            setTimeout(function() {
823                                if ($('.t-datepicker-day').length !== 0 && settings.autoClose === true) {
824                                    $('.t-datepicker-day').remove()
825                                    $('.t-arrow-top').remove()
826                                }
827                            }, 10)
828                        }
829                    }
830                    if ($(this).parents('.t-check-out').hasClass('t-check-out') === true) {
831                        if ($(this).hasClass('check_in') === true) {
832                            return;
833                        }
834                        if ($(this).parents('.t-datepicker').find('.check_in').length === 0 && $(this).hasClass('check_out') === true) {
835                            return;
836                        }
837                        $(pr_el).trigger('selectedCO', Number(get_utc))
838                        var setChangeDate = $(this).parents('.t-check-out').find('.t-input-check-out').val();
839                        if (convertDateUTC(convertFormatDf(setChangeDate)) != get_utc) {
840                            $(pr_el).trigger('onChangeCO', Number(get_utc))
841                        }
842                        data_utc_in = dataUTC[0];
843                        data_utc_out = get_utc;
844                        $(pr_el).trigger('afterCheckOut', [
845                            [data_utc_in, data_utc_out]
846                        ])
847                        setTimeout(function() {
848                            if ($('.t-datepicker-day').length !== 0 && settings.autoClose === true) {
849                                $('.t-datepicker-day').remove()
850                                $('.t-arrow-top').remove()
851                            }
852                        }, 3000)
853                    }
854                    dataUTC = getDateUTC(data_utc_in, data_utc_out)
855                    $(pr_el).trigger('eventClickDay', [dataUTC])
856                    callEventClick(datepicker, dataUTC)
857                }
858                if ('ontouchstart' in window === false) {
859                    toDayElement[i].onmouseover = function(e) {
860                        if ($(this).hasClass('t-special-day') === true && $(this).parents('.t-datepicker-day').length != 0) {
861                            $(this).parents('.t-datepicker-day').append('<p class="t-date-title">' + $(this).attr('t-date-title') + '</p>')
862                        }
863
864                        function checkNumNight(pr_el, pr_date_utc) {
865                            var el_hover = Number($(pr_el).attr('data-t-d
865ate'));
866                            var numDay = 0;
867                            if (e.target.className.indexOf('t-hover-day-content') !== -1 || e.target.className.indexOf('t-disabled') !== -1) {
868                                return;
869                            }
870                            if ($(pr_el).parents('.t-check-in').hasClass('t-check-in') === true) {
871                                var nd = new Date(pr_date_utc[1]);
872                                if (el_hover === settings.startDate) {
873                                    if ($(pr_el).parents('.t-check-in').find('.check_out').length === 0 && $(pr_el).parents('.t-check-in').find('.check_in').length === 0) {
874                                        nd = new Date(pr_date_utc[0]);
875                                    }
876                                }
877                                var nd_1 = Date.UTC(nd.getFullYear(), nd.getMonth(), nd.getDate());
878                                var limitday = Date.UTC(nd.getFullYear(), nd.getMonth(), nd.getDate() - settings.limitDateRanges);
879                                if (el_hover <= limitday) {
880                                    return;
881                                }
882                                while (el_hover < nd_1) {
883                                    nd_1 = Date.UTC(nd.getFullYear(), nd.getMonth(), nd.getDate() - numDay);
884                                    var t_this = $(pr_el).parents('.t-check-in').find('[data-t-d
884ate="' + nd_1 + '"]')[0];
885                                    if (t_this != undefined) {
886                                        t_this.className = t_this.className.replace(' t-range-limit', '') + ' t-range-limit';
887                                    }
888                                    numDay++;
889                                    if (numDay > 1000) {
890                                        return;
891                                    }
892                                }
893                            }
894                            if ($(pr_el).parents('.t-check-out').hasClass('t-check-out') === true) {
895                                var nd = new Date(pr_date_utc[0]);
896                                var nd_1 = Date.UTC(nd.getFullYear(), nd.getMonth(), nd.getDate());
897                                var limitday = Date.UTC(nd.getFullYear(), nd.getMonth(), nd.getDate() + settings.limitDateRanges);
898                                if (el_hover >= limitday) {
899                                    return;
900                                }
901                                while (el_hover != nd_1) {
902                                    nd_1 = Date.UTC(nd.getFullYear(), nd.getMonth(), nd.getDate() + numDay);
903                                    var t_this = $(pr_el).parents('.t-check-out').find('[data-t-d
903ate="' + nd_1 + '"]')[0];
904                                    if (t_this != undefined) {
905                                        t_this.className = t_this.className.replace(' t-range-limit', '') + ' t-range-limit';
906                                    }
907                                    numDay++;
908                                    if (numDay > 5000) {
909                                        return;
910                                    }
911                                }
912                            }
913                            return numDay;
914                        }
915
916                        if (settings.dateRangesHover === true || settings.dateRangesHover === 'true') {
917                            var numDay = checkNumNight(this, dataUTC)
918                            if (settings.dateRangesShowTitle === true) {
919                                var num_full = 1;
920                                if (settings.showFullDateRanges === true) {
921                                    num_full = 0;
922                                    settings.titleDateRange = settings.titleDateRanges;
923                                }
924                                if (numDay === 2) {
925                                    appendSpan(this, 't-hover-day', 't-hover-day-content', ((numDay - num_full) + ' ' + settings.titleDateRange))
926                                } else if (numDay > 2) {
927                                    appendSpan(this, 't-hover-day', 't-hover-day-content', ((numDay - num_full) + ' ' + settings.titleDateRanges))
928                                }
929                            }
930                        }
931                        this.onmouseout = function() {
932                            if (this.getElementsByClassName('t-hover-day-content').length != 0) {
933                                var node = this.getElementsByClassName('t-hover-day-content')[0]
934                                node.parentNode.removeChild(node);
935                                this.className = this.className.replace(' t-hover-day', '');
936                            }
937                            if (document.getElementsByClassName('t-range-limit').length != 0) {
938                                var a = document.getElementsByClassName('t-range-limit');
939                                a = [].slice.call(a)
940                                for (var i = 0; i < a.length; i++) {
941                                    a[i].className = a[i].className.replace(' t-range-limit', '');
942                                }
943                            }
944                            if (this.className.indexOf('t-today') !== -1) {
945                                if (this.getElementsByClassName('t-hover-day-content').length != 0) {
946                                    var node = this.getElementsByClassName('t-hover-day-content')[0]
947                                    node.parentNode.removeChild(node);
948                                }
949                                appendSpan(this, 't-hover-day', 't-hover-day-content', settings.titleToday);
950                                this.className = this.className.replace(/\ t-hover-day/g, '') + ' t-hover-day';
951                            }
952                            if (fnParents(this, 't-datepicker').getElementsByClassName('t-date-title').length != 0) {
953                                var elem = fnParents(this, 't-datepicker').getElementsByClassName('t-date-title');
954                                elem = [].slice.call(elem)
955                                for (var i = 0; i < elem.length; i++) {
956                                    elem[i].parentNode.removeChild(elem[i]);
957                                }
958                            }
959                        }
960                    }
961                }
962            }
963            if (settings.fnDataEvent != undefined && 'ontouchstart' in window === false) {
964                for (var cl = 0; cl < settings.numCalendar; cl++) {
965                    var t = new Date(pr_data_utc).getMonth();
966                    var m = t + 1 + cl;
967                    if (m === 13) {
968                        m = m - 12
969                    }
970                    var gMonth = m;
971                    var gYear = new Date(pr_data_utc).getFullYear();
972                    for (var i = 0; i < toDayElement.length; i++) {
973                        var getNum = Number(toDayElement[i].textContent)
974                        if (isNaN(getNum)) {
975                            getNum = new Date(toDay).getDate();
976                        }
977                        var getDays = Number(toDayElement[i].getAttribute('data-t-d
977ate'));
978                        var getMonths = new Date(getDays).getMonth() + 1;
979                        var key = gYear + '-' + check_num_10(gMonth) + '-' + check_num_10(getNum);
980                        if (settings.fnDataEvent[key] != undefined && getMonths === m) {
981                            var cln = toDayElement[i].className;
982                            toDayElement[i].className = toDayElement[i].className.replace(' t-special-day', '') + ' t-special-day';
983                            toDayElement[i].setAttribute('t-date-title', check_num_10(getNum) + ' ' + settings.titleMonths[new Date(getDays).getMonth()] + ' - ' + settings.fnDataEvent[key])
984                        }
985                    }
986                }
987            }
988        }
989
990        function clickEvent(pr_el, pr_data_utc) {
991            var tArrow = pr_el.find('.t-arrow');
992            var df_toDay = new Date(settings.startDate);
993            var end_Date = new Date(convertFormatDf(settings.endDate))
994            var limitPrevMonth = Date.UTC(df_toDay.getFullYear(), df_toDay.getMonth() - settings.limitPrevMonth);
995            var limitNextMonth = Date.UTC(end_Date.getFullYear(), end_Date.getMonth()) || Date.UTC(df_toDay.getFullYear(), df_toDay.getMonth() + numCalendar + settings.limitNextMonth);
996            var newDate = new Date(pr_data_utc)
997            var y = newDate.getFullYear();
998            var m = newDate.getMonth();
999            var d = newDate.getDate();
1000            if (tArrow.length != 0) {
1001                for (var i = 1; i < tArrow.length - 1; i++) {
1002                    tArrow[i].innerHTML = '';
1003                    tArrow[i].className = tArrow[i].className.replace(' t-disabled', '') + ' t-disabled';
1004                }
1005                tArrow[0].onclick = function(e) {
1006                    e.stopPropagation()
1007                    if (Date.UTC(y, m) > limitPrevMonth) {
1008                        m = m - 1;
1009                        setDaysInMonth(pr_el, Date.UTC(y, m))
1010                    }
1011                }
1012                tArrow[tArrow.length - 1].onclick = function(e) {
1013                    e.stopPropagation()
1014                    if (Date.UTC(y, m + numCalendar) < limitNextMonth) {
1015                        m = m + 1;
1016                        setDaysInMonth(pr_el, Date.UTC(y, m))
1017                    }
1018                }
1019            }
1020            var Arrow_2 = pr_el.find('.t-arrow');
1021            if (Date.UTC(y, m + numCalendar) != limitNextMonth && Date.UTC(y, m) === limitPrevMonth) {
1022                Arrow_2[Arrow_2.length - 1].className = 't-arrow t-next'
1023                Arrow_2[0].className = 't-arrow t-prev t-disabled'
1024            } else {
1025                Arrow_2[0].className = 't-arrow t-prev'
1026            }
1027            if (Date.UTC(y, m + numCalendar) === limitNextMonth || new Date(Date.UTC(y, m + numCalendar)).getMonth() === new Date(dataUTC[0]).getMonth() + 1) {
1028                Arrow_2[Arrow_2.length - 1].className = 't-arrow t-next t-disabled'
1029            }
1030            if (Date.UTC(y, m + numCalendar) < limitNextMonth) {
1031                Arrow_2[Arrow_2.length - 1].className = 't-arrow t-next'
1032            }
1033            return Date.UTC(df_toDay.getFullYear(), df_toDay.getMonth() + numCalendar + settings.limitNextMonth, df_toDay.getDate());
1034        }
1035
1036        function getTableCalendar(pr_el, pr_date_utc) {
1037            if ($(pr_el).find('.t-datepicker-day').length !== 0) {
1038                $('.t-datepicker-day').remove();
1039                $('.t-arrow-top').css({ 'display': 'none' })
1040                $('html').removeClass('t-datepicker-open')
1041            } else {
1042                if ($(pr_el).parents('.t-datepicker').hasClass('t-datepicker').length !== 0) {
1043                    $('.t-datepicker-day').remove();
1044                    $('.t-arrow-top').css({ 'display': 'none' })
1045                }
1046                if (settings.iconArrowTop === true) {
1047                    var this_el_arrow = $(pr_el).parents('.t-datepicker');
1048                    if (this_el_arrow.find('.t-arrow-top').length === 0) {
1049                        this_el_arrow.append('<span class="t-arrow-top"></span>')
1050                    }
1051                    var CI_CO_width = $(pr_el).position().left + $(pr_el).outerWidth() / 2
1052                    var leftArrTop = this_el_arrow.find('.t-arrow-top').outerWidth() / 2
1053                    if (this_el_arrow.find('.t-arrow-top').css('display') === 'block') {
1054                        this_el_arrow.find('.t-arrow-top').css({ 'left': CI_CO_width - leftArrTop + 'px' })
1055                        this_el_arrow.find('.t-arrow-top').css({ 'bottom': '-14px' })
1056                    }
1057                    this_el_arrow.find('.t-arrow-top').css({ 'display': 'block' })
1058                    this_el_arrow.find('.t-arrow-top').animate({ 'left': CI_CO_width - leftArrTop + 'px' }, settings.durationArrowTop)
1059                }
1060                $(pr_el).find('.t-dates').parent().append('<div class="t-datepicker-day' + checkNumCalendar + '">' + convertArrayToString(dataTheme) + '<script>setPopupPosition()</script></div>')
1061                setDaysInMonth($(pr_el).find('.t-dates').parent(), pr_date_utc)
1062                $('html').addClass('t-datepicker-open')
1063            }
1064        }
1065
1066        var pr_callback = '';
1067
1068        function callEventClick(pr_callback, pr_date_utc) {
1069            this_el.find('.t-dates').on('click', function(e) {
1070                if ($(e.target).parents('.t-check-in').hasClass('t-check-in') === true) {
1071                    $(e.target).trigger('clickDateCI', [pr_date_utc]);
1072                }
1073                if ($(e.target).parents('.t-check-out').hasClass('t-check-out') === true) {
1074                    $(e.target).trigger('clickDateCO', [pr_date_utc]);
1075                }
1076                if ($('.t-datepicker-day').length === 0) {
1077                    $(this).trigger('beforeShowDay');
1078                }
1079                var click = $(this).parent();
1080                if ($(this).parents('.t-datepicker').find('.t-input-check-in').val() === 'null' && $(this).parents('.t-check-out').find('.t-input-check-out').val() === 'null') {
1081                    click = $(e.target).parents('.t-datepicker').find('.t-check-in');
1082                    $(e.target).trigger('clickDateCI', [pr_date_utc]);
1083                }
1084                getTableCalendar(click, pr_date_utc[0])
1085                setTimeout(function() {
1086                    if ($('.t-datepicker-day').length !== 0) {
1087                        $(e.target).trigger('afterShowDay');
1088                    } else {
1089                        $(e.target).trigger('toggleAfterHideDay');
1090                    }
1091                }, 1)
1092            })
1093            if (pr_callback != '') {
1094                getTableCalendar(pr_callback, pr_date_utc[0]);
1095            }
1096        }
1097
1098        callEventClick(pr_callback, dataUTC)
1099        setTimeout(function() {
1100            if (typeof(pr_el) === 'string' && pr_el === 'show') {
1101                if (this_el.find('.t-datepicker-day').length === 0) {
1102                    this_el.each(function(e) {
1103                        if (settings.iconArrowTop === true) {
1104                            if ($(this).find('.t-arrow-top').length === 0) {
1105                                $(this).append('<span class="t-arrow-top"></span>')
1106                            }
1107                            var CI_width = $(this).find('.t-check-in').outerWidth()
1108                            $(this).find('.t-arrow-top').css({ 'left': CI_width / 2 - 10 + 'px', 'display': 'block' })
1109                        }
1110                        $(this).find('.t-check-in').append('<div class="t-datepicker-day' + checkNumCalendar + '">' + convertArrayToString(dataTheme) + '</div>')
1111                        setDaysInMonth($(this).find('.t-check-in'), dataUTC[0])
1112                        $('html').addClass('t-datepicker-open')
1113                    })
1114                }
1115            }
1116        }, 5)
1117        if (typeof(pr_el) === 'string' && pr_el === 'hide') {
1118            $('html').removeClass('t-datepicker-open')
1119            setTimeout(function() {
1120                $('html').addClass('t-datepicker-open')
1121            }, 5)
1122        }
1123        return this;
1124    }
1125    $('html').on('click', function(e) {
1126        if ($(this).hasClass('t-datepicker-open') === true) {
1127            setTimeout(function() {
1128                if ($(e.target).parents('.t-datepicker').hasClass('t-datepicker') === false && $('.t-datepicker-day').length > 0) {
1129                    $('.t-datepicker-open').removeClass('t-datepicker-open')
1130                    $('.t-datepicker-day').remove()
1131                    $('.t-arrow-top').remove()
1132                }
1133            }, 1)
1134        }
1135    });
1136}(jQuery));

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.