{"version":3,"file":"kendo.timepicker.min.js","names":["factory","define","amd","$","undefined$1","kendo","window","keys","html","parse","parseDate","activeElement","_activeElement","extractFormat","_extractFormat","support","browser","ui","Widget","OPEN","CLOSE","CHANGE","ns","CLICK","DISABLED","READONLY","LI","FOCUSED","HOVER","MOUSEDOWN","MS_PER_MINUTE","MS_PER_DAY","SELECTED","STATEDISABLED","ARIA_SELECTED","ARIA_EXPANDED","ARIA_HIDDEN","ARIA_DISABLED","ARIA_READONLY","ARIA_ACTIVEDESCENDANT","ID","isArray","Array","extend","DATE","Date","dateFormatRegExp","MONTH","HOUR","ZONE","WEEKDAY","QUARTER","DATE_FIELD_MAP","G","y","q","Q","M","L","d","E","c","e","h","H","k","K","m","s","a","x","X","z","Z","NAME_TYPES","month","type","minLength","standAlone","quarter","weekday","dayperiod","era","TODAY","getFullYear","getMonth","getDate","TimeView","options","that","this","id","_dates","_createList","timeView","list","_timeViewID","_optionID","ul","attr","_heightHandler","_height","bind","_popup","getMilliseconds","date","getHours","getMinutes","getSeconds","isInRange","value","min","max","msValue","msMin","msMax","prototype","scroll","_createScrollList","_createClassicRenderingList","templateOptions","mainSize","getValidCssClass","size","buttonSize","template","on","preventDefault","omitPopup","append","find","_nowClickHandler","_cancelClickHandler","_setClickHandler","_mouseOverHandler","_scrollerKeyDownHandler","key","keyCode","currentTarget","lists","length","index","isRtl","wrapper","itemHeight","getItemHeight","eq","container","RIGHT","LEFT","_focusList","UP","scrollTop","DOWN","ENTER","ESC","removeClass","addClass","trigger","_scrollTop","listParent","css","overflow","kineticScrollNeeded","_click","useWithBlock","current","candidate","active","_current","removeAttribute","_updateTitle","toString","_value","format","culture","applyValue","designator","is12hourFormat","includes","toLowerCase","hours","minutes","seconds","indexAttr","hoursList","minutessList","secondsList","designatorList","_internalScroll","_scrollListToPosition","item","pad","close","popup","destroy","off","open","popupHovered","firstChild","_hovered","setTimeout","dataBind","dates","idx","_html","refresh","interval","today","midnight","noon","offset","getTimezoneOffset","ignoreDST","parsedValue","mergeDateAndTime","msLastTime","setMinutes","msInterval","start","useValueToRender","startDate","_createListContent","specifier","part","names","patternLength","info","pattern","result","calendar","patterns","datePattern","parts","lastIndex","match","exec","addLiteral","substring","startsWith","hour12","isHour12","nameType","dateNameType","push","splitDateFormat","getDatesInRange","msStart","forEach","_showAllHiddenItems","items","i","show","_updateListBottomOffset","bottomOffset","outerHeight","height","_updateHoursRange","useMax","useMin","minHours","_minHours","maxHours","_maxHours","selectedDesignator","_findSelectedValue","each","_","_validateMin","_validateMax","hide","_updateMinutesRange","minutesList","minMinutes","_minMinutes","maxMinutes","_maxMinutes","selectedHour","_updateSecondsRange","minSeconds","_minSeconds","maxSeconds","selectedMinutes","_updateDesignatorRange","_updateRanges","specifiedRange","_currentlySelected","validateDate","_maxSeconds","addTranslate","listHeight","translate","transform","_itemClickHandler","_listScrollHandler","now","change","_scrollingTimeout","clearTimeout","_updateCurrentlySelected","selectedSeconds","is","setHours","setSeconds","firstOccurence","Math","round","originalEvent","setTime","getTime","maxSet","values","_literalTemplate","_getValues","_itemTemplate","messages","title","shouldPad","end","innerHTML","unbind","one","select","scrollIntoViewIfNeeded","element","centerIfNeeded","makeRange","coverRange","inner","outer","makePoint","dX","dY","absolute","elem","pt","offsetLeft","offsetTop","offsetParent","origin","target","extent","offsetWidth","offsetHeight","parentNode","HTMLElement","clientLeft","clientTop","scrollLeft","clientWidth","clientHeight","li","selection","text","grep","childNodes","node","textContent","innerText","_distinctSelection","currentValue","selectionIndex","inArray","children","setOptions","old","toggle","visible","isDefaultPrevented","parent","add","scrollHeight","_parse","parseFormats","_adjustListWidth","computedStyle","computedWidth","width","style","anchor","outerWidth","_outerWidth","data","getComputedStyle","parseFloat","mozilla","msie","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","fontFamily","appendTo","timeDiv","Popup","animation","activate","move","down","altKey","nextSibling","previousSibling","lastChild","TAB","TimePicker","init","componentType","fn","call","_specifiedRange","normalize","_initialOptions","_wrapper","_change","val","_ariaLabel","_icon","_reset","setAttribute","role","autocomplete","parents","enable","readonly","dateInput","_dateInput","DateInput","fillMode","rounded","_old","_update","_oldText","_applyCssClasses","label","_label","notify","name","set","cancel","hour","minute","second","millisecond","events","componentTypes","classic","modern","_arrow","remove","_editable","_inputLabel","_unwrapFloating","disable","arrow","_unbindInput","_toggleHover","_keydown","_blur","_bindInput","labelOptions","isPlainObject","content","Label","widget","floatingLabel","_form","_resetHandler","_option","touch","dateChanged","oldValue","valueUpdated","isEqualDate","_typing","textFormatted","next","renderButton","icon","shape","insertAfter","stopImmediatePropagation","option","toggleClass","wrap","cssText","className","formId","form","closest","defaultValue","getCulture","calendars","standard","t","splice","time","lastPart","formatLength","searchString","position","indexOf","subStr","returnValue","String","getBoundingClientRect","cssProperties","registerPrefix","registerValues","prop","roundedValues","concat","plugin","jQuery"],"sources":["kendo.timepicker.js"],"mappings":"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","sourcesContent":["(function (factory) {\n typeof define === 'function' && define.amd ? define(['kendo.calendar', 'kendo.popup', 'kendo.dateinput', 'kendo.html.button', 'kendo.label'], factory) :\n factory();\n})((function () {\n var __meta__ = {\n id: \"timepicker\",\n name: \"TimePicker\",\n category: \"web\",\n description: \"The TimePicker widget allows the end user to select a value from a list of predefined values or to type a new value.\",\n depends: [ \"calendar\", \"popup\", \"html.button\", \"label\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n keys = kendo.keys,\n html = kendo.html,\n parse = kendo.parseDate,\n activeElement = kendo._activeElement,\n extractFormat = kendo._extractFormat,\n support = kendo.support,\n browser = support.browser,\n ui = kendo.ui,\n Widget = ui.Widget,\n OPEN = \"open\",\n CLOSE = \"close\",\n CHANGE = \"change\",\n ns = \".kendoTimePicker\",\n CLICK = \"click\" + ns,\n DISABLED = \"disabled\",\n READONLY = \"readonly\",\n LI = \"li\",\n SPAN = \"\",\n FOCUSED = \"k-focus\",\n HOVER = \"k-hover\",\n HOVEREVENTS = \"mouseenter\" + ns + \" mouseleave\" + ns,\n MOUSEDOWN = \"mousedown\" + ns,\n MS_PER_MINUTE = 60000,\n MS_PER_DAY = 86400000,\n SELECTED = \"k-selected\",\n STATEDISABLED = \"k-disabled\",\n ARIA_SELECTED = \"aria-selected\",\n ARIA_EXPANDED = \"aria-expanded\",\n ARIA_HIDDEN = \"aria-hidden\",\n ARIA_DISABLED = \"aria-disabled\",\n ARIA_READONLY = \"aria-readonly\",\n ARIA_ACTIVEDESCENDANT = \"aria-activedescendant\",\n ID = \"id\",\n isArray = Array.isArray,\n extend = $.extend,\n DATE = Date,\n dateFormatRegExp = /d{1,2}|E{1,6}|e{1,6}|c{3,6}|c{1}|M{1,5}|L{1,5}|y{1,4}|H{1,2}|h{1,2}|k{1,2}|K{1,2}|m{1,2}|a{1,5}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|x{1,5}|X{1,5}|G{1,5}|q{1,5}|Q{1,5}|\"[^\"]*\"|'[^']*'/g,\n LITERAL = \"literal\",\n MONTH = \"month\",\n HOUR = \"hour\",\n ZONE = \"zone\",\n WEEKDAY = \"weekday\",\n QUARTER = \"quarter\",\n DATE_FIELD_MAP = {\n \"G\": \"era\",\n \"y\": \"year\",\n \"q\": QUARTER,\n \"Q\": QUARTER,\n \"M\": MONTH,\n \"L\": MONTH,\n \"d\": \"day\",\n \"E\": WEEKDAY,\n \"c\": WEEKDAY,\n \"e\": WEEKDAY,\n \"h\": HOUR,\n \"H\": HOUR,\n \"k\": HOUR,\n \"K\": HOUR,\n \"m\": \"minute\",\n \"s\": \"second\",\n \"a\": \"dayperiod\",\n \"x\": ZONE,\n \"X\": ZONE,\n \"z\": ZONE,\n \"Z\": ZONE\n },\n NAME_TYPES = {\n month: {\n type: \"months\",\n minLength: 3,\n standAlone: \"L\"\n },\n\n quarter: {\n type: \"quarters\",\n minLength: 3,\n standAlone: \"q\"\n },\n\n weekday: {\n type: \"days\",\n minLength: {\n E: 0,\n c: 3,\n e: 3\n },\n standAlone: \"c\"\n },\n\n dayperiod: {\n type: \"dayPeriods\",\n minLength: 0\n },\n\n era: {\n type: \"eras\",\n minLength: 0\n }\n },\n TODAY = new DATE(),\n MODERN_RENDERING_TEMPLATE = '
' +\n '
' +\n '' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
',\n NEW_RENDERING_FOOTER = '',\n HIGHLIGHTCONTAINER = '';\n\n TODAY = new Date(TODAY.getFullYear(), TODAY.getMonth(), TODAY.getDate(), 0, 0, 0);\n\n var TimeView = function(options) {\n var that = this,\n id = options.id;\n\n that.options = options;\n that._dates = [];\n\n that._createList(options.timeView && options.timeView.list === \"scroll\");\n\n if (id) {\n that._timeViewID = id + \"_timeview\";\n that._optionID = id + \"_option_selected\";\n\n that.ul.attr(ID, that._timeViewID);\n }\n\n that._heightHandler = that._height.bind(that);\n that._popup();\n };\n\n TimeView.prototype = {\n _createList: function(scroll) {\n if (scroll) {\n this._createScrollList();\n } else {\n this._createClassicRenderingList();\n }\n },\n _createScrollList: function() {\n var templateOptions = $.extend({}, this.options, {\n mainSize: kendo.getValidCssClass(\"k-timeselector-\", \"size\", this.options.size || \"medium\"),\n buttonSize: kendo.getValidCssClass(\"k-button-\", \"size\", this.options.size || \"medium\")\n });\n this.list = $(kendo.template(MODERN_RENDERING_TEMPLATE)(templateOptions))\n .on(MOUSEDOWN, preventDefault);\n\n if (!this.options.omitPopup) {\n this.list.append(kendo.template(NEW_RENDERING_FOOTER)(templateOptions));\n }\n\n this.ul = this.list.find(\".k-time-list-container\");\n this.list.on(\"click\" + ns, \".k-time-header button.k-time-now\", this._nowClickHandler.bind(this));\n this.list.on(\"click\" + ns, \".k-time-footer button.k-time-cancel\", this._cancelClickHandler.bind(this));\n this.list.on(\"click\" + ns, \".k-time-footer button.k-time-accept\", this._setClickHandler.bind(this));\n this.list.on(\"mouseover\" + ns, \".k-time-list-wrapper\", this._mouseOverHandler.bind(this));\n this.list.on(\"keydown\" + ns, this._scrollerKeyDownHandler.bind(this));\n },\n\n _scrollerKeyDownHandler: function(e) {\n var that = this,\n key = e.keyCode,\n list = $(e.currentTarget).find(\".k-time-list-wrapper.k-focus\"),\n lists = that.list.find(\".k-time-list-wrapper\"),\n length = lists.length,\n index = lists.index(list),\n isRtl = kendo.support.isRtl(that.wrapper),\n itemHeight = getItemHeight(list.find(\".k-item:visible\").eq(0)),\n container = list.find(\".k-time-container.k-content.k-scrollable\");\n\n if (!list.length) {\n return;\n }\n\n if (key == keys.RIGHT && !isRtl || key == keys.LEFT && isRtl) {\n if (index + 1 < length) {\n that._focusList(lists.eq(index + 1));\n }\n\n } else if (key == keys.LEFT && !isRtl || key == keys.RIGHT && isRtl) {\n if (index - 1 >= 0) {\n that._focusList(lists.eq(index - 1));\n }\n } else if (key == keys.UP) {\n container.scrollTop(container.scrollTop() - itemHeight);\n e.preventDefault();\n } else if (key == keys.DOWN) {\n container.scrollTop(container.scrollTop() + itemHeight);\n e.preventDefault();\n } else if (key === keys.ENTER) {\n that._setClickHandler(e);\n } else if (key === keys.ESC) {\n that._cancelClickHandler(e);\n }\n },\n\n _mouseOverHandler: function(e) {\n this._focusList($(e.currentTarget));\n },\n\n _focusList: function(list) {\n this.list.find(\".k-time-list-wrapper\").removeClass(FOCUSED);\n list.addClass(FOCUSED);\n this.list.trigger(\"focus\");\n this._scrollTop = list.find('.k-scrollable').scrollTop();\n },\n _createClassicRenderingList: function() {\n var that = this;\n var listParent = $('
');\n\n that.ul = listParent.find(\"ul\")\n .css({\n overflow: support.kineticScrollNeeded ? \"\" : \"auto\"\n })\n .on(CLICK, LI, that._click.bind(that))\n .on(\"mouseenter\" + ns, LI, function() {\n $(this).addClass(HOVER);\n })\n .on(\"mouseleave\" + ns, LI, function() {\n $(this).removeClass(HOVER);\n });\n\n that.list = $(\"
\")\n .append(listParent)\n .on(MOUSEDOWN, preventDefault);\n\n that.template = kendo.template('
  • #=data#
  • ', {\n useWithBlock: false\n });\n\n },\n current: function(candidate) {\n var that = this,\n active = that.options.active;\n\n if (candidate !== undefined$1) {\n if (that._current) {\n that._current\n .removeClass(SELECTED);\n if (that._current && that._current.length) {\n that._current[0].removeAttribute(ID);\n that._current[0].removeAttribute(ARIA_SELECTED);\n }\n }\n\n if (candidate) {\n candidate = $(candidate).addClass(SELECTED)\n .attr(ID, that._optionID)\n .attr(ARIA_SELECTED, true);\n\n that.scroll(candidate[0]);\n }\n\n that._current = candidate;\n\n if (active) {\n active(candidate);\n }\n } else {\n return that._current;\n }\n },\n\n _updateTitle: function() {\n this.list.find(\".k-time-header > .k-title\").html(kendo.toString(this._value, this.options.format, this.options.culture));\n },\n\n applyValue: function(value) {\n if (!value) {\n return;\n }\n\n var is12hourFormat = includes(this.options.format.toLowerCase(), \"t\");\n var hours = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n var designator;\n var indexAttr = kendo.attr('index');\n var hoursList = this.ul.find('[' + indexAttr + '=\"1\"]');\n var minutessList = this.ul.find('[' + indexAttr + '=\"2\"]');\n var secondsList = this.ul.find('[' + indexAttr + '=\"3\"]');\n var designatorList = this.ul.find('[' + indexAttr + '=\"4\"]');\n\n if (is12hourFormat) {\n if (hours >= 12) {\n designator = \"PM\";\n if (hours > 12) {\n hours -= 12;\n }\n } else {\n designator = \"AM\";\n if (hours === 0) {\n hours = 12;\n }\n }\n }\n\n this._internalScroll = true;\n if (hoursList.length) {\n this._scrollListToPosition(hoursList, hours);\n }\n\n if (minutessList.length) {\n this._scrollListToPosition(minutessList, minutes);\n }\n\n if (secondsList.length) {\n this._scrollListToPosition(secondsList, seconds);\n }\n\n if (designatorList.length) {\n this._scrollListToPosition(designatorList, designator);\n }\n this._internalScroll = false;\n },\n\n _scrollListToPosition: function(list, value) {\n var item = list.find('.k-item[data-value=\"' + pad(value) + '\"]');\n var itemHeight = getItemHeight(item);\n\n list.scrollTop(list.find(\".k-item:visible\").index(item) * itemHeight);\n },\n\n close: function() {\n this.popup.close();\n },\n\n destroy: function() {\n var that = this;\n\n that.ul.off(ns);\n that.list.off(ns);\n if (this.popup) {\n that.popup.destroy();\n }\n },\n\n open: function() {\n var that = this;\n var popupHovered;\n\n if (!that.ul[0].firstChild || (that.ul.find(\"li\").length < 1)) {\n that.bind();\n }\n\n // In some cases when the popup is opened resize is triggered which will cause it to close\n // Setting the below flag will prevent this from happening\n // Reference: https://github.com/telerik/kendo/pull/7553\n popupHovered = that.popup._hovered;\n that.popup._hovered = true;\n\n that.popup.open();\n\n setTimeout(function() {\n that.popup._hovered = popupHovered;\n }, 1);\n\n if (that._current) {\n that.scroll(that._current[0]);\n }\n },\n\n dataBind: function(dates) {\n var that = this,\n options = that.options,\n format = options.format,\n toString = kendo.toString,\n template = that.template,\n length = dates.length,\n idx = 0,\n date,\n html = \"\";\n\n for (; idx < length; idx++) {\n date = dates[idx];\n\n if (isInRange(date, options.min, options.max)) {\n html += template(toString(date, format, options.culture));\n }\n }\n\n that._html(html);\n },\n\n refresh: function() {\n var that = this,\n options = that.options,\n format = options.format,\n offset = dst(),\n ignoreDST = offset < 0,\n value = kendo.parseDate(that._value),\n parsedValue = value ? mergeDateAndTime(value, options.min) : mergeDateAndTime(new Date(), options.min),\n min = options.min,\n max = options.max,\n msMin = getMilliseconds(min),\n msMax = getMilliseconds(max),\n msLastTime = getMilliseconds(lastTimeOption(options.interval)),\n msInterval = options.interval * MS_PER_MINUTE,\n toString = kendo.toString,\n template = that.template,\n start = options.useValueToRender ? parsedValue : new Date(+options.min),\n startDate = new DATE(start),\n msStart,\n length,\n html = \"\";\n\n if (ignoreDST) {\n length = (MS_PER_DAY + (offset * MS_PER_MINUTE)) / msInterval;\n } else {\n length = MS_PER_DAY / msInterval;\n }\n\n if (msMin != msMax || msLastTime === msMax) {\n if (msMin > msMax) {\n msMax += MS_PER_DAY;\n }\n\n length = ((msMax - msMin) / msInterval) + 1;\n }\n\n if (options.timeView && options.timeView.list === \"scroll\") {\n html = that._createListContent(splitDateFormat(format));\n } else {\n that.getDatesInRange(msStart, msMax, startDate, max, msInterval, start).forEach(function(date) {\n html += template(toString(date, format, options.culture));\n });\n }\n\n that._html(html);\n },\n\n _showAllHiddenItems: function() {\n var items = this.list.find('.k-time-container');\n var length = items.length;\n var item;\n\n for (var i = 0; i < length; i++) {\n item = $(items[i]);\n item.find('.k-item:hidden').show();\n this._updateListBottomOffset(item);\n }\n },\n\n _updateListBottomOffset: function(list) {\n var itemHeight = getItemHeight(list.find(\".k-item:visible\").eq(0));\n var listHeight = list.outerHeight();\n var bottomOffset = listHeight - itemHeight;\n list.find(\".k-scrollable-placeholder\").css({\n height: list.find(\"ul\").height() + bottomOffset\n });\n },\n\n _updateHoursRange: function() {\n var that = this;\n var indexAttr = kendo.attr('index');\n var hoursList = this.ul.find('[' + indexAttr + '=\"1\"]');\n var minHours = this._minHours;\n var maxHours = this._maxHours;\n var is12hourFormat = includes(this.options.format.toLowerCase(), \"t\");\n var useMax;\n var useMin;\n var selectedDesignator = this._findSelectedValue(this.ul.find('[' + indexAttr + '=\"4\"]'));\n\n if (!hoursList.length) {\n return;\n }\n\n if (is12hourFormat && selectedDesignator) {\n\n if (selectedDesignator === \"AM\") {\n if (minHours < 12) {\n useMin = true;\n }\n\n if (maxHours < 12) {\n useMax = true;\n }\n } else if (selectedDesignator === \"PM\") {\n\n if (minHours > 12) {\n useMin = true;\n minHours -= 12;\n }\n\n if (maxHours > 12) {\n useMax = true;\n maxHours -= 12;\n }\n }\n\n hoursList.find(\".k-item\").each(function(_, item) {\n item = $(item);\n var value = +item.attr(\"data-value\");\n if ((that._validateMin && useMin && value < minHours) || (that._validateMax && useMax && value > maxHours)) {\n item.hide();\n } else {\n item.show();\n }\n });\n } else {\n hoursList.find(\".k-item\").each(function(_, item) {\n item = $(item);\n var value = +item.attr(\"data-value\");\n if ((that._validateMin && value < minHours) ||\n (that._validateMax && value > maxHours)) {\n item.hide();\n } else {\n item.show();\n }\n });\n }\n\n this._updateListBottomOffset(hoursList);\n },\n\n _updateMinutesRange: function() {\n var that = this;\n var indexAttr = kendo.attr('index');\n var minutesList = this.ul.find('[' + indexAttr + '=\"2\"]');\n var minHours = this._minHours;\n var maxHours = this._maxHours;\n var minMinutes = this._minMinutes;\n var maxMinutes = this._maxMinutes;\n var selectedHour = +this._findSelectedValue(this.ul.find('[' + indexAttr + '=\"1\"]'));\n var is12hourFormat = includes(this.options.format.toLowerCase(), \"t\");\n var selectedDesignator = this._findSelectedValue(this.ul.find('[' + indexAttr + '=\"4\"]'));\n\n if (is12hourFormat && selectedDesignator === \"PM\") {\n selectedHour += 12;\n }\n\n if (!minutesList.length) {\n return;\n }\n\n minutesList.find(\".k-item\").each(function(_, item) {\n item = $(item);\n var value = +item.attr(\"data-value\");\n if ((that._validateMin && value < minMinutes && minHours && selectedHour === minHours) ||\n (that._validateMax && value > maxMinutes && maxHours && selectedHour === maxHours)) {\n item.hide();\n } else {\n item.show();\n }\n });\n\n this._updateListBottomOffset(minutesList);\n },\n\n _updateSecondsRange: function() {\n var that = this;\n var indexAttr = kendo.attr('index');\n var secondsList = this.ul.find('[' + indexAttr + '=\"3\"]');\n var minSeconds = this._minSeconds;\n var maxSeconds = this._minSeconds;\n var minMinutes = this._minMinutes;\n var maxMinutes = this._maxMinutes;\n var selectedMinutes = +this._findSelectedValue(this.ul.find('[' + indexAttr + '=\"2\"]'));\n\n if (!secondsList.length) {\n return;\n }\n\n secondsList.find(\".k-item\").each(function(_, item) {\n item = $(item);\n var value = +item.attr(\"data-value\");\n if ((that._validateMin && value < minSeconds && minMinutes && selectedMinutes === minMinutes) ||\n (that._validateMax && value > maxSeconds && maxMinutes && selectedMinutes === maxMinutes)) {\n item.hide();\n } else {\n item.show();\n }\n });\n\n this._updateListBottomOffset(secondsList);\n },\n\n _updateDesignatorRange: function() {\n var minHours = this._minHours;\n var maxHours = this._maxHours;\n var indexAttr = kendo.attr('index');\n var designatorList = this.ul.find('[' + indexAttr + '=\"4\"]');\n\n if (!designatorList.length) {\n return;\n }\n\n if (this._validateMin && minHours >= 12) {\n designatorList.find('.k-item[data-value=\"AM\"]').hide();\n } else {\n designatorList.find('.k-item[data-value=\"AM\"]').show();\n }\n\n if (this._validateMax && maxHours < 12) {\n designatorList.find('.k-item[data-value=\"PM\"]').hide();\n } else {\n designatorList.find('.k-item[data-value=\"PM\"]').show();\n }\n },\n\n\n _updateRanges: function() {\n if (!this.options.specifiedRange) {\n return;\n }\n if (!this._currentlySelected) {\n this._currentlySelected = new Date();\n }\n\n var max = this.options.max;\n var min = this.options.min;\n\n if (this.options.validateDate) {\n if (max.getFullYear() === this._currentlySelected.getFullYear() &&\n max.getMonth() === this._currentlySelected.getMonth() &&\n max.getDate() === this._currentlySelected.getDate()) {\n this._validateMax = true;\n } else {\n this._validateMax = false;\n }\n\n if (min.getFullYear() === this._currentlySelected.getFullYear() &&\n min.getMonth() === this._currentlySelected.getMonth() &&\n min.getDate() === this._currentlySelected.getDate()) {\n this._validateMin = true;\n } else {\n this._validateMin = false;\n }\n\n if (!this._validateMax && !this._validateMin) {\n this._showAllHiddenItems();\n return;\n }\n } else {\n this._validateMax = true;\n this._validateMin = true;\n }\n\n this._minMinutes = min.getMinutes();\n this._maxMinutes = max.getMinutes();\n this._minHours = min.getHours();\n this._maxHours = max.getHours();\n this._minSeconds = min.getSeconds();\n this._maxSeconds = max.getSeconds();\n\n this._updateDesignatorRange();\n this._updateHoursRange();\n this._updateMinutesRange();\n this._updateSecondsRange();\n },\n\n addTranslate: function() {\n var lists = this.ul.find(\".k-time-container.k-content.k-scrollable\");\n var length = lists.length;\n var list;\n var itemHeight;\n var listHeight;\n var topOffset;\n var translate;\n var bottomOffset;\n\n for (var i = 0; i < length; i++) {\n list = lists.eq(i);\n itemHeight = getItemHeight(list.find(\".k-item:visible\").eq(0));\n listHeight = list.outerHeight();\n topOffset = (listHeight - itemHeight) / 2;\n translate = \"translateY(\" + topOffset + \"px)\";\n bottomOffset = listHeight - itemHeight;\n list.find(\"ul\").css({\n transform: translate,\n \"-ms-transform\": translate\n });\n list.find(\".k-scrollable-placeholder\").css({\n height: list.find(\"ul\").height() + bottomOffset\n });\n list.off(ns)\n .on(\"click\" + ns, \".k-item\", this._itemClickHandler.bind(this))\n .on(\"scroll\" + ns, this._listScrollHandler.bind(this));\n }\n },\n\n _nowClickHandler: function(e) {\n e.preventDefault();\n\n var now = new Date();\n this.value(now);\n this.options.change(kendo.toString(now, this.options.format, this.options.culture), true);\n },\n\n _cancelClickHandler: function(e) {\n e.preventDefault();\n this.value(this._value);\n this.popup.close();\n },\n\n _setClickHandler: function(e) {\n e.preventDefault();\n this._value = new Date(this._currentlySelected);\n\n this.options.change(kendo.toString(this._currentlySelected, this.options.format, this.options.culture), true);\n this.popup.close();\n },\n\n _listScrollHandler: function(e) {\n var that = this;\n var itemHeight = getItemHeight($(e.currentTarget).find(\".k-item:visible\").eq(0));\n\n if (that._internalScroll) {\n return;\n }\n\n if (that._scrollingTimeout) {\n clearTimeout(that._scrollingTimeout);\n }\n\n that._scrollingTimeout = setTimeout(function() {\n if (e.currentTarget.scrollTop % itemHeight > 1) {\n e.currentTarget.scrollTop += itemHeight - e.currentTarget.scrollTop % itemHeight;\n }\n that._scrollTop = e.currentTarget.scrollTop;\n that._updateCurrentlySelected();\n that._updateRanges();\n }, 100);\n },\n\n _updateCurrentlySelected: function() {\n var is12hourFormat = includes(this.options.format.toLowerCase(), \"t\");\n var indexAttr = kendo.attr('index');\n var hoursList = this.ul.find('[' + indexAttr + '=\"1\"]');\n var minutesList = this.ul.find('[' + indexAttr + '=\"2\"]');\n var secondsList = this.ul.find('[' + indexAttr + '=\"3\"]');\n var designatorList = this.ul.find('[' + indexAttr + '=\"4\"]');\n var selectedHour;\n var selectedMinutes;\n var selectedSeconds;\n var selectedDesignator;\n\n if (!this.ul.is(\":visible\")) {\n return;\n }\n\n if (!this._currentlySelected) {\n this._currentlySelected = this._value ? new Date(this._value) : new Date();\n }\n\n if (hoursList.length) {\n selectedHour = +this._findSelectedValue(hoursList);\n }\n\n if (minutesList.length) {\n selectedMinutes = +this._findSelectedValue(minutesList);\n }\n\n if (secondsList.length) {\n selectedSeconds = +this._findSelectedValue(secondsList);\n }\n\n if (designatorList.length) {\n selectedDesignator = this._findSelectedValue(designatorList);\n }\n\n if (is12hourFormat) {\n if (selectedDesignator == \"PM\") {\n selectedHour += 12;\n if (selectedHour == 24) {\n selectedHour = 12;\n }\n }\n\n if (selectedDesignator === \"AM\" && selectedHour === 12) {\n selectedHour = 0;\n }\n }\n\n if (selectedHour !== undefined$1) {\n this._currentlySelected.setHours(selectedHour);\n }\n\n if (selectedMinutes !== undefined$1) {\n this._currentlySelected.setMinutes(selectedMinutes);\n }\n\n if (selectedSeconds !== undefined$1) {\n this._currentlySelected.setSeconds(selectedSeconds);\n }\n },\n\n _findSelectedValue: function(list) {\n var firstOccurence = firstItemIndex(list.scrollTop(), getItemHeight(list.find(\".k-item:visible\").eq(0)));\n return list.find(\".k-item:visible\").eq(firstOccurence).attr(\"data-value\");\n },\n\n _itemClickHandler: function(e) {\n var list = $(e.originalEvent.currentTarget);\n var index = list.find(\".k-item:visible\").index($(e.currentTarget));\n var itemHeight = getItemHeight(list.find(\".k-item:visible\").eq(0));\n\n list.scrollTop(index * itemHeight);\n },\n\n getDatesInRange: function(msStart, msMax, startDate, max, msInterval, start) {\n var result = [];\n\n while (true) {\n if (msMax && (getMilliseconds(start) >= msMax || startDate.getDate() != start.getDate())) {\n msStart = getMilliseconds(start);\n if (startDate < start) {\n msStart += MS_PER_DAY;\n }\n if (msStart > msMax) {\n start = new DATE(+max);\n }\n if (getMilliseconds(start) > 0) {\n result.push(new Date(start));\n }\n break;\n }\n if (startDate.getDate() != start.getDate()) {\n break;\n }\n result.push(new Date(start));\n start.setTime(start.getTime() + msInterval);\n if (!msMax && this.options.maxSet) {\n break;\n }\n }\n\n return result;\n },\n\n _createListContent: function(parts) {\n var length = parts.length;\n var result = \"\";\n var part;\n var values;\n\n for (var i = 0; i < length; i++) {\n part = parts[i];\n\n if (part.type === \"literal\") {\n result += this._literalTemplate(part);\n } else {\n values = this._getValues(part, true);\n result += this._itemTemplate(values.values, part, this.options.messages[part.type], values.index);\n }\n }\n\n return result;\n },\n\n _itemTemplate: function(values, part, title, index) {\n var result = \"\";\n var length = values.length;\n var indexAttr = kendo.attr('index');\n\n result += '
    ' +\n '' + (title || part.type) + '' +\n '
    ' +\n '
    ' +\n '
      ';\n\n for ( var i = 0; i < length; i++) {\n result += '
    • ' +\n '' + values[i] + '' +\n '
    • ';\n }\n\n result += '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n\n return result;\n },\n\n _getValues: function(part, shouldPad) {\n var result = [];\n var index;\n var start = 0;\n var end;\n\n if (part.type === \"hour\") {\n start = part.hour12 ? 1 : 0;\n index = 1;\n end = part.hour12 ? 12 : 23;\n } else if (part.type === \"minute\") {\n index = 2;\n end = 59;\n } else if (part.type === \"second\") {\n index = 3;\n end = 59;\n }\n\n for (; start <= end; start++) {\n result.push(shouldPad ? pad(start) : start);\n }\n\n return {\n values: result,\n index: index\n };\n },\n\n _literalTemplate: function(part) {\n var result = '
    ' +\n (part.pattern === \" tt\" ? ':' : part.pattern) +\n '
    ';\n\n if (part.pattern === \" tt\") {\n result += this._itemTemplate([\"AM\", \"PM\"], part, \"AM/PM\", 4);\n }\n\n return result;\n },\n\n bind: function() {\n var that = this,\n dates = that.options.dates;\n\n if (dates && dates[0]) {\n that.dataBind(dates);\n } else {\n that.refresh();\n }\n },\n\n _html: function(html) {\n var that = this;\n\n if (that.options.timeView && that.options.timeView.list === \"scroll\") {\n html = HIGHLIGHTCONTAINER + html;\n that.ul.html(html);\n } else {\n that.ul[0].innerHTML = html;\n that.popup.unbind(OPEN, that._heightHandler);\n that.popup.one(OPEN, that._heightHandler);\n\n that.current(null);\n that.select(that._value);\n }\n },\n\n scroll: function(item) {\n if (!item) {\n return;\n }\n\n if (item.scrollIntoViewIfNeeded) {\n item.scrollIntoViewIfNeeded();\n } else {\n scrollIntoViewIfNeeded(item);\n }\n },\n\n select: function(li) {\n var that = this,\n options = that.options,\n current = that._current,\n selection;\n\n if (li instanceof Date) {\n li = kendo.toString(li, options.format, options.culture);\n }\n\n if (typeof li === \"string\") {\n if (!current || current.text() !== li) {\n li = $.grep(that.ul[0].childNodes, function(node) {\n return (node.textContent || node.innerText) == li;\n });\n\n li = li[0] ? li : null;\n } else {\n li = current;\n }\n }\n selection = that._distinctSelection(li);\n that.current(selection);\n },\n\n _distinctSelection: function(selection) {\n var that = this,\n currentValue,\n selectionIndex;\n\n if (selection && selection.length > 1) {\n currentValue = getMilliseconds(that._value);\n selectionIndex = $.inArray(currentValue, that._dates);\n selection = that.ul.children()[selectionIndex];\n }\n\n return selection;\n },\n\n setOptions: function(options) {\n var old = this.options;\n\n options.min = parse(options.min);\n options.max = parse(options.max);\n\n this.options = extend(old, options, {\n active: old.active,\n change: old.change,\n close: old.close,\n open: old.open\n });\n\n this.bind();\n },\n\n toggle: function() {\n var that = this;\n\n if (that.popup.visible()) {\n that.close();\n } else {\n that.open();\n }\n },\n\n value: function(value) {\n var that = this;\n\n that._value = value;\n if (that.ul[0].firstChild) {\n if (that.options.timeView && that.options.timeView.list === \"scroll\") {\n that.applyValue(value);\n } else {\n that.select(value);\n }\n }\n },\n\n _click: function(e) {\n var that = this,\n li = $(e.currentTarget),\n date = li.text(),\n dates = that.options.dates;\n\n if (dates && dates.length > 0) {\n date = dates[li.index()];\n }\n\n if (!e.isDefaultPrevented()) {\n that.select(li);\n that.options.change(date, true);\n that.close();\n }\n },\n\n _height: function() {\n var that = this;\n var list = that.list;\n var parent = list.parent(\".k-animation-container\");\n var height = that.options.height;\n\n if (that.ul[0].children.length) {\n list.add(parent)\n .show()\n .height(that.ul[0].scrollHeight > height ? height : \"auto\")\n .hide();\n }\n },\n\n _parse: function(value) {\n var that = this,\n options = that.options,\n min = getMilliseconds(options.min) != getMilliseconds(TODAY) ? options.min : null,\n max = getMilliseconds(options.max) != getMilliseconds(TODAY) ? options.max : null,\n current = that._value || min || max || TODAY;\n\n if (value instanceof DATE) {\n return value;\n }\n\n value = parse(value, options.parseFormats, options.culture);\n\n if (value) {\n value = new DATE(current.getFullYear(),\n current.getMonth(),\n current.getDate(),\n value.getHours(),\n value.getMinutes(),\n value.getSeconds(),\n value.getMilliseconds());\n }\n\n return value;\n },\n\n _adjustListWidth: function() {\n var list = this.list,\n width = list[0].style.width,\n wrapper = this.options.anchor,\n computedStyle, computedWidth,\n outerWidth = kendo._outerWidth;\n\n if (!list.data(\"width\") && width) {\n return;\n }\n\n computedStyle = window.getComputedStyle ? window.getComputedStyle(wrapper[0], null) : 0;\n computedWidth = computedStyle ? parseFloat(computedStyle.width) : outerWidth(wrapper);\n\n if (computedStyle && (browser.mozilla || browser.msie)) { // getComputedStyle returns different box in FF and IE.\n computedWidth += parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight) + parseFloat(computedStyle.borderLeftWidth) + parseFloat(computedStyle.borderRightWidth);\n }\n\n width = computedWidth - (outerWidth(list) - list.width());\n\n list.css({\n fontFamily: wrapper.css(\"font-family\"),\n width: width\n })\n .data(\"width\", width);\n },\n\n _popup: function() {\n var that = this,\n list = that.list,\n options = that.options,\n anchor = options.anchor;\n\n if (!this.options.omitPopup) {\n\n that.popup = new ui.Popup(list, extend(options.popup, {\n anchor: anchor,\n open: options.open,\n close: options.close,\n animation: options.animation,\n isRtl: support.isRtl(options.anchor),\n activate: function() {\n if (that.options.timeView && that.options.timeView.list === \"scroll\") {\n that.addTranslate();\n if (that._value) {\n that.applyValue(that._value);\n } else {\n that._updateCurrentlySelected();\n }\n that._updateRanges();\n that._focusList(that.list.find(\".k-time-list-wrapper\").eq(0));\n }\n }\n }));\n } else {\n list.appendTo(options.timeDiv);\n }\n },\n\n move: function(e) {\n var that = this,\n key = e.keyCode,\n ul = that.ul[0],\n current = that._current,\n down = key === keys.DOWN;\n\n if (key === keys.UP || down) {\n if (e.altKey) {\n that.toggle(down);\n return;\n } else if (down) {\n current = current ? current[0].nextSibling : ul.firstChild;\n } else {\n current = current ? current[0].previousSibling : ul.lastChild;\n }\n\n if (current) {\n that.select(current);\n }\n\n that.options.change(that._current.text());\n e.preventDefault();\n\n } else if (key === keys.ENTER || key === keys.TAB || key === keys.ESC) {\n e.preventDefault();\n if (current) {\n that.options.change(current.text(), true);\n }\n that.close();\n }\n }\n };\n\n function dst() {\n var today = new DATE(),\n midnight = new DATE(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0),\n noon = new DATE(today.getFullYear(), today.getMonth(), today.getDate(), 12, 0, 0);\n\n return -1 * (midnight.getTimezoneOffset() - noon.getTimezoneOffset());\n }\n\n function getMilliseconds(date) {\n return date.getHours() * 60 * MS_PER_MINUTE + date.getMinutes() * MS_PER_MINUTE + date.getSeconds() * 1000 + date.getMilliseconds();\n }\n\n function lastTimeOption(interval) {\n var date = new Date(2100, 0, 1);\n date.setMinutes(-interval);\n return date;\n }\n\n function isInRange(value, min, max) {\n var msMin = getMilliseconds(min),\n msMax = getMilliseconds(max),\n msValue;\n\n if (!value || msMin == msMax) {\n return true;\n }\n\n msValue = getMilliseconds(value);\n\n if (msMin > msValue) {\n msValue += MS_PER_DAY;\n }\n\n if (msMax < msMin) {\n msMax += MS_PER_DAY;\n }\n\n return msValue >= msMin && msValue <= msMax;\n }\n\n TimeView.getMilliseconds = getMilliseconds;\n\n kendo.TimeView = TimeView;\n\n var TimePicker = Widget.extend({\n init: function(element, options) {\n var that = this, ul, timeView, disabled;\n\n options = options || {};\n options.componentType = options.componentType || \"classic\";\n\n Widget.fn.init.call(that, element, options);\n\n element = that.element;\n options = that.options;\n\n options.min = parse(element.attr(\"min\")) || parse(options.min);\n options.max = parse(element.attr(\"max\")) || parse(options.max);\n\n if (+options.max != +TODAY || +options.min != +TODAY) {\n this._specifiedRange = true;\n }\n\n normalize(options);\n\n that._initialOptions = extend({}, options);\n\n that._wrapper();\n\n if (that.options.timeView && that.options.timeView.list === \"scroll\") {\n that.options.height = null;\n }\n\n that.timeView = timeView = new TimeView(extend({}, options, {\n id: element.attr(ID),\n anchor: that.wrapper,\n format: options.format,\n change: function(value, trigger) {\n if (trigger) {\n that._change(value);\n } else {\n element.val(value);\n }\n },\n open: function(e) {\n if (that.options.timeView && that.options.timeView.list !== \"scroll\") {\n that.timeView._adjustListWidth();\n } else {\n that.timeView._updateTitle();\n }\n\n if (that.trigger(OPEN)) {\n e.preventDefault();\n } else {\n element.attr(ARIA_EXPANDED, true);\n ul.attr(ARIA_HIDDEN, false);\n\n if (timeView.current()) {\n element.attr(ARIA_ACTIVEDESCENDANT, timeView._optionID);\n }\n }\n },\n close: function(e) {\n if (that.trigger(CLOSE)) {\n e.preventDefault();\n } else {\n element.attr(ARIA_EXPANDED, false);\n ul.attr(ARIA_HIDDEN, true);\n element[0].removeAttribute(ARIA_ACTIVEDESCENDANT);\n }\n },\n active: function(current) {\n if (element && element.length) {\n element[0].removeAttribute(ARIA_ACTIVEDESCENDANT);\n }\n if (current) {\n element.attr(ARIA_ACTIVEDESCENDANT, timeView._optionID);\n }\n },\n specifiedRange: that._specifiedRange,\n maxSet: +options.max != +TODAY\n }));\n ul = timeView.ul;\n\n that._ariaLabel(ul);\n\n that._icon();\n that._reset();\n\n try {\n element[0].setAttribute(\"type\", \"text\");\n } catch (e) {\n element[0].type = \"text\";\n }\n\n element.addClass(\"k-input-inner\")\n .attr({\n \"role\": \"combobox\",\n \"aria-expanded\": false,\n \"aria-controls\": timeView._timeViewID,\n \"autocomplete\": \"off\"\n });\n\n disabled = element.is(\"[disabled]\") || $(that.element).parents(\"fieldset\").is(':disabled');\n if (disabled) {\n that.enable(false);\n } else {\n that.readonly(element.is(\"[readonly]\"));\n }\n if (options.dateInput) {\n var min = options.min;\n var max = options.max;\n var today = new DATE();\n if (getMilliseconds(min) == getMilliseconds(max)) {\n min = new DATE(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0);\n max = new DATE(today.getFullYear(), today.getMonth(), today.getDate(), 24, 0, 0);\n }\n\n that._dateInput = new ui.DateInput(element, {\n culture: options.culture,\n format: options.format,\n min: min,\n max: max,\n value: options.value,\n interval: options.interval,\n size: options.size,\n fillMode: options.fillMode,\n rounded: options.rounded\n });\n }\n that._old = that._update(options.value || that.element.val());\n that._oldText = element.val();\n that._applyCssClasses();\n\n if (options.label) {\n that._label();\n }\n\n kendo.notify(that);\n },\n\n options: {\n name: \"TimePicker\",\n min: TODAY,\n max: TODAY,\n format: \"\",\n dates: [],\n parseFormats: [],\n value: null,\n interval: 30,\n height: 200,\n animation: {},\n dateInput: false,\n messages: {\n set: \"Set\",\n cancel: \"Cancel\",\n hour: \"hour\",\n minute: \"minute\",\n second: \"second\",\n millisecond: \"millisecond\",\n now: \"Now\"\n },\n componentType: \"classic\",\n size: \"medium\",\n fillMode: \"solid\",\n rounded: \"medium\",\n label: null\n },\n\n events: [\n OPEN,\n CLOSE,\n CHANGE\n ],\n\n componentTypes: {\n \"classic\": {\n timeView: {\n list: \"list\"\n }\n },\n \"modern\": {\n timeView: {\n list: \"scroll\"\n }\n }\n },\n\n setOptions: function(options) {\n var that = this;\n var value = that._value;\n\n Widget.fn.setOptions.call(that, options);\n options = that.options;\n\n if (+options.max != +TODAY || +options.min != +TODAY) {\n this._specifiedRange = true;\n }\n\n that._arrow.off(ns);\n that._arrow.remove();\n\n normalize(options);\n\n that.timeView.setOptions(options);\n\n that._icon();\n that._editable(options);\n\n if (value) {\n that.element.val(kendo.toString(value, options.format, options.culture));\n }\n\n if (options.label && that._inputLabel) {\n that.label.setOptions(options.label);\n } else if (options.label === false) {\n that.label._unwrapFloating();\n that._inputLabel.remove();\n delete that._inputLabel;\n } else if (options.label) {\n that._label();\n }\n },\n\n dataBind: function(dates) {\n if (isArray(dates)) {\n this.timeView.dataBind(dates);\n }\n },\n\n _editable: function(options) {\n var that = this,\n disable = options.disable,\n readonly = options.readonly,\n arrow = that._arrow.off(ns),\n element = that.element.off(ns),\n wrapper = that.wrapper.off(ns);\n\n if (that._dateInput) {\n that._dateInput._unbindInput();\n }\n\n if (!readonly && !disable) {\n wrapper\n .removeClass(STATEDISABLED)\n .on(HOVEREVENTS, that._toggleHover);\n\n if (element && element.length) {\n element[0].removeAttribute(DISABLED);\n element[0].removeAttribute(READONLY);\n }\n element.attr(ARIA_DISABLED, false)\n .attr(ARIA_READONLY, false)\n .on(\"keydown\" + ns, that._keydown.bind(that))\n .on(\"focusout\" + ns, that._blur.bind(that))\n .on(\"focus\" + ns, function() {\n that.wrapper.addClass(FOCUSED);\n });\n\n if (that._dateInput) {\n that._dateInput._bindInput();\n }\n arrow.on(CLICK, that._click.bind(that))\n .on(MOUSEDOWN, preventDefault);\n } else {\n wrapper\n .addClass(disable ? STATEDISABLED : \"\")\n .removeClass(disable ? \"\" : STATEDISABLED);\n\n element.attr(DISABLED, disable)\n .attr(READONLY, readonly)\n .attr(ARIA_DISABLED, disable)\n .attr(ARIA_READONLY, readonly);\n }\n },\n\n _label: function() {\n var that = this;\n var options = that.options;\n var labelOptions = $.isPlainObject(options.label) ? options.label : {\n content: options.label\n };\n\n that.label = new kendo.ui.Label(null, $.extend({}, labelOptions, {\n widget: that\n }));\n\n that._inputLabel = that.label.element;\n },\n\n readonly: function(readonly) {\n this._editable({\n readonly: readonly === undefined$1 ? true : readonly,\n disable: false\n });\n\n if (this.label && this.label.floatingLabel) {\n this.label.floatingLabel.readonly(readonly === undefined$1 ? true : readonly);\n }\n },\n\n enable: function(enable) {\n this._editable({\n readonly: false,\n disable: !(enable = enable === undefined$1 ? true : enable)\n });\n\n if (this.label && this.label.floatingLabel) {\n this.label.floatingLabel.enable(enable = enable === undefined$1 ? true : enable);\n }\n },\n\n destroy: function() {\n var that = this;\n\n Widget.fn.destroy.call(that);\n\n that.timeView.destroy();\n\n that.element.off(ns);\n that._arrow.off(ns);\n that.wrapper.off(ns);\n\n if (that._form) {\n that._form.off(\"reset\", that._resetHandler);\n }\n\n if (that.label) {\n that.label.destroy();\n }\n },\n\n close: function() {\n this.timeView.close();\n },\n\n open: function() {\n this.timeView.open();\n },\n\n min: function(value) {\n if (value) {\n this._specifiedRange = true;\n }\n\n return this._option(\"min\", value);\n },\n\n max: function(value) {\n if (value && this.timeView) {\n this._specifiedRange = true;\n this.timeView.options.maxSet = true;\n } else if (this.timeView) {\n this.timeView.options.maxSet = false;\n }\n return this._option(\"max\", value);\n },\n\n value: function(value) {\n var that = this;\n\n if (value === undefined$1) {\n return that._value;\n }\n\n that._old = that._update(value);\n\n if (that._old === null) {\n that.element.val(\"\");\n }\n\n that._oldText = that.element.val();\n\n if (that.label && that.label.floatingLabel) {\n that.label.floatingLabel.refresh();\n }\n },\n\n _blur: function() {\n var that = this,\n value = that.element.val();\n\n if (!(that.options.timeView && that.options.timeView.list === \"scroll\")) {\n that.close();\n }\n\n if (value !== that._oldText) {\n that._change(value);\n }\n that.wrapper.removeClass(FOCUSED);\n },\n\n _click: function() {\n var that = this,\n element = that.element;\n\n that.timeView.toggle();\n\n if (!support.touch && element[0] !== activeElement()) {\n element.trigger(\"focus\");\n }\n },\n\n _change: function(value) {\n var that = this,\n oldValue = that.element.val(),\n dateChanged;\n\n value = that._update(value);\n dateChanged = !kendo.calendar.isEqualDate(that._old, value);\n\n var valueUpdated = dateChanged && !that._typing;\n var textFormatted = oldValue !== that.element.val();\n\n if (valueUpdated || textFormatted) {\n that.element.trigger(CHANGE);\n }\n\n if (dateChanged) {\n that._old = value;\n that._oldText = that.element.val();\n\n that.trigger(CHANGE);\n }\n\n that._typing = false;\n },\n\n _icon: function() {\n var that = this,\n element = that.element,\n options = that.options,\n arrow;\n\n arrow = element.next(\"button.k-input-button\");\n\n if (!arrow[0]) {\n arrow = $(html.renderButton('', {\n icon: \"clock\",\n size: options.size,\n fillMode: options.fillMode,\n shape: \"none\",\n rounded: \"none\"\n })).insertAfter(element);\n }\n\n that._arrow = arrow.attr({\n \"role\": \"button\"\n });\n },\n\n _keydown: function(e) {\n var that = this,\n key = e.keyCode,\n timeView = that.timeView,\n value = that.element.val();\n\n if (timeView.popup.visible() || e.altKey) {\n timeView.move(e);\n if (that._dateInput && e.stopImmediatePropagation) {\n e.stopImmediatePropagation();\n }\n } else if (key === keys.ENTER && value !== that._oldText) {\n that._change(value);\n } else {\n that._typing = true;\n }\n },\n\n _option: function(option, value) {\n var that = this,\n options = that.options;\n\n if (value === undefined$1) {\n return options[option];\n }\n\n value = that.timeView._parse(value);\n\n if (!value) {\n return;\n }\n\n value = new DATE(+value);\n\n options[option] = value;\n that.timeView.options[option] = value;\n that.timeView.bind();\n },\n\n _toggleHover: function(e) {\n $(e.currentTarget).toggleClass(HOVER, e.type === \"mouseenter\");\n },\n\n _update: function(value) {\n var that = this,\n options = that.options,\n timeView = that.timeView,\n date = timeView._parse(value);\n\n if (!isInRange(date, options.min, options.max)) {\n date = null;\n }\n\n that._value = date;\n that._currentlySelected = date;\n if (that._dateInput && date) {\n that._dateInput.value(date || value);\n } else {\n that.element.val(kendo.toString(date || value, options.format, options.culture));\n }\n timeView.value(date);\n\n return date;\n },\n\n _wrapper: function() {\n var that = this,\n element = that.element,\n wrapper;\n\n wrapper = element.parents(\".k-timepicker\");\n\n if (!wrapper[0]) {\n wrapper = element.wrap(SPAN).parent();\n }\n\n wrapper[0].style.cssText = element[0].style.cssText;\n that.wrapper = wrapper.addClass(\"k-timepicker k-input\")\n .addClass(element[0].className);\n\n element.css({\n height: element[0].style.height\n });\n },\n\n _reset: function() {\n var that = this,\n element = that.element,\n formId = element.attr(\"form\"),\n form = formId ? $(\"#\" + formId) : element.closest(\"form\");\n\n if (form[0]) {\n that._resetHandler = function() {\n that.value(element[0].defaultValue);\n that.max(that._initialOptions.max);\n that.min(that._initialOptions.min);\n };\n\n that._form = form.on(\"reset\", that._resetHandler);\n }\n }\n });\n\n function normalize(options) {\n var parseFormats = options.parseFormats;\n\n options.format = extractFormat(options.format || kendo.getCulture(options.culture).calendars.standard.patterns.t);\n\n parseFormats = isArray(parseFormats) ? parseFormats : [parseFormats];\n parseFormats.splice(0, 0, options.format);\n options.parseFormats = parseFormats;\n }\n\n function preventDefault(e) {\n e.preventDefault();\n }\n\n function mergeDateAndTime(date, time) {\n return new Date(date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n time.getHours(),\n time.getMinutes(),\n time.getSeconds(),\n time.getMilliseconds());\n }\n\n function datePattern(format, info) {\n var calendar = info.calendar;\n var result;\n if (typeof format === \"string\") {\n if (calendar.patterns[format]) {\n result = calendar.patterns[format];\n } else {\n result = format;\n }\n }\n\n if (!result) {\n result = calendar.patterns.d;\n }\n\n return result;\n }\n\n function addLiteral(parts, value) {\n var lastPart = parts[parts.length - 1];\n if (lastPart && lastPart.type === \"LITERAL\") {\n lastPart.pattern += value;\n } else {\n parts.push({\n type: LITERAL,\n pattern: value\n });\n }\n }\n\n function isHour12(pattern) {\n return pattern === \"h\" || pattern === \"K\";\n }\n\n function dateNameType(formatLength) {\n var nameType;\n if (formatLength <= 3) {\n nameType = \"abbreviated\";\n } else if (formatLength === 4) {\n nameType = \"wide\";\n } else if (formatLength === 5) {\n nameType = \"narrow\";\n } else if (formatLength === 6) {\n nameType = \"short\";\n }\n\n return nameType;\n }\n\n function startsWith(text, searchString, position) {\n position = position || 0;\n return text.indexOf(searchString, position) === position;\n }\n\n function includes(text, subStr) {\n var returnValue = false;\n\n if (text.indexOf(subStr) !== -1) {\n returnValue = true;\n }\n\n return returnValue;\n }\n\n function splitDateFormat(format) {\n var info = kendo.culture();\n var pattern = datePattern(format, info);\n var parts = [];\n var lastIndex = dateFormatRegExp.lastIndex = 0;\n var match = dateFormatRegExp.exec(pattern);\n var specifier;\n var type;\n var part;\n var names;\n var minLength;\n var patternLength;\n\n while (match) {\n var value = match[0];\n\n if (lastIndex < match.index) {\n addLiteral(parts, pattern.substring(lastIndex, match.index));\n }\n\n if (startsWith(value, '\"') || startsWith(value, \"'\")) {\n addLiteral(parts, value);\n } else {\n specifier = value[0];\n type = DATE_FIELD_MAP[specifier];\n part = {\n type: type,\n pattern: value\n };\n\n if (type === \"hour\") {\n part.hour12 = isHour12(value);\n }\n\n names = NAME_TYPES[type];\n\n if (names) {\n minLength = typeof names.minLength === \"number\" ? names.minLength : names.minLength[specifier];\n patternLength = value.length;\n\n if (patternLength >= minLength) {\n part.names = {\n type: names.type,\n nameType: dateNameType(patternLength),\n standAlone: names.standAlone === specifier\n };\n }\n }\n\n parts.push(part);\n }\n\n lastIndex = dateFormatRegExp.lastIndex;\n match = dateFormatRegExp.exec(pattern);\n }\n\n if (lastIndex < pattern.length) {\n addLiteral(parts, pattern.substring(lastIndex));\n }\n\n return parts;\n }\n\n function pad(value, size) {\n var s = String(value);\n while (s.length < (size || 2)) {\n s = \"0\" + s;\n }\n return s;\n }\n\n function firstItemIndex(scrollTop, itemHeight) {\n return Math.max(Math.round(scrollTop / itemHeight), 0);\n }\n\n function getItemHeight(item) {\n return item.length && item[0].getBoundingClientRect().height;\n }\n\n function scrollIntoViewIfNeeded(element, centerIfNeeded) {\n\n function makeRange(start, length) {\n return { start: start, length: length, end: start + length };\n }\n\n function coverRange(inner, outer) {\n if (centerIfNeeded === false ||\n (outer.start < inner.end && inner.start < outer.end))\n {\n return Math.min(\n inner.start, Math.max(outer.start, inner.end - outer.length)\n );\n }\n return (inner.start + inner.end - outer.length) / 2;\n }\n\n function makePoint(x, y) {\n return {\n x: x, y: y,\n translate: function translate(dX, dY) {\n return makePoint(x + dX, y + dY);\n }\n };\n }\n\n function absolute(elem, pt) {\n while (elem) {\n pt = pt.translate(elem.offsetLeft, elem.offsetTop);\n elem = elem.offsetParent;\n }\n return pt;\n }\n\n var target = absolute(element, makePoint(0, 0)),\n extent = makePoint(element.offsetWidth, element.offsetHeight),\n elem = element.parentNode,\n origin;\n\n while (elem instanceof HTMLElement) {\n origin = absolute(elem, makePoint(elem.clientLeft, elem.clientTop));\n elem.scrollLeft = coverRange(\n makeRange(target.x - origin.x, extent.x),\n makeRange(elem.scrollLeft, elem.clientWidth)\n );\n elem.scrollTop = coverRange(\n makeRange(target.y - origin.y, extent.y),\n makeRange(elem.scrollTop, elem.clientHeight)\n );\n\n target = target.translate(-elem.scrollLeft, -elem.scrollTop);\n elem = elem.parentNode;\n }\n }\n\n\n kendo.cssProperties.registerPrefix(\"TimePicker\", \"k-input-\");\n\n kendo.cssProperties.registerValues(\"TimePicker\", [{\n prop: \"rounded\",\n values: kendo.cssProperties.roundedValues.concat([['full', 'full']])\n }]);\n\n ui.plugin(TimePicker);\n\n })(window.kendo.jQuery);\n\n}));\n"]}