"; for (j = 0, k = this.units.length; k > j; j++) { if (d = this.units[j], e = d.substr(0, 1).toUpperCase() + d.substr(1), f = null !== b["show" + e] ? b["show" + e] : this.support[d], g[d] = parseInt(b[d + "Max"] - (b[d + "Max"] - b[d + "Min"]) % b["step" + e], 10), h[d] = 0, m += '
' + b[d + "Text"] + '
', f && b[d + "Grid"] > 0) { if (m += '
', "hour" === d) for (var n = b[d + "Min"]; n <= g[d]; n += parseInt(b[d + "Grid"], 10)) { h[d]++; var o = $.datepicker.formatTime(this.support.ampm ? "hht" : "HH", { hour: n }, b); m += '
' + o + "
" } else for (var p = b[d + "Min"]; p <= g[d]; p += parseInt(b[d + "Grid"], 10))h[d]++, m += '
' + (10 > p ? "0" : "") + p + "
"; m += "
" } m += "
" } var q = null !== b.showTimezone ? b.showTimezone : this.support.timezone; m += '
' + b.timezoneText + "
", m += '', m += "
"; var r = $(m); for (b.timeOnly === !0 && (r.prepend('
' + b.timeOnlyTitle + "
"), a.find(".ui-datepicker-header, .ui-datepicker-calendar").hide()), j = 0, k = c.units.length; k > j; j++)d = c.units[j], e = d.substr(0, 1).toUpperCase() + d.substr(1), f = null !== b["show" + e] ? b["show" + e] : this.support[d], c[d + "_slider"] = c.control.create(c, r.find(".ui_tpicker_" + d + "_slider"), d, c[d], b[d + "Min"], g[d], b["step" + e]), f && b[d + "Grid"] > 0 && (i = 100 * h[d] * b[d + "Grid"] / (g[d] - b[d + "Min"]), r.find(".ui_tpicker_" + d + " table").css({ width: i + "%", marginLeft: b.isRTL ? "0" : i / (-2 * h[d]) + "%", marginRight: b.isRTL ? i / (-2 * h[d]) + "%" : "0", borderCollapse: "collapse" }).find("td").click(function (a) { var b = $(this), e = b.html(), f = parseInt(e.replace(/[^0-9]/g), 10), g = e.replace(/[^apm]/gi), h = b.data("for"); "hour" === h && (-1 !== g.indexOf("p") && 12 > f ? f += 12 : -1 !== g.indexOf("a") && 12 === f && (f = 0)), c.control.value(c, c[h + "_slider"], d, f), c._onTimeChange(), c._onSelectHandler() }).css({ cursor: "pointer", width: 100 / h[d] + "%", textAlign: "center", overflow: "hidden" })); if (this.timezone_select = r.find(".ui_tpicker_timezone").append("").find("select"), $.fn.append.apply(this.timezone_select, $.map(b.timezoneList, function (a, b) { return $("").val("object" == typeof a ? a.value : a).text("object" == typeof a ? a.label : a) })), "undefined" != typeof this.timezone && null !== this.timezone && "" !== this.timezone) { var s = -1 * new Date(this.inst.selectedYear, this.inst.selectedMonth, this.inst.selectedDay, 12).getTimezoneOffset(); s === this.timezone ? selectLocalTimezone(c) : this.timezone_select.val(this.timezone) } else "undefined" != typeof this.hour && null !== this.hour && "" !== this.hour ? this.timezone_select.val(b.timezone) : selectLocalTimezone(c); this.timezone_select.change(function () { c._onTimeChange(), c._onSelectHandler(), c._afterInject() }); var t = a.find(".ui-datepicker-buttonpane"); if (t.length ? t.before(r) : a.append(r), this.$timeObj = r.find(".ui_tpicker_time_input"), this.$timeObj.change(function () { var a = c.inst.settings.timeFormat, b = $.datepicker.parseTime(a, this.value), d = new Date; b ? (d.setHours(b.hour), d.setMinutes(b.minute), d.setSeconds(b.second), $.datepicker._setTime(c.inst, d)) : (this.value = c.formattedTime, this.blur()) }), null !== this.inst) { var u = this.timeDefined; this._onTimeChange(), this.timeDefined = u } if (this._defaults.addSliderAccess) { var v = this._defaults.sliderAccessArgs, w = this._defaults.isRTL; v.isRTL = w, setTimeout(function () { if (0 === r.find(".ui-slider-access").length) { r.find(".ui-slider:visible").sliderAccess(v); var a = r.find(".ui-slider-access:eq(0)").outerWidth(!0); a && r.find("table:visible").each(function () { var b = $(this), c = b.outerWidth(), d = b.css(w ? "marginRight" : "marginLeft").toString().replace("%", ""), e = c - a, f = d * e / c + "%", g = { width: e, marginRight: 0, marginLeft: 0 }; g[w ? "marginRight" : "marginLeft"] = f, b.css(g) }) } }, 10) } c._limitMinMaxDateTime(this.inst, !0) } }, _limitMinMaxDateTime: function (a, b) { var c = this._defaults, d = new Date(a.selectedYear, a.selectedMonth, a.selectedDay); if (this._defaults.showTimepicker) { if (null !== $.datepicker._get(a, "minDateTime") && void 0 !== $.datepicker._get(a, "minDateTime") && d) { var e = $.datepicker._get(a, "minDateTime"), f = new Date(e.getFullYear(), e.getMonth(), e.getDate(), 0, 0, 0, 0); (null === this.hourMinOriginal || null === this.minuteMinOriginal || null === this.secondMinOriginal || null === this.millisecMinOriginal || null === this.microsecMinOriginal) && (this.hourMinOriginal = c.hourMin, this.minuteMinOriginal = c.minuteMin, this.secondMinOriginal = c.secondMin, this.millisecMinOriginal = c.millisecMin, this.microsecMinOriginal = c.microsecMin), a.settings.timeOnly || f.getTime() === d.getTime() ? (this._defaults.hourMin = e.getHours(), this.hour <= this._defaults.hourMin ? (this.hour = this._defaults.hourMin, this._defaults.minuteMin = e.getMinutes(), this.minute <= this._defaults.minuteMin ? (this.minute = this._defaults.minuteMin, this._defaults.secondMin = e.getSeconds(), this.second <= this._defaults.secondMin ? (this.second = this._defaults.secondMin, this._defaults.millisecMin = e.getMilliseconds(), this.millisec <= this._defaults.millisecMin ? (this.millisec = this._defaults.millisecMin, this._defaults.microsecMin = e.getMicroseconds()) : (this.microsec < this._defaults.microsecMin && (this.microsec = this._defaults.microsecMin), this._defaults.microsecMin = this.microsecMinOriginal)) : (this._defaults.millisecMin = this.millisecMinOriginal, this._defaults.microsecMin = this.microsecMinOriginal)) : (this._defaults.secondMin = this.secondMinOriginal, this._defaults.millisecMin = this.millisecMinOriginal, this._defaults.microsecMin = this.microsecMinOriginal)) : (this._defaults.minuteMin = this.minuteMinOriginal, this._defaults.secondMin = this.secondMinOriginal, this._defaults.millisecMin = this.millisecMinOriginal, this._defaults.microsecMin = this.microsecMinOriginal)) : (this._defaults.hourMin = this.hourMinOriginal, this._defaults.minuteMin = this.minuteMinOriginal, this._defaults.secondMin = this.secondMinOriginal, this._defaults.millisecMin = this.millisecMinOriginal, this._defaults.microsecMin = this.microsecMinOriginal) } if (null !== $.datepicker._get(a, "maxDateTime") && void 0 !== $.datepicker._get(a, "maxDateTime") && d) { var g = $.datepicker._get(a, "maxDateTime"), h = new Date(g.getFullYear(), g.getMonth(), g.getDate(), 0, 0, 0, 0); (null === this.hourMaxOriginal || null === this.minuteMaxOriginal || null === this.secondMaxOriginal || null === this.millisecMaxOriginal) && (this.hourMaxOriginal = c.hourMax, this.minuteMaxOriginal = c.minuteMax, this.secondMaxOriginal = c.secondMax, this.millisecMaxOriginal = c.millisecMax, this.microsecMaxOriginal = c.microsecMax), a.settings.timeOnly || h.getTime() === d.getTime() ? (this._defaults.hourMax = g.getHours(), this.hour >= this._defaults.hourMax ? (this.hour = this._defaults.hourMax, this._defaults.minuteMax = g.getMinutes(), this.minute >= this._defaults.minuteMax ? (this.minute = this._defaults.minuteMax, this._defaults.secondMax = g.getSeconds(), this.second >= this._defaults.secondMax ? (this.second = this._defaults.secondMax, this._defaults.millisecMax = g.getMilliseconds(), this.millisec >= this._defaults.millisecMax ? (this.millisec = this._defaults.millisecMax, this._defaults.microsecMax = g.getMicroseconds()) : (this.microsec > this._defaults.microsecMax && (this.microsec = this._defaults.microsecMax), this._defaults.microsecMax = this.microsecMaxOriginal)) : (this._defaults.millisecMax = this.millisecMaxOriginal, this._defaults.microsecMax = this.microsecMaxOriginal)) : (this._defaults.secondMax = this.secondMaxOriginal, this._defaults.millisecMax = this.millisecMaxOriginal, this._defaults.microsecMax = this.microsecMaxOriginal)) : (this._defaults.minuteMax = this.minuteMaxOriginal, this._defaults.secondMax = this.secondMaxOriginal, this._defaults.millisecMax = this.millisecMaxOriginal, this._defaults.microsecMax = this.microsecMaxOriginal)) : (this._defaults.hourMax = this.hourMaxOriginal, this._defaults.minuteMax = this.minuteMaxOriginal, this._defaults.secondMax = this.secondMaxOriginal, this._defaults.millisecMax = this.millisecMaxOriginal, this._defaults.microsecMax = this.microsecMaxOriginal) } if (null !== a.settings.minTime) { var i = new Date("01/01/1970 " + a.settings.minTime); this.hour < i.getHours() ? (this.hour = this._defaults.hourMin = i.getHours(), this.minute = this._defaults.minuteMin = i.getMinutes()) : this.hour === i.getHours() && this.minute < i.getMinutes() ? this.minute = this._defaults.minuteMin = i.getMinutes() : this._defaults.hourMin < i.getHours() ? (this._defaults.hourMin = i.getHours(), this._defaults.minuteMin = i.getMinutes()) : this._defaults.hourMin === i.getHours() === this.hour && this._defaults.minuteMin < i.getMinutes() ? this._defaults.minuteMin = i.getMinutes() : this._defaults.minuteMin = 0 } if (null !== a.settings.maxTime) { var j = new Date("01/01/1970 " + a.settings.maxTime); this.hour > j.getHours() ? (this.hour = this._defaults.hourMax = j.getHours(), this.minute = this._defaults.minuteMax = j.getMinutes()) : this.hour === j.getHours() && this.minute > j.getMinutes() ? this.minute = this._defaults.minuteMax = j.getMinutes() : this._defaults.hourMax > j.getHours() ? (this._defaults.hourMax = j.getHours(), this._defaults.minuteMax = j.getMinutes()) : this._defaults.hourMax === j.getHours() === this.hour && this._defaults.minuteMax > j.getMinutes() ? this._defaults.minuteMax = j.getMinutes() : this._defaults.minuteMax = 59 } if (void 0 !== b && b === !0) { var k = parseInt(this._defaults.hourMax - (this._defaults.hourMax - this._defaults.hourMin) % this._defaults.stepHour, 10), l = parseInt(this._defaults.minuteMax - (this._defaults.minuteMax - this._defaults.minuteMin) % this._defaults.stepMinute, 10), m = parseInt(this._defaults.secondMax - (this._defaults.secondMax - this._defaults.secondMin) % this._defaults.stepSecond, 10), n = parseInt(this._defaults.millisecMax - (this._defaults.millisecMax - this._defaults.millisecMin) % this._defaults.stepMillisec, 10), o = parseInt(this._defaults.microsecMax - (this._defaults.microsecMax - this._defaults.microsecMin) % this._defaults.stepMicrosec, 10); this.hour_slider && (this.control.options(this, this.hour_slider, "hour", { min: this._defaults.hourMin, max: k, step: this._defaults.stepHour }), this.control.value(this, this.hour_slider, "hour", this.hour - this.hour % this._defaults.stepHour)), this.minute_slider && (this.control.options(this, this.minute_slider, "minute", { min: this._defaults.minuteMin, max: l, step: this._defaults.stepMinute }), this.control.value(this, this.minute_slider, "minute", this.minute - this.minute % this._defaults.stepMinute)), this.second_slider && (this.control.options(this, this.second_slider, "second", { min: this._defaults.secondMin, max: m, step: this._defaults.stepSecond }), this.control.value(this, this.second_slider, "second", this.second - this.second % this._defaults.stepSecond)), this.millisec_slider && (this.control.options(this, this.millisec_slider, "millisec", { min: this._defaults.millisecMin, max: n, step: this._defaults.stepMillisec }), this.control.value(this, this.millisec_slider, "millisec", this.millisec - this.millisec % this._defaults.stepMillisec)), this.microsec_slider && (this.control.options(this, this.microsec_slider, "microsec", { min: this._defaults.microsecMin, max: o, step: this._defaults.stepMicrosec }), this.control.value(this, this.microsec_slider, "microsec", this.microsec - this.microsec % this._defaults.stepMicrosec)) } } }, _onTimeChange: function () { if (this._defaults.showTimepicker) { var a = this.hour_slider ? this.control.value(this, this.hour_slider, "hour") : !1, b = this.minute_slider ? this.control.value(this, this.minute_slider, "minute") : !1, c = this.second_slider ? this.control.value(this, this.second_slider, "second") : !1, d = this.millisec_slider ? this.control.value(this, this.millisec_slider, "millisec") : !1, e = this.microsec_slider ? this.control.value(this, this.microsec_slider, "microsec") : !1, f = this.timezone_select ? this.timezone_select.val() : !1, g = this._defaults, h = g.pickerTimeFormat || g.timeFormat, i = g.pickerTimeSuffix || g.timeSuffix; "object" == typeof a && (a = !1), "object" == typeof b && (b = !1), "object" == typeof c && (c = !1), "object" == typeof d && (d = !1), "object" == typeof e && (e = !1), "object" == typeof f && (f = !1), a !== !1 && (a = parseInt(a, 10)), b !== !1 && (b = parseInt(b, 10)), c !== !1 && (c = parseInt(c, 10)), d !== !1 && (d = parseInt(d, 10)), e !== !1 && (e = parseInt(e, 10)), f !== !1 && (f = f.toString()); var j = g[12 > a ? "amNames" : "pmNames"][0], k = a !== parseInt(this.hour, 10) || b !== parseInt(this.minute, 10) || c !== parseInt(this.second, 10) || d !== parseInt(this.millisec, 10) || e !== parseInt(this.microsec, 10) || this.ampm.length > 0 && 12 > a != (-1 !== $.inArray(this.ampm.toUpperCase(), this.amNames)) || null !== this.timezone && f !== this.timezone.toString(); if (k && (a !== !1 && (this.hour = a), b !== !1 && (this.minute = b), c !== !1 && (this.second = c), d !== !1 && (this.millisec = d), e !== !1 && (this.microsec = e), f !== !1 && (this.timezone = f), this.inst || (this.inst = $.datepicker._getInst(this.$input[0])), this._limitMinMaxDateTime(this.inst, !0)), this.support.ampm && (this.ampm = j), this.formattedTime = $.datepicker.formatTime(g.timeFormat, this, g), this.$timeObj && (this.$timeObj.val(h === g.timeFormat ? this.formattedTime + i : $.datepicker.formatTime(h, this, g) + i), this.$timeObj[0].setSelectionRange)) { var l = this.$timeObj[0].selectionStart, m = this.$timeObj[0].selectionEnd; this.$timeObj[0].setSelectionRange(l, m) } this.timeDefined = !0, k && this._updateDateTime() } }, _onSelectHandler: function () { var a = this._defaults.onSelect || this.inst.settings.onSelect, b = this.$input ? this.$input[0] : null; a && b && a.apply(b, [this.formattedDateTime, this]) }, _updateDateTime: function (a) { a = this.inst || a; var b = a.currentYear > 0 ? new Date(a.currentYear, a.currentMonth, a.currentDay) : new Date(a.selectedYear, a.selectedMonth, a.selectedDay), c = $.datepicker._daylightSavingAdjust(b), d = $.datepicker._get(a, "dateFormat"), e = $.datepicker._getFormatConfig(a), f = null !== c && this.timeDefined; this.formattedDate = $.datepicker.formatDate(d, null === c ? new Date : c, e); var g = this.formattedDate; if ("" === a.lastVal && (a.currentYear = a.selectedYear, a.currentMonth = a.selectedMonth, a.currentDay = a.selectedDay), this._defaults.timeOnly === !0 && this._defaults.timeOnlyShowDate === !1 ? g = this.formattedTime : (this._defaults.timeOnly !== !0 && (this._defaults.alwaysSetTime || f) || this._defaults.timeOnly === !0 && this._defaults.timeOnlyShowDate === !0) && (g += this._defaults.separator + this.formattedTime + this._defaults.timeSuffix), this.formattedDateTime = g, this._defaults.showTimepicker) if (this.$altInput && this._defaults.timeOnly === !1 && this._defaults.altFieldTimeOnly === !0) this.$altInput.val(this.formattedTime), this.$input.val(this.formattedDate); else if (this.$altInput) { this.$input.val(g); var h = "", i = null !== this._defaults.altSeparator ? this._defaults.altSeparator : this._defaults.separator, j = null !== this._defaults.altTimeSuffix ? this._defaults.altTimeSuffix : this._defaults.timeSuffix; this._defaults.timeOnly || (h = this._defaults.altFormat ? $.datepicker.formatDate(this._defaults.altFormat, null === c ? new Date : c, e) : this.formattedDate, h && (h += i)), h += null !== this._defaults.altTimeFormat ? $.datepicker.formatTime(this._defaults.altTimeFormat, this, this._defaults) + j : this.formattedTime + j, this.$altInput.val(h) } else this.$input.val(g); else this.$input.val(this.formattedDate); this.$input.trigger("change") }, _onFocus: function () { if (!this.$input.val() && this._defaults.defaultValue) { this.$input.val(this._defaults.defaultValue); var a = $.datepicker._getInst(this.$input.get(0)), b = $.datepicker._get(a, "timepicker"); if (b && b._defaults.timeOnly && a.input.val() !== a.lastVal) try { $.datepicker._updateDatepicker(a) } catch (c) { $.timepicker.log(c) } } }, _controls: { slider: { create: function (a, b, c, d, e, f, g) { var h = a._defaults.isRTL; return b.prop("slide", null).slider({ orientation: "horizontal", value: h ? -1 * d : d, min: h ? -1 * f : e, max: h ? -1 * e : f, step: g, slide: function (b, d) { a.control.value(a, $(this), c, h ? -1 * d.value : d.value), a._onTimeChange() }, stop: function (b, c) { a._onSelectHandler() } }) }, options: function (a, b, c, d, e) { if (a._defaults.isRTL) { if ("string" == typeof d) return "min" === d || "max" === d ? void 0 !== e ? b.slider(d, -1 * e) : Math.abs(b.slider(d)) : b.slider(d); var f = d.min, g = d.max; return d.min = d.max = null, void 0 !== f && (d.max = -1 * f), void 0 !== g && (d.min = -1 * g), b.slider(d) } return "string" == typeof d && void 0 !== e ? b.slider(d, e) : b.slider(d) }, value: function (a, b, c, d) { return a._defaults.isRTL ? void 0 !== d ? b.slider("value", -1 * d) : Math.abs(b.slider("value")) : void 0 !== d ? b.slider("value", d) : b.slider("value") } }, select: { create: function (a, b, c, d, e, f, g) { for (var h = '", b.children("select").remove(), $(h).appendTo(b).change(function (b) { a._onTimeChange(), a._onSelectHandler(), a._afterInject() }), b }, options: function (a, b, c, d, e) { var f = {}, g = b.children("select"); if ("string" == typeof d) { if (void 0 === e) return g.data(d); f[d] = e } else f = d; return a.control.create(a, b, g.data("unit"), g.val(), f.min >= 0 ? f.min : g.data("min"), f.max || g.data("max"), f.step || g.data("step")) }, value: function (a, b, c, d) { var e = b.children("select"); return void 0 !== d ? e.val(d) : e.val() } } } }), $.fn.extend({ timepicker: function (a) { a = a || {}; var b = Array.prototype.slice.call(arguments); return "object" == typeof a && (b[0] = $.extend(a, { timeOnly: !0 })), $(this).each(function () { $.fn.datetimepicker.apply($(this), b) }) }, datetimepicker: function (a) { a = a || {}; var b = arguments; return "string" == typeof a ? "getDate" === a || "option" === a && 2 === b.length && "string" == typeof b[1] ? $.fn.datepicker.apply($(this[0]), b) : this.each(function () { var a = $(this); a.datepicker.apply(a, b) }) : this.each(function () { var b = $(this); b.datepicker($.timepicker._newInst(b, a)._defaults) }) } }), $.datepicker.parseDateTime = function (a, b, c, d, e) { var f = parseDateTimeInternal(a, b, c, d, e); if (f.timeObj) { var g = f.timeObj; f.date.setHours(g.hour, g.minute, g.second, g.millisec), f.date.setMicroseconds(g.microsec) } return f.date }, $.datepicker.parseTime = function (a, b, c) { var d = extendRemove(extendRemove({}, $.timepicker._defaults), c || {}), e = (-1 !== a.replace(/\'.*?\'/g, "").indexOf("Z"), function (a, b, c) { var d, e = function (a, b) { var c = []; return a && $.merge(c, a), b && $.merge(c, b), c = $.map(c, function (a) { return a.replace(/[.*+?|()\[\]{}\\]/g, "\\$&") }), "(" + c.join("|") + ")?" }, f = function (a) { var b = a.toLowerCase().match(/(h{1,2}|m{1,2}|s{1,2}|l{1}|c{1}|t{1,2}|z|'.*?')/g), c = { h: -1, m: -1, s: -1, l: -1, c: -1, t: -1, z: -1 }; if (b) for (var d = 0; d < b.length; d++)-1 === c[b[d].toString().charAt(0)] && (c[b[d].toString().charAt(0)] = d + 1); return c }, g = "^" + a.toString().replace(/([hH]{1,2}|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g, function (a) { var b = a.length; switch (a.charAt(0).toLowerCase()) { case "h": return 1 === b ? "(\\d?\\d)" : "(\\d{" + b + "})"; case "m": return 1 === b ? "(\\d?\\d)" : "(\\d{" + b + "})"; case "s": return 1 === b ? "(\\d?\\d)" : "(\\d{" + b + "})"; case "l": return "(\\d?\\d?\\d)"; case "c": return "(\\d?\\d?\\d)"; case "z": return "(z|[-+]\\d\\d:?\\d\\d|\\S+)?"; case "t": return e(c.amNames, c.pmNames); default: return "(" + a.replace(/\'/g, "").replace(/(\.|\$|\^|\\|\/|\(|\)|\[|\]|\?|\+|\*)/g, function (a) { return "\\" + a }) + ")?" } }).replace(/\s/g, "\\s?") + c.timeSuffix + "$", h = f(a), i = ""; d = b.match(new RegExp(g, "i")); var j = { hour: 0, minute: 0, second: 0, millisec: 0, microsec: 0 }; return d ? (-1 !== h.t && (void 0 === d[h.t] || 0 === d[h.t].length ? (i = "", j.ampm = "") : (i = -1 !== $.inArray(d[h.t].toUpperCase(), $.map(c.amNames, function (a, b) { return a.toUpperCase() })) ? "AM" : "PM", j.ampm = c["AM" === i ? "amNames" : "pmNames"][0])), -1 !== h.h && ("AM" === i && "12" === d[h.h] ? j.hour = 0 : "PM" === i && "12" !== d[h.h] ? j.hour = parseInt(d[h.h], 10) + 12 : j.hour = Number(d[h.h])), -1 !== h.m && (j.minute = Number(d[h.m])), -1 !== h.s && (j.second = Number(d[h.s])), -1 !== h.l && (j.millisec = Number(d[h.l])), -1 !== h.c && (j.microsec = Number(d[h.c])), -1 !== h.z && void 0 !== d[h.z] && (j.timezone = $.timepicker.timezoneOffsetNumber(d[h.z])), j) : !1 }), f = function (a, b, c) { try { var d = new Date("2012-01-01 " + b); if (isNaN(d.getTime()) && (d = new Date("2012-01-01T" + b), isNaN(d.getTime()) && (d = new Date("01/01/2012 " + b), isNaN(d.getTime())))) throw "Unable to parse time with native Date: " + b; return { hour: d.getHours(), minute: d.getMinutes(), second: d.getSeconds(), millisec: d.getMilliseconds(), microsec: d.getMicroseconds(), timezone: -1 * d.getTimezoneOffset() } } catch (f) { try { return e(a, b, c) } catch (g) { $.timepicker.log("Unable to parse \ntimeString: " + b + "\ntimeFormat: " + a) } } return !1 }; return "function" == typeof d.parse ? d.parse(a, b, d) : "loose" === d.parse ? f(a, b, d) : e(a, b, d) }, $.datepicker.formatTime = function (a, b, c) { c = c || {}, c = $.extend({}, $.timepicker._defaults, c), b = $.extend({ hour: 0, minute: 0, second: 0, millisec: 0, microsec: 0, timezone: null }, b); var d = a, e = c.amNames[0], f = parseInt(b.hour, 10); return f > 11 && (e = c.pmNames[0]), d = d.replace(/(?:HH?|hh?|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g, function (a) { switch (a) { case "HH": return ("0" + f).slice(-2); case "H": return f; case "hh": return ("0" + convert24to12(f)).slice(-2); case "h": return convert24to12(f); case "mm": return ("0" + b.minute).slice(-2); case "m": return b.minute; case "ss": return ("0" + b.second).slice(-2); case "s": return b.second; case "l": return ("00" + b.millisec).slice(-3); case "c": return ("00" + b.microsec).slice(-3); case "z": return $.timepicker.timezoneOffsetString(null === b.timezone ? c.timezone : b.timezone, !1); case "Z": return $.timepicker.timezoneOffsetString(null === b.timezone ? c.timezone : b.timezone, !0); case "T": return e.charAt(0).toUpperCase(); case "TT": return e.toUpperCase(); case "t": return e.charAt(0).toLowerCase(); case "tt": return e.toLowerCase(); default: return a.replace(/'/g, "") } }) }, $.datepicker._base_selectDate = $.datepicker._selectDate, $.datepicker._selectDate = function (a, b) { var c, d = this._getInst($(a)[0]), e = this._get(d, "timepicker"); e && d.settings.showTimepicker ? (e._limitMinMaxDateTime(d, !0), c = d.inline, d.inline = d.stay_open = !0, this._base_selectDate(a, b), d.inline = c, d.stay_open = !1, this._notifyChange(d), this._updateDatepicker(d)) : this._base_selectDate(a, b) }, $.datepicker._base_updateDatepicker = $.datepicker._updateDatepicker, $.datepicker._updateDatepicker = function (a) { var b = a.input[0]; if (!($.datepicker._curInst && $.datepicker._curInst !== a && $.datepicker._datepickerShowing && $.datepicker._lastInput !== b || "boolean" == typeof a.stay_open && a.stay_open !== !1)) { this._base_updateDatepicker(a); var c = this._get(a, "timepicker"); c && c._addTimePicker(a) } }, $.datepicker._base_doKeyPress = $.datepicker._doKeyPress, $.datepicker._doKeyPress = function (a) { var b = $.datepicker._getInst(a.target), c = $.datepicker._get(b, "timepicker"); if (c && $.datepicker._get(b, "constrainInput")) { var d = c.support.ampm, e = null !== c._defaults.showTimezone ? c._defaults.showTimezone : c.support.timezone, f = $.datepicker._possibleChars($.datepicker._get(b, "dateFormat")), g = c._defaults.timeFormat.toString().replace(/[hms]/g, "").replace(/TT/g, d ? "APM" : "").replace(/Tt/g, d ? "AaPpMm" : "").replace(/tT/g, d ? "AaPpMm" : "").replace(/T/g, d ? "AP" : "").replace(/tt/g, d ? "apm" : "").replace(/t/g, d ? "ap" : "") + " " + c._defaults.separator + c._defaults.timeSuffix + (e ? c._defaults.timezoneList.join("") : "") + c._defaults.amNames.join("") + c._defaults.pmNames.join("") + f, h = String.fromCharCode(void 0 === a.charCode ? a.keyCode : a.charCode); return a.ctrlKey || " " > h || !f || g.indexOf(h) > -1 } return $.datepicker._base_doKeyPress(a) }, $.datepicker._base_updateAlternate = $.datepicker._updateAlternate, $.datepicker._updateAlternate = function (a) { var b = this._get(a, "timepicker"); if (b) { var c = b._defaults.altField; if (c) { var d = (b._defaults.altFormat || b._defaults.dateFormat, this._getDate(a)), e = $.datepicker._getFormatConfig(a), f = "", g = b._defaults.altSeparator ? b._defaults.altSeparator : b._defaults.separator, h = b._defaults.altTimeSuffix ? b._defaults.altTimeSuffix : b._defaults.timeSuffix, i = null !== b._defaults.altTimeFormat ? b._defaults.altTimeFormat : b._defaults.timeFormat; f += $.datepicker.formatTime(i, b, b._defaults) + h, b._defaults.timeOnly || b._defaults.altFieldTimeOnly || null === d || (f = b._defaults.altFormat ? $.datepicker.formatDate(b._defaults.altFormat, d, e) + g + f : b.formattedDate + g + f), $(c).val(a.input.val() ? f : "") } } else $.datepicker._base_updateAlternate(a) }, $.datepicker._base_doKeyUp = $.datepicker._doKeyUp, $.datepicker._doKeyUp = function (a) { var b = $.datepicker._getInst(a.target), c = $.datepicker._get(b, "timepicker"); if (c && c._defaults.timeOnly && b.input.val() !== b.lastVal) try { $.datepicker._updateDatepicker(b) } catch (d) { $.timepicker.log(d) } return $.datepicker._base_doKeyUp(a) }, $.datepicker._base_gotoToday = $.datepicker._gotoToday, $.datepicker._gotoToday = function (a) { var b = this._getInst($(a)[0]); this._base_gotoToday(a); var c = this._get(b, "timepicker"); if (c) { var d = $.timepicker.timezoneOffsetNumber(c.timezone), e = new Date; e.setMinutes(e.getMinutes() + e.getTimezoneOffset() + parseInt(d, 10)), this._setTime(b, e), this._setDate(b, e), c._onSelectHandler() } }, $.datepicker._disableTimepickerDatepicker = function (a) { var b = this._getInst(a); if (b) { var c = this._get(b, "timepicker"); $(a).datepicker("getDate"), c && (b.settings.showTimepicker = !1, c._defaults.showTimepicker = !1, c._updateDateTime(b)) } }, $.datepicker._enableTimepickerDatepicker = function (a) { var b = this._getInst(a); if (b) { var c = this._get(b, "timepicker"); $(a).datepicker("getDate"), c && (b.settings.showTimepicker = !0, c._defaults.showTimepicker = !0, c._addTimePicker(b), c._updateDateTime(b)) } }, $.datepicker._setTime = function (a, b) { var c = this._get(a, "timepicker"); if (c) { var d = c._defaults; c.hour = b ? b.getHours() : d.hour, c.minute = b ? b.getMinutes() : d.minute, c.second = b ? b.getSeconds() : d.second, c.millisec = b ? b.getMilliseconds() : d.millisec, c.microsec = b ? b.getMicroseconds() : d.microsec, c._limitMinMaxDateTime(a, !0), c._onTimeChange(), c._updateDateTime(a) } }, $.datepicker._setTimeDatepicker = function (a, b, c) { var d = this._getInst(a); if (d) { var e = this._get(d, "timepicker"); if (e) { this._setDateFromField(d); var f; b && ("string" == typeof b ? (e._parseTime(b, c), f = new Date, f.setHours(e.hour, e.minute, e.second, e.millisec), f.setMicroseconds(e.microsec)) : (f = new Date(b.getTime()), f.setMicroseconds(b.getMicroseconds())), "Invalid Date" === f.toString() && (f = void 0), this._setTime(d, f)) } } }, $.datepicker._base_setDateDatepicker = $.datepicker._setDateDatepicker, $.datepicker._setDateDatepicker = function (a, b) { var c = this._getInst(a), d = b; if (c) { "string" == typeof b && (d = new Date(b), d.getTime() || (this._base_setDateDatepicker.apply(this, arguments), d = $(a).datepicker("getDate"))); var e, f = this._get(c, "timepicker"); d instanceof Date ? (e = new Date(d.getTime()), e.setMicroseconds(d.getMicroseconds())) : e = d, f && e && (f.support.timezone || null !== f._defaults.timezone || (f.timezone = -1 * e.getTimezoneOffset()), d = $.timepicker.timezoneAdjust(d, $.timepicker.timezoneOffsetString(-d.getTimezoneOffset()), f.timezone), e = $.timepicker.timezoneAdjust(e, $.timepicker.timezoneOffsetString(-e.getTimezoneOffset()), f.timezone)), this._updateDatepicker(c), this._base_setDateDatepicker.apply(this, arguments), this._setTimeDatepicker(a, e, !0) } }, $.datepicker._base_getDateDatepicker = $.datepicker._getDateDatepicker, $.datepicker._getDateDatepicker = function (a, b) { var c = this._getInst(a); if (c) { var d = this._get(c, "timepicker"); if (d) { void 0 === c.lastVal && this._setDateFromField(c, b); var e = this._getDate(c), f = null; return f = d.$altInput && d._defaults.altFieldTimeOnly ? d.$input.val() + " " + d.$altInput.val() : "INPUT" !== d.$input.get(0).tagName && d.$altInput ? d.$altInput.val() : d.$input.val(), e && d._parseTime(f, !c.settings.timeOnly) && (e.setHours(d.hour, d.minute, d.second, d.millisec), e.setMicroseconds(d.microsec), null != d.timezone && (d.support.timezone || null !== d._defaults.timezone || (d.timezone = -1 * e.getTimezoneOffset()), e = $.timepicker.timezoneAdjust(e, d.timezone, $.timepicker.timezoneOffsetString(-e.getTimezoneOffset())))), e } return this._base_getDateDatepicker(a, b) } }, $.datepicker._base_parseDate = $.datepicker.parseDate, $.datepicker.parseDate = function (a, b, c) { var d; try { d = this._base_parseDate(a, b, c) } catch (e) { if (!(e.indexOf(":") >= 0)) throw e; d = this._base_parseDate(a, b.substring(0, b.length - (e.length - e.indexOf(":") - 2)), c), $.timepicker.log("Error parsing the date string: " + e + "\ndate string = " + b + "\ndate format = " + a) } return d }, $.datepicker._base_formatDate = $.datepicker._formatDate, $.datepicker._formatDate = function (a, b, c, d) { var e = this._get(a, "timepicker"); return e ? (e._updateDateTime(a), e.$input.val()) : this._base_formatDate(a) }, $.datepicker._base_optionDatepicker = $.datepicker._optionDatepicker, $.datepicker._optionDatepicker = function (a, b, c) { var d, e = this._getInst(a); if (!e) return null; var f = this._get(e, "timepicker"); if (f) { var g, h, i, j, k = null, l = null, m = null, n = f._defaults.evnts, o = {}; if ("string" == typeof b) { if ("minDate" === b || "minDateTime" === b) k = c; else if ("maxDate" === b || "maxDateTime" === b) l = c; else if ("onSelect" === b) m = c; else if (n.hasOwnProperty(b)) { if ("undefined" == typeof c) return n[b]; o[b] = c, d = {} } } else if ("object" == typeof b) { b.minDate ? k = b.minDate : b.minDateTime ? k = b.minDateTime : b.maxDate ? l = b.maxDate : b.maxDateTime && (l = b.maxDateTime); for (g in n) n.hasOwnProperty(g) && b[g] && (o[g] = b[g]) } for (g in o) o.hasOwnProperty(g) && (n[g] = o[g], d || (d = $.extend({}, b)), delete d[g]); if (d && isEmptyObject(d)) return; if (k ? (k = 0 === k ? new Date : new Date(k), f._defaults.minDate = k, f._defaults.minDateTime = k) : l ? (l = 0 === l ? new Date : new Date(l), f._defaults.maxDate = l, f._defaults.maxDateTime = l) : m && (f._defaults.onSelect = m), k || l) return j = $(a), i = j.datetimepicker("getDate"), h = this._base_optionDatepicker.call($.datepicker, a, d || b, c), j.datetimepicker("setDate", i), h } return void 0 === c ? this._base_optionDatepicker.call($.datepicker, a, b) : this._base_optionDatepicker.call($.datepicker, a, d || b, c) }; var isEmptyObject = function (a) { var b; for (b in a) if (a.hasOwnProperty(b)) return !1; return !0 }, extendRemove = function (a, b) { $.extend(a, b); for (var c in b) (null === b[c] || void 0 === b[c]) && (a[c] = b[c]); return a }, detectSupport = function (a) { var b = a.replace(/'.*?'/g, "").toLowerCase(), c = function (a, b) { return -1 !== a.indexOf(b) ? !0 : !1 }; return { hour: c(b, "h"), minute: c(b, "m"), second: c(b, "s"), millisec: c(b, "l"), microsec: c(b, "c"), timezone: c(b, "z"), ampm: c(b, "t") && c(a, "h"), iso8601: c(a, "Z") } }, convert24to12 = function (a) { return a %= 12, 0 === a && (a = 12), String(a) }, computeEffectiveSetting = function (a, b) { return a && a[b] ? a[b] : $.timepicker._defaults[b] }, splitDateTime = function (a, b) { var c = computeEffectiveSetting(b, "separator"), d = computeEffectiveSetting(b, "timeFormat"), e = d.split(c), f = e.length, g = a.split(c), h = g.length; return h > 1 ? { dateString: g.splice(0, h - f).join(c), timeString: g.splice(0, f).join(c) } : { dateString: a, timeString: "" } }, parseDateTimeInternal = function (a, b, c, d, e) { var f, g, h; if (g = splitDateTime(c, e), f = $.datepicker._base_parseDate(a, g.dateString, d), "" === g.timeString) return { date: f }; if (h = $.datepicker.parseTime(b, g.timeString, e), !h) throw "Wrong time format"; return { date: f, timeObj: h } }, selectLocalTimezone = function (a, b) { if (a && a.timezone_select) { var c = b || new Date; a.timezone_select.val(-c.getTimezoneOffset()) } }; $.timepicker = new Timepicker, $.timepicker.timezoneOffsetString = function (a, b) { if (isNaN(a) || a > 840 || -720 > a) return a; var c = a, d = c % 60, e = (c - d) / 60, f = b ? ":" : "", g = (c >= 0 ? "+" : "-") + ("0" + Math.abs(e)).slice(-2) + f + ("0" + Math.abs(d)).slice(-2); return "+00:00" === g ? "Z" : g }, $.timepicker.timezoneOffsetNumber = function (a) { var b = a.toString().replace(":", ""); return "Z" === b.toUpperCase() ? 0 : /^(\-|\+)\d{4}$/.test(b) ? ("-" === b.substr(0, 1) ? -1 : 1) * (60 * parseInt(b.substr(1, 2), 10) + parseInt(b.substr(3, 2), 10)) : parseInt(a, 10) }, $.timepicker.timezoneAdjust = function (a, b, c) { var d = $.timepicker.timezoneOffsetNumber(b), e = $.timepicker.timezoneOffsetNumber(c); return isNaN(e) || a.setMinutes(a.getMinutes() + -d - -e), a }, $.timepicker.timeRange = function (a, b, c) { return $.timepicker.handleRange("timepicker", a, b, c) }, $.timepicker.datetimeRange = function (a, b, c) { $.timepicker.handleRange("datetimepicker", a, b, c) }, $.timepicker.dateRange = function (a, b, c) { $.timepicker.handleRange("datepicker", a, b, c) }, $.timepicker.handleRange = function (a, b, c, d) { function e(e, f) { var g = b[a]("getDate"), h = c[a]("getDate"), i = e[a]("getDate"); if (null !== g) { var j = new Date(g.getTime()), k = new Date(g.getTime()); j.setMilliseconds(j.getMilliseconds() + d.minInterval), k.setMilliseconds(k.getMilliseconds() + d.maxInterval), d.minInterval > 0 && j > h ? c[a]("setDate", j) : d.maxInterval > 0 && h > k ? c[a]("setDate", k) : g > h && f[a]("setDate", i) } } function f(b, c, e) { if (b.val()) { var f = b[a].call(b, "getDate"); null !== f && d.minInterval > 0 && ("minDate" === e && f.setMilliseconds(f.getMilliseconds() + d.minInterval), "maxDate" === e && f.setMilliseconds(f.getMilliseconds() - d.minInterval)), f.getTime && c[a].call(c, "option", e, f) } } d = $.extend({}, { minInterval: 0, maxInterval: 0, start: {}, end: {} }, d); var g = !1; return "timepicker" === a && (g = !0, a = "datetimepicker"), $.fn[a].call(b, $.extend({ timeOnly: g, onClose: function (a, b) { e($(this), c) }, onSelect: function (a) { f($(this), c, "minDate") } }, d, d.start)), $.fn[a].call(c, $.extend({ timeOnly: g, onClose: function (a, c) { e($(this), b) }, onSelect: function (a) { f($(this), b, "maxDate") } }, d, d.end)), e(b, c), f(b, c, "minDate"), f(c, b, "maxDate"), $([b.get(0), c.get(0)]) }, $.timepicker.log = function () { window.console && window.console.log && window.console.log.apply && window.console.log.apply(window.console, Array.prototype.slice.call(arguments)) }, $.timepicker._util = { _extendRemove: extendRemove, _isEmptyObject: isEmptyObject, _convert24to12: convert24to12, _detectSupport: detectSupport, _selectLocalTimezone: selectLocalTimezone, _computeEffectiveSetting: computeEffectiveSetting, _splitDateTime: splitDateTime, _parseDateTimeInternal: parseDateTimeInternal }, Date.prototype.getMicroseconds || (Date.prototype.microseconds = 0, Date.prototype.getMicroseconds = function () { return this.microseconds }, Date.prototype.setMicroseconds = function (a) { return this.setMilliseconds(this.getMilliseconds() + Math.floor(a / 1e3)), this.microseconds = a % 1e3, this }), $.timepicker.version = "1.6.3" } });