PageSourceSearch

https://goodins.kr/plugin/mongtree/vendor/bootstrap-datepicker/bootstrap-datepicker.min.js

js goodins.kr collected 2026-10-08 06:41:33 UTC 51,194 bytes, 869 lines download raw bytes

1/*!
2 * Datepicker for Bootstrap v1.6.4 (https://github.com/eternicode/bootstrap-datepicker)
3 *
4 * Copyright 2012 Stefan Petre
5 * Improvements by Andrew Rowls
6 * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
7 */
8! function(a) {
9    "function" == typeof define && define.amd ? define(["jquery"], a) : a("object" == typeof exports ? require("jquery") : jQuery)
10}(function(a, b) {
11    function c() {
12        return new Date(Date.UTC.apply(Date, arguments))
13    }
14
15    function d() {
16        var a = new Date;
17        return c(a.getFullYear(), a.getMonth(), a.getDate())
18    }
19
20    function e(a, b) {
21        return a.getUTCFullYear() === b.getUTCFullYear() && a.getUTCMonth() === b.getUTCMonth() && a.getUTCDate() === b.getUTCDate()
22    }
23
24    function f(a) {
25        return function() {
26            return this[a].apply(this, arguments)
27        }
28    }
29
30    function g(a) {
31        return a && !isNaN(a.getTime())
32    }
33
34    function h(b, c) {
35        function d(a, b) {
36            return b.toLowerCase()
37        }
38        var e, f = a(b).data(),
39            g = {},
40            h = new RegExp("^" + c.toLowerCase() + "([A-Z])");
41        c = new RegExp("^" + c.toLowerCase());
42        for (var i in f) c.test(i) && (e = i.replace(h, d), g[e] = f[i]);
43        return g
44    }
45
46    function i(b) {
47        var c = {};
48        if (q[b] || (b = b.split("-")[0], q[b])) {
49            var d = q[b];
50            return a.each(p, function(a, b) {
51                b in d && (c[b] = d[b])
52            }), c
53        }
54    }
55    var j = function() {
56            var b = {
57                get: function(a) {
58                    return this.slice(a)[0]
59                },
60                contains: function(a) {
61                    for (var b = a && a.valueOf(), c = 0, d = this.length; d > c; c++)
62                        if (this[c].valueOf() === b) return c;
63                    return -1
64                },
65                remove: function(a) {
66                    this.splice(a, 1)
67                },
68                replace: function(b) {
69                    b && (a.isArray(b) || (b = [b]), this.clear(), this.push.apply(this, b))
70                },
71                clear: function() {
72                    this.length = 0
73                },
74                copy: function() {
75                    var a = new j;
76                    return a.replace(this), a
77                }
78            };
79            return function() {
80                var c = [];
81                return c.push.apply(c, arguments), a.extend(c, b), c
82            }
83        }(),
84        k = function(b, c) {
85            a(b).data("datepicker", this), this._process_options(c), this.dates = new j, this.viewDate = this.o.defaultViewDate, this.focusDate = null, this.element = a(b), this.isInput = this.element.is("input"), this.inputField = this.isInput ? this.element : this.element.find("input"), this.component = this.element.hasClass("date") ? this.element.find(".add-on, .input-group-addon, .btn") : !1, this.hasInput = this.component && this.inputField.length, this.component && 0 === this.component.length && (this.component = !1), this.isInline = !this.component && this.element.is("div"), this.picker = a(r.template), this._check_template(this.o.templates.leftArrow) && this.picker.find(".prev").html(this.o.templates.leftArrow), this._check_template(this.o.templates.rightArrow) && this.picker.find(".next").html(this.o.templates.rightArrow), this._buildEvents(), this._attachEvents(), this.isInline ? this.picker.addClass("datepicker-inline").appendTo(this.element) : this.picker.addClass("datepicker-dropdown dropdown-menu"), this.o.rtl && this.picker.addClass("datepicker-rtl"), this.viewMode = this.o.startView, this.o.calendarWeeks && this.picker.find("thead .datepicker-title, tfoot .today, tfoot .clear").attr("colspan", function(a, b) {
86                return parseInt(b) + 1
87            }), this._allow_update = !1, this.setStartDate(this._o.startDate), this.setEndDate(this._o.endDate), this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled), this.setDaysOfWeekHighlighted(this.o.daysOfWeekHighlighted), this.setDatesDisabled(this.o.datesDisabled), this.fillDow(), this.fillMonths(), this._allow_update = !0, this.update(), this.showMode(), this.isInline && this.show()
88        };
89    k.prototype = {
90        constructor: k,
91        _resolveViewName: function(a, c) {
92            return 0 === a || "days" === a || "month" === a ? 0 : 1 === a || "months" === a || "year" === a ? 1 : 2 === a || "years" === a || "decade" === a ? 2 : 3 === a || "decades" === a || "century" === a ? 3 : 4 === a || "centuries" === a || "millennium" === a ? 4 : c === b ? !1 : c
93        },
94        _check_template: function(c) {
95            try {
96                if (c === b || "" === c) return !1;
97                if ((c.match(/[<>]/g) || []).length <= 0) return !0;
98                var d = a(c);
99                return d.length > 0
100            } catch (e) {
101                return !1
102            }
103        },
104        _process_options: function(b) {
105            this._o = a.extend({}, this._o, b);
106            var e = this.o = a.extend({}, this._o),
107                f = e.language;
108            q[f] || (f = f.split("-")[0], q[f] || (f = o.language)), e.language = f, e.startView = this._resolveViewName(e.startView, 0), e.minViewMode = this._resolveViewName(e.minViewMode, 0), e.maxViewMode = this._resolveViewName(e.maxViewMode, 4), e.startView = Math.min(e.startView, e.maxViewMode), e.startView = Math.max(e.startView, e.minViewMode), e.multidate !== !0 && (e.multidate = Number(e.multidate) || !1, e.multidate !== !1 && (e.multidate = Math.max(0, e.multidate))), e.multidateSeparator = String(e.multidateSeparator), e.weekStart %= 7, e.weekEnd = (e.weekStart + 6) % 7;
109            var g = r.parseFormat(e.format);
110            e.startDate !== -(1 / 0) && (e.startDate ? e.startDate instanceof Date ? e.startDate = this._local_to_utc(this._zero_time(e.startDate)) : e.startDate = r.parseDate(e.startDate, g, e.language, e.assumeNearbyYear) : e.startDate = -(1 / 0)), e.endDate !== 1 / 0 && (e.endDate ? e.endDate instanceof Date ? e.endDate = this._local_to_utc(this._zero_time(e.endDate)) : e.endDate = r.parseDate(e.endDate, g, e.language, e.assumeNearbyYear) : e.endDate = 1 / 0), e.daysOfWeekDisabled = e.daysOfWeekDisabled || [], a.isArray(e.daysOfWeekDisabled) || (e.daysOfWeekDisabled = e.daysOfWeekDisabled.split(/[,\s]*/)), e.daysOfWeekDisabled = a.map(e.daysOfWeekDisabled, function(a) {
111                return parseInt(a, 10)
112            }), e.daysOfWeekHighlighted = e.daysOfWeekHighlighted || [], a.isArray(e.daysOfWeekHighlighted) || (e.daysOfWeekHighlighted = e.daysOfWeekHighlighted.split(/[,\s]*/)), e.daysOfWeekHighlighted = a.map(e.daysOfWeekHighlighted, function(a) {
113                return parseInt(a, 10)
114            }), e.datesDisabled = e.datesDisabled || [], a.isArray(e.datesDisabled) || (e.datesDisabled = [e.datesDisabled]), e.datesDisabled = a.map(e.datesDisabled, function(a) {
115                return r.parseDate(a, g, e.language, e.assumeNearbyYear)
116            });
117            var h = String(e.orientation).toLowerCase().split(/\s+/g),
118                i = e.orientation.toLowerCase();
119            if (h = a.grep(h, function(a) {
120                    return /^auto|left|right|top|bottom$/.test(a)
121                }), e.orientation = {
122                    x: "auto",
123                    y: "auto"
124                }, i && "auto" !== i)
125                if (1 === h.length) switch (h[0]) {
126                    case "top":
127                    case "bottom":
128                        e.orientation.y = h[0];
129                        break;
vendor: 15,144 bytes, lines 130-406
130                    case "left":
131                    case "right":
132                        e.orientation.x = h[0]
133                } else i = a.grep(h, function(a) {
134                    return /^left|right$/.test(a)
135                }), e.orientation.x = i[0] || "auto", i = a.grep(h, function(a) {
136                    return /^top|bottom$/.test(a)
137                }), e.orientation.y = i[0] || "auto";
138                else;
139            if (e.defaultViewDate) {
140                var j = e.defaultViewDate.year || (new Date).getFullYear(),
141                    k = e.defaultViewDate.month || 0,
142                    l = e.defaultViewDate.day || 1;
143                e.defaultViewDate = c(j, k, l)
144            } else e.defaultViewDate = d()
145        },
146        _events: [],
147        _secondaryEvents: [],
148        _applyEvents: function(a) {
149            for (var c, d, e, f = 0; f < a.length; f++) c = a[f][0], 2 === a[f].length ? (d = b, e = a[f][1]) : 3 === a[f].length && (d = a[f][1], e = a[f][2]), c.on(e, d)
150        },
151        _unapplyEvents: function(a) {
152            for (var c, d, e, f = 0; f < a.length; f++) c = a[f][0], 2 === a[f].length ? (e = b, d = a[f][1]) : 3 === a[f].length && (e = a[f][1], d = a[f][2]), c.off(d, e)
153        },
154        _buildEvents: function() {
155            var b = {
156                keyup: a.proxy(function(b) {
157                    -1 === a.inArray(b.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) && this.update()
158                }, this),
159                keydown: a.proxy(this.keydown, this),
160                paste: a.proxy(this.paste, this)
161            };
162            this.o.showOnFocus === !0 && (b.focus = a.proxy(this.show, this)), this.isInput ? this._events = [
163                [this.element, b]
164            ] : this.component && this.hasInput ? this._events = [
165                [this.inputField, b],
166                [this.component, {
167                    click: a.proxy(this.show, this)
168                }]
169            ] : this._events = [
170                [this.element, {
171                    click: a.proxy(this.show, this),
172                    keydown: a.proxy(this.keydown, this)
173                }]
174            ], this._events.push([this.element, "*", {
175                blur: a.proxy(function(a) {
176                    this._focused_from = a.target
177                }, this)
178            }], [this.element, {
179                blur: a.proxy(function(a) {
180                    this._focused_from = a.target
181                }, this)
182            }]), this.o.immediateUpdates && this._events.push([this.element, {
183                "changeYear changeMonth": a.proxy(function(a) {
184                    this.update(a.date)
185                }, this)
186            }]), this._secondaryEvents = [
187                [this.picker, {
188                    click: a.proxy(this.click, this)
189                }],
190                [a(window), {
191                    resize: a.proxy(this.place, this)
192                }],
193                [a(document), {
194                    mousedown: a.proxy(function(a) {
195                        this.element.is(a.target) || this.element.find(a.target).length || this.picker.is(a.target) || this.picker.find(a.target).length || this.isInline || this.hide()
196                    }, this)
197                }]
198            ]
199        },
200        _attachEvents: function() {
201            this._detachEvents(), this._applyEvents(this._events)
202        },
203        _detachEvents: function() {
204            this._unapplyEvents(this._events)
205        },
206        _attachSecondaryEvents: function() {
207            this._detachSecondaryEvents(), this._applyEvents(this._secondaryEvents)
208        },
209        _detachSecondaryEvents: function() {
210            this._unapplyEvents(this._secondaryEvents)
211        },
212        _trigger: function(b, c) {
213            var d = c || this.dates.get(-1),
214                e = this._utc_to_local(d);
215            this.element.trigger({
216                type: b,
217                date: e,
218                dates: a.map(this.dates, this._utc_to_local),
219                format: a.proxy(function(a, b) {
220                    0 === arguments.length ? (a = this.dates.length - 1, b = this.o.format) : "string" == typeof a && (b = a, a = this.dates.length - 1), b = b || this.o.format;
221                    var c = this.dates.get(a);
222                    return r.formatDate(c, b, this.o.language)
223                }, this)
224            })
225        },
226        show: function() {
227            return this.inputField.prop("disabled") || this.inputField.prop("readonly") && this.o.enableOnReadonly === !1 ? void 0 : (this.isInline || this.picker.appendTo(this.o.container), this.place(), this.picker.show(), this._attachSecondaryEvents(), this._trigger("show"), (window.navigator.msMaxTouchPoints || "ontouchstart" in document) && this.o.disableTouchKeyboard && a(this.element).blur(), this)
228        },
229        hide: function() {
230            return this.isInline || !this.picker.is(":visible") ? this : (this.focusDate = null, this.picker.hide().detach(), this._detachSecondaryEvents(), this.viewMode = this.o.startView, this.showMode(), this.o.forceParse && this.inputField.val() && this.setValue(), this._trigger("hide"), this)
231        },
232        destroy: function() {
233            return this.hide(), this._detachEvents(), this._detachSecondaryEvents(), this.picker.remove(), delete this.element.data().datepicker, this.isInput || delete this.element.data().date, this
234        },
235        paste: function(b) {
236            var c;
237            if (b.originalEvent.clipboardData && b.originalEvent.clipboardData.types && -1 !== a.inArray("text/plain", b.originalEvent.clipboardData.types)) c = b.originalEvent.clipboardData.getData("text/plain");
238            else {
239                if (!window.clipboardData) return;
240                c = window.clipboardData.getData("Text")
241            }
242            this.setDate(c), this.update(), b.preventDefault()
243        },
244        _utc_to_local: function(a) {
245            return a && new Date(a.getTime() + 6e4 * a.getTimezoneOffset())
246        },
247        _local_to_utc: function(a) {
248            return a && new Date(a.getTime() - 6e4 * a.getTimezoneOffset())
249        },
250        _zero_time: function(a) {
251            return a && new Date(a.getFullYear(), a.getMonth(), a.getDate())
252        },
253        _zero_utc_time: function(a) {
254            return a && new Date(Date.UTC(a.getUTCFullYear(), a.getUTCMonth(), a.getUTCDate()))
255        },
256        getDates: function() {
257            return a.map(this.dates, this._utc_to_local)
258        },
259        getUTCDates: function() {
260            return a.map(this.dates, function(a) {
261                return new Date(a)
262            })
263        },
264        getDate: function() {
265            return this._utc_to_local(this.getUTCDate())
266        },
267        getUTCDate: function() {
268            var a = this.dates.get(-1);
269            return "undefined" != typeof a ? new Date(a) : null
270        },
271        clearDates: function() {
272            this.inputField && this.inputField.val(""), this.update(), this._trigger("changeDate"), this.o.autoclose && this.hide()
273        },
274        setDates: function() {
275            var b = a.isArray(arguments[0]) ? arguments[0] : arguments;
276            return this.update.apply(this, b), this._trigger("changeDate"), this.setValue(), this
277        },
278        setUTCDates: function() {
279            var b = a.isArray(arguments[0]) ? arguments[0] : arguments;
280            return this.update.apply(this, a.map(b, this._utc_to_local)), this._trigger("changeDate"), this.setValue(), this
281        },
282        setDate: f("setDates"),
283        setUTCDate: f("setUTCDates"),
284        remove: f("destroy"),
285        setValue: function() {
286            var a = this.getFormattedDate();
287            return this.inputField.val(a), this
288        },
289        getFormattedDate: function(c) {
290            c === b && (c = this.o.format);
291            var d = this.o.language;
292            return a.map(this.dates, function(a) {
293                return r.formatDate(a, c, d)
294            }).join(this.o.multidateSeparator)
295        },
296        getStartDate: function() {
297            return this.o.startDate
298        },
299        setStartDate: function(a) {
300            return this._process_options({
301                startDate: a
302            }), this.update(), this.updateNavArrows(), this
303        },
304        getEndDate: function() {
305            return this.o.endDate
306        },
307        setEndDate: function(a) {
308            return this._process_options({
309                endDate: a
310            }), this.update(), this.updateNavArrows(), this
311        },
312        setDaysOfWeekDisabled: function(a) {
313            return this._process_options({
314                daysOfWeekDisabled: a
315            }), this.update(), this.updateNavArrows(), this
316        },
317        setDaysOfWeekHighlighted: function(a) {
318            return this._process_options({
319                daysOfWeekHighlighted: a
320            }), this.update(), this
321        },
322        setDatesDisabled: function(a) {
323            this._process_options({
324                datesDisabled: a
325            }), this.update(), this.updateNavArrows()
326        },
327        place: function() {
328            if (this.isInline) return this;
329            var b = this.picker.outerWidth(),
330                c = this.picker.outerHeight(),
331                d = 10,
332                e = a(this.o.container),
333                f = e.width(),
334                g = "body" === this.o.container ? a(document).scrollTop() : e.scrollTop(),
335                h = e.offset(),
336                i = [];
337            this.element.parents().each(function() {
338                var b = a(this).css("z-index");
339                "auto" !== b && 0 !== b && i.push(parseInt(b))
340            });
341            var j = Math.max.apply(Math, i) + this.o.zIndexOffset,
342                k = this.component ? this.component.parent().offset() : this.element.offset(),
343                l = this.component ? this.component.outerHeight(!0) : this.element.outerHeight(!1),
344                m = this.component ? this.component.outerWidth(!0) : this.element.outerWidth(!1),
345                n = k.left - h.left,
346                o = k.top - h.top;
347            "body" !== this.o.container && (o += g), this.picker.removeClass("datepicker-orient-top datepicker-orient-bottom datepicker-orient-right datepicker-orient-left"), "auto" !== this.o.orientation.x ? (this.picker.addClass("datepicker-orient-" + this.o.orientation.x), "right" === this.o.orientation.x && (n -= b - m)) : k.left < 0 ? (this.picker.addClass("datepicker-orient-left"), n -= k.left - d) : n + b > f ? (this.picker.addClass("datepicker-orient-right"), n += m - b) : this.picker.addClass("datepicker-orient-left");
348            var p, q = this.o.orientation.y;
349            if ("auto" === q && (p = -g + o - c, q = 0 > p ? "bottom" : "top"), this.picker.addClass("datepicker-orient-" + q), "top" === q ? o -= c + parseInt(this.picker.css("padding-top")) : o += l, this.o.rtl) {
350                var r = f - (n + m);
351                this.picker.css({
352                    top: o,
353                    right: r,
354                    zIndex: j
355                })
356            } else this.picker.css({
357                top: o,
358                left: n,
359                zIndex: j
360            });
361            return this
362        },
363        _allow_update: !0,
364        update: function() {
365            if (!this._allow_update) return this;
366            var b = this.dates.copy(),
367                c = [],
368                d = !1;
369            return arguments.length ? (a.each(arguments, a.proxy(function(a, b) {
370                b instanceof Date && (b = this._local_to_utc(b)), c.push(b)
371            }, this)), d = !0) : (c = this.isInput ? this.element.val() : this.element.data("date") || this.inputField.val(), c = c && this.o.multidate ? c.split(this.o.multidateSeparator) : [c], delete this.element.data().date), c = a.map(c, a.proxy(function(a) {
372                return r.parseDate(a, this.o.format, this.o.language, this.o.assumeNearbyYear)
373            }, this)), c = a.grep(c, a.proxy(function(a) {
374                return !this.dateWithinRange(a) || !a
375            }, this), !0), this.dates.replace(c), this.dates.length ? this.viewDate = new Date(this.dates.get(-1)) : this.viewDate < this.o.startDate ? this.viewDate = new Date(this.o.startDate) : this.viewDate > this.o.endDate ? this.viewDate = new Date(this.o.endDate) : this.viewDate = this.o.defaultViewDate, d ? this.setValue() : c.length && String(b) !== String(this.dates) && this._trigger("changeDate"), !this.dates.length && b.length && this._trigger("clearDate"), this.fill(), this.element.change(), this
376        },
377        fillDow: function() {
378            var b = this.o.weekStart,
379                c = "<tr>";
380            for (this.o.calendarWeeks && (this.picker.find(".datepicker-days .datepicker-switch").attr("colspan", function(a, b) {
381                    return parseInt(b) + 1
382                }), c += '<th class="cw">&#160;</th>'); b < this.o.weekStart + 7;) c += '<th class="dow', a.inArray(b, this.o.daysOfWeekDisabled) > -1 && (c += " disabled"), c += '">' + q[this.o.language].daysMin[b++ % 7] + "</th>";
383            c += "</tr>", this.picker.find(".datepicker-days thead").append(c)
384        },
385        fillMonths: function() {
386            for (var a = this._utc_to_local(this.viewDate), b = "", c = 0; 12 > c;) {
387                var d = a && a.getMonth() === c ? " focused" : "";
388                b += '<span class="month' + d + '">' + q[this.o.language].monthsShort[c++] + "</span>"
389            }
390            this.picker.find(".datepicker-months td").html(b)
391        },
392        setRange: function(b) {
393            b && b.length ? this.range = a.map(b, function(a) {
394                return a.valueOf()
395            }) : delete this.range, this.fill()
396        },
397        getClassNames: function(b) {
398            var c = [],
399                d = this.viewDate.getUTCFullYear(),
400                e = this.viewDate.getUTCMonth(),
401                f = new Date;
402            return b.getUTCFullYear() < d || b.getUTCFullYear() === d && b.getUTCMonth() < e ? c.push("old") : (b.getUTCFullYear() > d || b.getUTCFullYear() === d && b.getUTCMonth() > e) && c.push("new"), this.focusDate && b.valueOf() === this.focusDate.valueOf() && c.push("focused"), this.o.todayHighlight && b.getUTCFullYear() === f.getFullYear() && b.getUTCMonth() === f.getMonth() && b.getUTCDate() === f.getDate() && c.push("today"), -1 !== this.dates.contains(b) && c.push("active"), this.dateWithinRange(b) || c.push("disabled"), this.dateIsDisabled(b) && c.push("disabled", "disabled-date"), -1 !== a.inArray(b.getUTCDay(), this.o.daysOfWeekHighlighted) && c.push("highlighted"), this.range && (b > this.range[0] && b < this.range[this.range.length - 1] && c.push("range"), -1 !== a.inArray(b.valueOf(), this.range) && c.push("selected"), b.valueOf() === this.range[0] && c.push("range-start"), b.valueOf() === this.range[this.range.length - 1] && c.push("range-end")), c
403        },
404        _fill_yearsView: function(c, d, e, f, g, h, i, j) {
405            var k, l, m, n, o, p, q, r, s, t, u;
406            for (k = "", l = this.picker.find(c), m = parseInt(g / e, 10) * e, o = parseInt(h / f, 
40610) * f, p = parseInt(i / f, 10) * f, n = a.map(this.dates, function(a) {
407                    return parseInt(a.getUTCFullYear() / f, 10) * f
408                }), l.find(".datepicker-switch").text(m + "-" + (m + 9 * f)), q = m - f, r = -1; 11 > r; r += 1) s = [d], t = null, -1 === r ? s.push("old") : 10 === r && s.push("new"), -1 !== a.inArray(q, n) && s.push("active"), (o > q || q > p) && s.push("disabled"), q === this.viewDate.getFullYear() && s.push("focused"), j !== a.noop && (u = j(new Date(q, 0, 1)), u === b ? u = {} : "boolean" == typeof u ? u = {
409                enabled: u
410            } : "string" == typeof u && (u = {
411                classes: u
412            }), u.enabled === !1 && s.push("disabled"), u.classes && (s = s.concat(u.classes.split(/\s+/))), u.tooltip && (t = u.tooltip)), k += '<span class="' + s.join(" ") + '"' + (t ? ' title="' + t + '"' : "") + ">" + q + "</span>", q += f;
413            l.find("td").html(k)
414        },
415        fill: function() {
416            var d, e, f = new Date(this.viewDate),
417                g = f.getUTCFullYear(),
418                h = f.getUTCMonth(),
419                i = this.o.startDate !== -(1 / 0) ? this.o.startDate.getUTCFullYear() : -(1 / 0),
420                j = this.o.startDate !== -(1 / 0) ? this.o.startDate.getUTCMonth() : -(1 / 0),
421                k = this.o.endDate !== 1 / 0 ? this.o.endDate.getUTCFullYear() : 1 / 0,
422                l = this.o.endDate !== 1 / 0 ? this.o.endDate.getUTCMonth() : 1 / 0,
423                m = q[this.o.language].today || q.en.today || "",
424                n = q[this.o.language].clear || q.en.clear || "",
425                o = q[this.o.language].titleFormat || q.en.titleFormat;
426            if (!isNaN(g) && !isNaN(h)) {
427                this.picker.find(".datepicker-days .datepicker-switch").text(r.formatDate(f, o, this.o.language)), this.picker.find("tfoot .today").text(m).toggle(this.o.todayBtn !== !1), this.picker.find("tfoot .clear").text(n).toggle(this.o.clearBtn !== !1), this.picker.find("thead .datepicker-title").text(this.o.title).toggle("" !== this.o.title), this.updateNavArrows(), this.fillMonths();
428                var p = c(g, h - 1, 28),
429                    s = r.getDaysInMonth(p.getUTCFullYear(), p.getUTCMonth());
430                p.setUTCDate(s), p.setUTCDate(s - (p.getUTCDay() - this.o.weekStart + 7) % 7);
431                var t = new Date(p);
432                p.getUTCFullYear() < 100 && t.setUTCFullYear(p.getUTCFullYear()), t.setUTCDate(t.getUTCDate() + 42), t = t.valueOf();
433                for (var u, v = []; p.valueOf() < t;) {
434                    if (p.getUTCDay() === this.o.weekStart && (v.push("<tr>"), this.o.calendarWeeks)) {
435                        var w = new Date(+p + (this.o.weekStart - p.getUTCDay() - 7) % 7 * 864e5),
436                            x = new Date(Number(w) + (11 - w.getUTCDay()) % 7 * 864e5),
437                            y = new Date(Number(y = c(x.getUTCFullYear(), 0, 1)) + (11 - y.getUTCDay()) % 7 * 864e5),
438                            z = (x - y) / 864e5 / 7 + 1;
439                        v.push('<td class="cw">' + z + "</td>")
440                    }
441                    u = this.getClassNames(p), u.push("day"), this.o.beforeShowDay !== a.noop && (e = this.o.beforeShowDay(this._utc_to_local(p)), e === b ? e = {} : "boolean" == typeof e ? e = {
442                        enabled: e
443                    } : "string" == typeof e && (e = {
444                        classes: e
445                    }), e.enabled === !1 && u.push("disabled"), e.classes && (u = u.concat(e.classes.split(/\s+/))), e.tooltip && (d = e.tooltip)), u = a.isFunction(a.uniqueSort) ? a.uniqueSort(u) : a.unique(u), v.push('<td class="' + u.join(" ") + '"' + (d ? ' title="' + d + '"' : "") + ">" + p.getUTCDate() + "</td>"), d = null, p.getUTCDay() === this.o.weekEnd && v.push("</tr>"), p.setUTCDate(p.getUTCDate() + 1)
446                }
447                this.picker.find(".datepicker-days tbody").empty().append(v.join(""));
448                var A = q[this.o.language].monthsTitle || q.en.monthsTitle || "Months",
449                    B = this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode < 2 ? A : g).end().find("span").removeClass("active");
450                if (a.each(this.dates, function(a, b) {
451                        b.getUTCFullYear() === g && B.eq(b.getUTCMonth()).addClass("active");
452						set_date(B.parents(".cal").attr("id"),b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate());
453						$(".datepicker-dropdown ").hide();
454                    }), (i > g || g > k) && B.addClass("disabled"), g === i && B.slice(0, j).addClass("disabled"), g === k && B.slice(l + 1).addClass("disabled"), this.o.beforeShowMonth !== a.noop) {
455                    var C = this;
456                    a.each(B, function(c, d) {
457                        var e = new Date(g, c, 1),
458                            f = C.o.beforeShowMonth(e);
459                        f === b ? f = {} : "boolean" == typeof f ? f = {
460                            enabled: f
461                        } : "string" == typeof f && (f = {
462                            classes: f
463                        }), f.enabled !== !1 || a(d).hasClass("disabled") || a(d).addClass("disabled"), f.classes && a(d).addClass(f.classes), f.tooltip && a(d).prop("title", f.tooltip)
464                    })
465                }
466                this._fill_yearsView(".datepicker-years", "year", 10, 1, g, i, k, this.o.beforeShowYear), this._fill_yearsView(".datepicker-decades", "decade", 100, 10, g, i, k, this.o.beforeShowDecade), this._fill_yearsView(".datepicker-centuries", "century", 1e3, 100, g, i, k, this.o.beforeShowCentury)
467            }
468        },
469        updateNavArrows: function() {
470            if (this._allow_update) {
471                var a = new Date(this.viewDate),
472                    b = a.getUTCFullYear(),
473                    c = a.getUTCMonth();
474                switch (this.viewMode) {
475                    case 0:
476                        this.o.startDate !== -(1 / 0) && b <= this.o.startDate.getUTCFullYear() && c <= this.o.startDate.getUTCMonth() ? this.picker.find(".prev").css({
477                            visibility: "hidden"
478                        }) : this.picker.find(".prev").css({
479                            visibility: "visible"
480                        }), this.o.endDate !== 1 / 0 && b >= this.o.endDate.getUTCFullYear() && c >= this.o.endDate.getUTCMonth() ? this.picker.find(".next").css({
481                            visibility: "hidden"
482                        }) : this.picker.find(".next").css({
483                            visibility: "visible"
484                        });
485                        break;
486                    case 1:
487                    case 2:
488                    case 3:
489                    case 4:
490                        this.o.startDate !== -(1 / 0) && b <= this.o.startDate.getUTCFullYear() || this.o.maxViewMode < 2 ? this.picker.find(".prev").css({
491                            visibility: "hidden"
492                        }) : this.picker.find(".prev").css({
493                            visibility: "visible"
494                        }), this.o.endDate !== 1 / 0 && b >= this.o.endDate.getUTCFullYear() || this.o.maxViewMode < 2 ? this.picker.find(".next").css({
495                            visibility: "hidden"
496                        }) : this.picker.find(".next").css({
497                            visibility: "visible"
498                        })
499                }
500            }
501        },
502        click: function(b) {
503            b.preventDefault(), b.stopPropagation();
504            var e, f, g, h, i, j, k;
505            e = a(b.target), e.hasClass("datepicker-switch") && this.showMode(1);
506            var l = e.closest(".prev, .next");
507            l.length > 0 && (f = r.modes[this.viewMode].navStep * (l.hasClass("prev") ? -1 : 1), 0 === this.viewMode ? (this.viewDate = this.moveMonth(this.viewDate, f), this._trigger("changeMonth", this.viewDate)) : (this.viewDate = this.moveYear(this.viewDate, f), 1 === this.viewMode && this._trigger("changeYear", this.viewDate)), this.fill()), e.hasClass("today") && !e.hasClass("day") && (this.showMode(-2), this._setDate(d(), "linked" === this.o.todayBtn ? null : "view")), e.hasClass("clear") && this.clearDates(), e.hasClass("disabled") || (e.hasClass("day") && (g = parseInt(e.text(), 10) || 1, h = this.viewDate.getUTCFullYear(), i = this.viewDate.getUTCMonth(), e.hasClass("old") && (0 === i ? (i = 11, h -= 1, j = !0, k = !0) : (i -= 1, j = !0)), e.hasClass("new") && (11 === i ? (i = 0, h += 1, j = !0, k = !0) : (i += 1, j = !0)), this._setDate(c(h, i, g)), k && this._trigger("changeYear", this.viewDate), j && this._trigger("changeMonth", this.viewDate)), e.hasClass("month") && (this.viewDate.setUTCDate(1), g = 1, i = e.parent().find("span").index(e), h = this.viewDate.getUTCFullYear(), this.viewDate.setUTCMonth(i), this._trigger("changeMonth", this.viewDate), 1 === this.o.minViewMode ? (this._setDate(c(h, i, g)), this.showMode()) : this.showMode(-1), this.fill()), (e.hasClass("year") || e.hasClass("decade") || e.hasClass("century")) && (this.viewDate.setUTCDate(1), g = 1, i = 0, h = parseInt(e.text(), 10) || 0, this.viewDate.setUTCFullYear(h), e.hasClass("year") && (this._trigger("changeYear", this.viewDate), 2 === this.o.minViewMode && this._setDate(c(h, i, g))), e.hasClass("decade") && (this._trigger("changeDecade", this.viewDate), 3 === this.o.minViewMode && this._setDate(c(h, i, g))), e.hasClass("century") && (this._trigger("changeCentury", this.viewDate), 4 === this.o.minViewMode && this._setDate(c(h, i, g))), this.showMode(-1), this.fill())), this.picker.is(":visible") && this._focused_from && a(this._focused_from).focus(), delete this._focused_from
508        },
509        _toggle_multidate: function(a) {
510            var b = this.dates.contains(a);
511            if (a || this.dates.clear(), -1 !== b ? (this.o.multidate === !0 || this.o.multidate > 1 || this.o.toggleActive) && this.dates.remove(b) : this.o.multidate === !1 ? (this.dates.clear(), this.dates.push(a)) : this.dates.push(a), "number" == typeof this.o.multidate)
512                for (; this.dates.length > this.o.multidate;) this.dates.remove(0)
513        },
514        _setDate: function(a, b) {
515            b && "date" !== b || this._toggle_multidate(a && new Date(a)), b && "view" !== b || (this.viewDate = a && new Date(a)), this.fill(), this.setValue(), b && "view" === b || this._trigger("changeDate"), this.inputField && this.inputField.change(), !this.o.autoclose || b && "date" !== b || this.hide()
516        },
517        moveDay: function(a, b) {
518            var c = new Date(a);
519            return c.setUTCDate(a.getUTCDate() + b), c
520        },
521        moveWeek: function(a, b) {
522            return this.moveDay(a, 7 * b)
523        },
524        moveMonth: function(a, b) {
525            if (!g(a)) return this.o.defaultViewDate;
526            if (!b) return a;
527            var c, d, e = new Date(a.valueOf()),
528                f = e.getUTCDate(),
529                h = e.getUTCMonth(),
530                i = Math.abs(b);
531            if (b = b > 0 ? 1 : -1, 1 === i) d = -1 === b ? function() {
532                return e.getUTCMonth() === h
533            } : function() {
534                return e.getUTCMonth() !== c
535            }, c = h + b, e.setUTCMonth(c), (0 > c || c > 11) && (c = (c + 12) % 12);
536            else {
537                for (var j = 0; i > j; j++) e = this.moveMonth(e, b);
538                c = e.getUTCMonth(), e.setUTCDate(f), d = function() {
539                    return c !== e.getUTCMonth()
540                }
541            }
542            for (; d();) e.setUTCDate(--f), e.setUTCMonth(c);
543            return e
544        },
545        moveYear: function(a, b) {
546            return this.moveMonth(a, 12 * b)
547        },
548        moveAvailableDate: function(a, b, c) {
549            do {
550                if (a = this[c](a, b), !this.dateWithinRange(a)) return !1;
551                c = "moveDay"
552            } while (this.dateIsDisabled(a));
553            return a
554        },
555        weekOfDateIsDisabled: function(b) {
556            return -1 !== a.inArray(b.getUTCDay(), this.o.daysOfWeekDisabled)
557        },
558        dateIsDisabled: function(b) {
559            return this.weekOfDateIsDisabled(b) || a.grep(this.o.datesDisabled, function(a) {
560                return e(b, a)
561            }).length > 0
562        },
563        dateWithinRange: function(a) {
564            return a >= this.o.startDate && a <= this.o.endDate
565        },
566        keydown: function(a) {
567            if (!this.picker.is(":visible")) return void((40 === a.keyCode || 27 === a.keyCode) && (this.show(), a.stopPropagation()));
568            var b, c, d = !1,
569                e = this.focusDate || this.viewDate;
570            switch (a.keyCode) {
571                case 27:
572                    this.focusDate ? (this.focusDate = null, this.viewDate = this.dates.get(-1) || this.viewDate, this.fill()) : this.hide(), a.preventDefault(), a.stopPropagation();
573                    break;
574                case 37:
575                case 38:
576                case 39:
577                case 40:
578                    if (!this.o.keyboardNavigation || 7 === this.o.daysOfWeekDisabled.length) break;
579                    b = 37 === a.keyCode || 38 === a.keyCode ? -1 : 1, 0 === this.viewMode ? a.ctrlKey ? (c = this.moveAvailableDate(e, b, "moveYear"), c && this._trigger("changeYear", this.viewDate)) : a.shiftKey ? (c = this.moveAvailableDate(e, b, "moveMonth"), c && this._trigger("changeMonth", this.viewDate)) : 37 === a.keyCode || 39 === a.keyCode ? c = this.moveAvailableDate(e, b, "moveDay") : this.weekOfDateIsDisabled(e) || (c = this.moveAvailableDate(e, b, "moveWeek")) : 1 === this.viewMode ? ((38 === a.keyCode || 40 === a.keyCode) && (b = 4 * b), c = this.moveAvailableDate(e, b, "moveMonth")) : 2 === this.viewMode && ((38 === a.keyCode || 40 === a.keyCode) && (b = 4 * b), c = this.moveAvailableDate(e, b, "moveYear")), c && (this.focusDate = this.viewDate = c, this.setValue(), this.fill(), a.preventDefault());
580                    break;
581                case 13:
582                    if (!this.o.forceParse) break;
583                    e = this.focusDate || this.dates.get(-1) || this.viewDate, this.o.keyboardNavigation && (this._toggle_multidate(e), d = !0), this.focusDate = null, this.viewDate = this.dates.get(-1) || this.viewDate, this.setValue(), this.fill(), this.picker.is(":visible") && (a.preventDefault(), a.stopPropagation(), this.o.autoclose && this.hide());
584                    break;
585                case 9:
586                    this.focusDate = null, this.viewDate = this.dates.get(-1) || this.viewDate, this.fill(), this.hide()
587            }
588            d && (this.dates.length ? this._trigger("changeDate") : this._trigger("clearDate"), this.inputField && this.inputField.change())
589        },
590        showMode: function(a) {
591            a && (this.viewMode = Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, this.viewMode + a))
591), this.picker.children("div").hide().filter(".datepicker-" + r.modes[this.viewMode].clsName).show(), this.updateNavArrows()
592        }
593    };
594    var l = function(b, c) {
595        a(b).data("datepicker", this), this.element = a(b), this.inputs = a.map(c.inputs, function(a) {
596            return a.jquery ? a[0] : a
597        }), delete c.inputs, n.call(a(this.inputs), c).on("changeDate", a.proxy(this.dateUpdated, this)), this.pickers = a.map(this.inputs, function(b) {
598            return a(b).data("datepicker")
599        }), this.updateDates()
600    };
601    l.prototype = {
602        updateDates: function() {
603            this.dates = a.map(this.pickers, function(a) {
604                return a.getUTCDate()
605            }), this.updateRanges()
606        },
607        updateRanges: function() {
608            var b = a.map(this.dates, function(a) {
609                return a.valueOf()
610            });
611            a.each(this.pickers, function(a, c) {
612                c.setRange(b)
613            })
614        },
615        dateUpdated: function(b) {
616            if (!this.updating) {
617                this.updating = !0;
618                var c = a(b.target).data("datepicker");
619                if ("undefined" != typeof c) {
620                    var d = c.getUTCDate(),
621                        e = a.inArray(b.target, this.inputs),
622                        f = e - 1,
623                        g = e + 1,
624                        h = this.inputs.length;
625                    if (-1 !== e) {
626                        if (a.each(this.pickers, function(a, b) {
627                                b.getUTCDate() || b.setUTCDate(d)
628                            }), d < this.dates[f])
629                            for (; f >= 0 && d < this.dates[f];) this.pickers[f--].setUTCDate(d);
630                        else if (d > this.dates[g])
631                            for (; h > g && d > this.dates[g];) this.pickers[g++].setUTCDate(d);
632                        this.updateDates(), delete this.updating
633                    }
634                }
635            }
636        },
637        remove: function() {
638            a.map(this.pickers, function(a) {
639                a.remove()
640            }), delete this.element.data().datepicker
641        }
642    };
643    var m = a.fn.datepicker,
644        n = function(c) {
645            var d = Array.apply(null, arguments);
646            d.shift();
647            var e;
648            if (this.each(function() {
649                    var b = a(this),
650                        f = b.data("datepicker"),
651                        g = "object" == typeof c && c;
652                    if (!f) {
653                        var j = h(this, "date"),
654                            m = a.extend({}, o, j, g),
655                            n = i(m.language),
656                            p = a.extend({}, o, n, j, g);
657                        b.hasClass("input-daterange") || p.inputs ? (a.extend(p, {
658                            inputs: p.inputs || b.find("input").toArray()
659                        }), f = new l(this, p)) : f = new k(this, p), b.data("datepicker", f)
660                    }
661                    "string" == typeof c && "function" == typeof f[c] && (e = f[c].apply(f, d))
662                }), e === b || e instanceof k || e instanceof l) return this;
663            if (this.length > 1) throw new Error("Using only allowed for the collection of a single element (" + c + " function)");
664            return e
665        };
666    a.fn.datepicker = n;
667    var o = a.fn.datepicker.defaults = {
668            assumeNearbyYear: !1,
669            autoclose: 1,
670            beforeShowDay: a.noop,
671            beforeShowMonth: a.noop,
672            beforeShowYear: a.noop,
673            beforeShowDecade: a.noop,
674            beforeShowCentury: a.noop,
675            calendarWeeks: !1,
676            clearBtn: !1,
677            toggleActive: !1,
678            daysOfWeekDisabled: [],
679            daysOfWeekHighlighted: [],
680            datesDisabled: [],
681            endDate: 1 / 0,
682            forceParse: !0,
683            format: "yyyy-mm-dd",
684            keyboardNavigation: !0,
685            language: "en",
686            minViewMode: 0,
687            maxViewMode: 4,
688            multidate: 1,
689            multidateSeparator: ",",
690            orientation: "auto",
691            rtl: !1,
692            startDate: -(1 / 0),
693            startView: 0,
694            todayBtn: !1,
695            todayHighlight: 1,
696            weekStart: 0,
697            disableTouchKeyboard: !1,
698            enableOnReadonly: !0,
699            showOnFocus: !0,
700            zIndexOffset: !0,
701            container: "body",
702            immediateUpdates: !1,
703            title: "",
704            templates: {
705                leftArrow: "&laquo;",
706                rightArrow: "&raquo;"
707            }
708        },
709        p = a.fn.datepicker.locale_opts = ["format", "rtl", "weekStart"];
710    a.fn.datepicker.Constructor = k;
711    var q = a.fn.datepicker.dates = {
712            en: {
713                days: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"],
714                daysShort: ["일", "월", "화", "수", "목", "금", "토"],
715                daysMin: ["일", "월", "화", "수", "목", "금", "토"],
716                months: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
717                monthsShort: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
718                today: "Today",
719                clear: "Clear",
720                titleFormat: "MM yyyy"
721            }
722        },
723        r = {
724            modes: [{
725                clsName: "days",
726                navFnc: "Month",
727                navStep: 1
728            }, {
729                clsName: "months",
730                navFnc: "FullYear",
731                navStep: 1
732            }, {
733                clsName: "years",
734                navFnc: "FullYear",
735                navStep: 10
736            }, {
737                clsName: "decades",
738                navFnc: "FullDecade",
739                navStep: 100
740            }, {
741                clsName: "centuries",
742                navFnc: "FullCentury",
743                navStep: 1e3
744            }],
745            isLeapYear: function(a) {
746                return a % 4 === 0 && a % 100 !== 0 || a % 400 === 0
747            },
748            getDaysInMonth: function(a, b) {
749                return [31, r.isLeapYear(a) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][b]
750            },
751            validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,
752            nonpunctuation: /[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,
753            parseFormat: function(a) {
754                if ("function" == typeof a.toValue && "function" == typeof a.toDisplay) return a;
755                var b = a.replace(this.validParts, "\x00").split("\x00"),
756                    c = a.match(this.validParts);
757                if (!b || !b.length || !c || 0 === c.length) throw new Error("Invalid date format.");
758                return {
759                    separators: b,
760                    parts: c
761                }
762            },
763            parseDate: function(e, f, g, h) {
764				
765                function i(a, b) {
766                    return b === !0 && (b = 10), 100 > a && (a += 2e3, a > (new Date).getFullYear() + b && (a -= 100)), a
767                }
768
769                function j() {
770                    var a = this.slice(0, s[n].length),
771                        b = s[n].slice(0, a.length);
772                    return a.toLowerCase() === b.toLowerCase()
773                }
774                if (!e) return b;
775                if (e instanceof Date) return e;
776                if ("string" == typeof f && (f = r.parseFormat(f)), f.toValue) return f.toValue(e, f, g);
777                var l, m, n, o, p = /([\-+]\d+)([dmwy])/,
778                    s = e.match(/([\-+]\d+)([dmwy])/g),
779                    t = {
780                        d: "moveDay",
781                        m: "moveMonth",
782                        w: "moveWeek",
783                        y: "moveYear"
784                    },
785                    u = {
786                        yesterday: "-1d",
787                        today: "+0d",
788                        tomorrow: "+1d"
789                    };
790                if (/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(e)) {
791                    for (e = new Date, n = 0; n < s.length; n++) l = p.exec(s[n]), m = parseInt(l[1]), o = t[l[2]], e = k.prototype[o](e, m);
792                    return c(e.getUTCFullYear(), e.getUTCMonth(), e.getUTCDate())
793                }
794                if ("undefined" != typeof u[e] && (e = u[e], s = e.match(/([\-+]\d+)([dmwy])/g), /^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(e))) {
795                    for (e = new Date, n = 0; n < s.length; n++) l = p.exec(s[n]), m = parseInt(l[1]), o = t[l[2]], e = k.prototype[o](e, m);
796                    return c(e.getUTCFullYear(), e.getUTCMonth(), e.getUTCDate())
797                }
798                s = e && e.match(this.nonpunctuation) || [], e = new Date;
799                var v, w, x = {},
800                    y = ["yyyy", "yy", "M", "MM", "m", "mm", "d", "dd"],
801                    z = {
802                        yyyy: function(a, b) {
803                            return a.setUTCFullYear(h ? i(b, h) : b)
804                        },
805                        yy: function(a, b) {
806                            return a.setUTCFullYear(h ? i(b, h) : b)
807                        },
808                        m: function(a, b) {
809                            if (isNaN(a)) return a;
810                            for (b -= 1; 0 > b;) b += 12;
811                            for (b %= 12, a.setUTCMonth(b); a.getUTCMonth() !== b;) a.setUTCDate(a.getUTCDate() - 1);
812                            return a
813                        },
814                        d: function(a, b) {
815                            return a.setUTCDate(b)
816                        }
817                    };
818                z.M = z.MM = z.mm = z.m, z.dd = z.d, e = d();
819                var A = f.parts.slice();
820                if (s.length !== A.length && (A = a(A).filter(function(b, c) {
821                        return -1 !== a.inArray(c, y)
822                    }).toArray()), s.length === A.length) {
823                    var B;
824                    for (n = 0, B = A.length; B > n; n++) {
825                        if (v = parseInt(s[n], 10), l = A[n], isNaN(v)) switch (l) {
826                            case "MM":
827                                w = a(q[g].months).filter(j), v = a.inArray(w[0], q[g].months) + 1;
828                                break;
829                            case "M":
830                                w = a(q[g].monthsShort).filter(j), v = a.inArray(w[0], q[g].monthsShort) + 1
831                        }
832                        x[l] = v
833                    }
834                    var C, D;
835                    for (n = 0; n < y.length; n++) D = y[n], D in x && !isNaN(x[D]) && (C = new Date(e), z[D](C, x[D]), isNaN(C) || (e = C))
836                }
837                return e
838            },
839            formatDate: function(b, c, d) {
840                if (!b) return "";
841                if ("string" == typeof c && (c = r.parseFormat(c)),
842                    c.toDisplay) return c.toDisplay(b, c, d);
843                var e = {
844                    d: b.getUTCDate(),
845                    D: q[d].daysShort[b.getUTCDay()],
846                    DD: q[d].days[b.getUTCDay()],
847                    m: b.getUTCMonth() + 1,
848                    M: q[d].monthsShort[b.getUTCMonth()],
849                    MM: q[d].months[b.getUTCMonth()],
850                    yy: b.getUTCFullYear().toString().substring(2),
851                    yyyy: b.getUTCFullYear()
852                };
853                e.dd = (e.d < 10 ? "0" : "") + e.d, e.mm = (e.m < 10 ? "0" : "") + e.m, b = [];
854                for (var f = a.extend([], c.separators), g = 0, h = c.parts.length; h >= g; g++) f.length && b.push(f.shift()), b.push(e[c.parts[g]]);
855                return b.join("")
856            },
857            headTemplate: '<thead><tr><th colspan="7" class="datepicker-title"></th></tr><tr><th class="prev">&laquo;</th><th colspan="5" class="datepicker-switch"></th><th class="next">&raquo;</th></tr></thead>',
858            contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>',
859            footTemplate: '<tfoot><tr><th colspan="7" class="today"></th></tr><tr><th colspan="7" class="clear"></th></tr></tfoot>'
860        };
861    r.template = '<div class="datepicker"><div class="datepicker-days"><table class="table-condensed">' + r.headTemplate + "<tbody></tbody>" + r.footTemplate + '</table></div><div class="datepicker-months"><table class="table-condensed">' + r.headTemplate + r.contTemplate + r.footTemplate + '</table></div><div class="datepicker-years"><table class="table-condensed">' + r.headTemplate + r.contTemplate + r.footTemplate + '</table></div><div class="datepicker-decades"><table class="table-condensed">' + r.headTemplate + r.contTemplate + r.footTemplate + '</table></div><div class="datepicker-centuries"><table class="table-condensed">' + r.headTemplate + r.contTemplate + r.footTemplate + "</table></div></div>", a.fn.datepicker.DPGlobal = r, a.fn.datepicker.noConflict = function() {
862        return a.fn.datepicker = m, this
863    }, a.fn.datepicker.version = "1.6.4", a(document).on("focus.datepicker.data-api click.datepicker.data-api", '[data-
863provide="datepicker"]', function(b) {
864        var c = a(this);
865        c.data("datepicker") || (b.preventDefault(), n.call(c, "show"))
866    }), a(function() {
867        n.call(a('[data-provide="datepicker-inline"]'))
868    })
869});

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.