!function (t, e, i) {
!function () {
var s, a, n, h = "2.2.3", o = "datepicker", r = ".datepicker-here", c = !1, d = '
'); t = "INPUT" == this.el.nodeName ? this.opts.inline ? i.insertAfter(this.$el) : a : i.appendTo(this.$el), this.$datepicker = e(d).appendTo(t), this.$content = e(".datepicker--content", this.$datepicker), this.$nav = e(".datepicker--nav", this.$datepicker) }, _triggerOnChange: function () { if (!this.selectedDates.length) { if ("" === this._prevOnSelectValue) return; return this._prevOnSelectValue = "", this.opts.onSelect("", "", this) } var t, e = this.selectedDates, i = n.getParsedDate(e[0]), s = this, a = new Date(i.year, i.month, i.date, i.hours, i.minutes); t = e.map(function (t) { return s.formatDate(s.loc.dateFormat, t) }).join(this.opts.multipleDatesSeparator), (this.opts.multipleDates || this.opts.range) && (a = e.map(function (t) { var e = n.getParsedDate(t); return new Date(e.year, e.month, e.date, e.hours, e.minutes) })), this._prevOnSelectValue = t, this.opts.onSelect(t, a, this) }, next: function () { var t = this.parsedDate, e = this.opts; switch (this.view) { case "days": this.date = new Date(t.year, t.month + 1, 1), e.onChangeMonth && e.onChangeMonth(this.parsedDate.month, this.parsedDate.year); break; case "months": this.date = new Date(t.year + 1, t.month, 1), e.onChangeYear && e.onChangeYear(this.parsedDate.year); break; case "years": this.date = new Date(t.year + 10, 0, 1), e.onChangeDecade && e.onChangeDecade(this.curDecade) } }, prev: function () { var t = this.parsedDate, e = this.opts; switch (this.view) { case "days": this.date = new Date(t.year, t.month - 1, 1), e.onChangeMonth && e.onChangeMonth(this.parsedDate.month, this.parsedDate.year); break; case "months": this.date = new Date(t.year - 1, t.month, 1), e.onChangeYear && e.onChangeYear(this.parsedDate.year); break; case "years": this.date = new Date(t.year - 10, 0, 1), e.onChangeDecade && e.onChangeDecade(this.curDecade) } }, formatDate: function (t, e) { e = e || this.date; var i, s = t, a = this._getWordBoundaryRegExp, h = this.loc, o = n.getLeadingZeroNum, r = n.getDecade(e), c = n.getParsedDate(e), d = c.fullHours, l = c.hours, u = t.match(a("aa")) || t.match(a("AA")), m = "am", p = this._replacer; switch (this.opts.timepicker && this.timepicker && u && (i = this.timepicker._getValidHoursFromDate(e, u), d = o(i.hours), l = i.hours, m = i.dayPeriod), !0) { case /@/.test(s): s = s.replace(/@/, e.getTime()); case /aa/.test(s): s = p(s, a("aa"), m); case /AA/.test(s): s = p(s, a("AA"), m.toUpperCase()); case /dd/.test(s): s = p(s, a("dd"), c.fullDate); case /d/.test(s): s = p(s, a("d"), c.date); case /DD/.test(s): s = p(s, a("DD"), h.days[c.day]); case /D/.test(s): s = p(s, a("D"), h.daysShort[c.day]); case /mm/.test(s): s = p(s, a("mm"), c.fullMonth); case /m/.test(s): s = p(s, a("m"), c.month + 1); case /MM/.test(s): s = p(s, a("MM"), this.loc.months[c.month]); case /M/.test(s): s = p(s, a("M"), h.monthsShort[c.month]); case /ii/.test(s): s = p(s, a("ii"), c.fullMinutes); case /i/.test(s): s = p(s, a("i"), c.minutes); case /hh/.test(s): s = p(s, a("hh"), d); case /h/.test(s): s = p(s, a("h"), l); case /yyyy/.test(s): s = p(s, a("yyyy"), c.year); case /yyyy1/.test(s): s = p(s, a("yyyy1"), r[0]); case /yyyy2/.test(s): s = p(s, a("yyyy2"), r[1]); case /yy/.test(s): s = p(s, a("yy"), c.year.toString().slice(-2)) }return s }, _replacer: function (t, e, i) { return t.replace(e, function (t, e, s, a) { return e + i + a }) }, _getWordBoundaryRegExp: function (t) { var e = "\\s|\\.|-|/|\\\\|,|\\$|\\!|\\?|:|;"; return new RegExp("(^|>|" + e + ")(" + t + ")($|<|" + e + ")", "g") }, selectDate: function (t) { var e = this, i = e.opts, s = e.parsedDate, a = e.selectedDates, h = a.length, o = ""; if (Array.isArray(t)) return void t.forEach(function (t) { e.selectDate(t) }); if (t instanceof Date) { if (this.lastSelectedDate = t, this.timepicker && this.timepicker._setTime(t), e._trigger("selectDate", t), this.timepicker && (t.setHours(this.timepicker.hours), t.setMinutes(this.timepicker.minutes)), "days" == e.view && t.getMonth() != s.month && i.moveToOtherMonthsOnSelect && (o = new Date(t.getFullYear(), t.getMonth(), 1)), "years" == e.view && t.getFullYear() != s.year && i.moveToOtherYearsOnSelect && (o = new Date(t.getFullYear(), 0, 1)), o && (e.silent = !0, e.date = o, e.silent = !1, e.nav._render()), i.multipleDates && !i.range) { if (h === i.multipleDates) return; e._isSelected(t) || e.selectedDates.push(t) } else i.range ? 2 == h ? (e.selectedDates = [t], e.minRange = t, e.maxRange = "") : 1 == h ? (e.selectedDates.push(t), e.maxRange ? e.minRange = t : e.maxRange = t, n.bigger(e.maxRange, e.minRange) && (e.maxRange = e.minRange, e.minRange = t), e.selectedDates = [e.minRange, e.maxRange]) : (e.selectedDates = [t], e.minRange = t) : e.selectedDates = [t]; e._setInputValue(), i.onSelect && e._triggerOnChange(), i.autoClose && !this.timepickerIsActive && (i.multipleDates || i.range ? i.range && 2 == e.selectedDates.length && e.hide() : e.hide()), e.views[this.currentView]._render() } }, removeDate: function (t) { var e = this.selectedDates, i = this; if (t instanceof Date) return e.some(function (s, a) { return n.isSame(s, t) ? (e.splice(a, 1), i.selectedDates.length ? i.lastSelectedDate = i.selectedDates[i.selectedDates.length - 1] : (i.minRange = "", i.maxRange = "", i.lastSelectedDate = ""), i.views[i.currentView]._render(), i._setInputValue(), i.opts.onSelect && i._triggerOnChange(), !0) : void 0 }) }, today: function () { this.silent = !0, this.view = this.opts.minView, this.silent = !1, this.date = new Date, this.opts.todayButton instanceof Date && this.selectDate(this.opts.todayButton) }, clear: function () { this.selectedDates = [], this.minRange = "", this.maxRange = "", this.views[this.currentView]._render(), this._setInputValue(), this.opts.onSelect && this._triggerOnChange() }, update: function (t, i) { var s = arguments.length, a = this.lastSelectedDate; return 2 == s ? this.opts[t] = i : 1 == s && "object" == typeof t && (this.opts = e.extend(!0, this.opts, t)), this._createShortCuts(), this._syncWithMinMaxDates(), this._defineLocale(this.opts.language), this.nav._addButtonsIfNeed(), this.opts.onlyTimepicker || this.nav._render(), this.views[this.currentView]._render(), this.elIsInput && !this.opts.inline && (this._setPositionClasses(this.opts.position), this.visible && this.setPosition(this.opts.position)), this.opts.classes && this.$datepicker.addClass(this.opts.classes), this.opts.onlyTimepicker && this.$datepicker.addClass("-only-timepicker-"), this.opts.timepicker && (a && this.timepicker._handleDate(a), this.timepicker._updateRanges(), this.timepicker._updateCurrentTime(), a && (a.setHours(this.timepicker.hours), a.setMinutes(this.timepicker.minutes))), this._setInputValue(), this }, _syncWithMinMaxDates: function () { var t = this.date.getTime(); this.silent = !0, this.minTime > t && (this.date = this.minDate), this.maxTime < t && (this.date = this.maxDate), this.silent = !1 }, _isSelected: function (t, e) { var i = !1; return this.selectedDates.some(function (s) { return n.isSame(s, t, e) ? (i = s, !0) : void 0 }), i }, _setInputValue: function () { var t, e = this, i = e.opts, s = e.loc.dateFormat, a = i.altFieldDateFormat, n = e.selectedDates.map(function (t) { return e.formatDate(s, t) }); i.altField && e.$altField.length && (t = this.selectedDates.map(function (t) { return e.formatDate(a, t) }), t = t.join(this.opts.multipleDatesSeparator), this.$altField.val(t)), n = n.join(this.opts.multipleDatesSeparator), this.$el.val(n) }, _isInRange: function (t, e) { var i = t.getTime(), s = n.getParsedDate(t), a = n.getParsedDate(this.minDate), h = n.getParsedDate(this.maxDate), o = new Date(s.year, s.month, a.date).getTime(), r = new Date(s.year, s.month, h.date).getTime(), c = { day: i >= this.minTime && i <= this.maxTime, month: o >= this.minTime && r <= this.maxTime, year: s.year >= a.year && s.year <= h.year }; return e ? c[e] : c.day }, _getDimensions: function (t) { var e = t.offset(); return { width: t.outerWidth(), height: t.outerHeight(), left: e.left, top: e.top } }, _getDateFromCell: function (t) { var e = this.parsedDate, s = t.data("year") || e.year, a = t.data("month") == i ? e.month : t.data("month"), n = t.data("date") || 1; return new Date(s, a, n) }, _setPositionClasses: function (t) { t = t.split(" "); var e = t[0], i = t[1], s = "datepicker -" + e + "-" + i + "- -from-" + e + "-"; this.visible && (s += " active"), this.$datepicker.removeAttr("class").addClass(s) }, setPosition: function (t) { t = t || this.opts.position; var e, i, s = this._getDimensions(this.$el), a = this._getDimensions(this.$datepicker), n = t.split(" "), h = this.opts.offset, o = n[0], r = n[1]; switch (o) { case "top": e = s.top - a.height - h; break; case "right": i = s.left + s.width + h; break; case "bottom": e = s.top + s.height + h; break; case "left": i = s.left - a.width - h }switch (r) { case "top": e = s.top; break; case "right": i = s.left + s.width - a.width; break; case "bottom": e = s.top + s.height - a.height; break; case "left": i = s.left; break; case "center": /left|right/.test(o) ? e = s.top + s.height / 2 - a.height / 2 : i = s.left + s.width / 2 - a.width / 2 }this.$datepicker.css({ left: i, top: e }) }, show: function () { var t = this.opts.onShow; this.setPosition(this.opts.position), this.$datepicker.addClass("active"), this.visible = !0, t && this._bindVisionEvents(t) }, hide: function () { var t = this.opts.onHide; this.$datepicker.removeClass("active").css({ left: "-100000px" }), this.focused = "", this.keys = [], this.inFocus = !1, this.visible = !1, this.$el.blur(), t && this._bindVisionEvents(t) }, down: function (t) { this._changeView(t, "down") }, up: function (t) { this._changeView(t, "up") }, _bindVisionEvents: function (t) { this.$datepicker.off("transitionend.dp"), t(this, !1), this.$datepicker.one("transitionend.dp", t.bind(this, this, !0)) }, _changeView: function (t, e) { t = t || this.focused || this.date; var i = "up" == e ? this.viewIndex + 1 : this.viewIndex - 1; i > 2 && (i = 2), 0 > i && (i = 0), this.silent = !0, this.date = new Date(t.getFullYear(), t.getMonth(), 1), this.silent = !1, this.view = this.viewIndexes[i] }, _handleHotKey: function (t) { var e, i, s, a = n.getParsedDate(this._getFocusedDate()), h = this.opts, o = !1, r = !1, c = !1, d = a.year, l = a.month, u = a.date; switch (t) { case "ctrlRight": case "ctrlUp": l += 1, o = !0; break; case "ctrlLeft": case "ctrlDown": l -= 1, o = !0; break; case "shiftRight": case "shiftUp": r = !0, d += 1; break; case "shiftLeft": case "shiftDown": r = !0, d -= 1; break; case "altRight": case "altUp": c = !0, d += 10; break; case "altLeft": case "altDown": c = !0, d -= 10; break; case "ctrlShiftUp": this.up() }s = n.getDaysCount(new Date(d, l)), i = new Date(d, l, u), u > s && (u = s), i.getTime() < this.minTime ? i = this.minDate : i.getTime() > this.maxTime && (i = this.maxDate), this.focused = i, e = n.getParsedDate(i), o && h.onChangeMonth && h.onChangeMonth(e.month, e.year), r && h.onChangeYear && h.onChangeYear(e.year), c && h.onChangeDecade && h.onChangeDecade(this.curDecade) }, _registerKey: function (t) { var e = this.keys.some(function (e) { return e == t }); e || this.keys.push(t) }, _unRegisterKey: function (t) { var e = this.keys.indexOf(t); this.keys.splice(e, 1) }, _isHotKeyPressed: function () { var t, e = !1, i = this, s = this.keys.sort(); for (var a in u) t = u[a], s.length == t.length && t.every(function (t, e) { return t == s[e] }) && (i._trigger("hotKey", a), e = !0); return e }, _trigger: function (t, e) { this.$el.trigger(t, e) }, _focusNextCell: function (t, e) { e = e || this.cellType; var i = n.getParsedDate(this._getFocusedDate()), s = i.year, a = i.month, h = i.date; if (!this._isHotKeyPressed()) { switch (t) { case 37: "day" == e ? h -= 1 : "", "month" == e ? a -= 1 : "", "year" == e ? s -= 1 : ""; break; case 38: "day" == e ? h -= 7 : "", "month" == e ? a -= 3 : "", "year" == e ? s -= 4 : ""; break; case 39: "day" == e ? h += 1 : "", "month" == e ? a += 1 : "", "year" == e ? s += 1 : ""; break; case 40: "day" == e ? h += 7 : "", "month" == e ? a += 3 : "", "year" == e ? s += 4 : "" }var o = new Date(s, a, h); o.getTime() < this.minTime ? o = this.minDate : o.getTime() > this.maxTime && (o = this.maxDate), this.focused = o } }, _getFocusedDate: function () { var t = this.focused || this.selectedDates[this.selectedDates.length - 1], e = this.parsedDate; if (!t) switch (this.view) { case "days": t = new Date(e.year, e.month, (new Date).getDate()); break; case "months": t = new Date(e.year, e.month, 1); break; case "years": t = new Date(e.year, 0, 1) }return t }, _getCell: function (t, i) { i = i || this.cellType; var s, a = n.getParsedDate(t), h = '.datepicker--cell[data-year="' + a.year + '"]'; switch (i) { case "month": h = '[data-month="' + a.month + '"]'; break; case "day": h += '[data-month="' + a.month + '"][data-date="' + a.date + '"]' }return s = this.views[this.currentView].$el.find(h), s.length ? s : e("") }, destroy: function () { var t = this; t.$el.off(".adp").data("datepicker", ""), t.selectedDates = [], t.focused = "", t.views = {}, t.keys = [], t.minRange = "", t.maxRange = "", t.opts.inline || !t.elIsInput ? t.$datepicker.closest(".datepicker-inline").remove() : t.$datepicker.remove() }, _handleAlreadySelectedDates: function (t, e) { this.opts.range ? this.opts.toggleSelected ? this.removeDate(e) : 2 != this.selectedDates.length && this._trigger("clickCell", e) : this.opts.toggleSelected && this.removeDate(e), this.opts.toggleSelected || (this.lastSelectedDate = t, this.opts.timepicker && (this.timepicker._setTime(t), this.timepicker.update())) }, _onShowEvent: function (t) { this.visible || this.show() }, _onBlur: function () { !this.inFocus && this.visible && this.hide() }, _onMouseDownDatepicker: function (t) { this.inFocus = !0 }, _onMouseUpDatepicker: function (t) { this.inFocus = !1, t.originalEvent.inFocus = !0, t.originalEvent.timepickerFocus || this.$el.focus() }, _onKeyUpGeneral: function (t) { var e = this.$el.val(); e || this.clear() }, _onResize: function () { this.visible && this.setPosition() }, _onMouseUpBody: function (t) { t.originalEvent.inFocus || this.visible && !this.inFocus && this.hide() }, _onMouseUpEl: function (t) { t.originalEvent.inFocus = !0, setTimeout(this._onKeyUpGeneral.bind(this), 4) }, _onKeyDown: function (t) { var e = t.which; if (this._registerKey(e), e >= 37 && 40 >= e && (t.preventDefault(), this._focusNextCell(e)), 13 == e && this.focused) { if (this._getCell(this.focused).hasClass("-disabled-")) return; if (this.view != this.opts.minView) this.down(); else { var i = this._isSelected(this.focused, this.cellType); if (!i) return this.timepicker && (this.focused.setHours(this.timepicker.hours), this.focused.setMinutes(this.timepicker.minutes)), void this.selectDate(this.focused); this._handleAlreadySelectedDates(i, this.focused) } } 27 == e && this.hide() }, _onKeyUp: function (t) { var e = t.which; this._unRegisterKey(e) }, _onHotKey: function (t, e) { this._handleHotKey(e) }, _onMouseEnterCell: function (t) { var i = e(t.target).closest(".datepicker--cell"), s = this._getDateFromCell(i); this.silent = !0, this.focused && (this.focused = ""), i.addClass("-focus-"), this.focused = s, this.silent = !1, this.opts.range && 1 == this.selectedDates.length && (this.minRange = this.selectedDates[0], this.maxRange = "", n.less(this.minRange, this.focused) && (this.maxRange = this.minRange, this.minRange = ""), this.views[this.currentView]._update()) }, _onMouseLeaveCell: function (t) { var i = e(t.target).closest(".datepicker--cell"); i.removeClass("-focus-"), this.silent = !0, this.focused = "", this.silent = !1 }, _onTimeChange: function (t, e, i) { var s = new Date, a = this.selectedDates, n = !1; a.length && (n = !0, s = this.lastSelectedDate), s.setHours(e), s.setMinutes(i), n || this._getCell(s).hasClass("-disabled-") ? (this._setInputValue(), this.opts.onSelect && this._triggerOnChange()) : this.selectDate(s) }, _onClickCell: function (t, e) { this.timepicker && (e.setHours(this.timepicker.hours), e.setMinutes(this.timepicker.minutes)), this.selectDate(e) }, set focused(t) { if (!t && this.focused) { var e = this._getCell(this.focused); e.length && e.removeClass("-focus-") } this._focused = t, this.opts.range && 1 == this.selectedDates.length && (this.minRange = this.selectedDates[0], this.maxRange = "", n.less(this.minRange, this._focused) && (this.maxRange = this.minRange, this.minRange = "")), this.silent || (this.date = t) }, get focused() { return this._focused }, get parsedDate() { return n.getParsedDate(this.date) }, set date(t) { return t instanceof Date ? (this.currentDate = t, this.inited && !this.silent && (this.views[this.view]._render(), this.nav._render(), this.visible && this.elIsInput && this.setPosition()), t) : void 0 }, get date() { return this.currentDate }, set view(t) { return this.viewIndex = this.viewIndexes.indexOf(t), this.viewIndex < 0 ? void 0 : (this.prevView = this.currentView, this.currentView = t, this.inited && (this.views[t] ? this.views[t]._render() : this.views[t] = new e.fn.datepicker.Body(this, t, this.opts), this.views[this.prevView].hide(), this.views[t].show(), this.nav._render(), this.opts.onChangeView && this.opts.onChangeView(t), this.elIsInput && this.visible && this.setPosition()), t) }, get view() { return this.currentView }, get cellType() { return this.view.substring(0, this.view.length - 1) }, get minTime() { var t = n.getParsedDate(this.minDate); return new Date(t.year, t.month, t.date).getTime() }, get maxTime() { var t = n.getParsedDate(this.maxDate); return new Date(t.year, t.month, t.date).getTime() }, get curDecade() { return n.getDecade(this.date) } }, n.getDaysCount = function (t) { return new Date(t.getFullYear(), t.getMonth() + 1, 0).getDate() }, n.getParsedDate = function (t) { return { year: t.getFullYear(), month: t.getMonth(), fullMonth: t.getMonth() + 1 < 10 ? "0" + (t.getMonth() + 1) : t.getMonth() + 1, date: t.getDate(), fullDate: t.getDate() < 10 ? "0" + t.getDate() : t.getDate(), day: t.getDay(), hours: t.getHours(), fullHours: t.getHours() < 10 ? "0" + t.getHours() : t.getHours(), minutes: t.getMinutes(), fullMinutes: t.getMinutes() < 10 ? "0" + t.getMinutes() : t.getMinutes() } }, n.getDecade = function (t) { var e = 10 * Math.floor(t.getFullYear() / 10); return [e, e + 9] }, n.template = function (t, e) { return t.replace(/#\{([\w]+)\}/g, function (t, i) { return e[i] || 0 === e[i] ? e[i] : void 0 }) }, n.isSame = function (t, e, i) { if (!t || !e) return !1; var s = n.getParsedDate(t), a = n.getParsedDate(e), h = i ? i : "day", o = { day: s.date == a.date && s.month == a.month && s.year == a.year, month: s.month == a.month && s.year == a.year, year: s.year == a.year }; return o[h] }, n.less = function (t, e, i) { return t && e ? e.getTime() < t.getTime() : !1 }, n.bigger = function (t, e, i) { return t && e ? e.getTime() > t.getTime() : !1 }, n.getLeadingZeroNum = function (t) { return parseInt(t) < 10 ? "0" + t : t }, n.resetTime = function (t) { return "object" == typeof t ? (t = n.getParsedDate(t), new Date(t.year, t.month, t.date)) : void 0 }, e.fn.datepicker = function (t) { return this.each(function () { if (e.data(this, o)) { var i = e.data(this, o); i.opts = e.extend(!0, i.opts, t), i.update() } else e.data(this, o, new m(this, t)) }) }, e.fn.datepicker.Constructor = m, e.fn.datepicker.language = {
ru: {
days: ["Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota"],
daysShort: ["Nie", "Pon", "Wto", "Śro", "Czw", "Pią", "Sob"],
daysMin: ["Nd", "Pn", "Wt", "Śr", "Czw", "Pt", "So"],
months: ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"],
monthsShort: ["Sty", "Lut", "Mar", "Kwi", "Maj", "Cze", "Lip", "Sie", "Wrz", "Paź", "Lis", "Gru"],
today: "Dzisiaj",
clear: "Wyczyść", dateFormat: "dd.mm.yyyy", timeFormat: "hh:ii", firstDay: 1
}
}, e(function () { e(r).datepicker() })
}(), function () { var t = { days: '
', months: '
', years: '
' }, s = e.fn.datepicker, a = s.Constructor; s.Body = function (t, i, s) { this.d = t, this.type = i, this.opts = s, this.$el = e(""), this.opts.onlyTimepicker || this.init() }, s.Body.prototype = { init: function () { this._buildBaseHtml(), this._render(), this._bindEvents() }, _bindEvents: function () { this.$el.on("click", ".datepicker--cell", e.proxy(this._onClickCell, this)) }, _buildBaseHtml: function () { this.$el = e(t[this.type]).appendTo(this.d.$content), this.$names = e(".datepicker--days-names", this.$el), this.$cells = e(".datepicker--cells", this.$el) }, _getDayNamesHtml: function (t, e, s, a) { return e = e != i ? e : t, s = s ? s : "", a = a != i ? a : 0, a > 7 ? s : 7 == e ? this._getDayNamesHtml(t, 0, s, ++a) : (s += '
' + this.d.loc.daysMin[e] + "
", this._getDayNamesHtml(t, ++e, s, ++a)) }, _getCellContents: function (t, e) { var i = "datepicker--cell datepicker--cell-" + e, s = new Date, n = this.d, h = a.resetTime(n.minRange), o = a.resetTime(n.maxRange), r = n.opts, c = a.getParsedDate(t), d = {}, l = c.date; switch (e) { case "day": n.isWeekend(c.day) && (i += " -weekend-"), c.month != this.d.parsedDate.month && (i += " -other-month-", r.selectOtherMonths || (i += " -disabled-"), r.showOtherMonths || (l = "")); break; case "month": l = n.loc[n.opts.monthsField][c.month]; break; case "year": var u = n.curDecade; l = c.year, (c.year < u[0] || c.year > u[1]) && (i += " -other-decade-", r.selectOtherYears || (i += " -disabled-"), r.showOtherYears || (l = "")) }return r.onRenderCell && (d = r.onRenderCell(t, e) || {}, l = d.html ? d.html : l, i += d.classes ? " " + d.classes : ""), r.range && (a.isSame(h, t, e) && (i += " -range-from-"), a.isSame(o, t, e) && (i += " -range-to-"), 1 == n.selectedDates.length && n.focused ? ((a.bigger(h, t) && a.less(n.focused, t) || a.less(o, t) && a.bigger(n.focused, t)) && (i += " -in-range-"), a.less(o, t) && a.isSame(n.focused, t) && (i += " -range-from-"), a.bigger(h, t) && a.isSame(n.focused, t) && (i += " -range-to-")) : 2 == n.selectedDates.length && a.bigger(h, t) && a.less(o, t) && (i += " -in-range-")), a.isSame(s, t, e) && (i += " -current-"), n.focused && a.isSame(t, n.focused, e) && (i += " -focus-"), n._isSelected(t, e) && (i += " -selected-"), (!n._isInRange(t, e) || d.disabled) && (i += " -disabled-"), { html: l, classes: i } }, _getDaysHtml: function (t) { var e = a.getDaysCount(t), i = new Date(t.getFullYear(), t.getMonth(), 1).getDay(), s = new Date(t.getFullYear(), t.getMonth(), e).getDay(), n = i - this.d.loc.firstDay, h = 6 - s + this.d.loc.firstDay; n = 0 > n ? n + 7 : n, h = h > 6 ? h - 7 : h; for (var o, r, c = -n + 1, d = "", l = c, u = e + h; u >= l; l++)r = t.getFullYear(), o = t.getMonth(), d += this._getDayHtml(new Date(r, o, l)); return d }, _getDayHtml: function (t) { var e = this._getCellContents(t, "day"); return '
' + e.html + "
" }, _getMonthsHtml: function (t) { for (var e = "", i = a.getParsedDate(t), s = 0; 12 > s;)e += this._getMonthHtml(new Date(i.year, s)), s++; return e }, _getMonthHtml: function (t) { var e = this._getCellContents(t, "month"); return '
' + e.html + "
" }, _getYearsHtml: function (t) { var e = (a.getParsedDate(t), a.getDecade(t)), i = e[0] - 1, s = "", n = i; for (n; n <= e[1] + 1; n++)s += this._getYearHtml(new Date(n, 0)); return s }, _getYearHtml: function (t) { var e = this._getCellContents(t, "year"); return '
' + e.html + "
" }, _renderTypes: { days: function () { var t = this._getDayNamesHtml(this.d.loc.firstDay), e = this._getDaysHtml(this.d.currentDate); this.$cells.html(e), this.$names.html(t) }, months: function () { var t = this._getMonthsHtml(this.d.currentDate); this.$cells.html(t) }, years: function () { var t = this._getYearsHtml(this.d.currentDate); this.$cells.html(t) } }, _render: function () { this.opts.onlyTimepicker || this._renderTypes[this.type].bind(this)() }, _update: function () { var t, i, s, a = e(".datepicker--cell", this.$cells), n = this; a.each(function (a, h) { i = e(this), s = n.d._getDateFromCell(e(this)), t = n._getCellContents(s, n.d.cellType), i.attr("class", t.classes) }) }, show: function () { this.opts.onlyTimepicker || (this.$el.addClass("active"), this.acitve = !0) }, hide: function () { this.$el.removeClass("active"), this.active = !1 }, _handleClick: function (t) { var e = t.data("date") || 1, i = t.data("month") || 0, s = t.data("year") || this.d.parsedDate.year, a = this.d; if (a.view != this.opts.minView) return void a.down(new Date(s, i, e)); var n = new Date(s, i, e), h = this.d._isSelected(n, this.d.cellType); return h ? void a._handleAlreadySelectedDates.bind(a, h, n)() : void a._trigger("clickCell", n) }, _onClickCell: function (t) { var i = e(t.target).closest(".datepicker--cell"); i.hasClass("-disabled-") || this._handleClick.bind(this)(i) } } }(), function () { var t = '
#{prevHtml}
#{title}
#{nextHtml}
', i = '
', s = '
#{label}', a = e.fn.datepicker, n = a.Constructor; a.Navigation = function (t, e) { this.d = t, this.opts = e, this.$buttonsContainer = "", this.init() }, a.Navigation.prototype = { init: function () { this._buildBaseHtml(), this._bindEvents() }, _bindEvents: function () { this.d.$nav.on("click", ".datepicker--nav-action", e.proxy(this._onClickNavButton, this)), this.d.$nav.on("click", ".datepicker--nav-title", e.proxy(this._onClickNavTitle, this)), this.d.$datepicker.on("click", ".datepicker--button", e.proxy(this._onClickNavButton, this)) }, _buildBaseHtml: function () { this.opts.onlyTimepicker || this._render(), this._addButtonsIfNeed() }, _addButtonsIfNeed: function () { this.opts.todayButton && this._addButton("today"), this.opts.clearButton && this._addButton("clear") }, _render: function () { var i = this._getTitle(this.d.currentDate), s = n.template(t, e.extend({ title: i }, this.opts)); this.d.$nav.html(s), "years" == this.d.view && e(".datepicker--nav-title", this.d.$nav).addClass("-disabled-"), this.setNavStatus() }, _getTitle: function (t) { return this.d.formatDate(this.opts.navTitles[this.d.view], t) }, _addButton: function (t) { this.$buttonsContainer.length || this._addButtonsContainer(); var i = { action: t, label: this.d.loc[t] }, a = n.template(s, i); e("[data-action=" + t + "]", this.$buttonsContainer).length || this.$buttonsContainer.append(a) }, _addButtonsContainer: function () { this.d.$datepicker.append(i), this.$buttonsContainer = e(".datepicker--buttons", this.d.$datepicker) }, setNavStatus: function () { if ((this.opts.minDate || this.opts.maxDate) && this.opts.disableNavWhenOutOfRange) { var t = this.d.parsedDate, e = t.month, i = t.year, s = t.date; switch (this.d.view) { case "days": this.d._isInRange(new Date(i, e - 1, 1), "month") || this._disableNav("prev"), this.d._isInRange(new Date(i, e + 1, 1), "month") || this._disableNav("next"); break; case "months": this.d._isInRange(new Date(i - 1, e, s), "year") || this._disableNav("prev"), this.d._isInRange(new Date(i + 1, e, s), "year") || this._disableNav("next"); break; case "years": var a = n.getDecade(this.d.date); this.d._isInRange(new Date(a[0] - 1, 0, 1), "year") || this._disableNav("prev"), this.d._isInRange(new Date(a[1] + 1, 0, 1), "year") || this._disableNav("next") } } }, _disableNav: function (t) { e('[data-action="' + t + '"]', this.d.$nav).addClass("-disabled-") }, _activateNav: function (t) { e('[data-action="' + t + '"]', this.d.$nav).removeClass("-disabled-") }, _onClickNavButton: function (t) { var i = e(t.target).closest("[data-action]"), s = i.data("action"); this.d[s]() }, _onClickNavTitle: function (t) { return e(t.target).hasClass("-disabled-") ? void 0 : "days" == this.d.view ? this.d.view = "months" : void (this.d.view = "years") } } }(), function () {
var t = '
#{hourVisible} : #{minValue}
', i = e.fn.datepicker, s = i.Constructor; i.Timepicker = function (t, e) { this.d = t, this.opts = e, this.init() }, i.Timepicker.prototype = {
init: function () { var t = "input"; this._setTime(this.d.date), this._buildHTML(), navigator.userAgent.match(/trident/gi) && (t = "change"), this.d.$el.on("selectDate", this._onSelectDate.bind(this)), this.$ranges.on(t, this._onChangeRange.bind(this)), this.$ranges.on("mouseup", this._onMouseUpRange.bind(this)), this.$ranges.on("mousemove focus ", this._onMouseEnterRange.bind(this)), this.$ranges.on("mouseout blur", this._onMouseOutRange.bind(this)) }, _setTime: function (t) { var e = s.getParsedDate(t); this._handleDate(t), this.hours = e.hours < this.minHours ? this.minHours : e.hours, this.minutes = e.minutes < this.minMinutes ? this.minMinutes : e.minutes }, _setMinTimeFromDate: function (t) { this.minHours = t.getHours(), this.minMinutes = t.getMinutes(), this.d.lastSelectedDate && this.d.lastSelectedDate.getHours() > t.getHours() && (this.minMinutes = this.opts.minMinutes) }, _setMaxTimeFromDate: function (t) {
this.maxHours = t.getHours(), this.maxMinutes = t.getMinutes(), this.d.lastSelectedDate && this.d.lastSelectedDate.getHours() < t.getHours() && (this.maxMinutes = this.opts.maxMinutes)
}, _setDefaultMinMaxTime: function () { var t = 23, e = 59, i = this.opts; this.minHours = i.minHours < 0 || i.minHours > t ? 0 : i.minHours, this.minMinutes = i.minMinutes < 0 || i.minMinutes > e ? 0 : i.minMinutes, this.maxHours = i.maxHours < 0 || i.maxHours > t ? t : i.maxHours, this.maxMinutes = i.maxMinutes < 0 || i.maxMinutes > e ? e : i.maxMinutes }, _validateHoursMinutes: function (t) { this.hours < this.minHours ? this.hours = this.minHours : this.hours > this.maxHours && (this.hours = this.maxHours), this.minutes < this.minMinutes ? this.minutes = this.minMinutes : this.minutes > this.maxMinutes && (this.minutes = this.maxMinutes) }, _buildHTML: function () { var i = s.getLeadingZeroNum, a = { hourMin: this.minHours, hourMax: i(this.maxHours), hourStep: this.opts.hoursStep, hourValue: this.hours, hourVisible: i(this.displayHours), minMin: this.minMinutes, minMax: i(this.maxMinutes), minStep: this.opts.minutesStep, minValue: i(this.minutes) }, n = s.template(t, a); this.$timepicker = e(n).appendTo(this.d.$datepicker), this.$ranges = e('[type="range"]', this.$timepicker), this.$hours = e('[name="hours"]', this.$timepicker), this.$minutes = e('[name="minutes"]', this.$timepicker), this.$hoursText = e(".datepicker--time-current-hours", this.$timepicker), this.$minutesText = e(".datepicker--time-current-minutes", this.$timepicker), this.d.ampm && (this.$ampm = e('
').appendTo(e(".datepicker--time-current", this.$timepicker)).html(this.dayPeriod), this.$timepicker.addClass("-am-pm-")) }, _updateCurrentTime: function () { var t = s.getLeadingZeroNum(this.displayHours), e = s.getLeadingZeroNum(this.minutes); this.$hoursText.html(t), this.$minutesText.html(e), this.d.ampm && this.$ampm.html(this.dayPeriod) }, _updateRanges: function () { this.$hours.attr({ min: this.minHours, max: this.maxHours }).val(this.hours), this.$minutes.attr({ min: this.minMinutes, max: this.maxMinutes }).val(this.minutes) }, _handleDate: function (t) { this._setDefaultMinMaxTime(), t && (s.isSame(t, this.d.opts.minDate) ? this._setMinTimeFromDate(this.d.opts.minDate) : s.isSame(t, this.d.opts.maxDate) && this._setMaxTimeFromDate(this.d.opts.maxDate)), this._validateHoursMinutes(t) }, update: function () { this._updateRanges(), this._updateCurrentTime() }, _getValidHoursFromDate: function (t, e) { var i = t, a = t; t instanceof Date && (i = s.getParsedDate(t), a = i.hours); var n = e || this.d.ampm, h = "am"; if (n) switch (!0) { case 0 == a: a = 12; break; case 12 == a: h = "pm"; break; case a > 11: a -= 12, h = "pm" }return { hours: a, dayPeriod: h } }, set hours(t) { this._hours = t; var e = this._getValidHoursFromDate(t); this.displayHours = e.hours, this.dayPeriod = e.dayPeriod }, get hours() { return this._hours }, _onChangeRange: function (t) { var i = e(t.target), s = i.attr("name"); this.d.timepickerIsActive = !0, this[s] = i.val(), this._updateCurrentTime(), this.d._trigger("timeChange", [this.hours, this.minutes]), this._handleDate(this.d.lastSelectedDate), this.update() }, _onSelectDate: function (t, e) { this._handleDate(e), this.update() }, _onMouseEnterRange: function (t) { var i = e(t.target).attr("name"); e(".datepicker--time-current-" + i, this.$timepicker).addClass("-focus-") }, _onMouseOutRange: function (t) { var i = e(t.target).attr("name"); this.d.inFocus || e(".datepicker--time-current-" + i, this.$timepicker).removeClass("-focus-") }, _onMouseUpRange: function (t) { this.d.timepickerIsActive = !1 }
}
}()
}(window, jQuery);