File: /home/accemeff/vendor/craftcms/cms/lib/timepicker/jquery.timepicker.js.map
{"version":3,"sources":["jquery.timepicker.js"],"names":["factory","exports","module","require","define","amd","jQuery","$","_ONE_DAY","_lang","am","pm","AM","PM","decimal","mins","hr","hrs","_DEFAULTS","appendTo","className","closeOnWindowScroll","disableTextInput","disableTimeRanges","disableTouchKeyboard","durationTime","forceRoundTime","maxTime","minTime","noneOption","orientation","roundingFunction","seconds","settings","step","offset","_moduloSeconds","scrollDefault","selectOnBlur","show2400","showDuration","showOn","showOnFocus","stopScrollPropagation","timeFormat","typeaheadHighlight","useSelect","wrapHours","methods","init","options","this","each","self","attributeOptions","key","data","extend","lang","_parseSettings","addClass","_render","prop","i","on","show","_formatValue","_keydownhandler","_keyuphandler","_disableTextInputHandler","call","get","e","preventDefault","focus","_hideKeyboard","blur","list","length","_isVisible","val","_setSelected","hide","verticalOrientation","listOffset","match","left","outerWidth","parseInt","css","replace","top","outerHeight","window","height","scrollTop","removeClass","selected","find","timeInt","_time2int","_getTimeValue","_findRow","hasClass","topOffset","position","document","currentScroll","originalEvent","deltaY","_closeHandler","trigger","_selectValue","option","value","type","remove","getSecondsFromMidnight","getTime","relative_date","time_string","Date","time","setHours","setMinutes","setSeconds","setMilliseconds","isVisible","setTime","prettyTime","_roundAndFormatTime","_int2time","_setTimeValue","removeAttr","removeData","off","elem","el","offsetWidth","offsetHeight","_twelveHourTime","indexOf","splice","sort","a","b","Math","min","max","class","attr","wrapped_list","tabindex","display","append","isArray","noneElement","_generateNoneElement","durStart","start","end","dr","drCur","drLen","stepFunc","j","row","timeString","text","durationString","_int2duration","duration","after","optionValue","label","error","String","target","closest","unbind","navigator","msMaxTouchPoints","out","obj","jObj","timeValue","topDelta","origin","is","rangeError","roundSeconds","source","keyCode","apply","prev","next","setTimeout","cursor","abs","hours","minutes","round","floor","push","join","isNaN","hour","code","output","charAt","getHours","getMinutes","getSeconds","toLowerCase","slice","ampmRegex","pattern","RegExp","ampm","isPm","delta","fn","timepicker","method","Array","prototype","arguments"],"mappings":"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","file":"jquery.timepicker.js","sourcesContent":["/*!\n * jquery-timepicker v1.11.14 - A jQuery timepicker plugin inspired by Google Calendar. It supports both mouse and keyboard navigation.\n * Copyright (c) 2015 Jon Thornton - http://jonthornton.github.com/jquery-timepicker/\n * License: MIT\n */\n\n(function(factory) {\n if (\n typeof exports === \"object\" &&\n exports &&\n typeof module === \"object\" &&\n module &&\n module.exports === exports\n ) {\n // Browserify. Attach to jQuery module.\n factory(require(\"jquery\"));\n } else if (typeof define === \"function\" && define.amd) {\n // AMD. Register as an anonymous module.\n define([\"jquery\"], factory);\n } else {\n // Browser globals\n factory(jQuery);\n }\n})(function($) {\n var _ONE_DAY = 86400;\n var _lang = {\n am: \"am\",\n pm: \"pm\",\n AM: \"AM\",\n PM: \"PM\",\n decimal: \".\",\n mins: \"mins\",\n hr: \"hr\",\n hrs: \"hrs\"\n };\n\n var _DEFAULTS = {\n appendTo: \"body\",\n className: null,\n closeOnWindowScroll: false,\n disableTextInput: false,\n disableTimeRanges: [],\n disableTouchKeyboard: false,\n durationTime: null,\n forceRoundTime: false,\n maxTime: null,\n minTime: null,\n noneOption: false,\n orientation: \"l\",\n roundingFunction: function(seconds, settings) {\n if (seconds === null) {\n return null;\n } else if (typeof settings.step !== \"number\") {\n // TODO: nearest fit irregular steps\n return seconds;\n } else {\n var offset = seconds % (settings.step * 60); // step is in minutes\n\n var start = settings.minTime || 0;\n\n // adjust offset by start mod step so that the offset is aligned not to 00:00 but to the start\n offset -= start % (settings.step * 60);\n\n if (offset >= settings.step * 30) {\n // if offset is larger than a half step, round up\n seconds += settings.step * 60 - offset;\n } else {\n // round down\n seconds -= offset;\n }\n\n return _moduloSeconds(seconds, settings);\n }\n },\n scrollDefault: null,\n selectOnBlur: false,\n show2400: false,\n showDuration: false,\n showOn: [\"click\", \"focus\"],\n showOnFocus: true,\n step: 30,\n stopScrollPropagation: false,\n timeFormat: \"g:ia\",\n typeaheadHighlight: true,\n useSelect: false,\n wrapHours: true\n };\n\n var methods = {\n init: function(options) {\n return this.each(function() {\n var self = $(this);\n\n // pick up settings from data attributes\n var attributeOptions = [];\n for (var key in _DEFAULTS) {\n if (self.data(key)) {\n attributeOptions[key] = self.data(key);\n }\n }\n\n var settings = $.extend({}, _DEFAULTS, options, attributeOptions);\n\n if (settings.lang) {\n _lang = $.extend(_lang, settings.lang);\n }\n\n settings = _parseSettings(settings);\n self.data(\"timepicker-settings\", settings);\n self.addClass(\"ui-timepicker-input\");\n\n if (settings.useSelect) {\n _render(self);\n } else {\n self.prop(\"autocomplete\", \"off\");\n if (settings.showOn) {\n for (var i in settings.showOn) {\n self.on(settings.showOn[i] + \".timepicker\", methods.show);\n }\n }\n self.on(\"change.timepicker\", _formatValue);\n self.on(\"keydown.timepicker\", _keydownhandler);\n self.on(\"keyup.timepicker\", _keyuphandler);\n if (settings.disableTextInput) {\n self.on(\"keydown.timepicker\", _disableTextInputHandler);\n }\n self.on(\"cut.timepicker\", _keyuphandler);\n self.on(\"paste.timepicker\", _keyuphandler);\n\n _formatValue.call(self.get(0), null, \"initial\");\n }\n });\n },\n\n show: function(e) {\n var self = $(this);\n var settings = self.data(\"timepicker-settings\");\n\n if (e) {\n e.preventDefault();\n }\n\n if (settings.useSelect) {\n self.data(\"timepicker-list\").focus();\n return;\n }\n\n if (_hideKeyboard(self)) {\n // block the keyboard on mobile devices\n self.blur();\n }\n\n var list = self.data(\"timepicker-list\");\n\n // check if input is readonly\n if (self.prop(\"readonly\")) {\n return;\n }\n\n // check if list needs to be rendered\n if (\n !list ||\n list.length === 0 ||\n typeof settings.durationTime === \"function\"\n ) {\n _render(self);\n list = self.data(\"timepicker-list\");\n }\n\n if (_isVisible(list)) {\n return;\n }\n\n self.data(\"ui-timepicker-value\", self.val());\n _setSelected(self, list);\n\n // make sure other pickers are hidden\n methods.hide();\n\n // position the dropdown relative to the input\n list.show();\n var listOffset = {};\n\n if (settings.orientation.match(/r/)) {\n // right-align the dropdown\n listOffset.left =\n self.offset().left +\n self.outerWidth() -\n list.outerWidth() +\n parseInt(list.css(\"marginLeft\").replace(\"px\", \"\"), 10);\n } else {\n // left-align the dropdown\n listOffset.left =\n self.offset().left +\n parseInt(list.css(\"marginLeft\").replace(\"px\", \"\"), 10);\n }\n\n var verticalOrientation;\n if (settings.orientation.match(/t/)) {\n verticalOrientation = \"t\";\n } else if (settings.orientation.match(/b/)) {\n verticalOrientation = \"b\";\n } else if (\n self.offset().top + self.outerHeight(true) + list.outerHeight() >\n $(window).height() + $(window).scrollTop()\n ) {\n verticalOrientation = \"t\";\n } else {\n verticalOrientation = \"b\";\n }\n\n if (verticalOrientation == \"t\") {\n // position the dropdown on top\n list.addClass(\"ui-timepicker-positioned-top\");\n listOffset.top =\n self.offset().top -\n list.outerHeight() +\n parseInt(list.css(\"marginTop\").replace(\"px\", \"\"), 10);\n } else {\n // put it under the input\n list.removeClass(\"ui-timepicker-positioned-top\");\n listOffset.top =\n self.offset().top +\n self.outerHeight() +\n parseInt(list.css(\"marginTop\").replace(\"px\", \"\"), 10);\n }\n\n list.offset(listOffset);\n\n // position scrolling\n var selected = list.find(\".ui-timepicker-selected\");\n\n if (!selected.length) {\n var timeInt = _time2int(_getTimeValue(self));\n if (timeInt !== null) {\n selected = _findRow(self, list, timeInt);\n } else if (settings.scrollDefault) {\n selected = _findRow(self, list, settings.scrollDefault());\n }\n }\n\n // if not found or disabled, intelligently find first selectable element\n if (!selected.length || selected.hasClass(\"ui-timepicker-disabled\")) {\n selected = list.find(\"li:not(.ui-timepicker-disabled):first\");\n }\n\n if (selected && selected.length) {\n var topOffset =\n list.scrollTop() + selected.position().top - selected.outerHeight();\n list.scrollTop(topOffset);\n } else {\n list.scrollTop(0);\n }\n\n // prevent scroll propagation\n if (settings.stopScrollPropagation) {\n $(\n document\n ).on(\"wheel.ui-timepicker\", \".ui-timepicker-wrapper\", function(e) {\n e.preventDefault();\n var currentScroll = $(this).scrollTop();\n $(this).scrollTop(currentScroll + e.originalEvent.deltaY);\n });\n }\n\n // attach close handlers\n $(document).on(\n \"touchstart.ui-timepicker mousedown.ui-timepicker\",\n _closeHandler\n );\n $(window).on(\"resize.ui-timepicker\", _closeHandler);\n if (settings.closeOnWindowScroll) {\n $(document).on(\"scroll.ui-timepicker\", _closeHandler);\n }\n\n self.trigger(\"showTimepicker\");\n\n return this;\n },\n\n hide: function(e) {\n var self = $(this);\n var settings = self.data(\"timepicker-settings\");\n\n if (settings && settings.useSelect) {\n self.blur();\n }\n\n $(\".ui-timepicker-wrapper\").each(function() {\n var list = $(this);\n if (!_isVisible(list)) {\n return;\n }\n\n var self = list.data(\"timepicker-input\");\n var settings = self.data(\"timepicker-settings\");\n\n if (settings && settings.selectOnBlur) {\n _selectValue(self);\n }\n\n list.hide();\n self.trigger(\"hideTimepicker\");\n });\n\n return this;\n },\n\n option: function(key, value) {\n if (typeof key == \"string\" && typeof value == \"undefined\") {\n return $(this).data(\"timepicker-settings\")[key];\n }\n\n return this.each(function() {\n var self = $(this);\n var settings = self.data(\"timepicker-settings\");\n var list = self.data(\"timepicker-list\");\n\n if (typeof key == \"object\") {\n settings = $.extend(settings, key);\n } else if (typeof key == \"string\") {\n settings[key] = value;\n }\n\n settings = _parseSettings(settings);\n\n self.data(\"timepicker-settings\", settings);\n\n _formatValue.call(self.get(0), { type: \"change\" }, \"initial\");\n\n if (list) {\n list.remove();\n self.data(\"timepicker-list\", false);\n }\n\n if (settings.useSelect) {\n _render(self);\n }\n });\n },\n\n getSecondsFromMidnight: function() {\n return _time2int(_getTimeValue(this));\n },\n\n getTime: function(relative_date) {\n var self = this;\n\n var time_string = _getTimeValue(self);\n if (!time_string) {\n return null;\n }\n\n var offset = _time2int(time_string);\n if (offset === null) {\n return null;\n }\n\n if (!relative_date) {\n relative_date = new Date();\n }\n\n // construct a Date from relative date, and offset's time\n var time = new Date(relative_date);\n time.setHours(offset / 3600);\n time.setMinutes((offset % 3600) / 60);\n time.setSeconds(offset % 60);\n time.setMilliseconds(0);\n\n return time;\n },\n\n isVisible: function() {\n var self = this;\n var list = self.data(\"timepicker-list\");\n return !!(list && _isVisible(list));\n },\n\n setTime: function(value) {\n var self = this;\n var settings = self.data(\"timepicker-settings\");\n\n if (settings.forceRoundTime) {\n var prettyTime = _roundAndFormatTime(_time2int(value), settings);\n } else {\n var prettyTime = _int2time(_time2int(value), settings);\n }\n\n if (value && prettyTime === null && settings.noneOption) {\n prettyTime = value;\n }\n\n _setTimeValue(self, prettyTime, \"initial\");\n _formatValue.call(self.get(0), { type: \"change\" }, \"initial\");\n\n if (self.data(\"timepicker-list\")) {\n _setSelected(self, self.data(\"timepicker-list\"));\n }\n\n return this;\n },\n\n remove: function() {\n var self = this;\n\n // check if this element is a timepicker\n if (!self.hasClass(\"ui-timepicker-input\")) {\n return;\n }\n\n var settings = self.data(\"timepicker-settings\");\n self.removeAttr(\"autocomplete\", \"off\");\n self.removeClass(\"ui-timepicker-input\");\n self.removeData(\"timepicker-settings\");\n self.off(\".timepicker\");\n\n // timepicker-list won't be present unless the user has interacted with this timepicker\n if (self.data(\"timepicker-list\")) {\n self.data(\"timepicker-list\").remove();\n }\n\n if (settings.useSelect) {\n self.show();\n }\n\n self.removeData(\"timepicker-list\");\n\n return this;\n }\n };\n\n // private methods\n\n function _isVisible(elem) {\n var el = elem[0];\n return el.offsetWidth > 0 && el.offsetHeight > 0;\n }\n\n function _parseSettings(settings) {\n if (settings.minTime) {\n settings.minTime = _time2int(settings.minTime);\n }\n\n if (settings.maxTime) {\n settings.maxTime = _time2int(settings.maxTime);\n }\n\n if (settings.durationTime && typeof settings.durationTime !== \"function\") {\n settings.durationTime = _time2int(settings.durationTime);\n }\n\n if (settings.scrollDefault == \"now\") {\n settings.scrollDefault = function() {\n return settings.roundingFunction(_time2int(new Date()), settings);\n };\n } else if (\n settings.scrollDefault &&\n typeof settings.scrollDefault != \"function\"\n ) {\n var val = settings.scrollDefault;\n settings.scrollDefault = function() {\n return settings.roundingFunction(_time2int(val), settings);\n };\n } else if (settings.minTime) {\n settings.scrollDefault = function() {\n return settings.roundingFunction(settings.minTime, settings);\n };\n }\n\n if (\n $.type(settings.timeFormat) === \"string\" &&\n settings.timeFormat.match(/[gh]/)\n ) {\n settings._twelveHourTime = true;\n }\n\n if (\n settings.showOnFocus === false &&\n settings.showOn.indexOf(\"focus\") != -1\n ) {\n settings.showOn.splice(settings.showOn.indexOf(\"focus\"), 1);\n }\n\n if (settings.disableTimeRanges.length > 0) {\n // convert string times to integers\n for (var i in settings.disableTimeRanges) {\n settings.disableTimeRanges[i] = [\n _time2int(settings.disableTimeRanges[i][0]),\n _time2int(settings.disableTimeRanges[i][1])\n ];\n }\n\n // sort by starting time\n settings.disableTimeRanges = settings.disableTimeRanges.sort(function(\n a,\n b\n ) {\n return a[0] - b[0];\n });\n\n // merge any overlapping ranges\n for (var i = settings.disableTimeRanges.length - 1; i > 0; i--) {\n if (\n settings.disableTimeRanges[i][0] <=\n settings.disableTimeRanges[i - 1][1]\n ) {\n settings.disableTimeRanges[i - 1] = [\n Math.min(\n settings.disableTimeRanges[i][0],\n settings.disableTimeRanges[i - 1][0]\n ),\n Math.max(\n settings.disableTimeRanges[i][1],\n settings.disableTimeRanges[i - 1][1]\n )\n ];\n settings.disableTimeRanges.splice(i, 1);\n }\n }\n }\n\n return settings;\n }\n\n function _render(self) {\n var settings = self.data(\"timepicker-settings\");\n var list = self.data(\"timepicker-list\");\n\n if (list && list.length) {\n list.remove();\n self.data(\"timepicker-list\", false);\n }\n\n if (settings.useSelect) {\n list = $(\"<select />\", { class: \"ui-timepicker-select\" });\n if (self.attr('name')) {\n list.attr('name', 'ui-timepicker-' + self.attr('name'));\n }\n var wrapped_list = list;\n } else {\n list = $(\"<ul />\", { class: \"ui-timepicker-list\" });\n\n var wrapped_list = $(\"<div />\", {\n class: \"ui-timepicker-wrapper\",\n tabindex: -1\n });\n wrapped_list.css({ display: \"none\", position: \"absolute\" }).append(list);\n }\n\n if (settings.noneOption) {\n if (settings.noneOption === true) {\n settings.noneOption = settings.useSelect ? \"Time...\" : \"None\";\n }\n\n if ($.isArray(settings.noneOption)) {\n for (var i in settings.noneOption) {\n if (parseInt(i, 10) == i) {\n var noneElement = _generateNoneElement(\n settings.noneOption[i],\n settings.useSelect\n );\n list.append(noneElement);\n }\n }\n } else {\n var noneElement = _generateNoneElement(\n settings.noneOption,\n settings.useSelect\n );\n list.append(noneElement);\n }\n }\n\n if (settings.className) {\n wrapped_list.addClass(settings.className);\n }\n\n if (\n (settings.minTime !== null || settings.durationTime !== null) &&\n settings.showDuration\n ) {\n var stepval =\n typeof settings.step == \"function\" ? \"function\" : settings.step;\n wrapped_list.addClass(\"ui-timepicker-with-duration\");\n wrapped_list.addClass(\"ui-timepicker-step-\" + settings.step);\n }\n\n var durStart = settings.minTime;\n if (typeof settings.durationTime === \"function\") {\n durStart = _time2int(settings.durationTime());\n } else if (settings.durationTime !== null) {\n durStart = settings.durationTime;\n }\n var start = settings.minTime !== null ? settings.minTime : 0;\n var end =\n settings.maxTime !== null ? settings.maxTime : start + _ONE_DAY - 1;\n\n if (end < start) {\n // make sure the end time is greater than start time, otherwise there will be no list to show\n end += _ONE_DAY;\n }\n\n if (\n end === _ONE_DAY - 1 &&\n $.type(settings.timeFormat) === \"string\" &&\n settings.show2400\n ) {\n // show a 24:00 option when using military time\n end = _ONE_DAY;\n }\n\n var dr = settings.disableTimeRanges;\n var drCur = 0;\n var drLen = dr.length;\n\n var stepFunc = settings.step;\n if (typeof stepFunc != \"function\") {\n stepFunc = function() {\n return settings.step;\n };\n }\n\n for (var i = start, j = 0; i <= end; j++, i += stepFunc(j) * 60) {\n var timeInt = i;\n var timeString = _int2time(timeInt, settings);\n\n if (settings.useSelect) {\n var row = $(\"<option />\", { value: timeString });\n row.text(timeString);\n } else {\n var row = $(\"<li />\");\n row.addClass(\n timeInt % _ONE_DAY < _ONE_DAY / 2\n ? \"ui-timepicker-am\"\n : \"ui-timepicker-pm\"\n );\n row.data(\"time\", _moduloSeconds(timeInt, settings));\n row.text(timeString);\n }\n\n if (\n (settings.minTime !== null || settings.durationTime !== null) &&\n settings.showDuration\n ) {\n var durationString = _int2duration(i - durStart, settings.step);\n if (settings.useSelect) {\n row.text(row.text() + \" (\" + durationString + \")\");\n } else {\n var duration = $(\"<span />\", { class: \"ui-timepicker-duration\" });\n duration.text(\" (\" + durationString + \")\");\n row.append(duration);\n }\n }\n\n if (drCur < drLen) {\n if (timeInt >= dr[drCur][1]) {\n drCur += 1;\n }\n\n if (dr[drCur] && timeInt >= dr[drCur][0] && timeInt < dr[drCur][1]) {\n if (settings.useSelect) {\n row.prop(\"disabled\", true);\n } else {\n row.addClass(\"ui-timepicker-disabled\");\n }\n }\n }\n\n list.append(row);\n }\n\n wrapped_list.data(\"timepicker-input\", self);\n self.data(\"timepicker-list\", wrapped_list);\n\n if (settings.useSelect) {\n if (self.val()) {\n list.val(_roundAndFormatTime(_time2int(self.val()), settings));\n }\n\n list.on(\"focus\", function() {\n $(this)\n .data(\"timepicker-input\")\n .trigger(\"showTimepicker\");\n });\n list.on(\"blur\", function() {\n $(this)\n .data(\"timepicker-input\")\n .trigger(\"hideTimepicker\");\n });\n list.on(\"change\", function() {\n _setTimeValue(self, $(this).val(), \"select\");\n });\n\n _setTimeValue(self, list.val(), \"initial\");\n self.hide().after(list);\n } else {\n var appendTo = settings.appendTo;\n if (typeof appendTo === \"string\") {\n appendTo = $(appendTo);\n } else if (typeof appendTo === \"function\") {\n appendTo = appendTo(self);\n }\n appendTo.append(wrapped_list);\n _setSelected(self, list);\n\n list.on(\"mousedown click\", \"li\", function(e) {\n // hack: temporarily disable the focus handler\n // to deal with the fact that IE fires 'focus'\n // events asynchronously\n self.off(\"focus.timepicker\");\n self.on(\"focus.timepicker-ie-hack\", function() {\n self.off(\"focus.timepicker-ie-hack\");\n self.on(\"focus.timepicker\", methods.show);\n });\n\n if (!_hideKeyboard(self)) {\n self[0].focus();\n }\n\n // make sure only the clicked row is selected\n list.find(\"li\").removeClass(\"ui-timepicker-selected\");\n $(this).addClass(\"ui-timepicker-selected\");\n\n if (_selectValue(self)) {\n self.trigger(\"hideTimepicker\");\n\n list.on(\"mouseup.timepicker click.timepicker\", \"li\", function(e) {\n list.off(\"mouseup.timepicker click.timepicker\");\n wrapped_list.hide();\n });\n }\n });\n }\n }\n\n function _generateNoneElement(optionValue, useSelect) {\n var label, className, value;\n\n if (typeof optionValue == \"object\") {\n label = optionValue.label;\n className = optionValue.className;\n value = optionValue.value;\n } else if (typeof optionValue == \"string\") {\n label = optionValue;\n value = '';\n } else {\n $.error(\"Invalid noneOption value\");\n }\n\n if (useSelect) {\n return $(\"<option />\", {\n value: value,\n class: className,\n text: label\n });\n } else {\n return $(\"<li />\", {\n class: className,\n text: label\n }).data(\"time\", String(value));\n }\n }\n\n function _roundAndFormatTime(seconds, settings) {\n seconds = settings.roundingFunction(seconds, settings);\n if (seconds !== null) {\n return _int2time(seconds, settings);\n }\n }\n\n // event handler to decide whether to close timepicker\n function _closeHandler(e) {\n if (e.target == window) {\n // mobile Chrome fires focus events against window for some reason\n return;\n }\n\n var target = $(e.target);\n\n if (\n target.closest(\".ui-timepicker-input\").length ||\n target.closest(\".ui-timepicker-wrapper\").length\n ) {\n // active timepicker was focused. ignore\n return;\n }\n\n methods.hide();\n $(document).unbind(\".ui-timepicker\");\n $(window).unbind(\".ui-timepicker\");\n }\n\n function _hideKeyboard(self) {\n var settings = self.data(\"timepicker-settings\");\n return (\n (window.navigator.msMaxTouchPoints || \"ontouchstart\" in document) &&\n settings.disableTouchKeyboard\n );\n }\n\n function _findRow(self, list, value) {\n if (!value && value !== 0) {\n return false;\n }\n\n var settings = self.data(\"timepicker-settings\");\n var out = false;\n var value = settings.roundingFunction(value, settings);\n\n // loop through the menu items\n list.find(\"li\").each(function(i, obj) {\n var jObj = $(obj);\n if (typeof jObj.data(\"time\") != \"number\") {\n return;\n }\n\n if (jObj.data(\"time\") == value) {\n out = jObj;\n return false;\n }\n });\n\n return out;\n }\n\n function _setSelected(self, list) {\n list.find(\"li\").removeClass(\"ui-timepicker-selected\");\n\n var settings = self.data(\"timepicker-settings\");\n var timeValue = _time2int(_getTimeValue(self), settings);\n if (timeValue === null) {\n return;\n }\n\n var selected = _findRow(self, list, timeValue);\n if (selected) {\n var topDelta = selected.offset().top - list.offset().top;\n\n if (\n topDelta + selected.outerHeight() > list.outerHeight() ||\n topDelta < 0\n ) {\n list.scrollTop(\n list.scrollTop() + selected.position().top - selected.outerHeight()\n );\n }\n\n if (settings.forceRoundTime || selected.data(\"time\") === timeValue) {\n selected.addClass(\"ui-timepicker-selected\");\n }\n }\n }\n\n function _formatValue(e, origin) {\n if (origin == \"timepicker\") {\n return;\n }\n\n var self = $(this);\n\n if (this.value === \"\") {\n _setTimeValue(self, null, origin);\n return;\n }\n\n if (self.is(\":focus\") && (!e || e.type != \"change\")) {\n return;\n }\n\n var settings = self.data(\"timepicker-settings\");\n var seconds = _time2int(this.value, settings);\n\n if (seconds === null) {\n self.trigger(\"timeFormatError\");\n return;\n }\n\n var rangeError = false;\n // check that the time in within bounds\n if (\n settings.minTime !== null &&\n settings.maxTime !== null &&\n (seconds < settings.minTime || seconds > settings.maxTime)\n ) {\n rangeError = true;\n }\n\n // check that time isn't within disabled time ranges\n $.each(settings.disableTimeRanges, function() {\n if (seconds >= this[0] && seconds < this[1]) {\n rangeError = true;\n return false;\n }\n });\n\n if (settings.forceRoundTime) {\n var roundSeconds = settings.roundingFunction(seconds, settings);\n if (roundSeconds != seconds) {\n seconds = roundSeconds;\n origin = null;\n }\n }\n\n var prettyTime = _int2time(seconds, settings);\n\n if (rangeError) {\n if (\n _setTimeValue(self, prettyTime, \"error\") ||\n (e && e.type == \"change\")\n ) {\n self.trigger(\"timeRangeError\");\n }\n } else {\n _setTimeValue(self, prettyTime, origin);\n }\n }\n\n function _getTimeValue(self) {\n if (self.is(\"input\")) {\n return self.val();\n } else {\n // use the element's data attributes to store values\n return self.data(\"ui-timepicker-value\");\n }\n }\n\n function _setTimeValue(self, value, source) {\n if (self.is(\"input\")) {\n self.val(value);\n\n var settings = self.data(\"timepicker-settings\");\n if (settings.useSelect && source != \"select\" && self.data(\"timepicker-list\")) {\n self\n .data(\"timepicker-list\")\n .val(_roundAndFormatTime(_time2int(value), settings));\n }\n }\n\n if (self.data(\"ui-timepicker-value\") != value) {\n self.data(\"ui-timepicker-value\", value);\n if (source == \"select\") {\n self\n .trigger(\"selectTime\")\n .trigger(\"changeTime\")\n .trigger(\"change\", \"timepicker\");\n } else if ([\"error\", \"initial\"].indexOf(source) == -1) {\n self.trigger(\"changeTime\");\n }\n\n return true;\n } else {\n if ([\"error\", \"initial\"].indexOf(source) == -1) {\n self.trigger(\"selectTime\");\n }\n return false;\n }\n }\n\n /*\n\t* Filter freeform input\n\t*/\n function _disableTextInputHandler(e) {\n switch (e.keyCode) {\n case 13: // return\n case 9: //tab\n return;\n\n default:\n e.preventDefault();\n }\n }\n\n /*\n\t* Keyboard navigation via arrow keys\n\t*/\n function _keydownhandler(e) {\n var self = $(this);\n var list = self.data(\"timepicker-list\");\n\n if (!list || !_isVisible(list)) {\n if (e.keyCode == 40) {\n // show the list!\n methods.show.call(self.get(0));\n list = self.data(\"timepicker-list\");\n if (!_hideKeyboard(self)) {\n self.focus();\n }\n } else {\n return true;\n }\n }\n\n switch (e.keyCode) {\n case 13: // return\n if (_selectValue(self)) {\n _formatValue.call(self.get(0), { type: \"change\" });\n methods.hide.apply(this);\n }\n\n e.preventDefault();\n return false;\n\n case 38: // up\n var selected = list.find(\".ui-timepicker-selected\");\n\n if (!selected.length) {\n list.find(\"li\").each(function(i, obj) {\n if ($(obj).position().top > 0) {\n selected = $(obj);\n return false;\n }\n });\n selected.addClass(\"ui-timepicker-selected\");\n } else if (!selected.is(\":first-child\")) {\n selected.removeClass(\"ui-timepicker-selected\");\n selected.prev().addClass(\"ui-timepicker-selected\");\n\n if (selected.prev().position().top < selected.outerHeight()) {\n list.scrollTop(list.scrollTop() - selected.outerHeight());\n }\n }\n\n return false;\n\n case 40: // down\n selected = list.find(\".ui-timepicker-selected\");\n\n if (selected.length === 0) {\n list.find(\"li\").each(function(i, obj) {\n if ($(obj).position().top > 0) {\n selected = $(obj);\n return false;\n }\n });\n\n selected.addClass(\"ui-timepicker-selected\");\n } else if (!selected.is(\":last-child\")) {\n selected.removeClass(\"ui-timepicker-selected\");\n selected.next().addClass(\"ui-timepicker-selected\");\n\n if (\n selected.next().position().top + 2 * selected.outerHeight() >\n list.outerHeight()\n ) {\n list.scrollTop(list.scrollTop() + selected.outerHeight());\n }\n }\n\n return false;\n\n case 27: // escape\n list.find(\"li\").removeClass(\"ui-timepicker-selected\");\n methods.hide();\n break;\n\n case 9: //tab\n methods.hide();\n break;\n\n default:\n return true;\n }\n }\n\n /*\n\t*\tTime typeahead\n\t*/\n function _keyuphandler(e) {\n var self = $(this);\n var list = self.data(\"timepicker-list\");\n var settings = self.data(\"timepicker-settings\");\n\n if (!list || !_isVisible(list) || settings.disableTextInput) {\n return true;\n }\n\n if (e.type === \"paste\" || e.type === \"cut\") {\n setTimeout(function() {\n if (settings.typeaheadHighlight) {\n _setSelected(self, list);\n } else {\n list.hide();\n }\n }, 0);\n return;\n }\n\n switch (e.keyCode) {\n case 96: // numpad numerals\n case 97:\n case 98:\n case 99:\n case 100:\n case 101:\n case 102:\n case 103:\n case 104:\n case 105:\n case 48: // numerals\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n case 65: // a\n case 77: // m\n case 80: // p\n case 186: // colon\n case 8: // backspace\n case 46: // delete\n if (settings.typeaheadHighlight) {\n _setSelected(self, list);\n } else {\n list.hide();\n }\n break;\n }\n }\n\n function _selectValue(self) {\n var settings = self.data(\"timepicker-settings\");\n var list = self.data(\"timepicker-list\");\n var timeValue = null;\n\n var cursor = list.find(\".ui-timepicker-selected\");\n\n if (cursor.hasClass(\"ui-timepicker-disabled\")) {\n return false;\n }\n\n if (cursor.length) {\n // selected value found\n timeValue = cursor.data(\"time\");\n }\n\n if (timeValue !== null) {\n if (typeof timeValue != \"string\") {\n timeValue = _int2time(timeValue, settings);\n }\n\n _setTimeValue(self, timeValue, \"select\");\n }\n\n return true;\n }\n\n function _int2duration(seconds, step) {\n seconds = Math.abs(seconds);\n var minutes = Math.round(seconds / 60),\n duration = [],\n hours,\n mins;\n\n if (minutes < 60) {\n // Only show (x mins) under 1 hour\n duration = [minutes, _lang.mins];\n } else {\n hours = Math.floor(minutes / 60);\n mins = minutes % 60;\n\n // Show decimal notation (eg: 1.5 hrs) for 30 minute steps\n if (step == 30 && mins == 30) {\n hours += _lang.decimal + 5;\n }\n\n duration.push(hours);\n duration.push(hours == 1 ? _lang.hr : _lang.hrs);\n\n // Show remainder minutes notation (eg: 1 hr 15 mins) for non-30 minute steps\n // and only if there are remainder minutes to show\n if (step != 30 && mins) {\n duration.push(mins);\n duration.push(_lang.mins);\n }\n }\n\n return duration.join(\" \");\n }\n\n function _int2time(timeInt, settings) {\n if (typeof timeInt != \"number\") {\n return null;\n }\n\n var seconds = parseInt(timeInt % 60),\n minutes = parseInt((timeInt / 60) % 60),\n hours = parseInt((timeInt / (60 * 60)) % 24);\n\n var time = new Date(1970, 0, 2, hours, minutes, seconds, 0);\n\n if (isNaN(time.getTime())) {\n return null;\n }\n\n if ($.type(settings.timeFormat) === \"function\") {\n return settings.timeFormat(time);\n }\n\n var output = \"\";\n var hour, code;\n for (var i = 0; i < settings.timeFormat.length; i++) {\n code = settings.timeFormat.charAt(i);\n switch (code) {\n case \"a\":\n output += time.getHours() > 11 ? _lang.pm : _lang.am;\n break;\n\n case \"A\":\n output += time.getHours() > 11 ? _lang.PM : _lang.AM;\n break;\n\n case \"g\":\n hour = time.getHours() % 12;\n output += hour === 0 ? \"12\" : hour;\n break;\n\n case \"G\":\n hour = time.getHours();\n if (timeInt === _ONE_DAY) hour = settings.show2400 ? 24 : 0;\n output += hour;\n break;\n\n case \"h\":\n hour = time.getHours() % 12;\n\n if (hour !== 0 && hour < 10) {\n hour = \"0\" + hour;\n }\n\n output += hour === 0 ? \"12\" : hour;\n break;\n\n case \"H\":\n hour = time.getHours();\n if (timeInt === _ONE_DAY) hour = settings.show2400 ? 24 : 0;\n output += hour > 9 ? hour : \"0\" + hour;\n break;\n\n case \"i\":\n var minutes = time.getMinutes();\n output += minutes > 9 ? minutes : \"0\" + minutes;\n break;\n\n case \"s\":\n seconds = time.getSeconds();\n output += seconds > 9 ? seconds : \"0\" + seconds;\n break;\n\n case \"\\\\\":\n // escape character; add the next character and skip ahead\n i++;\n output += settings.timeFormat.charAt(i);\n break;\n\n default:\n output += code;\n }\n }\n\n return output;\n }\n\n function _time2int(timeString, settings) {\n if (timeString === \"\" || timeString === null) return null;\n if (typeof timeString == \"object\") {\n return (\n timeString.getHours() * 3600 +\n timeString.getMinutes() * 60 +\n timeString.getSeconds()\n );\n }\n if (typeof timeString != \"string\") {\n return timeString;\n }\n\n timeString = timeString.toLowerCase().replace(/[\\s\\.]/g, \"\");\n\n // if the last character is an \"a\" or \"p\", add the \"m\"\n if (timeString.slice(-1) == \"a\" || timeString.slice(-1) == \"p\") {\n timeString += \"m\";\n }\n\n var ampmRegex =\n \"(\" +\n _lang.am.replace(\".\", \"\") +\n \"|\" +\n _lang.pm.replace(\".\", \"\") +\n \"|\" +\n _lang.AM.replace(\".\", \"\") +\n \"|\" +\n _lang.PM.replace(\".\", \"\") +\n \")?\";\n\n // try to parse time input\n var pattern = new RegExp(\n \"^\" +\n ampmRegex +\n \"([0-9]?[0-9])\\\\W?([0-5][0-9])?\\\\W?([0-5][0-9])?\" +\n ampmRegex +\n \"$\"\n );\n\n var time = timeString.match(pattern);\n if (!time) {\n return null;\n }\n\n var hour = parseInt(time[2] * 1, 10);\n var ampm = time[1] || time[5];\n var hours = hour;\n var minutes = time[3] * 1 || 0;\n var seconds = time[4] * 1 || 0;\n\n if (hour <= 12 && ampm) {\n var isPm = ampm == _lang.pm || ampm == _lang.PM;\n\n if (hour == 12) {\n hours = isPm ? 12 : 0;\n } else {\n hours = hour + (isPm ? 12 : 0);\n }\n } else if (settings) {\n var t = hour * 3600 + minutes * 60 + seconds;\n if (t >= _ONE_DAY + (settings.show2400 ? 1 : 0)) {\n if (settings.wrapHours === false) {\n return null;\n }\n\n hours = hour % 24;\n }\n }\n\n var timeInt = hours * 3600 + minutes * 60 + seconds;\n\n // if no am/pm provided, intelligently guess based on the scrollDefault\n if (\n hour < 12 &&\n !ampm &&\n settings &&\n settings._twelveHourTime &&\n settings.scrollDefault\n ) {\n var delta = timeInt - settings.scrollDefault();\n if (delta < 0 && delta >= _ONE_DAY / -2) {\n timeInt = (timeInt + _ONE_DAY / 2) % _ONE_DAY;\n }\n }\n\n return timeInt;\n }\n\n function _pad2(n) {\n return (\"0\" + n).slice(-2);\n }\n\n function _moduloSeconds(seconds, settings) {\n if (seconds == _ONE_DAY && settings.show2400) {\n return seconds;\n }\n\n return seconds % _ONE_DAY;\n }\n\n // Plugin entry\n $.fn.timepicker = function(method) {\n if (!this.length) return this;\n if (methods[method]) {\n // check if this element is a timepicker\n if (!this.hasClass(\"ui-timepicker-input\")) {\n return this;\n }\n return methods[method].apply(\n this,\n Array.prototype.slice.call(arguments, 1)\n );\n } else if (typeof method === \"object\" || !method) {\n return methods.init.apply(this, arguments);\n } else {\n $.error(\"Method \" + method + \" does not exist on jQuery.timepicker\");\n }\n };\n});\n"]}