mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-08 12:12:48 +01:00
1 line
54 KiB
Plaintext
1 line
54 KiB
Plaintext
{"version":3,"sources":["jquery.timepicker.js"],"names":["factory","exports","module","require","define","amd","jQuery","$","_isVisible","elem","el","offsetWidth","offsetHeight","_parseSettings","settings","minTime","_time2int","maxTime","durationTime","scrollDefault","roundingFunction","Date","val","type","timeFormat","match","_twelveHourTime","showOnFocus","showOn","indexOf","splice","disableTimeRanges","length","i","sort","a","b","Math","min","max","_render","self","data","list","remove","useSelect","class","wrapped_list","tabindex","css","display","position","append","noneOption","isArray","parseInt","noneElement","_generateNoneElement","className","addClass","showDuration","step","durStart","start","end","_ONE_DAY","show2400","dr","drCur","drLen","stepFunc","j","timeInt","timeString","_int2time","row","value","text","_moduloSeconds","durationString","_int2duration","duration","prop","_roundAndFormatTime","on","this","trigger","_setTimeValue","hide","after","appendTo","_setSelected","e","off","methods","show","_hideKeyboard","focus","find","removeClass","_selectValue","optionValue","label","error","String","seconds","_closeHandler","target","window","closest","document","unbind","navigator","msMaxTouchPoints","disableTouchKeyboard","_findRow","out","each","obj","jObj","timeValue","_getTimeValue","selected","topDelta","offset","top","outerHeight","scrollTop","forceRoundTime","_formatValue","origin","is","rangeError","roundSeconds","prettyTime","source","_disableTextInputHandler","keyCode","preventDefault","_keydownhandler","call","get","apply","prev","next","_keyuphandler","disableTextInput","setTimeout","typeaheadHighlight","cursor","hasClass","abs","hours","mins","minutes","round","_lang","floor","decimal","push","hr","hrs","join","time","isNaN","getTime","hour","code","output","charAt","getHours","pm","am","PM","AM","getMinutes","getSeconds","toLowerCase","replace","slice","ampmRegex","pattern","RegExp","ampm","isPm","t","wrapHours","delta","_DEFAULTS","closeOnWindowScroll","orientation","selectOnBlur","stopScrollPropagation","init","options","attributeOptions","key","extend","lang","blur","listOffset","left","outerWidth","verticalOrientation","height","topOffset","currentScroll","originalEvent","deltaY","option","getSecondsFromMidnight","relative_date","time_string","setHours","setMinutes","setSeconds","setMilliseconds","isVisible","setTime","removeAttr","removeData","fn","timepicker","method","Array","prototype","arguments"],"mappings":"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","file":"jquery.timepicker.js","sourcesContent":["/*!\n * jquery-timepicker v1.11.12 - 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\n(function (factory) {\n if (typeof exports === \"object\" && exports &&\n typeof module === \"object\" && module && module.exports === exports) {\n // Browserify. Attach to jQuery module.\n factory(require(\"jquery\"));\n } else if (typeof define === 'function' && define.amd) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine(['jquery'], factory);\n\t} else {\n\t\t// Browser globals\n\t\tfactory(jQuery);\n\t}\n}(function ($) {\n\tvar _ONE_DAY = 86400;\n\tvar _lang = {\n\t\tam: 'am',\n\t\tpm: 'pm',\n\t\tAM: 'AM',\n\t\tPM: 'PM',\n\t\tdecimal: '.',\n\t\tmins: 'mins',\n\t\thr: 'hr',\n\t\thrs: 'hrs'\n\t};\n\n\tvar _DEFAULTS = {\n\t\tappendTo: 'body',\n\t\tclassName: null,\n\t\tcloseOnWindowScroll: false,\n\t\tdisableTextInput: false,\n\t\tdisableTimeRanges: [],\n\t\tdisableTouchKeyboard: false,\n\t\tdurationTime: null,\n\t\tforceRoundTime: false,\n\t\tmaxTime: null,\n\t\tminTime: null,\n\t\tnoneOption: false,\n\t\torientation: 'l',\n\t\troundingFunction: function(seconds, settings) {\n\t\t\tif (seconds === null) {\n\t\t\t\treturn null;\n\t\t\t} else if (typeof settings.step !== \"number\") {\n\t\t\t\t// TODO: nearest fit irregular steps\n\t\t\t\treturn seconds;\n\t\t\t} else {\n\t\t\t\tvar offset = seconds % (settings.step*60); // step is in minutes\n\n\t\t\t\tvar 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\t\t\t\tif (offset >= settings.step*30) {\n\t\t\t\t\t// if offset is larger than a half step, round up\n\t\t\t\t\tseconds += (settings.step*60) - offset;\n\t\t\t\t} else {\n\t\t\t\t\t// round down\n\t\t\t\t\tseconds -= offset;\n\t\t\t\t}\n\n\t\t\t\treturn _moduloSeconds(seconds, settings);\n\t\t\t}\n\t\t},\n\t\tscrollDefault: null,\n\t\tselectOnBlur: false,\n\t\tshow2400: false,\n\t\tshowDuration: false,\n\t\tshowOn: ['click', 'focus'],\n\t\tshowOnFocus: true,\n\t\tstep: 30,\n\t\tstopScrollPropagation: false,\n\t\ttimeFormat: 'g:ia',\n\t\ttypeaheadHighlight: true,\n\t\tuseSelect: false,\n\t\twrapHours: true\n\t};\n\n\tvar methods = {\n\t\tinit: function(options)\n\t\t{\n\t\t\treturn this.each(function()\n\t\t\t{\n\t\t\t\tvar self = $(this);\n\n\t\t\t\t// pick up settings from data attributes\n\t\t\t\tvar attributeOptions = [];\n\t\t\t\tfor (var key in _DEFAULTS) {\n\t\t\t\t\tif (self.data(key)) {\n\t\t\t\t\t\tattributeOptions[key] = self.data(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar settings = $.extend({}, _DEFAULTS, options, attributeOptions);\n\n\t\t\t\tif (settings.lang) {\n\t\t\t\t\t_lang = $.extend(_lang, settings.lang);\n\t\t\t\t}\n\n\t\t\t\tsettings = _parseSettings(settings);\n\t\t\t\tself.data('timepicker-settings', settings);\n\t\t\t\tself.addClass('ui-timepicker-input');\n\n\t\t\t\tif (settings.useSelect) {\n\t\t\t\t\t_render(self);\n\t\t\t\t} else {\n\t\t\t\t\tself.prop('autocomplete', 'off');\n\t\t\t\t\tif (settings.showOn) {\n\t\t\t\t\t\tfor (var i in settings.showOn) {\n\t\t\t\t\t\t\tself.on(settings.showOn[i]+'.timepicker', methods.show);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tself.on('change.timepicker', _formatValue);\n\t\t\t\t\tself.on('keydown.timepicker', _keydownhandler);\n\t\t\t\t\tself.on('keyup.timepicker', _keyuphandler);\n\t\t\t\t\tif (settings.disableTextInput) {\n\t\t\t\t\t\tself.on('keydown.timepicker', _disableTextInputHandler);\n\t\t\t\t\t}\n \t\t\tself.on('cut.timepicker', _keyuphandler);\n \t\t\tself.on('paste.timepicker', _keyuphandler);\n\n\t\t\t\t\t_formatValue.call(self.get(0), null, 'initial');\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tshow: function(e)\n\t\t{\n\t\t\tvar self = $(this);\n\t\t\tvar settings = self.data('timepicker-settings');\n\n\t\t\tif (e) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\n\t\t\tif (settings.useSelect) {\n\t\t\t\tself.data('timepicker-list').focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_hideKeyboard(self)) {\n\t\t\t\t// block the keyboard on mobile devices\n\t\t\t\tself.blur();\n\t\t\t}\n\n\t\t\tvar list = self.data('timepicker-list');\n\n\t\t\t// check if input is readonly\n\t\t\tif (self.prop('readonly')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// check if list needs to be rendered\n\t\t\tif (!list || list.length === 0 || typeof settings.durationTime === 'function') {\n\t\t\t\t_render(self);\n\t\t\t\tlist = self.data('timepicker-list');\n\t\t\t}\n\n\t\t\tif (_isVisible(list)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tself.data('ui-timepicker-value', self.val());\n\t\t\t_setSelected(self, list);\n\n\t\t\t// make sure other pickers are hidden\n\t\t\tmethods.hide();\n\n\t\t\t// position the dropdown relative to the input\n\t\t\tlist.show();\n\t\t\tvar listOffset = {};\n\n\t\t\tif (settings.orientation.match(/r/)) {\n\t\t\t\t// right-align the dropdown\n\t\t\t\tlistOffset.left = self.offset().left + self.outerWidth() - list.outerWidth() + parseInt(list.css('marginLeft').replace('px', ''), 10);\n\t\t\t} else {\n\t\t\t\t// left-align the dropdown\n\t\t\t\tlistOffset.left = self.offset().left + parseInt(list.css('marginLeft').replace('px', ''), 10);\n\t\t\t}\n\n\t\t\tvar verticalOrientation;\n\t\t\tif (settings.orientation.match(/t/)) {\n\t\t\t\tverticalOrientation = 't';\n\t\t\t} else if (settings.orientation.match(/b/)) {\n\t\t\t\tverticalOrientation = 'b';\n\t\t\t} else if ((self.offset().top + self.outerHeight(true) + list.outerHeight()) > $(window).height() + $(window).scrollTop()) {\n\t\t\t\tverticalOrientation = 't';\n\t\t\t} else {\n\t\t\t\tverticalOrientation = 'b';\n\t\t\t}\n\n\t\t\tif (verticalOrientation == 't') {\n\t\t\t\t// position the dropdown on top\n\t\t\t\tlist.addClass('ui-timepicker-positioned-top');\n\t\t\t\tlistOffset.top = self.offset().top - list.outerHeight() + parseInt(list.css('marginTop').replace('px', ''), 10);\n\t\t\t} else {\n\t\t\t\t// put it under the input\n\t\t\t\tlist.removeClass('ui-timepicker-positioned-top');\n\t\t\t\tlistOffset.top = self.offset().top + self.outerHeight() + parseInt(list.css('marginTop').replace('px', ''), 10);\n\t\t\t}\n\n\t\t\tlist.offset(listOffset);\n\n\t\t\t// position scrolling\n\t\t\tvar selected = list.find('.ui-timepicker-selected');\n\n\t\t\tif (!selected.length) {\n\t\t\t\tvar timeInt = _time2int(_getTimeValue(self));\n\t\t\t\tif (timeInt !== null) {\n\t\t\t\t\tselected = _findRow(self, list, timeInt);\n\t\t\t\t} else if (settings.scrollDefault) {\n\t\t\t\t\tselected = _findRow(self, list, settings.scrollDefault());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// if not found or disabled, intelligently find first selectable element\n\t\t\tif (!selected.length || selected.hasClass('ui-timepicker-disabled')) {\n\t\t\t\tselected = list.find('li:not(.ui-timepicker-disabled):first');\n\t\t\t}\n\n\t\t\tif (selected && selected.length) {\n\t\t\t\tvar topOffset = list.scrollTop() + selected.position().top - selected.outerHeight();\n\t\t\t\tlist.scrollTop(topOffset);\n\t\t\t} else {\n\t\t\t\tlist.scrollTop(0);\n\t\t\t}\n\n\t\t\t// prevent scroll propagation\n\t\t\tif(settings.stopScrollPropagation) {\n\t\t\t\t$(document).on('wheel.ui-timepicker', '.ui-timepicker-wrapper', function(e){\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tvar currentScroll = $(this).scrollTop();\n\t\t\t\t\t$(this).scrollTop(currentScroll + e.originalEvent.deltaY);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// attach close handlers\n\t\t\t$(document).on('touchstart.ui-timepicker mousedown.ui-timepicker', _closeHandler);\n\t\t\t$(window).on('resize.ui-timepicker', _closeHandler);\n\t\t\tif (settings.closeOnWindowScroll) {\n\t\t\t\t$(document).on('scroll.ui-timepicker', _closeHandler);\n\t\t\t}\n\n\t\t\tself.trigger('showTimepicker');\n\n\t\t\treturn this;\n\t\t},\n\n\t\thide: function(e)\n\t\t{\n\t\t\tvar self = $(this);\n\t\t\tvar settings = self.data('timepicker-settings');\n\n\t\t\tif (settings && settings.useSelect) {\n\t\t\t\tself.blur();\n\t\t\t}\n\n\t\t\t$('.ui-timepicker-wrapper').each(function() {\n\t\t\t\tvar list = $(this);\n\t\t\t\tif (!_isVisible(list)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar self = list.data('timepicker-input');\n\t\t\t\tvar settings = self.data('timepicker-settings');\n\n\t\t\t\tif (settings && settings.selectOnBlur) {\n\t\t\t\t\t_selectValue(self);\n\t\t\t\t}\n\n\t\t\t\tlist.hide();\n\t\t\t\tself.trigger('hideTimepicker');\n\t\t\t});\n\n\t\t\treturn this;\n\t\t},\n\n\t\toption: function(key, value)\n\t\t{\n\t\t\tif (typeof key == 'string' && typeof value == 'undefined') {\n\t\t\t\treturn $(this).data('timepicker-settings')[key];\n\t\t\t}\n\n\t\t\treturn this.each(function(){\n\t\t\t\tvar self = $(this);\n\t\t\t\tvar settings = self.data('timepicker-settings');\n\t\t\t\tvar list = self.data('timepicker-list');\n\n\t\t\t\tif (typeof key == 'object') {\n\t\t\t\t\tsettings = $.extend(settings, key);\n\t\t\t\t} else if (typeof key == 'string') {\n\t\t\t\t\tsettings[key] = value;\n\t\t\t\t}\n\n\t\t\t\tsettings = _parseSettings(settings);\n\n\t\t\t\tself.data('timepicker-settings', settings);\n\n\t\t\t\t_formatValue.call(self.get(0), {'type':'change'}, 'initial');\n\n\t\t\t\tif (list) {\n\t\t\t\t\tlist.remove();\n\t\t\t\t\tself.data('timepicker-list', false);\n\t\t\t\t}\n\n\t\t\t\tif (settings.useSelect) {\n\t\t\t\t\t_render(self);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tgetSecondsFromMidnight: function()\n\t\t{\n\t\t\treturn _time2int(_getTimeValue(this));\n\t\t},\n\n\t\tgetTime: function(relative_date)\n\t\t{\n\t\t\tvar self = this;\n\n\t\t\tvar time_string = _getTimeValue(self);\n\t\t\tif (!time_string) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar offset = _time2int(time_string);\n\t\t\tif (offset === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif (!relative_date) {\n\t\t\t\trelative_date = new Date();\n\t\t\t}\n\n\t\t\t// construct a Date from relative date, and offset's time\n\t\t\tvar time = new Date(relative_date);\n\t\t\ttime.setHours(offset / 3600);\n\t\t\ttime.setMinutes(offset % 3600 / 60);\n\t\t\ttime.setSeconds(offset % 60);\n\t\t\ttime.setMilliseconds(0);\n\n\t\t\treturn time;\n\t\t},\n\n\t\tisVisible: function() {\n\t\t\tvar self = this;\n\t\t\tvar list = self.data('timepicker-list');\n\t\t\treturn !!(list && _isVisible(list));\n\t\t},\n\n\t\tsetTime: function(value)\n\t\t{\n\t\t\tvar self = this;\n\t\t\tvar settings = self.data('timepicker-settings');\n\n\t\t\tif (settings.forceRoundTime) {\n\t\t\t\tvar prettyTime = _roundAndFormatTime(_time2int(value), settings)\n\t\t\t} else {\n\t\t\t\tvar prettyTime = _int2time(_time2int(value), settings);\n\t\t\t}\n\n\t\t\tif (value && prettyTime === null && settings.noneOption) {\n\t\t\t\tprettyTime = value;\n\t\t\t}\n\n\t\t\t_setTimeValue(self, prettyTime, 'initial');\n\t\t\t_formatValue.call(self.get(0), {'type':'change'}, 'initial');\n\n\t\t\tif (self.data('timepicker-list')) {\n\t\t\t\t_setSelected(self, self.data('timepicker-list'));\n\t\t\t}\n\n\t\t\treturn this;\n\t\t},\n\n\t\tremove: function()\n\t\t{\n\t\t\tvar self = this;\n\n\t\t\t// check if this element is a timepicker\n\t\t\tif (!self.hasClass('ui-timepicker-input')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar settings = self.data('timepicker-settings');\n\t\t\tself.removeAttr('autocomplete', 'off');\n\t\t\tself.removeClass('ui-timepicker-input');\n\t\t\tself.removeData('timepicker-settings');\n\t\t\tself.off('.timepicker');\n\n\t\t\t// timepicker-list won't be present unless the user has interacted with this timepicker\n\t\t\tif (self.data('timepicker-list')) {\n\t\t\t\tself.data('timepicker-list').remove();\n\t\t\t}\n\n\t\t\tif (settings.useSelect) {\n\t\t\t\tself.show();\n\t\t\t}\n\n\t\t\tself.removeData('timepicker-list');\n\n\t\t\treturn this;\n\t\t}\n\t};\n\n\t// private methods\n\n\tfunction _isVisible(elem)\n\t{\n\t\tvar el = elem[0];\n\t\treturn el.offsetWidth > 0 && el.offsetHeight > 0;\n\t}\n\n\tfunction _parseSettings(settings)\n\t{\n\t\tif (settings.minTime) {\n\t\t\tsettings.minTime = _time2int(settings.minTime);\n\t\t}\n\n\t\tif (settings.maxTime) {\n\t\t\tsettings.maxTime = _time2int(settings.maxTime);\n\t\t}\n\n\t\tif (settings.durationTime && typeof settings.durationTime !== 'function') {\n\t\t\tsettings.durationTime = _time2int(settings.durationTime);\n\t\t}\n\n\t\tif (settings.scrollDefault == 'now') {\n\t\t\tsettings.scrollDefault = function() {\n\t\t\t\treturn settings.roundingFunction(_time2int(new Date()), settings);\n\t\t\t}\n\t\t} else if (settings.scrollDefault && typeof settings.scrollDefault != 'function') {\n\t\t\tvar val = settings.scrollDefault;\n\t\t\tsettings.scrollDefault = function() {\n\t\t\t\treturn settings.roundingFunction(_time2int(val), settings);\n\t\t\t}\n\t\t} else if (settings.minTime) {\n\t\t\tsettings.scrollDefault = function() {\n\t\t\t\treturn settings.roundingFunction(settings.minTime, settings);\n\t\t\t}\n\t\t}\n\n\t\tif ($.type(settings.timeFormat) === \"string\" && settings.timeFormat.match(/[gh]/)) {\n\t\t\tsettings._twelveHourTime = true;\n\t\t}\n\n\t\tif (settings.showOnFocus === false && settings.showOn.indexOf('focus') != -1) {\n\t\t\tsettings.showOn.splice(settings.showOn.indexOf('focus'), 1);\n\t\t}\n\n\t\tif (settings.disableTimeRanges.length > 0) {\n\t\t\t// convert string times to integers\n\t\t\tfor (var i in settings.disableTimeRanges) {\n\t\t\t\tsettings.disableTimeRanges[i] = [\n\t\t\t\t\t_time2int(settings.disableTimeRanges[i][0]),\n\t\t\t\t\t_time2int(settings.disableTimeRanges[i][1])\n\t\t\t\t];\n\t\t\t}\n\n\t\t\t// sort by starting time\n\t\t\tsettings.disableTimeRanges = settings.disableTimeRanges.sort(function(a, b){\n\t\t\t\treturn a[0] - b[0];\n\t\t\t});\n\n\t\t\t// merge any overlapping ranges\n\t\t\tfor (var i = settings.disableTimeRanges.length-1; i > 0; i--) {\n\t\t\t\tif (settings.disableTimeRanges[i][0] <= settings.disableTimeRanges[i-1][1]) {\n\t\t\t\t\tsettings.disableTimeRanges[i-1] = [\n\t\t\t\t\t\tMath.min(settings.disableTimeRanges[i][0], settings.disableTimeRanges[i-1][0]),\n\t\t\t\t\t\tMath.max(settings.disableTimeRanges[i][1], settings.disableTimeRanges[i-1][1])\n\t\t\t\t\t];\n\t\t\t\t\tsettings.disableTimeRanges.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn settings;\n\t}\n\n\tfunction _render(self)\n\t{\n\t\tvar settings = self.data('timepicker-settings');\n\t\tvar list = self.data('timepicker-list');\n\n\t\tif (list && list.length) {\n\t\t\tlist.remove();\n\t\t\tself.data('timepicker-list', false);\n\t\t}\n\n\t\tif (settings.useSelect) {\n\t\t\tlist = $('<select />', { 'class': 'ui-timepicker-select' });\n\t\t\tvar wrapped_list = list;\n\t\t} else {\n\t\t\tlist = $('<ul />', { 'class': 'ui-timepicker-list' });\n\n\t\t\tvar wrapped_list = $('<div />', { 'class': 'ui-timepicker-wrapper', 'tabindex': -1 });\n\t\t\twrapped_list.css({'display':'none', 'position': 'absolute' }).append(list);\n\t\t}\n\n\t\tif (settings.noneOption) {\n\t\t\tif (settings.noneOption === true) {\n\t\t\t\tsettings.noneOption = (settings.useSelect) ? 'Time...' : 'None';\n\t\t\t}\n\n\t\t\tif ($.isArray(settings.noneOption)) {\n\t\t\t\tfor (var i in settings.noneOption) {\n\t\t\t\t\tif (parseInt(i, 10) == i){\n\t\t\t\t\t\tvar noneElement = _generateNoneElement(settings.noneOption[i], settings.useSelect);\n\t\t\t\t\t\tlist.append(noneElement);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar noneElement = _generateNoneElement(settings.noneOption, settings.useSelect);\n\t\t\t\tlist.append(noneElement);\n\t\t\t}\n\t\t}\n\n\t\tif (settings.className) {\n\t\t\twrapped_list.addClass(settings.className);\n\t\t}\n\n\t\tif ((settings.minTime !== null || settings.durationTime !== null) && settings.showDuration) {\n\t\t\tvar stepval = typeof settings.step == 'function' ? 'function' : settings.step;\n\t\t\twrapped_list.addClass('ui-timepicker-with-duration');\n\t\t\twrapped_list.addClass('ui-timepicker-step-'+settings.step);\n\t\t}\n\n\t\tvar durStart = settings.minTime;\n\t\tif (typeof settings.durationTime === 'function') {\n\t\t\tdurStart = _time2int(settings.durationTime());\n\t\t} else if (settings.durationTime !== null) {\n\t\t\tdurStart = settings.durationTime;\n\t\t}\n\t\tvar start = (settings.minTime !== null) ? settings.minTime : 0;\n\t\tvar end = (settings.maxTime !== null) ? settings.maxTime : (start + _ONE_DAY - 1);\n\n\t\tif (end < start) {\n\t\t\t// make sure the end time is greater than start time, otherwise there will be no list to show\n\t\t\tend += _ONE_DAY;\n\t\t}\n\n\t\tif (end === _ONE_DAY-1 && $.type(settings.timeFormat) === \"string\" && settings.show2400) {\n\t\t\t// show a 24:00 option when using military time\n\t\t\tend = _ONE_DAY;\n\t\t}\n\n\t\tvar dr = settings.disableTimeRanges;\n\t\tvar drCur = 0;\n\t\tvar drLen = dr.length;\n\n\t\tvar stepFunc = settings.step;\n\t\tif (typeof stepFunc != 'function') {\n\t\t\tstepFunc = function() {\n\t\t\t\treturn settings.step;\n\t\t\t}\n\t\t}\n\n\t\tfor (var i=start, j=0; i <= end; j++, i += stepFunc(j)*60) {\n\t\t\tvar timeInt = i;\n\t\t\tvar timeString = _int2time(timeInt, settings);\n\n\t\t\tif (settings.useSelect) {\n\t\t\t\tvar row = $('<option />', { 'value': timeString });\n\t\t\t\trow.text(timeString);\n\t\t\t} else {\n\t\t\t\tvar row = $('<li />');\n\t\t\t\trow.addClass((timeInt % _ONE_DAY) < (_ONE_DAY / 2) ? 'ui-timepicker-am' : 'ui-timepicker-pm');\n\t\t\t\trow.data('time', _moduloSeconds(timeInt, settings));\n\t\t\t\trow.text(timeString);\n\t\t\t}\n\n\t\t\tif ((settings.minTime !== null || settings.durationTime !== null) && settings.showDuration) {\n\t\t\t\tvar durationString = _int2duration(i - durStart, settings.step);\n\t\t\t\tif (settings.useSelect) {\n\t\t\t\t\trow.text(row.text()+' ('+durationString+')');\n\t\t\t\t} else {\n\t\t\t\t\tvar duration = $('<span />', { 'class': 'ui-timepicker-duration' });\n\t\t\t\t\tduration.text(' ('+durationString+')');\n\t\t\t\t\trow.append(duration);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (drCur < drLen) {\n\t\t\t\tif (timeInt >= dr[drCur][1]) {\n\t\t\t\t\tdrCur += 1;\n\t\t\t\t}\n\n\t\t\t\tif (dr[drCur] && timeInt >= dr[drCur][0] && timeInt < dr[drCur][1]) {\n\t\t\t\t\tif (settings.useSelect) {\n\t\t\t\t\t\trow.prop('disabled', true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\trow.addClass('ui-timepicker-disabled');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlist.append(row);\n\t\t}\n\n\t\twrapped_list.data('timepicker-input', self);\n\t\tself.data('timepicker-list', wrapped_list);\n\n\t\tif (settings.useSelect) {\n\t\t\tif (self.val()) {\n\t\t\t\tlist.val(_roundAndFormatTime(_time2int(self.val()), settings));\n\t\t\t}\n\n\t\t\tlist.on('focus', function(){\n\t\t\t\t$(this).data('timepicker-input').trigger('showTimepicker');\n\t\t\t});\n\t\t\tlist.on('blur', function(){\n\t\t\t\t$(this).data('timepicker-input').trigger('hideTimepicker');\n\t\t\t});\n\t\t\tlist.on('change', function(){\n\t\t\t\t_setTimeValue(self, $(this).val(), 'select');\n\t\t\t});\n\n\t\t\t_setTimeValue(self, list.val(), 'initial');\n\t\t\tself.hide().after(list);\n\t\t} else {\n\t\t\tvar appendTo = settings.appendTo;\n\t\t\tif (typeof appendTo === 'string') {\n\t\t\t\tappendTo = $(appendTo);\n\t\t\t} else if (typeof appendTo === 'function') {\n\t\t\t\tappendTo = appendTo(self);\n\t\t\t}\n\t\t\tappendTo.append(wrapped_list);\n\t\t\t_setSelected(self, list);\n\n\t\t\tlist.on('mousedown click', 'li', function(e) {\n\n\t\t\t\t// hack: temporarily disable the focus handler\n\t\t\t\t// to deal with the fact that IE fires 'focus'\n\t\t\t\t// events asynchronously\n\t\t\t\tself.off('focus.timepicker');\n\t\t\t\tself.on('focus.timepicker-ie-hack', function(){\n\t\t\t\t\tself.off('focus.timepicker-ie-hack');\n\t\t\t\t\tself.on('focus.timepicker', methods.show);\n\t\t\t\t});\n\n\t\t\t\tif (!_hideKeyboard(self)) {\n\t\t\t\t\tself[0].focus();\n\t\t\t\t}\n\n\t\t\t\t// make sure only the clicked row is selected\n\t\t\t\tlist.find('li').removeClass('ui-timepicker-selected');\n\t\t\t\t$(this).addClass('ui-timepicker-selected');\n\n\t\t\t\tif (_selectValue(self)) {\n\t\t\t\t\tself.trigger('hideTimepicker');\n\n\t\t\t\t\tlist.on('mouseup.timepicker click.timepicker', 'li', function(e) {\n\t\t\t\t\t\tlist.off('mouseup.timepicker click.timepicker');\n\t\t\t\t\t\twrapped_list.hide();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction _generateNoneElement(optionValue, useSelect)\n\t{\n\t\tvar label, className, value;\n\n\t\tif (typeof optionValue == 'object') {\n\t\t\tlabel = optionValue.label;\n\t\t\tclassName = optionValue.className;\n\t\t\tvalue = optionValue.value;\n\t\t} else if (typeof optionValue == 'string') {\n\t\t\tlabel = optionValue;\n\t\t} else {\n\t\t\t$.error('Invalid noneOption value');\n\t\t}\n\n\t\tif (useSelect) {\n\t\t\treturn $('<option />', {\n\t\t\t\t\t'value': value,\n\t\t\t\t\t'class': className,\n\t\t\t\t\t'text': label\n\t\t\t\t});\n\t\t} else {\n\t\t\treturn $('<li />', {\n\t\t\t\t\t'class': className,\n\t\t\t\t\t'text': label\n\t\t\t\t}).data('time', String(value));\n\t\t}\n\t}\n\n\tfunction _roundAndFormatTime(seconds, settings)\n\t{\n\t\tseconds = settings.roundingFunction(seconds, settings);\n\t\tif (seconds !== null) {\n\t\t\treturn _int2time(seconds, settings);\n\t\t}\n\t}\n\n\t// event handler to decide whether to close timepicker\n\tfunction _closeHandler(e)\n\t{\n\t\tif (e.target == window) {\n\t\t\t// mobile Chrome fires focus events against window for some reason\n\t\t\treturn;\n\t\t}\n\n\t\tvar target = $(e.target);\n\n\t\tif (target.closest('.ui-timepicker-input').length || target.closest('.ui-timepicker-wrapper').length) {\n\t\t\t// active timepicker was focused. ignore\n\t\t\treturn;\n\t\t}\n\n\t\tmethods.hide();\n\t\t$(document).unbind('.ui-timepicker');\n\t\t$(window).unbind('.ui-timepicker');\n\t}\n\n\tfunction _hideKeyboard(self)\n\t{\n\t\tvar settings = self.data('timepicker-settings');\n\t\treturn ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && settings.disableTouchKeyboard);\n\t}\n\n\tfunction _findRow(self, list, value)\n\t{\n\t\tif (!value && value !== 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar settings = self.data('timepicker-settings');\n\t\tvar out = false;\n\t\tvar value = settings.roundingFunction(value, settings);\n\n\t\t// loop through the menu items\n\t\tlist.find('li').each(function(i, obj) {\n\t\t\tvar jObj = $(obj);\n\t\t\tif (typeof jObj.data('time') != 'number') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (jObj.data('time') == value) {\n\t\t\t\tout = jObj;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\n\t\treturn out;\n\t}\n\n\tfunction _setSelected(self, list)\n\t{\n\t\tlist.find('li').removeClass('ui-timepicker-selected');\n\n\t\tvar settings = self.data('timepicker-settings');\n\t\tvar timeValue = _time2int(_getTimeValue(self), settings);\n\t\tif (timeValue === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar selected = _findRow(self, list, timeValue);\n\t\tif (selected) {\n\n\t\t\tvar topDelta = selected.offset().top - list.offset().top;\n\n\t\t\tif (topDelta + selected.outerHeight() > list.outerHeight() || topDelta < 0) {\n\t\t\t\tlist.scrollTop(list.scrollTop() + selected.position().top - selected.outerHeight());\n\t\t\t}\n\n\t\t\tif (settings.forceRoundTime || selected.data('time') === timeValue) {\n\t\t\t\tselected.addClass('ui-timepicker-selected');\n\t\t\t}\n\t\t}\n\t}\n\n\n\tfunction _formatValue(e, origin)\n\t{\n\t\tif (origin == 'timepicker') {\n\t\t\treturn;\n\t\t}\n\n\t\tvar self = $(this);\n\n\t\tif (this.value === '') {\n\t\t\t_setTimeValue(self, null, origin);\n\t\t\treturn;\n\t\t}\n\n\t\tif (self.is(':focus') && (!e || e.type != 'change')) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar settings = self.data('timepicker-settings');\n\t\tvar seconds = _time2int(this.value, settings);\n\n\t\tif (seconds === null) {\n\t\t\tself.trigger('timeFormatError');\n\t\t\treturn;\n\t\t}\n\n\t\tvar rangeError = false;\n\t\t// check that the time in within bounds\n\t\tif ((settings.minTime !== null && settings.maxTime !== null)\n\t\t\t&& (seconds < settings.minTime || seconds > settings.maxTime)) {\n\t\t\trangeError = true;\n\t\t}\n\n\t\t// check that time isn't within disabled time ranges\n\t\t$.each(settings.disableTimeRanges, function(){\n\t\t\tif (seconds >= this[0] && seconds < this[1]) {\n\t\t\t\trangeError = true;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\n\t\tif (settings.forceRoundTime) {\n\t\t\tvar roundSeconds = settings.roundingFunction(seconds, settings);\n\t\t\tif (roundSeconds != seconds) {\n\t\t\t\tseconds = roundSeconds;\n\t\t\t\torigin = null;\n\t\t\t}\n\t\t}\n\n\t\tvar prettyTime = _int2time(seconds, settings);\n\n\t\tif (rangeError) {\n\t\t\tif (_setTimeValue(self, prettyTime, 'error') || e && e.type == 'change') {\n\t\t\t\tself.trigger('timeRangeError');\n\t\t\t}\n\t\t} else {\n\t\t\t_setTimeValue(self, prettyTime, origin);\n\t\t}\n\t}\n\n\tfunction _getTimeValue(self)\n\t{\n\t\tif (self.is('input')) {\n\t\t\treturn self.val();\n\t\t} else {\n\t\t\t// use the element's data attributes to store values\n\t\t\treturn self.data('ui-timepicker-value');\n\t\t}\n\t}\n\n\tfunction _setTimeValue(self, value, source)\n\t{\n\t\tif (self.is('input')) {\n\t\t\tself.val(value);\n\n\t\t\tvar settings = self.data('timepicker-settings');\n\t\t\tif (settings.useSelect && source != 'select') {\n\t\t\t\tself.data('timepicker-list').val(_roundAndFormatTime(_time2int(value), settings));\n\t\t\t}\n\t\t}\n\n\t\tif (self.data('ui-timepicker-value') != value) {\n\t\t\tself.data('ui-timepicker-value', value);\n\t\t\tif (source == 'select') {\n\t\t\t\tself.trigger('selectTime').trigger('changeTime').trigger('change', 'timepicker');\n\t\t\t} else if (['error', 'initial'].indexOf(source) == -1) {\n\t\t\t\tself.trigger('changeTime');\n\t\t\t}\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\tif (['error', 'initial'].indexOf(source) == -1) {\n\t\t\t\tself.trigger('selectTime');\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/*\n\t* Filter freeform input\n\t*/\n\tfunction _disableTextInputHandler(e)\n\t{\n\t\tswitch (e.keyCode) {\n\t\t\tcase 13: // return\n\t\t\tcase 9: //tab\n\t\t\t\treturn;\n\n\t\t\tdefault:\n\t\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\t/*\n\t* Keyboard navigation via arrow keys\n\t*/\n\tfunction _keydownhandler(e)\n\t{\n\t\tvar self = $(this);\n\t\tvar list = self.data('timepicker-list');\n\n\t\tif (!list || !_isVisible(list)) {\n\t\t\tif (e.keyCode == 40) {\n\t\t\t\t// show the list!\n\t\t\t\tmethods.show.call(self.get(0));\n\t\t\t\tlist = self.data('timepicker-list');\n\t\t\t\tif (!_hideKeyboard(self)) {\n\t\t\t\t\tself.focus();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tswitch (e.keyCode) {\n\n\t\t\tcase 13: // return\n\t\t\t\tif (_selectValue(self)) {\n\t\t\t\t\t_formatValue.call(self.get(0), {'type':'change'});\n\t\t\t\t\tmethods.hide.apply(this);\n\t\t\t\t}\n\n\t\t\t\te.preventDefault();\n\t\t\t\treturn false;\n\n\t\t\tcase 38: // up\n\t\t\t\tvar selected = list.find('.ui-timepicker-selected');\n\n\t\t\t\tif (!selected.length) {\n\t\t\t\t\tlist.find('li').each(function(i, obj) {\n\t\t\t\t\t\tif ($(obj).position().top > 0) {\n\t\t\t\t\t\t\tselected = $(obj);\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tselected.addClass('ui-timepicker-selected');\n\n\t\t\t\t} else if (!selected.is(':first-child')) {\n\t\t\t\t\tselected.removeClass('ui-timepicker-selected');\n\t\t\t\t\tselected.prev().addClass('ui-timepicker-selected');\n\n\t\t\t\t\tif (selected.prev().position().top < selected.outerHeight()) {\n\t\t\t\t\t\tlist.scrollTop(list.scrollTop() - selected.outerHeight());\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\n\t\t\tcase 40: // down\n\t\t\t\tselected = list.find('.ui-timepicker-selected');\n\n\t\t\t\tif (selected.length === 0) {\n\t\t\t\t\tlist.find('li').each(function(i, obj) {\n\t\t\t\t\t\tif ($(obj).position().top > 0) {\n\t\t\t\t\t\t\tselected = $(obj);\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tselected.addClass('ui-timepicker-selected');\n\t\t\t\t} else if (!selected.is(':last-child')) {\n\t\t\t\t\tselected.removeClass('ui-timepicker-selected');\n\t\t\t\t\tselected.next().addClass('ui-timepicker-selected');\n\n\t\t\t\t\tif (selected.next().position().top + 2*selected.outerHeight() > list.outerHeight()) {\n\t\t\t\t\t\tlist.scrollTop(list.scrollTop() + selected.outerHeight());\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\n\t\t\tcase 27: // escape\n\t\t\t\tlist.find('li').removeClass('ui-timepicker-selected');\n\t\t\t\tmethods.hide();\n\t\t\t\tbreak;\n\n\t\t\tcase 9: //tab\n\t\t\t\tmethods.hide();\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\treturn true;\n\t\t}\n\t}\n\n\t/*\n\t*\tTime typeahead\n\t*/\n\tfunction _keyuphandler(e)\n\t{\n\t\tvar self = $(this);\n\t\tvar list = self.data('timepicker-list');\n\t\tvar settings = self.data('timepicker-settings');\n\n\t\tif (!list || !_isVisible(list) || settings.disableTextInput) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (e.type === 'paste' || e.type === 'cut') {\n\t\t \tsetTimeout(function () {\n\t\t\t\tif (settings.typeaheadHighlight) {\n\t\t\t \t\t_setSelected(self, list);\n\t\t\t\t} else {\n\t\t\t \t\tlist.hide();\n\t\t\t\t}\n\t\t \t}, 0);\n\t\t \treturn;\n\t\t}\n\n\t\tswitch (e.keyCode) {\n\n\t\t\tcase 96: // numpad numerals\n\t\t\tcase 97:\n\t\t\tcase 98:\n\t\t\tcase 99:\n\t\t\tcase 100:\n\t\t\tcase 101:\n\t\t\tcase 102:\n\t\t\tcase 103:\n\t\t\tcase 104:\n\t\t\tcase 105:\n\t\t\tcase 48: // numerals\n\t\t\tcase 49:\n\t\t\tcase 50:\n\t\t\tcase 51:\n\t\t\tcase 52:\n\t\t\tcase 53:\n\t\t\tcase 54:\n\t\t\tcase 55:\n\t\t\tcase 56:\n\t\t\tcase 57:\n\t\t\tcase 65: // a\n\t\t\tcase 77: // m\n\t\t\tcase 80: // p\n\t\t\tcase 186: // colon\n\t\t\tcase 8: // backspace\n\t\t\tcase 46: // delete\n\t\t\t\tif (settings.typeaheadHighlight) {\n\t\t\t\t\t_setSelected(self, list);\n\t\t\t\t} else {\n\t\t\t\t\tlist.hide();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tfunction _selectValue(self)\n\t{\n\t\tvar settings = self.data('timepicker-settings');\n\t\tvar list = self.data('timepicker-list');\n\t\tvar timeValue = null;\n\n\t\tvar cursor = list.find('.ui-timepicker-selected');\n\n\t\tif (cursor.hasClass('ui-timepicker-disabled')) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (cursor.length) {\n\t\t\t// selected value found\n\t\t\ttimeValue = cursor.data('time');\n\t\t}\n\n\t\tif (timeValue !== null) {\n\t\t\tif (typeof timeValue != 'string') {\n\t\t\t\ttimeValue = _int2time(timeValue, settings);\n\t\t\t}\n\n\t\t\t_setTimeValue(self, timeValue, 'select');\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tfunction _int2duration(seconds, step)\n\t{\n\t\tseconds = Math.abs(seconds);\n\t\tvar minutes = Math.round(seconds/60),\n\t\t\tduration = [],\n\t\t\thours, mins;\n\n\t\tif (minutes < 60) {\n\t\t\t// Only show (x mins) under 1 hour\n\t\t\tduration = [minutes, _lang.mins];\n\t\t} else {\n\t\t\thours = Math.floor(minutes/60);\n\t\t\tmins = minutes%60;\n\n\t\t\t// Show decimal notation (eg: 1.5 hrs) for 30 minute steps\n\t\t\tif (step == 30 && mins == 30) {\n\t\t\t\thours += _lang.decimal + 5;\n\t\t\t}\n\n\t\t\tduration.push(hours);\n\t\t\tduration.push(hours == 1 ? _lang.hr : _lang.hrs);\n\n\t\t\t// Show remainder minutes notation (eg: 1 hr 15 mins) for non-30 minute steps\n\t\t\t// and only if there are remainder minutes to show\n\t\t\tif (step != 30 && mins) {\n\t\t\t\tduration.push(mins);\n\t\t\t\tduration.push(_lang.mins);\n\t\t\t}\n\t\t}\n\n\t\treturn duration.join(' ');\n\t}\n\n\tfunction _int2time(timeInt, settings)\n\t{\n\t\tif (typeof timeInt != 'number') {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar seconds = parseInt(timeInt%60)\n\t\t\t, minutes = parseInt((timeInt/60)%60)\n\t\t\t, hours = parseInt((timeInt/(60*60))%24);\n\n\t\tvar time = new Date(1970, 0, 2, hours, minutes, seconds, 0);\n\n\t\tif (isNaN(time.getTime())) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ($.type(settings.timeFormat) === \"function\") {\n\t\t\treturn settings.timeFormat(time);\n\t\t}\n\n\t\tvar output = '';\n\t\tvar hour, code;\n\t\tfor (var i=0; i<settings.timeFormat.length; i++) {\n\n\t\t\tcode = settings.timeFormat.charAt(i);\n\t\t\tswitch (code) {\n\n\t\t\t\tcase 'a':\n\t\t\t\t\toutput += (time.getHours() > 11) ? _lang.pm : _lang.am;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'A':\n\t\t\t\t\toutput += (time.getHours() > 11) ? _lang.PM : _lang.AM;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'g':\n\t\t\t\t\thour = time.getHours() % 12;\n\t\t\t\t\toutput += (hour === 0) ? '12' : hour;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'G':\n\t\t\t\t\thour = time.getHours();\n\t\t\t\t\tif (timeInt === _ONE_DAY) hour = settings.show2400 ? 24 : 0;\n\t\t\t\t\toutput += hour;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'h':\n\t\t\t\t\thour = time.getHours() % 12;\n\n\t\t\t\t\tif (hour !== 0 && hour < 10) {\n\t\t\t\t\t\thour = '0'+hour;\n\t\t\t\t\t}\n\n\t\t\t\t\toutput += (hour === 0) ? '12' : hour;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'H':\n\t\t\t\t\thour = time.getHours();\n\t\t\t\t\tif (timeInt === _ONE_DAY) hour = settings.show2400 ? 24 : 0;\n\t\t\t\t\toutput += (hour > 9) ? hour : '0'+hour;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'i':\n\t\t\t\t\tvar minutes = time.getMinutes();\n\t\t\t\t\toutput += (minutes > 9) ? minutes : '0'+minutes;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 's':\n\t\t\t\t\tseconds = time.getSeconds();\n\t\t\t\t\toutput += (seconds > 9) ? seconds : '0'+seconds;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase '\\\\':\n\t\t\t\t\t// escape character; add the next character and skip ahead\n\t\t\t\t\ti++;\n\t\t\t\t\toutput += settings.timeFormat.charAt(i);\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\toutput += code;\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tfunction _time2int(timeString, settings)\n\t{\n\t\tif (timeString === '' || timeString === null) return null;\n\t\tif (typeof timeString == 'object') {\n\t\t\treturn timeString.getHours()*3600 + timeString.getMinutes()*60 + timeString.getSeconds();\n\t\t}\n\t\tif (typeof timeString != 'string') {\n\t\t\treturn timeString;\n\t\t}\n\n\t\ttimeString = timeString.toLowerCase().replace(/[\\s\\.]/g, '');\n\n\t\t// if the last character is an \"a\" or \"p\", add the \"m\"\n\t\tif (timeString.slice(-1) == 'a' || timeString.slice(-1) == 'p') {\n\t\t\ttimeString += 'm';\n\t\t}\n\n\t\tvar ampmRegex = '(' +\n\t\t\t_lang.am.replace('.', '')+'|' +\n\t\t\t_lang.pm.replace('.', '')+'|' +\n\t\t\t_lang.AM.replace('.', '')+'|' +\n\t\t\t_lang.PM.replace('.', '')+')?';\n\n\t\t// try to parse time input\n\t\tvar pattern = new RegExp('^'+ampmRegex+'([0-9]?[0-9])\\\\W?([0-5][0-9])?\\\\W?([0-5][0-9])?'+ampmRegex+'$');\n\n\t\tvar time = timeString.match(pattern);\n\t\tif (!time) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar hour = parseInt(time[2]*1, 10);\n\t\tvar ampm = time[1] || time[5];\n\t\tvar hours = hour;\n\t\tvar minutes = ( time[3]*1 || 0 );\n\t\tvar seconds = ( time[4]*1 || 0 );\n\n\t\tif (hour <= 12 && ampm) {\n\t\t\tvar isPm = (ampm == _lang.pm || ampm == _lang.PM);\n\n\t\t\tif (hour == 12) {\n\t\t\t\thours = isPm ? 12 : 0;\n\t\t\t} else {\n\t\t\t\thours = (hour + (isPm ? 12 : 0));\n\t\t\t}\n\t\t} else if (settings) {\n\t\t\tvar t = hour * 3600 + minutes * 60 + seconds;\n\t\t\tif (t >= _ONE_DAY + (settings.show2400 ? 1 : 0)) {\n\t\t\t\tif (settings.wrapHours === false) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\thours = hour % 24;\n\t\t\t}\n\t\t}\n\n\t\tvar timeInt = hours*3600 + minutes*60 + seconds;\n\n\t\t// if no am/pm provided, intelligently guess based on the scrollDefault\n\t\tif (hour < 12 && !ampm && settings && settings._twelveHourTime && settings.scrollDefault) {\n\t\t\tvar delta = timeInt - settings.scrollDefault();\n\t\t\tif (delta < 0 && delta >= _ONE_DAY / -2) {\n\t\t\t\ttimeInt = (timeInt + (_ONE_DAY / 2)) % _ONE_DAY;\n\t\t\t}\n\t\t}\n\n\t\treturn timeInt;\n\t}\n\n\tfunction _pad2(n) {\n\t\treturn (\"0\" + n).slice(-2);\n\t}\n\n\tfunction _moduloSeconds(seconds, settings) {\n\t\tif (seconds == _ONE_DAY && settings.show2400) {\n\t\t\treturn seconds;\n\t\t}\n\n\t\treturn seconds%_ONE_DAY;\n\t}\n\n\t// Plugin entry\n\t$.fn.timepicker = function(method)\n\t{\n\t\tif (!this.length) return this;\n\t\tif (methods[method]) {\n\t\t\t// check if this element is a timepicker\n\t\t\tif (!this.hasClass('ui-timepicker-input')) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\treturn methods[method].apply(this, Array.prototype.slice.call(arguments, 1));\n\t\t}\n\t\telse if(typeof method === \"object\" || !method) { return methods.init.apply(this, arguments); }\n\t\telse { $.error(\"Method \"+ method + \" does not exist on jQuery.timepicker\"); }\n\t};\n}));\n"]} |