HEX
Server: nginx/1.28.1
System: Linux 10-41-63-61 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64
User: www (1001)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot//www.qoifhk.com/cc/static/js/bootstrap-datetimepicker.min.js
!function(t) {
    "function" == typeof define && define.amd ? define(["jquery"], t) : "object" == typeof exports ? t(require("jquery")) : t(jQuery)
}(function(V, h) {
    function S() {
        return new Date(Date.UTC.apply(Date, arguments))
    }
    "indexOf"in Array.prototype || (Array.prototype.indexOf = function(t, e) {
        e === h && (e = 0),
        e < 0 && (e += this.length),
        e < 0 && (e = 0);
        for (var i = this.length; e < i; e++)
            if (e in this && this[e] === t)
                return e;
        return -1
    }
    );
    function w(t, n) {
        var e = this;
        this.options = n,
        this.element = V(t),
        this.container = n.container || "body",
        this.language = n.language || this.element.data("date-language") || "en",
        this.language = this.language in x ? this.language : this.language.split("-")[0],
        this.language = this.language in x ? this.language : "en",
        this.isRTL = x[this.language].rtl || !1,
        this.formatType = n.formatType || this.element.data("format-type") || "standard",
        this.format = H.parseFormat(n.format || this.element.data("date-format") || x[this.language].format || H.getDefaultFormat(this.formatType, "input"), this.formatType),
        this.isInline = !1,
        this.isVisible = !1,
        this.isInput = this.element.is("input"),
        this.fontAwesome = n.fontAwesome || this.element.data("font-awesome") || !1,
        this.bootcssVer = n.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") && (3 === this.bootcssVer ? this.element.find(".kv-datetime-picker") : this.element.find(".add-on .icon-th, .add-on .icon-time, .add-on .icon-calendar, .add-on .fa-calendar, .add-on .fa-clock-o").parent()),
        this.componentReset = !!this.element.is(".date") && (3 === this.bootcssVer ? this.element.find(".kv-datetime-remove") : this.element.find(".add-on .icon-remove, .add-on .fa-times").parent()),
        this.hasInput = this.component && this.element.find("input").length,
        this.component && 0 === this.component.length && (this.component = !1),
        this.linkField = n.linkField || this.element.data("link-field") || !1,
        this.linkFormat = H.parseFormat(n.linkFormat || this.element.data("link-format") || H.getDefaultFormat(this.formatType, "link"), this.formatType),
        this.minuteStep = n.minuteStep || this.element.data("minute-step") || 5,
        this.pickerPosition = n.pickerPosition || this.element.data("picker-position") || "bottom-right",
        this.showMeridian = n.showMeridian || this.element.data("show-meridian") || !1,
        this.initialDate = n.initialDate || new Date,
        this.zIndex = n.zIndex || this.element.data("z-index") || h,
        this.title = void 0 !== n.title && n.title,
        this.timezone = n.timezone || function() {
            var t, e, i, s, a;
            if ((i = (null != (a = (e = (new Date).toString()).split("(")[1]) ? a.slice(0, -1) : 0) || e.split(" "))instanceof Array) {
                s = [];
                for (var n = 0, h = i.length; n < h; n++)
                    (t = null !== (a = i[n].match(/\b[A-Z]+\b/))) && a[0] && s.push(t);
                i = s.pop()
            }
            return i
        }(),
        this.icons = V.extend({
            leftArrow: this.fontAwesome ? "fa-arrow-left" : 3 === this.bootcssVer ? "glyphicon-arrow-left" : "icon-arrow-left",
            rightArrow: this.fontAwesome ? "fa-arrow-right" : 3 === this.bootcssVer ? "glyphicon-arrow-right" : "icon-arrow-right"
        }, n.icons || {}),
        this.icontype = n.icontype || (this.fontAwesome ? "fa" : "glyphicon"),
        this._attachEvents(),
        this.clickedOutside = function(t) {
            0 === V(t.target).closest(".datetimepicker").length && e.hide()
        }
        ,
        this.formatViewType = "datetime",
        "formatViewType"in n ? this.formatViewType = n.formatViewType : "formatViewType"in this.element.data() && (this.formatViewType = this.element.data("formatViewType")),
        this.minView = 0,
        "minView"in n ? this.minView = n.minView : "minView"in this.element.data() && (this.minView = this.element.data("min-view")),
        this.minView = H.convertViewMode(this.minView),
        this.maxView = H.modes.length - 1,
        "maxView"in n ? this.maxView = n.maxView : "maxView"in this.element.data() && (this.maxView = this.element.data("max-view")),
        this.maxView = H.convertViewMode(this.maxView),
        this.wheelViewModeNavigation = !1,
        "wheelViewModeNavigation"in n ? this.wheelViewModeNavigation = n.wheelViewModeNavigation : "wheelViewModeNavigation"in this.element.data() && (this.wheelViewModeNavigation = this.element.data("view-mode-wheel-navigation")),
        this.wheelViewModeNavigationInverseDirection = !1,
        "wheelViewModeNavigationInverseDirection"in n ? this.wheelViewModeNavigationInverseDirection = n.wheelViewModeNavigationInverseDirection : "wheelViewModeNavigationInverseDirection"in this.element.data() && (this.wheelViewModeNavigationInverseDirection = this.element.data("view-mode-wheel-navigation-inverse-dir")),
        this.wheelViewModeNavigationDelay = 100,
        "wheelViewModeNavigationDelay"in n ? this.wheelViewModeNavigationDelay = n.wheelViewModeNavigationDelay : "wheelViewModeNavigationDelay"in this.element.data() && (this.wheelViewModeNavigationDelay = this.element.data("view-mode-wheel-navigation-delay")),
        this.startViewMode = 2,
        "startView"in n ? this.startViewMode = n.startView : "startView"in this.element.data() && (this.startViewMode = this.element.data("start-view")),
        this.startViewMode = H.convertViewMode(this.startViewMode),
        this.viewMode = this.startViewMode,
        this.viewSelect = this.minView,
        "viewSelect"in n ? this.viewSelect = n.viewSelect : "viewSelect"in this.element.data() && (this.viewSelect = this.element.data("view-select")),
        this.viewSelect = H.convertViewMode(this.viewSelect),
        this.forceParse = !0,
        "forceParse"in n ? this.forceParse = n.forceParse : "dateForceParse"in this.element.data() && (this.forceParse = this.element.data("date-force-parse"));
        for (var i = 3 === this.bootcssVer ? H.templateV3 : H.template; -1 !== i.indexOf("{iconType}"); )
            i = i.replace("{iconType}", this.icontype);
        for (; -1 !== i.indexOf("{leftArrow}"); )
            i = i.replace("{leftArrow}", this.icons.leftArrow);
        for (; -1 !== i.indexOf("{rightArrow}"); )
            i = i.replace("{rightArrow}", this.icons.rightArrow);
        if (this.picker = V(i).appendTo(this.isInline ? this.element : this.container).on({
            click: V.proxy(this.click, this),
            mousedown: V.proxy(this.mousedown, this)
        }),
        this.wheelViewModeNavigation && (V.fn.mousewheel ? this.picker.on({
            mousewheel: V.proxy(this.mousewheel, this)
        }) : console.log("Mouse Wheel event is not supported. Please include the jQuery Mouse Wheel plugin before enabling this option")),
        this.isInline ? this.picker.addClass("datetimepicker-inline") : this.picker.addClass("datetimepicker-dropdown-" + this.pickerPosition + " dropdown-menu"),
        this.isRTL) {
            this.picker.addClass("datetimepicker-rtl");
            var s = 3 === this.bootcssVer ? ".prev span, .next span" : ".prev i, .next i";
            this.picker.find(s).toggleClass(this.icons.leftArrow + " " + this.icons.rightArrow)
        }
        V(document).on("mousedown touchend", this.clickedOutside),
        this.autoclose = !1,
        "autoclose"in n ? this.autoclose = n.autoclose : "dateAutoclose"in this.element.data() && (this.autoclose = this.element.data("date-autoclose")),
        this.keyboardNavigation = !0,
        "keyboardNavigation"in n ? this.keyboardNavigation = n.keyboardNavigation : "dateKeyboardNavigation"in this.element.data() && (this.keyboardNavigation = this.element.data("date-keyboard-navigation")),
        this.todayBtn = n.todayBtn || this.element.data("date-today-btn") || !1,
        this.clearBtn = n.clearBtn || this.element.data("date-clear-btn") || !1,
        this.todayHighlight = n.todayHighlight || this.element.data("date-today-highlight") || !1,
        void (this.weekStart = 0) !== n.weekStart ? this.weekStart = n.weekStart : void 0 !== this.element.data("date-weekstart") ? this.weekStart = this.element.data("date-weekstart") : void 0 !== x[this.language].weekStart && (this.weekStart = x[this.language].weekStart),
        this.weekStart = this.weekStart % 7,
        this.weekEnd = (this.weekStart + 6) % 7,
        this.onRenderDay = function(t) {
            var e = (n.onRenderDay || function() {
                return []
            }
            )(t);
            "string" == typeof e && (e = [e]);
            return ["day"].concat(e || [])
        }
        ,
        this.onRenderHour = function(t) {
            var e = (n.onRenderHour || function() {
                return []
            }
            )(t);
            return "string" == typeof e && (e = [e]),
            ["hour"].concat(e || [])
        }
        ,
        this.onRenderMinute = function(t) {
            var e = (n.onRenderMinute || function() {
                return []
            }
            )(t)
              , i = ["minute"];
            return "string" == typeof e && (e = [e]),
            t < this.startDate || t > this.endDate ? i.push("disabled") : Math.floor(this.date.getUTCMinutes() / this.minuteStep) === Math.floor(t.getUTCMinutes() / this.minuteStep) && i.push("active"),
            i.concat(e || [])
        }
        ,
        this.onRenderYear = function(t) {
            var e = (n.onRenderYear || function() {
                return []
            }
            )(t)
              , i = ["year"];
            "string" == typeof e && (e = [e]),
            this.date.getUTCFullYear() === t.getUTCFullYear() && i.push("active");
            var s = t.getUTCFullYear()
              , a = this.endDate.getUTCFullYear();
            return (t < this.startDate || a < s) && i.push("disabled"),
            i.concat(e || [])
        }
        ,
        this.onRenderMonth = function(t) {
            var e = (n.onRenderMonth || function() {
                return []
            }
            )(t);
            return "string" == typeof e && (e = [e]),
            ["month"].concat(e || [])
        }
        ,
        this.startDate = new Date(-8639968443048e3),
        this.endDate = new Date(8639968443048e3),
        this.datesDisabled = [],
        this.daysOfWeekDisabled = [],
        this.setStartDate(n.startDate || this.element.data("date-startdate")),
        this.setEndDate(n.endDate || this.element.data("date-enddate")),
        this.setDatesDisabled(n.datesDisabled || this.element.data("date-dates-disabled")),
        this.setDaysOfWeekDisabled(n.daysOfWeekDisabled || this.element.data("date-days-of-week-disabled")),
        this.setMinutesDisabled(n.minutesDisabled || this.element.data("date-minute-disabled")),
        this.setHoursDisabled(n.hoursDisabled || this.element.data("date-hour-disabled")),
        this.fillDow(),
        this.fillMonths(),
        this.update(),
        this.showMode(),
        this.isInline && this.show()
    }
    w.prototype = {
        constructor: w,
        _events: [],
        _attachEvents: function() {
            this._detachEvents(),
            this.isInput ? this._events = [[this.element, {
                focus: V.proxy(this.show, this),
                keyup: V.proxy(this.update, this),
                keydown: V.proxy(this.keydown, this)
            }]] : this.component && this.hasInput ? (this._events = [[this.element.find("input"), {
                focus: V.proxy(this.show, this),
                keyup: V.proxy(this.update, this),
                keydown: V.proxy(this.keydown, this)
            }], [this.component, {
                click: V.proxy(this.show, this)
            }]],
            this.componentReset && this._events.push([this.componentReset, {
                click: V.proxy(this.reset, this)
            }])) : this.element.is("div") ? this.isInline = !0 : this._events = [[this.element, {
                click: V.proxy(this.show, this)
            }]];
            for (var t, e, i = 0; i < this._events.length; i++)
                t = this._events[i][0],
                e = this._events[i][1],
                t.on(e)
        },
        _detachEvents: function() {
            for (var t, e, i = 0; i < this._events.length; i++)
                t = this._events[i][0],
                e = this._events[i][1],
                t.off(e);
            this._events = []
        },
        show: function(t) {
            this.picker.show(),
            this.height = this.component ? this.component.outerHeight() : this.element.outerHeight(),
            this.forceParse && this.update(),
            this.place(),
            V(window).on("resize", V.proxy(this.place, this)),
            t && (t.stopPropagation(),
            t.preventDefault()),
            this.isVisible = !0,
            this.element.trigger({
                type: "show",
                date: this.date
            })
        },
        hide: function() {
            this.isVisible && (this.isInline || (this.picker.hide(),
            V(window).off("resize", this.place),
            this.viewMode = this.startViewMode,
            this.showMode(),
            this.isInput || V(document).off("mousedown", this.hide),
            this.forceParse && (this.isInput && this.element.val() || this.hasInput && this.element.find("input").val()) && this.setValue(),
            this.isVisible = !1,
            this.element.trigger({
                type: "hide",
                date: this.date
            })))
        },
        remove: function() {
            this._detachEvents(),
            V(document).off("mousedown", this.clickedOutside),
            this.picker.remove(),
            delete this.picker,
            delete this.element.data().datetimepicker
        },
        getDate: function() {
            var t = this.getUTCDate();
            return null === t ? null : new Date(t.getTime() + 6e4 * t.getTimezoneOffset())
        },
        getUTCDate: function() {
            return this.date
        },
        getInitialDate: function() {
            return this.initialDate
        },
        setInitialDate: function(t) {
            this.initialDate = t
        },
        setDate: function(t) {
            this.setUTCDate(new Date(t.getTime() - 6e4 * t.getTimezoneOffset()))
        },
        setUTCDate: function(t) {
            t >= this.startDate && t <= this.endDate ? (this.date = t,
            this.setValue(),
            this.viewDate = this.date,
            this.fill()) : this.element.trigger({
                type: "outOfRange",
                date: t,
                startDate: this.startDate,
                endDate: this.endDate
            })
        },
        setFormat: function(t) {
            var e;
            this.format = H.parseFormat(t, this.formatType),
            this.isInput ? e = this.element : this.component && (e = this.element.find("input")),
            e && e.val() && this.setValue()
        },
        setValue: function() {
            var t = this.getFormattedDate();
            this.isInput ? this.element.val(t) : (this.component && this.element.find("input").val(t),
            this.element.data("date", t)),
            this.linkField && V("#" + this.linkField).val(this.getFormattedDate(this.linkFormat))
        },
        getFormattedDate: function(t) {
            return t = t || this.format,
            H.formatDate(this.date, t, this.language, this.formatType, this.timezone)
        },
        setStartDate: function(t) {
            this.startDate = t || this.startDate,
            8639968443048e3 !== this.startDate.valueOf() && (this.startDate = H.parseDate(this.startDate, this.format, this.language, this.formatType, this.timezone)),
            this.update(),
            this.updateNavArrows()
        },
        setEndDate: function(t) {
            this.endDate = t || this.endDate,
            8639968443048e3 !== this.endDate.valueOf() && (this.endDate = H.parseDate(this.endDate, this.format, this.language, this.formatType, this.timezone)),
            this.update(),
            this.updateNavArrows()
        },
        setDatesDisabled: function(t) {
            this.datesDisabled = t || [],
            V.isArray(this.datesDisabled) || (this.datesDisabled = this.datesDisabled.split(/,\s*/));
            var e = this;
            this.datesDisabled = V.map(this.datesDisabled, function(t) {
                return H.parseDate(t, e.format, e.language, e.formatType, e.timezone).toDateString()
            }),
            this.update(),
            this.updateNavArrows()
        },
        setTitle: function(t, e) {
            return this.picker.find(t).find("th:eq(1)").text(!1 === this.title ? e : this.title)
        },
        setDaysOfWeekDisabled: function(t) {
            this.daysOfWeekDisabled = t || [],
            V.isArray(this.daysOfWeekDisabled) || (this.daysOfWeekDisabled = this.daysOfWeekDisabled.split(/,\s*/)),
            this.daysOfWeekDisabled = V.map(this.daysOfWeekDisabled, function(t) {
                return parseInt(t, 10)
            }),
            this.update(),
            this.updateNavArrows()
        },
        setMinutesDisabled: function(t) {
            this.minutesDisabled = t || [],
            V.isArray(this.minutesDisabled) || (this.minutesDisabled = this.minutesDisabled.split(/,\s*/)),
            this.minutesDisabled = V.map(this.minutesDisabled, function(t) {
                return parseInt(t, 10)
            }),
            this.update(),
            this.updateNavArrows()
        },
        setHoursDisabled: function(t) {
            this.hoursDisabled = t || [],
            V.isArray(this.hoursDisabled) || (this.hoursDisabled = this.hoursDisabled.split(/,\s*/)),
            this.hoursDisabled = V.map(this.hoursDisabled, function(t) {
                return parseInt(t, 10)
            }),
            this.update(),
            this.updateNavArrows()
        },
        place: function() {
            if (!this.isInline) {
                if (!this.zIndex) {
                    var e = 0;
                    V("div").each(function() {
                        var t = parseInt(V(this).css("zIndex"), 10);
                        e < t && (e = t)
                    }),
                    this.zIndex = e + 10
                }
                var t, i, s, a;
                a = this.container instanceof V ? this.container.offset() : V(this.container).offset(),
                this.component ? (s = (t = this.component.offset()).left,
                "bottom-left" !== this.pickerPosition && "top-left" !== this.pickerPosition || (s += this.component.outerWidth() - this.picker.outerWidth())) : (s = (t = this.element.offset()).left,
                "bottom-left" !== this.pickerPosition && "top-left" !== this.pickerPosition || (s += this.element.outerWidth() - this.picker.outerWidth()));
                var n = document.body.clientWidth || window.innerWidth;
                n < s + 220 && (s = n - 220),
                i = "top-left" === this.pickerPosition || "top-right" === this.pickerPosition ? t.top - this.picker.outerHeight() : t.top + this.height,
                i -= a.top,
                s -= a.left,
                this.picker.css({
                    top: i,
                    left: s,
                    zIndex: this.zIndex
                })
            }
        },
        hour_minute: "^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]",
        update: function() {
            var t, e = !1;
            arguments && arguments.length && ("string" == typeof arguments[0] || arguments[0]instanceof Date) ? (t = arguments[0],
            e = !0) : "string" == typeof (t = (this.isInput ? this.element.val() : this.element.find("input").val()) || this.element.data("date") || this.initialDate) && (t = t.replace(/^\s+|\s+$/g, "")),
            t || (t = new Date,
            e = !1),
            "string" == typeof t && (new RegExp(this.hour_minute).test(t) || new RegExp(this.hour_minute + ":[0-5][0-9]").test(t)) && (t = this.getDate()),
            this.date = H.parseDate(t, this.format, this.language, this.formatType, this.timezone),
            e && this.setValue(),
            this.date < this.startDate ? this.viewDate = new Date(this.startDate) : this.date > this.endDate ? this.viewDate = new Date(this.endDate) : this.viewDate = new Date(this.date),
            this.fill()
        },
        fillDow: function() {
            for (var t = this.weekStart, e = "<tr>"; t < this.weekStart + 7; )
                e += '<th class="dow">' + x[this.language].daysMin[t++ % 7] + "</th>";
            e += "</tr>",
            this.picker.find(".datetimepicker-days thead").append(e)
        },
        fillMonths: function() {
            for (var t = "", e = new Date(this.viewDate), i = 0; i < 12; i++) {
                e.setUTCMonth(i),
                t += '<span class="' + this.onRenderMonth(e).join(" ") + '">' + x[this.language].monthsShort[i] + "</span>"
            }
            this.picker.find(".datetimepicker-months td").html(t)
        },
        fill: function() {
            if (this.date && this.viewDate) {
                var t, e = new Date(this.viewDate), i = e.getUTCFullYear(), s = e.getUTCMonth(), a = e.getUTCDate(), n = e.getUTCHours(), h = this.startDate.getUTCFullYear(), r = this.startDate.getUTCMonth(), o = this.endDate.getUTCFullYear(), d = this.endDate.getUTCMonth() + 1, l = new S(this.date.getUTCFullYear(),this.date.getUTCMonth(),this.date.getUTCDate()).valueOf(), u = new Date;
                if (this.setTitle(".datetimepicker-days", x[this.language].months[s] + " " + i),
                "time" === this.formatViewType) {
                    var c = this.getFormattedDate();
                    this.setTitle(".datetimepicker-hours", c),
                    this.setTitle(".datetimepicker-minutes", c)
                } else
                    this.setTitle(".datetimepicker-hours", a + " " + x[this.language].months[s] + " " + i),
                    this.setTitle(".datetimepicker-minutes", a + " " + x[this.language].months[s] + " " + i);
                this.picker.find("tfoot th.today").text(x[this.language].today || x.en.today).toggle(!1 !== this.todayBtn),
                this.picker.find("tfoot th.clear").text(x[this.language].clear || x.en.clear).toggle(!1 !== this.clearBtn),
                this.updateNavArrows(),
                this.fillMonths();
                var p = S(i, s - 1, 28, 0, 0, 0, 0)
                  , m = H.getDaysInMonth(p.getUTCFullYear(), p.getUTCMonth());
                p.setUTCDate(m),
                p.setUTCDate(m - (p.getUTCDay() - this.weekStart + 7) % 7);
                var f = new Date(p);
                f.setUTCDate(f.getUTCDate() + 42),
                f = f.valueOf();
                for (var v, g = []; p.valueOf() < f; )
                    p.getUTCDay() === this.weekStart && g.push("<tr>"),
                    v = this.onRenderDay(p),
                    p.getUTCFullYear() < i || p.getUTCFullYear() === i && p.getUTCMonth() < s ? v.push("old") : (p.getUTCFullYear() > i || p.getUTCFullYear() === i && p.getUTCMonth() > s) && v.push("new"),
                    this.todayHighlight && p.getUTCFullYear() === u.getFullYear() && p.getUTCMonth() === u.getMonth() && p.getUTCDate() === u.getDate() && v.push("today"),
                    p.valueOf() === l && v.push("active"),
                    (p.valueOf() + 864e5 <= this.startDate || p.valueOf() > this.endDate || -1 !== V.inArray(p.getUTCDay(), this.daysOfWeekDisabled) || -1 !== V.inArray(p.toDateString(), this.datesDisabled)) && v.push("disabled"),
                    g.push('<td class="' + v.join(" ") + '">' + p.getUTCDate() + "</td>"),
                    p.getUTCDay() === this.weekEnd && g.push("</tr>"),
                    p.setUTCDate(p.getUTCDate() + 1);
                this.picker.find(".datetimepicker-days tbody").empty().append(g.join("")),
                g = [];
                var w = ""
                  , D = ""
                  , y = ""
                  , T = this.hoursDisabled || [];
                for (e = new Date(this.viewDate),
                t = 0; t < 24; t++) {
                    e.setUTCHours(t),
                    v = this.onRenderHour(e),
                    -1 !== T.indexOf(t) && v.push("disabled");
                    var C = S(i, s, a, t);
                    C.valueOf() + 36e5 <= this.startDate || C.valueOf() > this.endDate ? v.push("disabled") : n === t && v.push("active"),
                    this.showMeridian && 2 === x[this.language].meridiem.length ? ((D = t < 12 ? x[this.language].meridiem[0] : x[this.language].meridiem[1]) !== y && ("" !== y && g.push("</fieldset>"),
                    g.push('<fieldset class="hour"><legend>' + D.toUpperCase() + "</legend>")),
                    y = D,
                    w = t % 12 ? t % 12 : 12,
                    t < 12 ? v.push("hour_am") : v.push("hour_pm"),
                    g.push('<span class="' + v.join(" ") + '">' + w + "</span>"),
                    23 === t && g.push("</fieldset>")) : (w = t + ":00",
                    g.push('<span class="' + v.join(" ") + '">' + w + "</span>"))
                }
                this.picker.find(".datetimepicker-hours td").html(g.join("")),
                g = [],
                y = D = w = "";
                var k = this.minutesDisabled || [];
                for (e = new Date(this.viewDate),
                t = 0; t < 60; t += this.minuteStep)
                    -1 === k.indexOf(t) && (e.setUTCMinutes(t),
                    e.setUTCSeconds(0),
                    v = this.onRenderMinute(e),
                    this.showMeridian && 2 === x[this.language].meridiem.length ? ((D = n < 12 ? x[this.language].meridiem[0] : x[this.language].meridiem[1]) !== y && ("" !== y && g.push("</fieldset>"),
                    g.push('<fieldset class="minute"><legend>' + D.toUpperCase() + "</legend>")),
                    y = D,
                    w = n % 12 ? n % 12 : 12,
                    g.push('<span class="' + v.join(" ") + '">' + w + ":" + (t < 10 ? "0" + t : t) + "</span>"),
                    59 === t && g.push("</fieldset>")) : (w = t + ":00",
                    g.push('<span class="' + v.join(" ") + '">' + n + ":" + (t < 10 ? "0" + t : t) + "</span>")));
                this.picker.find(".datetimepicker-minutes td").html(g.join(""));
                var M = this.date.getUTCFullYear()
                  , b = this.setTitle(".datetimepicker-months", i).end().find(".month").removeClass("active");
                M === i && b.eq(this.date.getUTCMonth()).addClass("active"),
                (i < h || o < i) && b.addClass("disabled"),
                i === h && b.slice(0, r).addClass("disabled"),
                i === o && b.slice(d).addClass("disabled"),
                g = "",
                i = 10 * parseInt(i / 10, 10);
                var U = this.setTitle(".datetimepicker-years", i + "-" + (i + 9)).end().find("td");
                for (i -= 1,
                e = new Date(this.viewDate),
                t = -1; t < 11; t++)
                    e.setUTCFullYear(i),
                    v = this.onRenderYear(e),
                    -1 !== t && 10 !== t || v.push(F),
                    g += '<span class="' + v.join(" ") + '">' + i + "</span>",
                    i += 1;
                U.html(g),
                this.place()
            }
        },
        updateNavArrows: function() {
            var t = new Date(this.viewDate)
              , e = t.getUTCFullYear()
              , i = t.getUTCMonth()
              , s = t.getUTCDate()
              , a = t.getUTCHours();
            switch (this.viewMode) {
            case 0:
                e <= this.startDate.getUTCFullYear() && i <= this.startDate.getUTCMonth() && s <= this.startDate.getUTCDate() && a <= this.startDate.getUTCHours() ? this.picker.find(".prev").css({
                    visibility: "hidden"
                }) : this.picker.find(".prev").css({
                    visibility: "visible"
                }),
                e >= this.endDate.getUTCFullYear() && i >= this.endDate.getUTCMonth() && s >= this.endDate.getUTCDate() && a >= this.endDate.getUTCHours() ? this.picker.find(".next").css({
                    visibility: "hidden"
                }) : this.picker.find(".next").css({
                    visibility: "visible"
                });
                break;
            case 1:
                e <= this.startDate.getUTCFullYear() && i <= this.startDate.getUTCMonth() && s <= this.startDate.getUTCDate() ? this.picker.find(".prev").css({
                    visibility: "hidden"
                }) : this.picker.find(".prev").css({
                    visibility: "visible"
                }),
                e >= this.endDate.getUTCFullYear() && i >= this.endDate.getUTCMonth() && s >= this.endDate.getUTCDate() ? this.picker.find(".next").css({
                    visibility: "hidden"
                }) : this.picker.find(".next").css({
                    visibility: "visible"
                });
                break;
            case 2:
                e <= this.startDate.getUTCFullYear() && i <= this.startDate.getUTCMonth() ? this.picker.find(".prev").css({
                    visibility: "hidden"
                }) : this.picker.find(".prev").css({
                    visibility: "visible"
                }),
                e >= this.endDate.getUTCFullYear() && i >= this.endDate.getUTCMonth() ? this.picker.find(".next").css({
                    visibility: "hidden"
                }) : this.picker.find(".next").css({
                    visibility: "visible"
                });
                break;
            case 3:
            case 4:
                e <= this.startDate.getUTCFullYear() ? this.picker.find(".prev").css({
                    visibility: "hidden"
                }) : this.picker.find(".prev").css({
                    visibility: "visible"
                }),
                e >= this.endDate.getUTCFullYear() ? this.picker.find(".next").css({
                    visibility: "hidden"
                }) : this.picker.find(".next").css({
                    visibility: "visible"
                })
            }
        },
        mousewheel: function(t) {
            if (t.preventDefault(),
            t.stopPropagation(),
            !this.wheelPause) {
                this.wheelPause = !0;
                var e = t.originalEvent.wheelDelta
                  , i = 0 < e ? 1 : 0 === e ? 0 : -1;
                this.wheelViewModeNavigationInverseDirection && (i = -i),
                this.showMode(i),
                setTimeout(V.proxy(function() {
                    this.wheelPause = !1
                }, this), this.wheelViewModeNavigationDelay)
            }
        },
        click: function(t) {
            t.stopPropagation(),
            t.preventDefault();
            var e = V(t.target).closest("span, td, th, legend");
            if (e.is("." + this.icontype) && (e = V(e).parent().closest("span, td, th, legend")),
            1 === e.length) {
                if (e.is(".disabled"))
                    return void this.element.trigger({
                        type: "outOfRange",
                        date: this.viewDate,
                        startDate: this.startDate,
                        endDate: this.endDate
                    });
                switch (e[0].nodeName.toLowerCase()) {
                case "th":
                    switch (e[0].className) {
                    case "switch":
                        this.showMode(1);
                        break;
                    case "prev":
                    case "next":
                        var i = H.modes[this.viewMode].navStep * ("prev" === e[0].className ? -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)
                        }
                        this.fill(),
                        this.element.trigger({
                            type: e[0].className + ":" + this.convertViewModeText(this.viewMode),
                            date: this.viewDate,
                            startDate: this.startDate,
                            endDate: this.endDate
                        });
                        break;
                    case "clear":
                        this.reset(),
                        this.autoclose && this.hide();
                        break;
                    case "today":
                        var s = new Date;
                        (s = S(s.getFullYear(), s.getMonth(), s.getDate(), s.getHours(), s.getMinutes(), s.getSeconds(), 0)) < this.startDate ? s = this.startDate : s > this.endDate && (s = this.endDate),
                        this.viewMode = this.startViewMode,
                        this.showMode(0),
                        this._setDate(s),
                        this.fill(),
                        this.autoclose && this.hide()
                    }
                    break;
                case "span":
                    if (!e.is(".disabled")) {
                        var a = this.viewDate.getUTCFullYear()
                          , n = this.viewDate.getUTCMonth()
                          , h = this.viewDate.getUTCDate()
                          , r = this.viewDate.getUTCHours()
                          , o = this.viewDate.getUTCMinutes()
                          , d = this.viewDate.getUTCSeconds();
                        if (e.is(".month") ? (this.viewDate.setUTCDate(1),
                        n = e.parent().find("span").index(e),
                        h = this.viewDate.getUTCDate(),
                        this.viewDate.setUTCMonth(n),
                        this.element.trigger({
                            type: "changeMonth",
                            date: this.viewDate
                        }),
                        3 <= this.viewSelect && this._setDate(S(a, n, h, r, o, d, 0))) : e.is(".year") ? (this.viewDate.setUTCDate(1),
                        a = parseInt(e.text(), 10) || 0,
                        this.viewDate.setUTCFullYear(a),
                        this.element.trigger({
                            type: "changeYear",
                            date: this.viewDate
                        }),
                        4 <= this.viewSelect && this._setDate(S(a, n, h, r, o, d, 0))) : e.is(".hour") ? (r = parseInt(e.text(), 10) || 0,
                        (e.hasClass("hour_am") || e.hasClass("hour_pm")) && (12 === r && e.hasClass("hour_am") ? r = 0 : 12 !== r && e.hasClass("hour_pm") && (r += 12)),
                        this.viewDate.setUTCHours(r),
                        this.element.trigger({
                            type: "changeHour",
                            date: this.viewDate
                        }),
                        1 <= this.viewSelect && this._setDate(S(a, n, h, r, o, d, 0))) : e.is(".minute") && (o = parseInt(e.text().substr(e.text().indexOf(":") + 1), 10) || 0,
                        this.viewDate.setUTCMinutes(o),
                        this.element.trigger({
                            type: "changeMinute",
                            date: this.viewDate
                        }),
                        0 <= this.viewSelect && this._setDate(S(a, n, h, r, o, d, 0))),
                        0 !== this.viewMode) {
                            var l = this.viewMode;
                            this.showMode(-1),
                            this.fill(),
                            l === this.viewMode && this.autoclose && this.hide()
                        } else
                            this.fill(),
                            this.autoclose && this.hide()
                    }
                    break;
                case "td":
                    if (e.is(".day") && !e.is(".disabled")) {
                        h = parseInt(e.text(), 10) || 1,
                        a = this.viewDate.getUTCFullYear(),
                        n = this.viewDate.getUTCMonth(),
                        r = this.viewDate.getUTCHours(),
                        o = this.viewDate.getUTCMinutes(),
                        d = this.viewDate.getUTCSeconds();
                        e.is(".old") ? 0 === n ? (n = 11,
                        a -= 1) : n -= 1 : e.is(".new") && (11 === n ? (n = 0,
                        a += 1) : n += 1),
                        this.viewDate.setUTCFullYear(a),
                        this.viewDate.setUTCMonth(n, h),
                        this.element.trigger({
                            type: "changeDay",
                            date: this.viewDate
                        }),
                        2 <= this.viewSelect && this._setDate(S(a, n, h, r, o, d, 0))
                    }
                    l = this.viewMode;
                    this.showMode(-1),
                    this.fill(),
                    l === this.viewMode && this.autoclose && this.hide()
                }
            }
        },
        _setDate: function(t, e) {
            var i;
            e && "date" !== e || (this.date = t),
            e && "view" !== e || (this.viewDate = t),
            this.fill(),
            this.setValue(),
            this.isInput ? i = this.element : this.component && (i = this.element.find("input")),
            i && i.change(),
            this.element.trigger({
                type: "changeDate",
                date: this.getDate()
            }),
            null === t && (this.date = this.viewDate)
        },
        moveMinute: function(t, e) {
            if (!e)
                return t;
            var i = new Date(t.valueOf());
            return i.setUTCMinutes(i.getUTCMinutes() + e * this.minuteStep),
            i
        },
        moveHour: function(t, e) {
            if (!e)
                return t;
            var i = new Date(t.valueOf());
            return i.setUTCHours(i.getUTCHours() + e),
            i
        },
        moveDate: function(t, e) {
            if (!e)
                return t;
            var i = new Date(t.valueOf());
            return i.setUTCDate(i.getUTCDate() + e),
            i
        },
        moveMonth: function(t, e) {
            if (!e)
                return t;
            var i, s, a = new Date(t.valueOf()), n = a.getUTCDate(), h = a.getUTCMonth(), r = Math.abs(e);
            if (e = 0 < e ? 1 : -1,
            1 === r)
                s = -1 === e ? function() {
                    return a.getUTCMonth() === h
                }
                : function() {
                    return a.getUTCMonth() !== i
                }
                ,
                i = h + e,
                a.setUTCMonth(i),
                (i < 0 || 11 < i) && (i = (i + 12) % 12);
            else {
                for (var o = 0; o < r; o++)
                    a = this.moveMonth(a, e);
                i = a.getUTCMonth(),
                a.setUTCDate(n),
                s = function() {
                    return i !== a.getUTCMonth()
                }
            }
            for (; s(); )
                a.setUTCDate(--n),
                a.setUTCMonth(i);
            return a
        },
        moveYear: function(t, e) {
            return this.moveMonth(t, 12 * e)
        },
        dateWithinRange: function(t) {
            return t >= this.startDate && t <= this.endDate
        },
        keydown: function(t) {
            if (this.picker.is(":not(:visible)"))
                27 === t.keyCode && this.show();
            else {
                var e, i, s, a, n = !1;
                switch (t.keyCode) {
                case 27:
                    this.hide(),
                    t.preventDefault();
                    break;
                case 37:
                case 39:
                    if (!this.keyboardNavigation)
                        break;
                    e = 37 === t.keyCode ? -1 : 1;
                    var h = this.viewMode;
                    t.ctrlKey ? h += 2 : t.shiftKey && (h += 1),
                    4 === h ? (i = this.moveYear(this.date, e),
                    s = this.moveYear(this.viewDate, e)) : 3 === h ? (i = this.moveMonth(this.date, e),
                    s = this.moveMonth(this.viewDate, e)) : 2 === h ? (i = this.moveDate(this.date, e),
                    s = this.moveDate(this.viewDate, e)) : 1 === h ? (i = this.moveHour(this.date, e),
                    s = this.moveHour(this.viewDate, e)) : 0 === h && (i = this.moveMinute(this.date, e),
                    s = this.moveMinute(this.viewDate, e)),
                    this.dateWithinRange(i) && (this.date = i,
                    this.viewDate = s,
                    this.setValue(),
                    this.update(),
                    t.preventDefault(),
                    n = !0);
                    break;
                case 38:
                case 40:
                    if (!this.keyboardNavigation)
                        break;
                    e = 38 === t.keyCode ? -1 : 1,
                    h = this.viewMode,
                    t.ctrlKey ? h += 2 : t.shiftKey && (h += 1),
                    4 === h ? (i = this.moveYear(this.date, e),
                    s = this.moveYear(this.viewDate, e)) : 3 === h ? (i = this.moveMonth(this.date, e),
                    s = this.moveMonth(this.viewDate, e)) : 2 === h ? (i = this.moveDate(this.date, 7 * e),
                    s = this.moveDate(this.viewDate, 7 * e)) : 1 === h ? s = this.showMeridian ? (i = this.moveHour(this.date, 6 * e),
                    this.moveHour(this.viewDate, 6 * e)) : (i = this.moveHour(this.date, 4 * e),
                    this.moveHour(this.viewDate, 4 * e)) : 0 === h && (i = this.moveMinute(this.date, 4 * e),
                    s = this.moveMinute(this.viewDate, 4 * e)),
                    this.dateWithinRange(i) && (this.date = i,
                    this.viewDate = s,
                    this.setValue(),
                    this.update(),
                    t.preventDefault(),
                    n = !0);
                    break;
                case 13:
                    if (0 !== this.viewMode) {
                        var r = this.viewMode;
                        this.showMode(-1),
                        this.fill(),
                        r === this.viewMode && this.autoclose && this.hide()
                    } else
                        this.fill(),
                        this.autoclose && this.hide();
                    t.preventDefault();
                    break;
                case 9:
                    this.hide()
                }
                if (n)
                    this.isInput ? a = this.element : this.component && (a = this.element.find("input")),
                    a && a.change(),
                    this.element.trigger({
                        type: "changeDate",
                        date: this.getDate()
                    })
            }
        },
        showMode: function(t) {
            if (t) {
                var e = Math.max(0, Math.min(H.modes.length - 1, this.viewMode + t));
                e >= this.minView && e <= this.maxView && (this.element.trigger({
                    type: "changeMode",
                    date: this.viewDate,
                    oldViewMode: this.viewMode,
                    newViewMode: e
                }),
                this.viewMode = e)
            }
            this.picker.find(">div").hide().filter(".datetimepicker-" + H.modes[this.viewMode].clsName).css("display", "block"),
            this.updateNavArrows()
        },
        reset: function() {
            this._setDate(null, "date")
        },
        convertViewModeText: function(t) {
            switch (t) {
            case 4:
                return "decade";
            case 3:
                return "year";
            case 2:
                return "month";
            case 1:
                return "day";
            case 0:
                return "hour"
            }
        }
    };
    var F = V.fn.datetimepicker;
    V.fn.datetimepicker = function(s) {
        var a, n = Array.apply(null, arguments);
        return n.shift(),
        this.each(function() {
            var t = V(this)
              , e = t.data("datetimepicker")
              , i = "object" == typeof s && s;
            if (e || t.data("datetimepicker", e = new w(this,V.extend({}, V.fn.datetimepicker.defaults, i))),
            "string" == typeof s && "function" == typeof e[s] && (a = e[s].apply(e, n)) !== h)
                return !1
        }),
        a !== h ? a : this
    }
    ,
    V.fn.datetimepicker.defaults = {},
    V.fn.datetimepicker.Constructor = w;
    var x = V.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",
            clear: "Clear"
        }
    }
      , H = {
        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(t) {
            return t % 4 == 0 && t % 100 != 0 || t % 400 == 0
        },
        getDaysInMonth: function(t, e) {
            return [31, H.isLeapYear(t) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][e]
        },
        getDefaultFormat: function(t, e) {
            if ("standard" === t)
                return "input" === e ? "yyyy-mm-dd hh:ii" : "yyyy-mm-dd hh:ii:ss";
            if ("php" === t)
                return "input" === e ? "Y-m-d H:i" : "Y-m-d H:i:s";
            throw new Error("Invalid format type.")
        },
        validParts: function(t) {
            if ("standard" === t)
                return /t|hh?|HH?|p|P|z|Z|ii?|ss?|dd?|DD?|mm?|MM?|yy(?:yy)?/g;
            if ("php" === t)
                return /[dDjlNwzFmMnStyYaABgGhHis]/g;
            throw new Error("Invalid format type.")
        },
        nonpunctuation: /[^ -\/:-@\[-`{-~\t\n\rTZ]+/g,
        parseFormat: function(t, e) {
            var i = t.replace(this.validParts(e), "\0").split("\0")
              , s = t.match(this.validParts(e));
            if (!i || !i.length || !s || 0 === s.length)
                throw new Error("Invalid date format.");
            return {
                separators: i,
                parts: s
            }
        },
        parseDate: function(t, e, i, s, a) {
            if (t instanceof Date) {
                var n = new Date(t.valueOf() - 6e4 * t.getTimezoneOffset());
                return n.setMilliseconds(0),
                n
            }
            if (/^\d{4}\-\d{1,2}\-\d{1,2}$/.test(t) && (e = this.parseFormat("yyyy-mm-dd", s)),
            /^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}$/.test(t) && (e = this.parseFormat("yyyy-mm-dd hh:ii", s)),
            /^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}\:\d{1,2}[Z]{0,1}$/.test(t) && (e = this.parseFormat("yyyy-mm-dd hh:ii:ss", s)),
            /^[-+]\d+[dmwy]([\s,]+[-+]\d+[dmwy])*$/.test(t)) {
                var h, r = /([-+]\d+)([dmwy])/, o = t.match(/([-+]\d+)([dmwy])/g);
                t = new Date;
                for (var d = 0; d < o.length; d++)
                    switch (c = r.exec(o[d]),
                    h = parseInt(c[1]),
                    c[2]) {
                    case "d":
                        t.setUTCDate(t.getUTCDate() + h);
                        break;
                    case "m":
                        t = w.prototype.moveMonth.call(w.prototype, t, h);
                        break;
                    case "w":
                        t.setUTCDate(t.getUTCDate() + 7 * h);
                        break;
                    case "y":
                        t = w.prototype.moveYear.call(w.prototype, t, h)
                    }
                return S(t.getUTCFullYear(), t.getUTCMonth(), t.getUTCDate(), t.getUTCHours(), t.getUTCMinutes(), t.getUTCSeconds(), 0)
            }
            o = t && t.toString().match(this.nonpunctuation) || [],
            t = new Date(0,0,0,0,0,0,0);
            var l, u, c, p = {}, m = ["hh", "h", "ii", "i", "ss", "s", "yyyy", "yy", "M", "MM", "m", "mm", "D", "DD", "d", "dd", "H", "HH", "p", "P", "z", "Z"], f = {
                hh: function(t, e) {
                    return t.setUTCHours(e)
                },
                h: function(t, e) {
                    return t.setUTCHours(e)
                },
                HH: function(t, e) {
                    return t.setUTCHours(12 === e ? 0 : e)
                },
                H: function(t, e) {
                    return t.setUTCHours(12 === e ? 0 : e)
                },
                ii: function(t, e) {
                    return t.setUTCMinutes(e)
                },
                i: function(t, e) {
                    return t.setUTCMinutes(e)
                },
                ss: function(t, e) {
                    return t.setUTCSeconds(e)
                },
                s: function(t, e) {
                    return t.setUTCSeconds(e)
                },
                yyyy: function(t, e) {
                    return t.setUTCFullYear(e)
                },
                yy: function(t, e) {
                    return t.setUTCFullYear(2e3 + e)
                },
                m: function(t, e) {
                    for (e -= 1; e < 0; )
                        e += 12;
                    for (e %= 12,
                    t.setUTCMonth(e); t.getUTCMonth() !== e; ) {
                        if (isNaN(t.getUTCMonth()))
                            return t;
                        t.setUTCDate(t.getUTCDate() - 1)
                    }
                    return t
                },
                d: function(t, e) {
                    return t.setUTCDate(e)
                },
                p: function(t, e) {
                    return t.setUTCHours(1 === e ? t.getUTCHours() + 12 : t.getUTCHours())
                },
                z: function() {
                    return a
                }
            };
            if (f.M = f.MM = f.mm = f.m,
            f.dd = f.d,
            f.P = f.p,
            f.Z = f.z,
            t = S(t.getFullYear(), t.getMonth(), t.getDate(), t.getHours(), t.getMinutes(), t.getSeconds()),
            o.length === e.parts.length) {
                d = 0;
                for (var v = e.parts.length; d < v; d++) {
                    if (l = parseInt(o[d], 10),
                    c = e.parts[d],
                    isNaN(l))
                        switch (c) {
                        case "MM":
                            u = V(x[i].months).filter(function() {
                                var t = this.slice(0, o[d].length);
                                return t === o[d].slice(0, t.length)
                            }),
                            l = V.inArray(u[0], x[i].months) + 1;
                            break;
                        case "M":
                            u = V(x[i].monthsShort).filter(function() {
                                var t = this.slice(0, o[d].length)
                                  , e = o[d].slice(0, t.length);
                                return t.toLowerCase() === e.toLowerCase()
                            }),
                            l = V.inArray(u[0], x[i].monthsShort) + 1;
                            break;
                        case "p":
                        case "P":
                            l = V.inArray(o[d].toLowerCase(), x[i].meridiem)
                        }
                    p[c] = l
                }
                var g;
                for (d = 0; d < m.length; d++)
                    (g = m[d])in p && !isNaN(p[g]) && f[g](t, p[g])
            }
            return t
        },
        formatDate: function(t, e, i, s, a) {
            if (null === t)
                return "";
            var n;
            if ("standard" === s)
                n = {
                    t: t.getTime(),
                    yy: t.getUTCFullYear().toString().substring(2),
                    yyyy: t.getUTCFullYear(),
                    m: t.getUTCMonth() + 1,
                    M: x[i].monthsShort[t.getUTCMonth()],
                    MM: x[i].months[t.getUTCMonth()],
                    d: t.getUTCDate(),
                    D: x[i].daysShort[t.getUTCDay()],
                    DD: x[i].days[t.getUTCDay()],
                    p: 2 === x[i].meridiem.length ? x[i].meridiem[t.getUTCHours() < 12 ? 0 : 1] : "",
                    h: t.getUTCHours(),
                    i: t.getUTCMinutes(),
                    s: t.getUTCSeconds(),
                    z: a
                },
                2 === x[i].meridiem.length ? n.H = n.h % 12 == 0 ? 12 : n.h % 12 : n.H = n.h,
                n.HH = (n.H < 10 ? "0" : "") + n.H,
                n.P = n.p.toUpperCase(),
                n.Z = n.z,
                n.hh = (n.h < 10 ? "0" : "") + n.h,
                n.ii = (n.i < 10 ? "0" : "") + n.i,
                n.ss = (n.s < 10 ? "0" : "") + n.s,
                n.dd = (n.d < 10 ? "0" : "") + n.d,
                n.mm = (n.m < 10 ? "0" : "") + n.m;
            else {
                if ("php" !== s)
                    throw new Error("Invalid format type.");
                (n = {
                    y: t.getUTCFullYear().toString().substring(2),
                    Y: t.getUTCFullYear(),
                    F: x[i].months[t.getUTCMonth()],
                    M: x[i].monthsShort[t.getUTCMonth()],
                    n: t.getUTCMonth() + 1,
                    t: H.getDaysInMonth(t.getUTCFullYear(), t.getUTCMonth()),
                    j: t.getUTCDate(),
                    l: x[i].days[t.getUTCDay()],
                    D: x[i].daysShort[t.getUTCDay()],
                    w: t.getUTCDay(),
                    N: 0 === t.getUTCDay() ? 7 : t.getUTCDay(),
                    S: t.getUTCDate() % 10 <= x[i].suffix.length ? x[i].suffix[t.getUTCDate() % 10 - 1] : "",
                    a: 2 === x[i].meridiem.length ? x[i].meridiem[t.getUTCHours() < 12 ? 0 : 1] : "",
                    g: t.getUTCHours() % 12 == 0 ? 12 : t.getUTCHours() % 12,
                    G: t.getUTCHours(),
                    i: t.getUTCMinutes(),
                    s: t.getUTCSeconds()
                }).m = (n.n < 10 ? "0" : "") + n.n,
                n.d = (n.j < 10 ? "0" : "") + n.j,
                n.A = n.a.toString().toUpperCase(),
                n.h = (n.g < 10 ? "0" : "") + n.g,
                n.H = (n.G < 10 ? "0" : "") + n.G,
                n.i = (n.i < 10 ? "0" : "") + n.i,
                n.s = (n.s < 10 ? "0" : "") + n.s
            }
            t = [];
            for (var h = V.extend([], e.separators), r = 0, o = e.parts.length; r < o; r++)
                h.length && t.push(h.shift()),
                t.push(n[e.parts[r]]);
            return h.length && t.push(h.shift()),
            t.join("")
        },
        convertViewMode: function(t) {
            switch (t) {
            case 4:
            case "decade":
                t = 4;
                break;
            case 3:
            case "year":
                t = 3;
                break;
            case 2:
            case "month":
                t = 2;
                break;
            case 1:
            case "day":
                t = 1;
                break;
            case 0:
            case "hour":
                t = 0
            }
            return t
        },
        headTemplate: '<thead><tr><th class="prev"><i class="{iconType} {leftArrow}"/></th><th colspan="5" class="switch"></th><th class="next"><i class="{iconType} {rightArrow}"/></th></tr></thead>',
        headTemplateV3: '<thead><tr><th class="prev"><span class="{iconType} {leftArrow}"></span> </th><th colspan="5" class="switch"></th><th class="next"><span class="{iconType} {rightArrow}"></span> </th></tr></thead>',
        contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>',
        footTemplate: '<tfoot><tr><th colspan="7" class="today"></th></tr><tr><th colspan="7" class="clear"></th></tr></tfoot>'
    };
    H.template = '<div class="datetimepicker"><div class="datetimepicker-minutes"><table>' + H.headTemplate + H.contTemplate + H.footTemplate + '</table></div><div class="datetimepicker-hours"><table>' + H.headTemplate + H.contTemplate + H.footTemplate + '</table></div><div class="datetimepicker-days"><table>' + H.headTemplate + "<tbody></tbody>" + H.footTemplate + '</table></div><div class="datetimepicker-months"><table>' + H.headTemplate + H.contTemplate + H.footTemplate + '</table></div><div class="datetimepicker-years"><table>' + H.headTemplate + H.contTemplate + H.footTemplate + "</table></div></div>",
    H.templateV3 = '<div class="datetimepicker"><div class="datetimepicker-minutes"><table>' + H.headTemplateV3 + H.contTemplate + H.footTemplate + '</table></div><div class="datetimepicker-hours"><table>' + H.headTemplateV3 + H.contTemplate + H.footTemplate + '</table></div><div class="datetimepicker-days"><table>' + H.headTemplateV3 + "<tbody></tbody>" + H.footTemplate + '</table></div><div class="datetimepicker-months"><table>' + H.headTemplateV3 + H.contTemplate + H.footTemplate + '</table></div><div class="datetimepicker-years"><table>' + H.headTemplateV3 + H.contTemplate + H.footTemplate + "</table></div></div>",
    V.fn.datetimepicker.DPGlobal = H,
    V.fn.datetimepicker.noConflict = function() {
        return V.fn.datetimepicker = F,
        this
    }
    ,
    V(document).on("focus.datetimepicker.data-api click.datetimepicker.data-api", '[data-provide="datetimepicker"]', function(t) {
        var e = V(this);
        e.data("datetimepicker") || (t.preventDefault(),
        e.datetimepicker("show"))
    }),
    V(function() {
        V('[data-provide="datetimepicker-inline"]').datetimepicker()
    })
});