! function(e) { if (! ("indexOf" in Array.prototype)) { Array.prototype.indexOf = function(k, j) { if (j === undefined) { j = 0 } if (j < 0) { j += this.length } if (j < 0) { j = 0 } for (var l = this.length; j < l; j++) { if (j in this && this[j] === k) { return j } } return - 1 } } function b(k) { var j = e(k); var i = j.add(j.parents()); var l = false; i.each(function() { if (e(this).css("position") === "fixed") { l = true; return false } }); return l } function h() { return new Date(Date.UTC.apply(Date, arguments)) } function c() { var i = new Date(); return h(i.getUTCFullYear(), i.getUTCMonth(), i.getUTCDate(), i.getUTCHours(), i.getUTCMinutes(), i.getUTCSeconds(), 0) } var g = function(k, j) { var m = this; this.element = e(k); this.container = j.container || "body"; this.language = j.language || this.element.data("date-language") || "en"; this.language = this.language in f ? this.language: this.language.split("-")[0]; this.language = this.language in f ? this.language: "en"; this.isRTL = f[this.language].rtl || false; this.formatType = j.formatType || this.element.data("format-type") || "standard"; this.format = d.parseFormat(j.format || this.element.data("date-format") || f[this.language].format || d.getDefaultFormat(this.formatType, "input"), this.formatType); this.isInline = false; this.isVisible = false; this.isInput = this.element.is("input"); this.fontAwesome = j.fontAwesome || this.element.data("font-awesome") || false; this.bootcssVer = j.bootcssVer || (this.isInput ? (this.element.is(".form-control") ? 3: 2) : (this.bootcssVer = this.element.is(".input-group") ? 3: 2)); this.component = this.element.is(".date") ? (this.bootcssVer == 3 ? this.element.find(".input-group-addon .glyphicon-th, .input-group-addon .glyphicon-time, .input-group-addon .glyphicon-calendar, .input-group-addon .glyphicon-calendar, .input-group-addon .fa-calendar, .input-group-addon .fa-clock-o").parent() : this.element.find(".add-on .icon-th, .add-on .icon-time, .add-on .icon-calendar .fa-calendar .fa-clock-o").parent()) : false; this.componentReset = this.element.is(".date") ? (this.bootcssVer == 3 ? this.element.find(".input-group-addon .glyphicon-remove, .input-group-addon .fa-times").parent() : this.element.find(".add-on .icon-remove, .add-on .fa-times").parent()) : false; this.hasInput = this.component && this.element.find("input").length; if (this.component && this.component.length === 0) { this.component = false } this.linkField = j.linkField || this.element.data("link-field") || false; this.linkFormat = d.parseFormat(j.linkFormat || this.element.data("link-format") || d.getDefaultFormat(this.formatType, "link"), this.formatType); this.minuteStep = j.minuteStep || this.element.data("minute-step") || 5; this.pickerPosition = j.pickerPosition || this.element.data("picker-position") || "bottom-right"; this.showMeridian = j.showMeridian || this.element.data("show-meridian") || false; this.initialDate = j.initialDate || new Date(); this.zIndex = j.zIndex || this.element.data("z-index") || undefined; this.icons = { leftArrow: this.fontAwesome ? "fa-arrow-left": (this.bootcssVer === 3 ? "glyphicon-arrow-left": "icon-arrow-left"), rightArrow: this.fontAwesome ? "fa-arrow-right": (this.bootcssVer === 3 ? "glyphicon-arrow-right": "icon-arrow-right") }; this.icontype = this.fontAwesome ? "fa": "glyphicon"; this._attachEvents(); this.clickedOutside = function(n) { if (e(n.target).closest(".datetimepicker").length === 0) { m.hide() } }; this.formatViewType = "datetime"; if ("formatViewType" in j) { this.formatViewType = j.formatViewType } else { if ("formatViewType" in this.element.data()) { this.formatViewType = this.element.data("formatViewType") } } this.minView = 0; if ("minView" in j) { this.minView = j.minView } else { if ("minView" in this.element.data()) { this.minView = this.element.data("min-view") } } this.minView = d.convertViewMode(this.minView); this.maxView = d.modes.length - 1; if ("maxView" in j) { this.maxView = j.maxView } else { if ("maxView" in this.element.data()) { this.maxView = this.element.data("max-view") } } this.maxView = d.convertViewMode(this.maxView); this.wheelViewModeNavigation = false; if ("wheelViewModeNavigation" in j) { this.wheelViewModeNavigation = j.wheelViewModeNavigation } else { if ("wheelViewModeNavigation" in this.element.data()) { this.wheelViewModeNavigation = this.element.data("view-mode-wheel-navigation") } } this.wheelViewModeNavigationInverseDirection = false; if ("wheelViewModeNavigationInverseDirection" in j) { this.wheelViewModeNavigationInverseDirection = j.wheelViewModeNavigationInverseDirection } else { if ("wheelViewModeNavigationInverseDirection" in this.element.data()) { this.wheelViewModeNavigationInverseDirection = this.element.data("view-mode-wheel-navigation-inverse-dir") } } this.wheelViewModeNavigationDelay = 100; if ("wheelViewModeNavigationDelay" in j) { this.wheelViewModeNavigationDelay = j.wheelViewModeNavigationDelay } else { if ("wheelViewModeNavigationDelay" in this.element.data()) { this.wheelViewModeNavigationDelay = this.element.data("view-mode-wheel-navigation-delay") } } this.startViewMode = 2; if ("startView" in j) { this.startViewMode = j.startView } else { if ("startView" in this.element.data()) { this.startViewMode = this.element.data("start-view") } } this.startViewMode = d.convertViewMode(this.startViewMode); this.viewMode = this.startViewMode; this.viewSelect = this.minView; if ("viewSelect" in j) { this.viewSelect = j.viewSelect } else { if ("viewSelect" in this.element.data()) { this.viewSelect = this.element.data("view-select") } } this.viewSelect = d.convertViewMode(this.viewSelect); this.forceParse = true; if ("forceParse" in j) { this.forceParse = j.forceParse } else { if ("dateForceParse" in this.element.data()) { this.forceParse = this.element.data("date-force-parse") } } var l = this.bootcssVer === 3 ? d.templateV3: d.template; while (l.indexOf("{iconType}") !== -1) { l = l.replace("{iconType}", this.icontype) } while (l.indexOf("{leftArrow}") !== -1) { l = l.replace("{leftArrow}", this.icons.leftArrow) } while (l.indexOf("{rightArrow}") !== -1) { l = l.replace("{rightArrow}", this.icons.rightArrow) } this.picker = e(l).appendTo(this.isInline ? this.element: this.container).on({ click: e.proxy(this.click, this), mousedown: e.proxy(this.mousedown, this) }); if (this.wheelViewModeNavigation) { if (e.fn.mousewheel) { this.picker.on({ mousewheel: e.proxy(this.mousewheel, this) }) } else { console.log("Mouse Wheel event is not supported. Please include the jQuery Mouse Wheel plugin before enabling this option") } } if (this.isInline) { this.picker.addClass("datetimepicker-inline") } else { this.picker.addClass("datetimepicker-dropdown-" + this.pickerPosition + " dropdown-menu") } if (this.isRTL) { this.picker.addClass("datetimepicker-rtl"); var i = this.bootcssVer === 3 ? ".prev span, .next span": ".prev i, .next i"; this.picker.find(i).toggleClass(this.icons.leftArrow + " " + this.icons.rightArrow) } e(document).on("mousedown", this.clickedOutside); this.autoclose = false; if ("autoclose" in j) { this.autoclose = j.autoclose } else { if ("dateAutoclose" in this.element.data()) { this.autoclose = this.element.data("date-autoclose") } } this.keyboardNavigation = true; if ("keyboardNavigation" in j) { this.keyboardNavigation = j.keyboardNavigation } else { if ("dateKeyboardNavigation" in this.element.data()) { this.keyboardNavigation = this.element.data("date-keyboard-navigation") } } this.todayBtn = (j.todayBtn || this.element.data("date-today-btn") || false); this.todayHighlight = (j.todayHighlight || this.element.data("date-today-highlight") || false); this.weekStart = ((j.weekStart || this.element.data("date-weekstart") || f[this.language].weekStart || 0) % 7); this.weekEnd = ((this.weekStart + 6) % 7); this.startDate = -Infinity; this.endDate = Infinity; this.daysOfWeekDisabled = []; this.setStartDate(j.startDate || this.element.data("date-startdate")); this.setEndDate(j.endDate || this.element.data("date-enddate")); this.setDaysOfWeekDisabled(j.daysOfWeekDisabled || this.element.data("date-days-of-week-disabled")); this.setMinutesDisabled(j.minutesDisabled || this.element.data("date-minute-disabled")); this.setHoursDisabled(j.hoursDisabled || this.element.data("date-hour-disabled")); this.fillDow(); this.fillMonths(); this.update(); this.showMode(); if (this.isInline) { this.show() } }; g.prototype = { constructor: g, _events: [], _attachEvents: function() { this._detachEvents(); if (this.isInput) { this._events = [[this.element, { focus: e.proxy(this.show, this), keyup: e.proxy(this.update, this), keydown: e.proxy(this.keydown, this) }]] } else { if (this.component && this.hasInput) { this._events = [[this.element.find("input"), { focus: e.proxy(this.show, this), keyup: e.proxy(this.update, this), keydown: e.proxy(this.keydown, this) }], [this.component, { click: e.proxy(this.show, this) }]]; if (this.componentReset) { this._events.push([this.componentReset, { click: e.proxy(this.reset, this) }]) } } else { if (this.element.is("div")) { this.isInline = true } else { this._events = [[this.element, { click: e.proxy(this.show, this) }]] } } } for (var j = 0, k, l; j < this._events.length; j++) { k = this._events[j][0]; l = this._events[j][1]; k.on(l) } }, _detachEvents: function() { for (var j = 0, k, l; j < this._events.length; j++) { k = this._events[j][0]; l = this._events[j][1]; k.off(l) } this._events = [] }, show: function(i) { this.picker.show(); this.height = this.component ? this.component.outerHeight() : this.element.outerHeight(); if (this.forceParse) { this.update() } this.place(); e(window).on("resize", e.proxy(this.place, this)); if (i) { i.stopPropagation(); i.preventDefault() } this.isVisible = true; this.element.trigger({ type: "show", date: this.date }) }, hide: function(i) { if (!this.isVisible) { return } if (this.isInline) { return } this.picker.hide(); e(window).off("resize", this.place); this.viewMode = this.startViewMode; this.showMode(); if (!this.isInput) { e(document).off("mousedown", this.hide) } if (this.forceParse && (this.isInput && this.element.val() || this.hasInput && this.element.find("input").val())) { this.setValue() } this.isVisible = false; this.element.trigger({ type: "hide", date: this.date }) }, remove: function() { this._detachEvents(); e(document).off("mousedown", this.clickedOutside); this.picker.remove(); delete this.picker; delete this.element.data().datetimepicker }, getDate: function() { var i = this.getUTCDate(); return new Date(i.getTime() + (i.getTimezoneOffset() * 60000)) }, getUTCDate: function() { return this.date }, setDate: function(i) { this.setUTCDate(new Date(i.getTime() - (i.getTimezoneOffset() * 60000))) }, setUTCDate: function(i) { if (i >= this.startDate && i <= this.endDate) { this.date = i; this.setValue(); this.viewDate = this.date; this.fill() } else { this.element.trigger({ type: "outOfRange", date: i, startDate: this.startDate, endDate: this.endDate }) } }, setFormat: function(j) { this.format = d.parseFormat(j, this.formatType); var i; if (this.isInput) { i = this.element } else { if (this.component) { i = this.element.find("input") } } if (i && i.val()) { this.setValue() } }, setValue: function() { var i = this.getFormattedDate(); if (!this.isInput) { if (this.component) { this.element.find("input").val(i) } this.element.data("date", i) } else { this.element.val(i) } if (this.linkField) { e("#" + this.linkField).val(this.getFormattedDate(this.linkFormat)) } }, getFormattedDate: function(i) { if (i == undefined) { i = this.format } return d.formatDate(this.date, i, this.language, this.formatType) }, setStartDate: function(i) { this.startDate = i || -Infinity; if (this.startDate !== -Infinity) { this.startDate = d.parseDate(this.startDate, this.format, this.language, this.formatType) } this.update(); this.updateNavArrows() }, setEndDate: function(i) { this.endDate = i || Infinity; if (this.endDate !== Infinity) { this.endDate = d.parseDate(this.endDate, this.format, this.language, this.formatType) } this.update(); this.updateNavArrows() }, setDaysOfWeekDisabled: function(i) { this.daysOfWeekDisabled = i || []; if (!e.isArray(this.daysOfWeekDisabled)) { this.daysOfWeekDisabled = this.daysOfWeekDisabled.split(/,\s*/) } this.daysOfWeekDisabled = e.map(this.daysOfWeekDisabled, function(j) { return parseInt(j, 10) }); this.update(); this.updateNavArrows() }, setMinutesDisabled: function(i) { this.minutesDisabled = i || []; if (!e.isArray(this.minutesDisabled)) { this.minutesDisabled = this.minutesDisabled.split(/,\s*/) } this.minutesDisabled = e.map(this.minutesDisabled, function(j) { return parseInt(j, 10) }); this.update(); this.updateNavArrows() }, setHoursDisabled: function(i) { this.hoursDisabled = i || []; if (!e.isArray(this.hoursDisabled)) { this.hoursDisabled = this.hoursDisabled.split(/,\s*/) } this.hoursDisabled = e.map(this.hoursDisabled, function(j) { return parseInt(j, 10) }); this.update(); this.updateNavArrows() }, place: function() { if (this.isInline) { return } if (!this.zIndex) { var j = 0; e("div").each(function() { var o = parseInt(e(this).css("zIndex"), 10); if (o > j) { j = o } }); this.zIndex = j + 10 } var n, m, l, k; if (this.container instanceof e) { k = this.container.offset() } else { k = e(this.container).offset() } if (this.component) { n = this.component.offset(); l = n.left; if (this.pickerPosition == "bottom-left" || this.pickerPosition == "top-left") { l += this.component.outerWidth() - this.picker.outerWidth() } } else { n = this.element.offset(); l = n.left } var i = document.body.clientWidth || window.innerWidth; if (l + 220 > i) { l = i - 220 } if (this.pickerPosition == "top-left" || this.pickerPosition == "top-right") { m = n.top - this.picker.outerHeight() } else { m = n.top + this.height } m = m - k.top; l = l - k.left; if (!b(this.element)) { m = m + document.body.scrollTop } this.picker.css({ top: m, left: l, zIndex: this.zIndex }) }, update: function() { var i, j = false; if (arguments && arguments.length && (typeof arguments[0] === "string" || arguments[0] instanceof Date)) { i = arguments[0]; j = true } else { i = (this.isInput ? this.element.val() : this.element.find("input").val()) || this.element.data("date") || this.initialDate; if (typeof i == "string" || i instanceof String) { i = i.replace(/^\s+|\s+$/g, "") } } if (!i) { i = new Date(); j = false } this.date = d.parseDate(i, this.format, this.language, this.formatType); if (j) { this.setValue() } if (this.date < this.startDate) { this.viewDate = new Date(this.startDate) } else { if (this.date > this.endDate) { this.viewDate = new Date(this.endDate) } else { this.viewDate = new Date(this.date) } } this.fill() }, fillDow: function() { var i = this.weekStart, j = ""; while (i < this.weekStart + 7) { j += '' + f[this.language].daysMin[(i++) % 7] + "" } j += ""; this.picker.find(".datetimepicker-days thead").append(j) }, fillMonths: function() { var k = "", j = 0; while (j < 12) { k += '' + f[this.language].monthsShort[j++] + "" } this.picker.find(".datetimepicker-months td").html(k) }, fill: function() { if (this.date == null || this.viewDate == null) { return } var H = new Date(this.viewDate), u = H.getUTCFullYear(), I = H.getUTCMonth(), n = H.getUTCDate(), D = H.getUTCHours(), y = H.getUTCMinutes(), z = this.startDate !== -Infinity ? this.startDate.getUTCFullYear() : -Infinity, E = this.startDate !== -Infinity ? this.startDate.getUTCMonth() + 1: -Infinity, q = this.endDate !== Infinity ? this.endDate.getUTCFullYear() : Infinity, A = this.endDate !== Infinity ? this.endDate.getUTCMonth() + 1: Infinity, r = (new h(this.date.getUTCFullYear(), this.date.getUTCMonth(), this.date.getUTCDate())).valueOf(), G = new Date(); this.picker.find(".datetimepicker-days thead th:eq(1)").text(f[this.language].months[I] + " " + u); if (this.formatViewType == "time") { var k = this.getFormattedDate(); this.picker.find(".datetimepicker-hours thead th:eq(1)").text(k); this.picker.find(".datetimepicker-minutes thead th:eq(1)").text(k) } else { this.picker.find(".datetimepicker-hours thead th:eq(1)").text(n + " " + f[this.language].months[I] + " " + u); this.picker.find(".datetimepicker-minutes thead th:eq(1)").text(n + " " + f[this.language].months[I] + " " + u) } this.picker.find("tfoot th.today").text(f[this.language].today).toggle(this.todayBtn !== false); this.updateNavArrows(); this.fillMonths(); var K = h(u, I - 1, 28, 0, 0, 0, 0), C = d.getDaysInMonth(K.getUTCFullYear(), K.getUTCMonth()); K.setUTCDate(C); K.setUTCDate(C - (K.getUTCDay() - this.weekStart + 7) % 7); var j = new Date(K); j.setUTCDate(j.getUTCDate() + 42); j = j.valueOf(); var s = []; var v; while (K.valueOf() < j) { if (K.getUTCDay() == this.weekStart) { s.push("") } v = ""; if (K.getUTCFullYear() < u || (K.getUTCFullYear() == u && K.getUTCMonth() < I)) { v += " old" } else { if (K.getUTCFullYear() > u || (K.getUTCFullYear() == u && K.getUTCMonth() > I)) { v += " new" } } if (this.todayHighlight && K.getUTCFullYear() == G.getFullYear() && K.getUTCMonth() == G.getMonth() && K.getUTCDate() == G.getDate()) { v += " today" } if (K.valueOf() == r) { v += " active" } if ((K.valueOf() + 86400000) <= this.startDate || K.valueOf() > this.endDate || e.inArray(K.getUTCDay(), this.daysOfWeekDisabled) !== -1) { v += " disabled" } s.push('' + K.getUTCDate() + ""); if (K.getUTCDay() == this.weekEnd) { s.push("") } K.setUTCDate(K.getUTCDate() + 1) } this.picker.find(".datetimepicker-days tbody").empty().append(s.join("")); s = []; var w = "", F = "", t = ""; var l = this.hoursDisabled || []; for (var B = 0; B < 24; B++) { if (l.indexOf(B) !== -1) { continue } var x = h(u, I, n, B); v = ""; if ((x.valueOf() + 3600000) <= this.startDate || x.valueOf() > this.endDate) { v += " disabled" } else { if (D == B) { v += " active" } } if (this.showMeridian && f[this.language].meridiem.length == 2) { F = (B < 12 ? f[this.language].meridiem[0] : f[this.language].meridiem[1]); if (F != t) { if (t != "") { s.push("") } s.push('
' + F.toUpperCase() + "") } t = F; w = (B % 12 ? B % 12: 12); s.push('' + w + ""); if (B == 23) { s.push("
") } } else { w = B + ":00"; s.push('' + w + "") } } this.picker.find(".datetimepicker-hours td").html(s.join("")); s = []; w = "", F = "", t = ""; var m = this.minutesDisabled || []; for (var B = 0; B < 60; B += this.minuteStep) { if (m.indexOf(B) !== -1) { continue } var x = h(u, I, n, D, B, 0); v = ""; if (x.valueOf() < this.startDate || x.valueOf() > this.endDate) { v += " disabled" } else { if (Math.floor(y / this.minuteStep) == Math.floor(B / this.minuteStep)) { v += " active" } } if (this.showMeridian && f[this.language].meridiem.length == 2) { F = (D < 12 ? f[this.language].meridiem[0] : f[this.language].meridiem[1]); if (F != t) { if (t != "") { s.push("") } s.push('
' + F.toUpperCase() + "") } t = F; w = (D % 12 ? D % 12: 12); s.push('' + w + ":" + (B < 10 ? "0" + B: B) + ""); if (B == 59) { s.push("
") } } else { w = B + ":00"; s.push('' + D + ":" + (B < 10 ? "0" + B: B) + "") } } this.picker.find(".datetimepicker-minutes td").html(s.join("")); var L = this.date.getUTCFullYear(); var p = this.picker.find(".datetimepicker-months").find("th:eq(1)").text(u).end().find("span").removeClass("active"); if (L == u) { var o = p.length - 12; p.eq(this.date.getUTCMonth() + o).addClass("active") } if (u < z || u > q) { p.addClass("disabled") } if (u == z) { p.slice(0, E + 1).addClass("disabled") } if (u == q) { p.slice(A).addClass("disabled") } s = ""; u = parseInt(u / 10, 10) * 10; var J = this.picker.find(".datetimepicker-years").find("th:eq(1)").text(u + "-" + (u + 9)).end().find("td"); u -= 1; for (var B = -1; B < 11; B++) { s += ' q ? " disabled": "") + '">' + u + ""; u += 1 } J.html(s); this.place() }, updateNavArrows: function() { var m = new Date(this.viewDate), k = m.getUTCFullYear(), l = m.getUTCMonth(), j = m.getUTCDate(), i = m.getUTCHours(); switch (this.viewMode) { case 0: if (this.startDate !== -Infinity && k <= this.startDate.getUTCFullYear() && l <= this.startDate.getUTCMonth() && j <= this.startDate.getUTCDate() && i <= this.startDate.getUTCHours()) { this.picker.find(".prev").css({ visibility: "hidden" }) } else { this.picker.find(".prev").css({ visibility: "visible" }) } if (this.endDate !== Infinity && k >= this.endDate.getUTCFullYear() && l >= this.endDate.getUTCMonth() && j >= this.endDate.getUTCDate() && i >= this.endDate.getUTCHours()) { this.picker.find(".next").css({ visibility: "hidden" }) } else { this.picker.find(".next").css({ visibility: "visible" }) } break; case 1: if (this.startDate !== -Infinity && k <= this.startDate.getUTCFullYear() && l <= this.startDate.getUTCMonth() && j <= this.startDate.getUTCDate()) { this.picker.find(".prev").css({ visibility: "hidden" }) } else { this.picker.find(".prev").css({ visibility: "visible" }) } if (this.endDate !== Infinity && k >= this.endDate.getUTCFullYear() && l >= this.endDate.getUTCMonth() && j >= this.endDate.getUTCDate()) { this.picker.find(".next").css({ visibility: "hidden" }) } else { this.picker.find(".next").css({ visibility: "visible" }) } break; case 2: if (this.startDate !== -Infinity && k <= this.startDate.getUTCFullYear() && l <= this.startDate.getUTCMonth()) { this.picker.find(".prev").css({ visibility: "hidden" }) } else { this.picker.find(".prev").css({ visibility: "visible" }) } if (this.endDate !== Infinity && k >= this.endDate.getUTCFullYear() && l >= this.endDate.getUTCMonth()) { this.picker.find(".next").css({ visibility: "hidden" }) } else { this.picker.find(".next").css({ visibility: "visible" }) } break; case 3: case 4: if (this.startDate !== -Infinity && k <= this.startDate.getUTCFullYear()) { this.picker.find(".prev").css({ visibility: "hidden" }) } else { this.picker.find(".prev").css({ visibility: "visible" }) } if (this.endDate !== Infinity && k >= this.endDate.getUTCFullYear()) { this.picker.find(".next").css({ visibility: "hidden" }) } else { this.picker.find(".next").css({ visibility: "visible" }) } break } }, mousewheel: function(j) { j.preventDefault(); j.stopPropagation(); if (this.wheelPause) { return } this.wheelPause = true; var i = j.originalEvent; var l = i.wheelDelta; var k = l > 0 ? 1: (l === 0) ? 0: -1; if (this.wheelViewModeNavigationInverseDirection) { k = -k } this.showMode(k); setTimeout(e.proxy(function() { this.wheelPause = false }, this), this.wheelViewModeNavigationDelay) }, click: function(m) { m.stopPropagation(); m.preventDefault(); var n = e(m.target).closest("span, td, th, legend"); if (n.is("." + this.icontype)) { n = e(n).parent().closest("span, td, th, legend") } if (n.length == 1) { if (n.is(".disabled")) { this.element.trigger({ type: "outOfRange", date: this.viewDate, startDate: this.startDate, endDate: this.endDate }); return } switch (n[0].nodeName.toLowerCase()) { case "th": switch (n[0].className) { case "switch": this.showMode(1); break; case "prev": case "next": var i = d.modes[this.viewMode].navStep * (n[0].className == "prev" ? -1: 1); switch (this.viewMode) { case 0: this.viewDate = this.moveHour(this.viewDate, i); break; case 1: this.viewDate = this.moveDate(this.viewDate, i); break; case 2: this.viewDate = this.moveMonth(this.viewDate, i); break; case 3: case 4: this.viewDate = this.moveYear(this.viewDate, i); break } this.fill(); this.element.trigger({ type: n[0].className + ":" + this.convertViewModeText(this.viewMode), date: this.viewDate, startDate: this.startDate, endDate: this.endDate }); break; case "today": var j = new Date(); j = h(j.getFullYear(), j.getMonth(), j.getDate(), j.getHours(), j.getMinutes(), j.getSeconds(), 0); if (j < this.startDate) { j = this.startDate } else { if (j > this.endDate) { j = this.endDate } } this.viewMode = this.startViewMode; this.showMode(0); this._setDate(j); this.fill(); if (this.autoclose) { this.hide() } break } break; case "span": if (!n.is(".disabled")) { var p = this.viewDate.getUTCFullYear(), o = this.viewDate.getUTCMonth(), q = this.viewDate.getUTCDate(), r = this.viewDate.getUTCHours(), k = this.viewDate.getUTCMinutes(), s = this.viewDate.getUTCSeconds(); if (n.is(".month")) { this.viewDate.setUTCDate(1); o = n.parent().find("span").index(n); q = this.viewDate.getUTCDate(); this.viewDate.setUTCMonth(o); this.element.trigger({ type: "changeMonth", date: this.viewDate }); if (this.viewSelect >= 3) { this._setDate(h(p, o, q, r, k, s, 0)) } } else { if (n.is(".year")) { this.viewDate.setUTCDate(1); p = parseInt(n.text(), 10) || 0; this.viewDate.setUTCFullYear(p); this.element.trigger({ type: "changeYear", date: this.viewDate }); if (this.viewSelect >= 4) { this._setDate(h(p, o, q, r, k, s, 0)) } } else { if (n.is(".hour")) { r = parseInt(n.text(), 10) || 0; if (n.hasClass("hour_am") || n.hasClass("hour_pm")) { if (r == 12 && n.hasClass("hour_am")) { r = 0 } else { if (r != 12 && n.hasClass("hour_pm")) { r += 12 } } } this.viewDate.setUTCHours(r); this.element.trigger({ type: "changeHour", date: this.viewDate }); if (this.viewSelect >= 1) { this._setDate(h(p, o, q, r, k, s, 0)) } } else { if (n.is(".minute")) { k = parseInt(n.text().substr(n.text().indexOf(":") + 1), 10) || 0; this.viewDate.setUTCMinutes(k); this.element.trigger({ type: "changeMinute", date: this.viewDate }); if (this.viewSelect >= 0) { this._setDate(h(p, o, q, r, k, s, 0)) } } } } } if (this.viewMode != 0) { var l = this.viewMode; this.showMode( - 1); this.fill(); if (l == this.viewMode && this.autoclose) { this.hide() } } else { this.fill(); if (this.autoclose) { this.hide() } } } break; case "td": if (n.is(".day") && !n.is(".disabled")) { var q = parseInt(n.text(), 10) || 1; var p = this.viewDate.getUTCFullYear(), o = this.viewDate.getUTCMonth(), r = this.viewDate.getUTCHours(), k = this.viewDate.getUTCMinutes(), s = this.viewDate.getUTCSeconds(); if (n.is(".old")) { if (o === 0) { o = 11; p -= 1 } else { o -= 1 } } else { if (n.is(".new")) { if (o == 11) { o = 0; p += 1 } else { o += 1 } } } this.viewDate.setUTCFullYear(p); this.viewDate.setUTCMonth(o, q); this.element.trigger({ type: "changeDay", date: this.viewDate }); if (this.viewSelect >= 2) { this._setDate(h(p, o, q, r, k, s, 0)) } } var l = this.viewMode; this.showMode( - 1); this.fill(); if (l == this.viewMode && this.autoclose) { this.hide() } break } } }, _setDate: function(i, k) { if (!k || k == "date") { this.date = i } if (!k || k == "view") { this.viewDate = i } this.fill(); this.setValue(); var j; if (this.isInput) { j = this.element } else { if (this.component) { j = this.element.find("input") } } if (j) { j.change(); if (this.autoclose && (!k || k == "date")) {} } this.element.trigger({ type: "changeDate", date: this.date }); if (i == null) { this.date = this.viewDate } }, moveMinute: function(j, i) { if (!i) { return j } var k = new Date(j.valueOf()); k.setUTCMinutes(k.getUTCMinutes() + (i * this.minuteStep)); return k }, moveHour: function(j, i) { if (!i) { return j } var k = new Date(j.valueOf()); k.setUTCHours(k.getUTCHours() + i); return k }, moveDate: function(j, i) { if (!i) { return j } var k = new Date(j.valueOf()); k.setUTCDate(k.getUTCDate() + i); return k }, moveMonth: function(j, k) { if (!k) { return j } var n = new Date(j.valueOf()), r = n.getUTCDate(), o = n.getUTCMonth(), m = Math.abs(k), q, p; k = k > 0 ? 1: -1; if (m == 1) { p = k == -1 ? function() { return n.getUTCMonth() == o }: function() { return n.getUTCMonth() != q }; q = o + k; n.setUTCMonth(q); if (q < 0 || q > 11) { q = (q + 12) % 12 } } else { for (var l = 0; l < m; l++) { n = this.moveMonth(n, k) } q = n.getUTCMonth(); n.setUTCDate(r); p = function() { return q != n.getUTCMonth() } } while (p()) { n.setUTCDate(--r); n.setUTCMonth(q) } return n }, moveYear: function(j, i) { return this.moveMonth(j, i * 12) }, dateWithinRange: function(i) { return i >= this.startDate && i <= this.endDate }, keydown: function(m) { if (this.picker.is(":not(:visible)")) { if (m.keyCode == 27) { this.show() } return } var o = false, j, p, n, q, i; switch (m.keyCode) { case 27: this.hide(); m.preventDefault(); break; case 37: case 39: if (!this.keyboardNavigation) { break } j = m.keyCode == 37 ? -1: 1; viewMode = this.viewMode; if (m.ctrlKey) { viewMode += 2 } else { if (m.shiftKey) { viewMode += 1 } } if (viewMode == 4) { q = this.moveYear(this.date, j); i = this.moveYear(this.viewDate, j) } else { if (viewMode == 3) { q = this.moveMonth(this.date, j); i = this.moveMonth(this.viewDate, j) } else { if (viewMode == 2) { q = this.moveDate(this.date, j); i = this.moveDate(this.viewDate, j) } else { if (viewMode == 1) { q = this.moveHour(this.date, j); i = this.moveHour(this.viewDate, j) } else { if (viewMode == 0) { q = this.moveMinute(this.date, j); i = this.moveMinute(this.viewDate, j) } } } } } if (this.dateWithinRange(q)) { this.date = q; this.viewDate = i; this.setValue(); this.update(); m.preventDefault(); o = true } break; case 38: case 40: if (!this.keyboardNavigation) { break } j = m.keyCode == 38 ? -1: 1; viewMode = this.viewMode; if (m.ctrlKey) { viewMode += 2 } else { if (m.shiftKey) { viewMode += 1 } } if (viewMode == 4) { q = this.moveYear(this.date, j); i = this.moveYear(this.viewDate, j) } else { if (viewMode == 3) { q = this.moveMonth(this.date, j); i = this.moveMonth(this.viewDate, j) } else { if (viewMode == 2) { q = this.moveDate(this.date, j * 7); i = this.moveDate(this.viewDate, j * 7) } else { if (viewMode == 1) { if (this.showMeridian) { q = this.moveHour(this.date, j * 6); i = this.moveHour(this.viewDate, j * 6) } else { q = this.moveHour(this.date, j * 4); i = this.moveHour(this.viewDate, j * 4) } } else { if (viewMode == 0) { q = this.moveMinute(this.date, j * 4); i = this.moveMinute(this.viewDate, j * 4) } } } } } if (this.dateWithinRange(q)) { this.date = q; this.viewDate = i; this.setValue(); this.update(); m.preventDefault(); o = true } break; case 13: if (this.viewMode != 0) { var l = this.viewMode; this.showMode( - 1); this.fill(); if (l == this.viewMode && this.autoclose) { this.hide() } } else { this.fill(); if (this.autoclose) { this.hide() } } m.preventDefault(); break; case 9: this.hide(); break } if (o) { var k; if (this.isInput) { k = this.element } else { if (this.component) { k = this.element.find("input") } } if (k) { k.change() } this.element.trigger({ type: "changeDate", date: this.date }) } }, showMode: function(i) { if (i) { var j = Math.max(0, Math.min(d.modes.length - 1, this.viewMode + i)); if (j >= this.minView && j <= this.maxView) { this.element.trigger({ type: "changeMode", date: this.viewDate, oldViewMode: this.viewMode, newViewMode: j }); this.viewMode = j } } this.picker.find(">div").hide().filter(".datetimepicker-" + d.modes[this.viewMode].clsName).css("display", "block"); this.updateNavArrows() }, reset: function(i) { this._setDate(null, "date") }, convertViewModeText: function(i) { switch (i) { case 4: return "decade"; case 3: return "year"; case 2: return "month"; case 1: return "day"; case 0: return "hour" } } }; var a = e.fn.datetimepicker; e.fn.datetimepicker = function(k) { var i = Array.apply(null, arguments); i.shift(); var j; this.each(function() { var n = e(this), m = n.data("datetimepicker"), l = typeof k == "object" && k; if (!m) { n.data("datetimepicker", (m = new g(this, e.extend({}, e.fn.datetimepicker.defaults, l)))) } if (typeof k == "string" && typeof m[k] == "function") { j = m[k].apply(m, i); if (j !== undefined) { return false } } }); if (j !== undefined) { return j } else { return this } }; e.fn.datetimepicker.defaults = {}; e.fn.datetimepicker.Constructor = g; var f = e.fn.datetimepicker.dates = { en: { days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"], months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], meridiem: ["am", "pm"], suffix: ["st", "nd", "rd", "th"], today: "Today" } }; var d = { modes: [{ clsName: "minutes", navFnc: "Hours", navStep: 1 }, { clsName: "hours", navFnc: "Date", navStep: 1 }, { clsName: "days", navFnc: "Month", navStep: 1 }, { clsName: "months", navFnc: "FullYear", navStep: 1 }, { clsName: "years", navFnc: "FullYear", navStep: 10 }], isLeapYear: function(i) { return (((i % 4 === 0) && (i % 100 !== 0)) || (i % 400 === 0)) }, getDaysInMonth: function(i, j) { return [31, (d.isLeapYear(i) ? 29: 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][j] }, getDefaultFormat: function(i, j) { if (i == "standard") { if (j == "input") { return "yyyy-mm-dd hh:ii" } else { return "yyyy-mm-dd hh:ii:ss" } } else { if (i == "php") { if (j == "input") { return "Y-m-d H:i" } else { return "Y-m-d H:i:s" } } else { throw new Error("Invalid format type.") } } }, validParts: function(i) { if (i == "standard") { return /hh?|HH?|p|P|ii?|ss?|dd?|DD?|mm?|MM?|yy(?:yy)?/g } else { if (i == "php") { return /[dDjlNwzFmMnStyYaABgGhHis]/g } else { throw new Error("Invalid format type.") } } }, nonpunctuation: /[^ -\/:-@\[-`{-~\t\n\rTZ]+/g, parseFormat: function(l, j) { var i = l.replace(this.validParts(j), "\0").split("\0"), k = l.match(this.validParts(j)); if (!i || !i.length || !k || k.length == 0) { throw new Error("Invalid date format.") } return { separators: i, parts: k } }, parseDate: function(n, w, q, u) { if (n instanceof Date) { var y = new Date(n.valueOf() - n.getTimezoneOffset() * 60000); y.setMilliseconds(0); return y } if (/^\d{4}\-\d{1,2}\-\d{1,2}$/.test(n)) { w = this.parseFormat("yyyy-mm-dd", u) } if (/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}$/.test(n)) { w = this.parseFormat("yyyy-mm-dd hh:ii", u) } if (/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}\:\d{1,2}[Z]{0,1}$/.test(n)) { w = this.parseFormat("yyyy-mm-dd hh:ii:ss", u) } if (/^[-+]\d+[dmwy]([\s,]+[-+]\d+[dmwy])*$/.test(n)) { var z = /([-+]\d+)([dmwy])/, o = n.match(/([-+]\d+)([dmwy])/g), j, m; n = new Date(); for (var p = 0; p < o.length; p++) { j = z.exec(o[p]); m = parseInt(j[1]); switch (j[2]) { case "d": n.setUTCDate(n.getUTCDate() + m); break; case "m": n = g.prototype.moveMonth.call(g.prototype, n, m); break; case "w": n.setUTCDate(n.getUTCDate() + m * 7); break; case "y": n = g.prototype.moveYear.call(g.prototype, n, m); break } } return h(n.getUTCFullYear(), n.getUTCMonth(), n.getUTCDate(), n.getUTCHours(), n.getUTCMinutes(), n.getUTCSeconds(), 0) } var o = n && n.toString().match(this.nonpunctuation) || [], n = new Date(0, 0, 0, 0, 0, 0, 0), t = {}, v = ["hh", "h", "ii", "i", "ss", "s", "yyyy", "yy", "M", "MM", "m", "mm", "D", "DD", "d", "dd", "H", "HH", "p", "P"], x = { hh: function(s, i) { return s.setUTCHours(i) }, h: function(s, i) { return s.setUTCHours(i) }, HH: function(s, i) { return s.setUTCHours(i == 12 ? 0: i) }, H: function(s, i) { return s.setUTCHours(i == 12 ? 0: i) }, ii: function(s, i) { return s.setUTCMinutes(i) }, i: function(s, i) { return s.setUTCMinutes(i) }, ss: function(s, i) { return s.setUTCSeconds(i) }, s: function(s, i) { return s.setUTCSeconds(i) }, yyyy: function(s, i) { return s.setUTCFullYear(i) }, yy: function(s, i) { return s.setUTCFullYear(2000 + i) }, m: function(s, i) { i -= 1; while (i < 0) { i += 12 } i %= 12; s.setUTCMonth(i); while (s.getUTCMonth() != i) { if (isNaN(s.getUTCMonth())) { return s } else { s.setUTCDate(s.getUTCDate() - 1) } } return s }, d: function(s, i) { return s.setUTCDate(i) }, p: function(s, i) { return s.setUTCHours(i == 1 ? s.getUTCHours() + 12: s.getUTCHours()) } }, l, r, j; x.M = x.MM = x.mm = x.m; x.dd = x.d; x.P = x.p; n = h(n.getFullYear(), n.getMonth(), n.getDate(), n.getHours(), n.getMinutes(), n.getSeconds()); if (o.length == w.parts.length) { for (var p = 0, k = w.parts.length; p < k; p++) { l = parseInt(o[p], 10); j = w.parts[p]; if (isNaN(l)) { switch (j) { case "MM": r = e(f[q].months).filter(function() { var i = this.slice(0, o[p].length), s = o[p].slice(0, i.length); return i == s }); l = e.inArray(r[0], f[q].months) + 1; break; case "M": r = e(f[q].monthsShort).filter(function() { var i = this.slice(0, o[p].length), s = o[p].slice(0, i.length); return i.toLowerCase() == s.toLowerCase() }); l = e.inArray(r[0], f[q].monthsShort) + 1; break; case "p": case "P": l = e.inArray(o[p].toLowerCase(), f[q].meridiem); break } } t[j] = l } for (var p = 0, A; p < v.length; p++) { A = v[p]; if (A in t && !isNaN(t[A])) { x[A](n, t[A]) } } } return n }, formatDate: function(j, o, q, m) { if (j == null) { return "" } var p; if (m == "standard") { p = { yy: j.getUTCFullYear().toString().substring(2), yyyy: j.getUTCFullYear(), m: j.getUTCMonth() + 1, M: f[q].monthsShort[j.getUTCMonth()], MM: f[q].months[j.getUTCMonth()], d: j.getUTCDate(), D: f[q].daysShort[j.getUTCDay()], DD: f[q].days[j.getUTCDay()], p: (f[q].meridiem.length == 2 ? f[q].meridiem[j.getUTCHours() < 12 ? 0: 1] : ""), h: j.getUTCHours(), i: j.getUTCMinutes(), s: j.getUTCSeconds() }; if (f[q].meridiem.length == 2) { p.H = (p.h % 12 == 0 ? 12: p.h % 12) } else { p.H = p.h } p.HH = (p.H < 10 ? "0": "") + p.H; p.P = p.p.toUpperCase(); p.hh = (p.h < 10 ? "0": "") + p.h; p.ii = (p.i < 10 ? "0": "") + p.i; p.ss = (p.s < 10 ? "0": "") + p.s; p.dd = (p.d < 10 ? "0": "") + p.d; p.mm = (p.m < 10 ? "0": "") + p.m } else { if (m == "php") { p = { y: j.getUTCFullYear().toString().substring(2), Y: j.getUTCFullYear(), F: f[q].months[j.getUTCMonth()], M: f[q].monthsShort[j.getUTCMonth()], n: j.getUTCMonth() + 1, t: d.getDaysInMonth(j.getUTCFullYear(), j.getUTCMonth()), j: j.getUTCDate(), l: f[q].days[j.getUTCDay()], D: f[q].daysShort[j.getUTCDay()], w: j.getUTCDay(), N: (j.getUTCDay() == 0 ? 7: j.getUTCDay()), S: (j.getUTCDate() % 10 <= f[q].suffix.length ? f[q].suffix[j.getUTCDate() % 10 - 1] : ""), a: (f[q].meridiem.length == 2 ? f[q].meridiem[j.getUTCHours() < 12 ? 0: 1] : ""), g: (j.getUTCHours() % 12 == 0 ? 12: j.getUTCHours() % 12), G: j.getUTCHours(), i: j.getUTCMinutes(), s: j.getUTCSeconds() }; p.m = (p.n < 10 ? "0": "") + p.n; p.d = (p.j < 10 ? "0": "") + p.j; p.A = p.a.toString().toUpperCase(); p.h = (p.g < 10 ? "0": "") + p.g; p.H = (p.G < 10 ? "0": "") + p.G; p.i = (p.i < 10 ? "0": "") + p.i; p.s = (p.s < 10 ? "0": "") + p.s } else { throw new Error("Invalid format type.") } } var j = [], n = e.extend([], o.separators); for (var l = 0, k = o.parts.length; l < k; l++) { if (n.length) { j.push(n.shift()) } j.push(p[o.parts[l]]) } if (n.length) { j.push(n.shift()) } return j.join("") }, convertViewMode: function(i) { switch (i) { case 4: case "decade": i = 4; break; case 3: case "year": i = 3; break; case 2: case "month": i = 2; break; case 1: case "day": i = 1; break; case 0: case "hour": i = 0; break } return i }, headTemplate: '', headTemplateV3: ' ', contTemplate: '', footTemplate: '' }; d.template = '
' + d.headTemplate + d.contTemplate + d.footTemplate + '
' + d.headTemplate + d.contTemplate + d.footTemplate + '
' + d.headTemplate + "" + d.footTemplate + '
' + d.headTemplate + d.contTemplate + d.footTemplate + '
' + d.headTemplate + d.contTemplate + d.footTemplate + "
"; d.templateV3 = '
' + d.headTemplateV3 + d.contTemplate + d.footTemplate + '
' + d.headTemplateV3 + d.contTemplate + d.footTemplate + '
' + d.headTemplateV3 + "" + d.footTemplate + '
' + d.headTemplateV3 + d.contTemplate + d.footTemplate + '
' + d.headTemplateV3 + d.contTemplate + d.footTemplate + "
"; e.fn.datetimepicker.DPGlobal = d; e.fn.datetimepicker.noConflict = function() { e.fn.datetimepicker = a; return this }; e(document).on("focus.datetimepicker.data-api click.datetimepicker.data-api", '[data-provide="datetimepicker"]', function(j) { var i = e(this); if (i.data("datetimepicker")) { return } j.preventDefault(); i.datetimepicker("show") }); e(function() { e('[data-provide="datetimepicker-inline"]').datetimepicker() }) } (window.jQuery);