PageSourceSearch

https://www.ing.com.tr/documents/IngBank/assets/plugins/jquery.datePicker.js?v=20260918

js ing.com.tr collected 2026-09-24 09:14:31 UTC 24,804 bytes, 671 lines download raw bytes

1!(function ($) {
2    'use strict';
3
4    $.fn.pickADate = function (options) {
5
6        var opts = $.extend({
7            overlay: 'body div#dp-overlay',
8            template: '#caltemp',
9            inline: true,
10            linkedDates: true,
11            selectableDate: jING.Helpers.isExists('_LOCALISATION.date.picker.selectableDate') ? jING.Helpers.isExists.lastValue : false,
12            disabledWeekends: jING.Helpers.isExists('_LOCALISATION.date.picker.disabledWeekends') ? jING.Helpers.isExists.lastValue : true,
13            disabledHolidays: jING.Helpers.isExists('_LOCALISATION.date.picker.disabledHolidays') ? jING.Helpers.isExists.lastValue : false,
14            showOnlyFutureDates: jING.Helpers.isExists('_LOCALISATION.date.picker.showOnlyFutureDates') ? jING.Helpers.isExists.lastValue : false,
15            showOnlyPreviousDates: jING.Helpers.isExists('_LOCALISATION.date.picker.showOnlyPreviousDates') ? jING.Helpers.isExists.lastValue : false,
16            startDate: false,
17            endDate: false,
18            specialDaysCallback: function (o) { }
19        }, options);
20
21        var base = $.pickADate;
22
23        base.overlay = $(opts.overlay);
24
25        if (!base.html) {
26            base.html = $(opts.template).html();
27            $(opts.template).remove();
28        }
29
30        return this.each(function () {
31
32            var $input = $(this);
33
34            if ($input.data('pickADate')) {
35                return this;
36            }
37            $input.data('pickADate', true);
38
39            if ($.isMobile) {
40                return $.pickADate.initMobile(this, opts);
41            }
42
43            base.init($input, opts);
44        });
45    };
46    $.pickADate = {
47        constants: {
48            WEEKEND: 'weekend',
49            SPECIAL_DAY: 'special-days',
50            OUT_OF_RANGE: 'out-of-range'
51        },
52        overlay: null,
53        html: null,
54        groups: {},
55        holidays: [],
56        initMobile: function (input, options) {
57            return $.mobileDate.call(input, options);
58        },
59        init: function ($input, opts) {
60
61            var base = $.pickADate;
62
63            var id = $input.attr('id') || $input.attr('name'),
64                ID = 'pickADate-' + id,
65                options = $.extend({}, opts),
66                groupName = $input.data('group'),
67                rel = $input.attr('rel'),
68                groupMembers = base.helpers.getGroupMembers(groupName),
69                $dp, $dpw;
70
71            $input.addClass('pickADate date');
72
73            options = base.getOptions($input, options);
74
75            options.renderCallback = base.renderCallback($input, options);
76
77            if (!rel || rel === '' || rel === null) {
78                rel = 'Select a date';
79            }
80
81            if ($input.is(':disabled')) {
82                if ($.ie8) {
83                    $input.removeProp('disabled')
84                        .addClass('dp-active')
85                        .prop('disabled', true);
86                }
87            }
88
89            $input.data('options', options)
90                .data('isFirstInit', true)
91                .data('specialDays', options.specialDays);
92            if (!options.editable) $input.attr('readonly', 'true');
93
94            var html = base.html.replace('__ID__', ID);
95            $input.after(html);
96
97            $dp = $('#' + ID);
98            $dp.attr('data-input-group', groupName)
99                .css({
100                    'top': $input.position().top + $input.outerHeight() + 2,
101                    'left': $input.position().left - $dp.outerWidth() + $input.outerWidth() + 10 // - $dp.outerWidth() + $input.outerWidth() + 10
102                })
103                .on('click', function (e) {
104                    e.stopPropagation();
105                });
106
107            $dpw = $('.dp-wrapper', $dp);
108            $dpw.data('closeOnSelect', true);
109
110            $input.data('pickAdate', $dpw)
111                  .addClass('dp-active');
112
113            if (!groupMembers || groupMembers.length !== 2) {
114                $('.dp-select-month', $dp).addClass('disabled');
115            }
116
117            base.bindEvents($input, {
118                $dp: $dp,
119                $dpw: $dpw,
120                id: id,
121                ID: ID,
122                groupMembers: groupMembers
123            });
124
125            if ($input.val() !== '' && groupMembers) {
126                setTimeout(function () {
127                    base.dpObject.initLinkeDates($input, groupMembers);
128                }, 0);
129            }
130        },
131        getOptions: function ($input, options) {
132
133            var base = $.pickADate;
134
135            options = jING.date.getOptions(options, $input);
136
137            options.isLimited = !!($input.hasClass('limited') || options.showOnlyFutureDates || options.showOnlyPreviousDates || (options.startDate && options.endDate));
138
139            if (options.isLimited) {
140
141                if (options.showOnlyFutureDates || options.showOnlyPreviousDates) {
142
143                    var preDays = 2,
144                        nextDays = 2;
145
146                    if (options.showOnlyFutureDates) {
147                        preDays = 0;
148                        nextDays = parseInt(options.showOnlyFutureDates, 10) || 3650;
149                    } else if (options.showOnlyPreviousDates) {
150                        preDays = parseInt(options.showOnlyPreviousDates, 10) || 3650;
151                        nextDays = 0;
152                    }
153
154                    var startDate = base.helpers.addDays(new Date(), -preDays),
155                        endDate = base.helpers.addDays(new Date(), nextDays);
156
157                    options.isLimited = [
158                        base.helpers.formatDate(startDate, options.dateFormat),
159                        base.helpers.formatDate(endDate, options.dateFormat)
160                    ];
161
162                } else if (options.startDate && options.endDate) {
163                    options.isLimited = [
164                        options.startDate,
165                        options.endDate
166                    ];
167                }
168
169                $.extend(options, {
170                    startDate: options.isLimited[0],
171                    endDate: options.isLimited[1],
172                    dStartDate: Date.fromString(options.isLimited[0]),
173                    dEndDate: Date.fromString(options.isLimited[1])
174                });
175
176                options.value = $input.val();
177                if (options.isLimited) {
178                    if (options.value.trim().length > 0) {
179                        if (Date.fromString(options.value) < options.dStartDate) {
180                            options.value = options.startDate;
181                        } else if (Date.fromString(options.value) > options.dEndDate) {
182                            options.value = options.endDate;
183                        }
184                    }
185                } else {
186                    if (options.value.trim().length === 0) {
187                        options.value = base.helpers.formatDate(new Date(), options.dateFormat);
188                    }
189                }
190            }
191
192            return options;
193        },
194        bindEvents: function ($input, env) {
195
196            var base = $.pickADate,
197                options = $input.data('options');
198
199            $('body').on('click', function () {
200                base.dpObject.hidePickADate(env.id);
201            });
202
203            $('.close', env.$dp).on('click', function () {
204                base.dpObject.hidePickADate(env.id);
205            });
206
207            $input.on('click', function (e) {
208                e.stopPropagation();
209
210                if ($input.data('isFirstInit')) {
211                    base.dpObject.initDatePicker(env.$dpw, $input, env.groupMembers);
212                }
213
214                $('.dp-container').hide();
215
216                base.overlay.css({
217                    width: $('body').width(),
218                    height: $(document).outerHeight()
219                }).fadeIn(50);
220
221                $('#' + env.ID).fadeIn(50);
222
223                env.$dp.css(base.helpers.calculatePos($input, env.$dp));
224                if (options.onOpen) options.onOpen();
225            });
226
227            $input.on('dpSetSpecialDays', function (e, d) {
228                if (d.constructor === Array) {
229                    $input.data('specialDays', d);
230                    env.$dpw.dpRerenderCalendar();
231                }
232            }).on('setShowOnlyPreviousDates', function (e) {
233                base.dpObject.setShowOnlyPreviousDates.call(env.$dp);
234            }).on('setShowOnlyFutureDates', function (e) {
235                base.dpObject.setShowOnlyFutureDates.call(env.$dp);
236            }).on('setGroupDateRange', function (e, startDate, endDate) {
237                base.dpObject.setGroupDateRange.call($dp, groupName, startDate, endDate);
238            }).on('setDisabledHolidays', function (e, status) {
239                options.disabledHolidays = status || true;
240                env.$dpw.dpRerenderCalendar();
241            }).on('setDisabledWeekends', function (e, status) {
242                options.disabledWeekends = status || true;
243                env.$dpw.dpRerenderCalendar();
244            }).on('dpSetOptions', function (e, opts) {
245
246                e.stopPropagation();
247                e.preventDefault();
248
249                $input[0].dpSetOptions(opts);
250            });
251
252            $('.dp-select-today', env.$dp).on('click', function (e) {
253
254                e.stopPropagation();
255                e.preventDefault();
256
257                var d = base.helpers.formatDate(new Date(), options.dateFormat);
258                env.$dpw.dpSetSelected(d);
259                base.dpObject.hidePickADate(env.id);
260
261                return false;
262            });
263
264            $('.dp-select-month', env.$dp).on('click', function (e) {
265
266                e.stopPropagation();
267                e.preventDefault();
268
269                var groupMembers = env.groupMembers;
270
271                if (groupMembers.length === 2) {
272
273                    var // i = $input.data('pickAdateIndex'),
274                        my = env.$dpw.dpGetDisplayedMonthYear();
275
276                    var monthRange = base.helpers.getMonthRange(my[0], my[1]);
277
278                    var dayFirst = base.helpers.formatDate(monthRange.dayFirst, options.dateFormat);
279                    var dayLast = base.helpers.formatDate(monthRange.dayLast, options.dateFormat);
280
281                    $(groupMembers[0]).data('pickAdate').dpSetSelected(dayFirst);
282                    $(groupMembers[1]).data('pickAdate').dpSetSelected(dayLast);
283
284                    base.dpObject.hidePickADate(env.id);
285                }
286
287                return false;
288            });
289
290            $input[0].setDate = function (d) {
291
292                if (typeof this.dp !== 'undefined') {
293                    this.dp.dpSetSelected(d);
294                } else {
295                    var settings = $input.data('options');
296                    settings.value = d;
297                    $input.val(d);
298                    $input.trigger('change');
299                }
300            };
301
302            $input[0].dpSetOptions = function (opts) {
303
304                var options = $input.data('options');
305
306                if (opts.startDate) {
307                    options.startDate = opts.startDate;
308                    options.dStartDate = Date.fromString(opts.startDate),
309                    env.$dpw.dpSetStartDate(opts.startDate);
310                    env.$dpw.dpRerenderCalendar();
311                }
312
313                if (opts.endDate) {
314                    options.endDate = opts.endDate;
315                    options.dEndDate = Date.fromString(opts.endDate);
316                    env.$dpw.dpSetEndDate(opts.endDate);
317                    env.$dpw.dpRerenderCalendar();
318                }
319
320                if (opts.selectedDate) {
321                    $input[0].setDate(opts.selectedDate);
322                    env.$dpw.dpRerenderCalendar();
323                }
324
325                return $input[0];
326            };
327        },
328        renderCallback: function ($input, options) {
329
330            var base = $.pickADate;
331
332            return function ($td, thisDate, month, year) {
333
334                var sd = $input.data('specialDays'),
335                    typeHoliday = false;
336
337                if (options.isLimited) {
338                    if (thisDate < options.dStartDate || thisDate > options.dEndDate) {
339                        typeHoliday = base.constants.OUT_OF_RANGE;
340                    }
341                }
342
343                if (options.disabledWeekends) {
344                    var d = thisDate.getDay();
345
346                    if (d === 0 || d === 6) {
347                        typeHoliday = base.constants.WEEKEND;
348                    }
349                }
350
351                if (options.disabledHolidays && $.inArray(base.helpers.formatDate(thisDate, 'yyyy-mm-dd'), sd) > -1) {
352                    typeHoliday = base.constants.SPECIAL_DAY;
353                }
354
355                if (typeHoliday) {
356
357                    $td.addClass('disabled ' + typeHoliday);
358                    $td.off('click').on('click', function (e) {
359
360                        e.stopPropagation();
361                        e.preventDefault();
362
363                        if ($(this).hasClass('disabled') || !$dpw) {
364                            return;
365                        }
366
367                        options.specialDaysCallback.call($dpw, {
368                            typeHoliday: typeHoliday,
369                            input: $input,
370                            td: $td,
371                            date: thisDate,
372                            month: month,
373                            year: year
374                        });
375
376                        return false;
377                    });
378                }
379            };
380        },
381        dpObject: {
382            _init: function ($dpw, $input, groupMembers) {
383
384                $input.data('isFirstInit', false);
385
386                var base = $.pickADate,
387                    settings = $input.data('options'),
388                    id = $input.attr('id') || $input.attr('name');
389
390                $input[0].dp = $dpw;
391
392                $dpw.datePicker(settings)
393                    .dpSetSelected(settings.value || $input.val())
394                    .on(
395                        'dateSelected',
396                        function (event, date, $td, status) {
397
398                            $.pickADate.dpObject.onDateSelect($input, date, groupMembers);
399
400                            if ($dpw.data('closeOnSelect')) {
401                                settings = $(this).data('option');
402                                $.pickADate.dpObject.hidePickADate(id);
403                            }
404                        }
405                    );
406
407                if (!settings.value) {
408                    try {
409                        var s = base.helpers.fromString(settings.startDate) || Date.fromString(settings.startDate);
410                        if (s) {
411                            $dpw.dpSetDisplayedMonth(s.getMonth(), s.getFullYear());
412                        }
413                    } catch (e) { }
414                }
415            },
416            initLinkeDates: function ($input, groupMembers) {
417
418                var linkedDates = $input.data('options').linkedDates;
419
420                if (!linkedDates || (groupMembers.length !== 2)) {
421                    return;
422                }
423
424                var d = Date.fromString($input.val());
425
426                if ($input.data('pickAdateIndex') === 0) {
427                    $(groupMembers[1]).data('datePickerOnInit', {
428                        startDate: d.asString()
429                    });
430                } else {
431                    $(groupMembers[0]).data('datePickerOnInit', {
432                        endDate: d.asString()
433                    });
434                }
435            },
436            onDateSelect: function ($input, date, groupMembers) {
437
438                var linkedDates = $input.data('options').linkedDates,
439                    d = date;
440
441                if (d) {
442                    d = new Date(d);
443
444                    if ($input.val() !== d.asString()) {
445                        $input.val(d.asString());
446                        $input.trigger('change');
447                    }
448
449                    if (linkedDates && groupMembers && groupMembers.length === 2) {
450                        if ($input.data('pickAdateIndex') === 0) {
451                            // Start Date
452                            $(groupMembers[1]).data('pickAdate').dpSetStartDate(d.asString());
453                            $(groupMembers[1]).data('pickAdate').dpRerenderCalendar();
454                        } else {
455                            // End Date
456                            $(groupMembers[0]).data('pickAdate').dpSetEndDate(d.asString());
457                            $(groupMembers[0]).data('pickAdate').dpRerenderCalendar();
458                        }
459                    }
460                }
461            },
462            initDatePicker: function ($dpw, $input, groupMembers) {
463
464                if (!groupMembers) {
465                    $.pickADate.dpObject._init($dpw, $input, groupMembers);
466                } else {
467                    $.each(groupMembers, function () {
468
469                        var $el = $(this),
470                            $dpw = $el.data('pickAdate'),
471                            onInit = $el.data('datePickerOnInit');
472
473                        $.pickADate.dpObject._init($dpw, $el, groupMembers);
474
475                        if (onInit) {
476                            if (onInit.startDate) {
477                                $dpw.dpSetStartDate(onInit.startDate);
478                            }
479                            if (onInit.endDate) {
480                                $dpw.dpSetEndDate(onInit.endDate);
481                            }
482                            $dpw.dpRerenderCalendar();
483
484                            $el.removeData('datePickerOnInit');
485                        }
486                    });
487                }
488            },
489            hidePickADate: function (id) {
490                $('#pickADate-' + id).hide();
491                $.pickADate.overlay.hide();
492            },
493            setGroupDateRange: function (groupName, startDate, endDate) {
494
495                var members = $.pickADate.helpers.getGroupMembers(groupName),
496                    $dp;
497
498                endDate = endDate || '31/12/2999';
499
500                if (members.length > 0) {
501
502                    startDate = Date.fromString(startDate);
503                    endDate = Date.fromString(endDate);
504
505                    $.each(members, function (i, v) {
506                        $dp = $(v).data('pickAdate');
507                        $dp.dpSetStartDate(startDate);
508                        $dp.dpSetEndDate(endDate);
509                        $dp.dpRerenderCalendar();
510                    });
511                }
512            },
513            setShowOnlyPreviousDates: function () {
514                $.pickADate.dpObject.setGroupDateRange(this.data('input-group'), '01/01/1970', (new Date()).asString());
515            },
516            setShowOnlyFutureDates: function () {
517                $.pickADate.dpObject.setGroupDateRange(this.data('input-group'), (new Date()).asString(), false);
518            }
519        },
520        helpers: {
521            calculatePos: function ($input, $dp) {
522
523                var arrow = {
524                    obj: $('.dp-arrow:first', $dp),
525                    pos: parseInt($('.dp-arrow:first', $dp).css('right'), 10)
526                };
527
528                var data = arrow.obj.data();
529                if (!data.pos) {
530                    data.pos = parseInt(arrow.obj.css('right'), 10);
531                    arrow.obj.data('pos', data.pos);
532                }
533
534                var position = {
535                    'top': $input.position().top + $input.outerHeight() + 4,
536                    'left': $input.position().left - $dp.outerWidth() + $input.outerWidth() + 10
537                };
538
539                var diffY = $input.offset().top + $input.outerHeight() + $dp.outerHeight() - $(window).height() - $(window).scrollTop();
540                if (diffY > 0) {
541                    diffY += 10;
542                    $(window).scrollTo('+=' + diffY + 'px', 500);
543                }
544
545                var diffX = position.left;
546                if (diffX < 0) {
547                    position.left = 0;
548                    diffX = -diffX + data.pos;
549                    arrow.obj.css('right', diffX + 'px');
550                }
551
552                return position;
553            },
554            formatDate: function (d, f) {
555
556                f = f || Date.format || _LOCALISATION.date.formats.def;
557
558                var currDate = d.getDate(),
559                    currMonth = d.getMonth() + 1,
560                    currYear = d.getFullYear();
561
562                var currDate2 = currDate.toString().length < 2 ? '0' + currDate : currDate,
563                    currMonth2 = currMonth.toString().length < 2 ? '0' + currMonth : currMonth;
564
565                return f.replace('yyyy', currYear)
566                        .replace('dd', currDate2)
567                        .replace('mmmm', Date.monthNames[currMonth])
568                        .replace('mm', currMonth2)
569                        .replace('d', currDate)
570                        .replace('m', currMonth);
571            },
572            fromString: function (st, f, d) {
573
574                f = f || _LOCALISATION.date.formats.mobile;
575
576                var date = d || null;
577
578                if (st && st !== '') {
579                    date = Date.fromString(st, f);
580                }
581
582                return date;
583            },
584            addDays: function (d, days) {
585
586                days = parseInt(days, 10);
587
588                return new Date(d.getTime() + (days * 86400000));
589            },
590            getMonthRange: function (m, y) {
591
592                m = m || 10;
593                y = y || 2012;
594
595                var dayFirst = new Date(y, m, 1),
596                    dayLast = new Date(y, m + 1, 0);
597
598                return {
599                    'dayFirst': dayFirst,
600                    'dayLast': dayLast
601                };
602            },
603            getGroupMembers: function (groupName) {
604
605                if (typeof groupName === 'undefined' || !groupName) {
606                    return null;
607                }
608
609                if (typeof $.pickADate.groups[groupName] !== 'undefined') {
610                    return $.pickADate.groups[groupName];
611                }
612
613                var _members = $('input[data-group="' + groupName + '"]'),
614                    members = [];
615
616                if (_members.length < 1) {
617                    members = [];
618                } else {
619                    _members.each(function (i, v) {
620                        // var index = $(v).attr('data-pickADateIndex') || i;
621                        $(v).data('pickAdateIndex', i);
622                        members[i] = v;
623                    });
624                }
625
626                $.pickADate.groups[groupName] = members;
627
628                return members;
629            },
630            isHoliday: function (d, holidays, weekends) {
631
632                weekends = weekends || true;
633
634                var isHoliday = holidays.indexOf($.pickADate.helpers.formatDate(d, 'yyyy-mm-dd')) > -1;
635
636                if (weekends) {
637                    var day = d.getDay();
638                    isHoliday = isHoliday || !(day > 0 && day < 6);
639                }
640
641                return isHoliday;
642            },
643            getNextWorkingDate: function (date, holidays) {
644
645                var nextDay = date,
646                    c = 15,
647                    calc = false,
648                    // day,
649                    preDate, isHoliday;
650
651                do {
652                    preDate = date;
653                    date = nextDay;
654                    nextDay = new Date(date.getTime() + 86400000);
655                    isHoliday = $.pickADate.helpers.isHoliday(date, holidays) || $.pickADate.helpers.isHoliday(nextDay, holidays);
656
657                    if (!calc && isHoliday) {
658                        calc = true;
659                    }
660                } while (c-- > 0 && isHoliday);
661
662                if (calc) {
663                    date = preDate;
664                }
665
666                return date;
667            }
668        }
669    };
670
671})(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.