MOON
Server: Apache
System: Linux res.emeff.ca 3.10.0-962.3.2.lve1.5.24.10.el7.x86_64 #1 SMP Wed Mar 20 07:36:02 EDT 2019 x86_64
User: accemeff (1004)
PHP: 7.0.33
Disabled: NONE
Upload Files
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":"CAMA,SAAUA,GAEa,iBAAZC,SACPA,SACkB,iBAAXC,QACPA,QACAA,OAAOD,UAAYA,QAGnBD,EAAQG,QAAQ,WACW,mBAAXC,QAAyBA,OAAOC,IAEhDD,OAAO,CAAC,UAAWJ,GAGnBA,EAAQM,QAfZ,CAiBG,SAASC,GACV,IAAIC,EAAW,MACXC,EAAQ,CACVC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,QAAS,IACTC,KAAM,OACNC,GAAI,KACJC,IAAK,OAGHC,EAAY,CACdC,SAAU,OACVC,UAAW,KACXC,qBAAqB,EACrBC,kBAAkB,EAClBC,kBAAmB,GACnBC,sBAAsB,EACtBC,aAAc,KACdC,gBAAgB,EAChBC,QAAS,KACTC,QAAS,KACTC,YAAY,EACZC,YAAa,IACbC,iBAAkB,SAASC,EAASC,GAClC,GAAgB,OAAZD,EACF,OAAO,KACF,GAA6B,iBAAlBC,EAASC,KAEzB,OAAOF,EAEP,IAAIG,EAASH,GAA2B,GAAhBC,EAASC,MAejC,OAVAC,IAHYF,EAASL,SAAW,IAGG,GAAhBK,EAASC,QAEE,GAAhBD,EAASC,KAErBF,GAA2B,GAAhBC,EAASC,KAAYC,EAGhCH,GAAWG,EAGNC,EAAeJ,EAASC,IAGnCI,cAAe,KACfC,cAAc,EACdC,UAAU,EACVC,cAAc,EACdC,OAAQ,CAAC,QAAS,SAClBC,aAAa,EACbR,KAAM,GACNS,uBAAuB,EACvBC,WAAY,OACZC,oBAAoB,EACpBC,WAAW,EACXC,WAAW,GAGTC,EAAU,CACZC,KAAM,SAASC,GACb,OAAOC,KAAKC,KAAK,WACf,IAAIC,EAAO9C,EAAE4C,MAGTG,EAAmB,GACvB,IAAK,IAAIC,KAAOrC,EACVmC,EAAKG,KAAKD,KACZD,EAAiBC,GAAOF,EAAKG,KAAKD,IAItC,IAAItB,EAAW1B,EAAEkD,OAAO,GAAIvC,EAAWgC,EAASI,GAUhD,GARIrB,EAASyB,OACXjD,EAAQF,EAAEkD,OAAOhD,EAAOwB,EAASyB,OAGnCzB,EAAW0B,EAAe1B,GAC1BoB,EAAKG,KAAK,sBAAuBvB,GACjCoB,EAAKO,SAAS,uBAEV3B,EAASa,UACXe,EAAQR,OACH,CAEL,GADAA,EAAKS,KAAK,eAAgB,OACtB7B,EAASQ,OACX,IAAK,IAAIsB,KAAK9B,EAASQ,OACrBY,EAAKW,GAAG/B,EAASQ,OAAOsB,GAAK,cAAef,EAAQiB,MAGxDZ,EAAKW,GAAG,oBAAqBE,GAC7Bb,EAAKW,GAAG,qBAAsBG,GAC9Bd,EAAKW,GAAG,mBAAoBI,GACxBnC,EAASX,kBACX+B,EAAKW,GAAG,qBAAsBK,GAEhChB,EAAKW,GAAG,iBAAkBI,GAC1Bf,EAAKW,GAAG,mBAAoBI,GAE5BF,EAAaI,KAAKjB,EAAKkB,IAAI,GAAI,KAAM,eAK3CN,KAAM,SAASO,GACb,IAAInB,EAAO9C,EAAE4C,MACTlB,EAAWoB,EAAKG,KAAK,uBAMzB,GAJIgB,GACFA,EAAEC,iBAGAxC,EAASa,UACXO,EAAKG,KAAK,mBAAmBkB,YAD/B,CAKIC,EAActB,IAEhBA,EAAKuB,OAGP,IAAIC,EAAOxB,EAAKG,KAAK,mBAGrB,IAAIH,EAAKS,KAAK,cAMXe,GACe,IAAhBA,EAAKC,QAC4B,mBAA1B7C,EAASR,eAEhBoC,EAAQR,GACRwB,EAAOxB,EAAKG,KAAK,qBAGfuB,EAAWF,IAAf,CAIAxB,EAAKG,KAAK,sBAAuBH,EAAK2B,OACtCC,EAAa5B,EAAMwB,GAGnB7B,EAAQkC,OAGRL,EAAKZ,OACL,IAgBIkB,EAhBAC,EAAa,GAEbnD,EAASH,YAAYuD,MAAM,KAE7BD,EAAWE,KACTjC,EAAKlB,SAASmD,KACdjC,EAAKkC,aACLV,EAAKU,aACLC,SAASX,EAAKY,IAAI,cAAcC,QAAQ,KAAM,IAAK,IAGrDN,EAAWE,KACTjC,EAAKlB,SAASmD,KACdE,SAASX,EAAKY,IAAI,cAAcC,QAAQ,KAAM,IAAK,IAKrDP,EADElD,EAASH,YAAYuD,MAAM,KACP,IACbpD,EAASH,YAAYuD,MAAM,KACd,IAEtBhC,EAAKlB,SAASwD,IAAMtC,EAAKuC,aAAY,GAAQf,EAAKe,cAClDrF,EAAEsF,QAAQC,SAAWvF,EAAEsF,QAAQE,YAET,IAEA,IAMtBX,EAAWO,IAHc,KAAvBR,GAEFN,EAAKjB,SAAS,gCAEZP,EAAKlB,SAASwD,IACdd,EAAKe,cACLJ,SAASX,EAAKY,IAAI,aAAaC,QAAQ,KAAM,IAAK,MAGpDb,EAAKmB,YAAY,gCAEf3C,EAAKlB,SAASwD,IACdtC,EAAKuC,cACLJ,SAASX,EAAKY,IAAI,aAAaC,QAAQ,KAAM,IAAK,KAGtDb,EAAK1C,OAAOiD,GAGZ,IAAIa,EAAWpB,EAAKqB,KAAK,2BAEzB,IAAKD,EAASnB,OAAQ,CACpB,IAAIqB,EAAUC,EAAUC,EAAchD,IACtB,OAAZ8C,EACFF,EAAWK,EAASjD,EAAMwB,EAAMsB,GACvBlE,EAASI,gBAClB4D,EAAWK,EAASjD,EAAMwB,EAAM5C,EAASI,kBAS7C,GAJK4D,EAASnB,SAAUmB,EAASM,SAAS,4BACxCN,EAAWpB,EAAKqB,KAAK,0CAGnBD,GAAYA,EAASnB,OAAQ,CAC/B,IAAI0B,EACF3B,EAAKkB,YAAcE,EAASQ,WAAWd,IAAMM,EAASL,cACxDf,EAAKkB,UAAUS,QAEf3B,EAAKkB,UAAU,GA0BjB,OAtBI9D,EAASU,uBACXpC,EACEmG,UACA1C,GAAG,sBAAuB,yBAA0B,SAASQ,GAC7DA,EAAEC,iBACF,IAAIkC,EAAgBpG,EAAE4C,MAAM4C,YAC5BxF,EAAE4C,MAAM4C,UAAUY,EAAgBnC,EAAEoC,cAAcC,UAKtDtG,EAAEmG,UAAU1C,GACV,mDACA8C,GAEFvG,EAAEsF,QAAQ7B,GAAG,uBAAwB8C,GACjC7E,EAASZ,qBACXd,EAAEmG,UAAU1C,GAAG,uBAAwB8C,GAGzCzD,EAAK0D,QAAQ,kBAEN5D,QAGT+B,KAAM,SAASV,GACb,IAAInB,EAAO9C,EAAE4C,MACTlB,EAAWoB,EAAKG,KAAK,uBAuBzB,OArBIvB,GAAYA,EAASa,WACvBO,EAAKuB,OAGPrE,EAAE,0BAA0B6C,KAAK,WAC/B,IAAIyB,EAAOtE,EAAE4C,MACb,GAAK4B,EAAWF,GAAhB,CAIA,IAAIxB,EAAOwB,EAAKrB,KAAK,oBACjBvB,EAAWoB,EAAKG,KAAK,uBAErBvB,GAAYA,EAASK,cACvB0E,EAAa3D,GAGfwB,EAAKK,OACL7B,EAAK0D,QAAQ,qBAGR5D,MAGT8D,OAAQ,SAAS1D,EAAK2D,GACpB,MAAkB,iBAAP3D,QAAmC,IAAT2D,EAC5B3G,EAAE4C,MAAMK,KAAK,uBAAuBD,GAGtCJ,KAAKC,KAAK,WACf,IAAIC,EAAO9C,EAAE4C,MACTlB,EAAWoB,EAAKG,KAAK,uBACrBqB,EAAOxB,EAAKG,KAAK,mBAEH,iBAAPD,EACTtB,EAAW1B,EAAEkD,OAAOxB,EAAUsB,GACP,iBAAPA,IAChBtB,EAASsB,GAAO2D,GAGlBjF,EAAW0B,EAAe1B,GAE1BoB,EAAKG,KAAK,sBAAuBvB,GAEjCiC,EAAaI,KAAKjB,EAAKkB,IAAI,GAAI,CAAE4C,KAAM,UAAY,WAE/CtC,IACFA,EAAKuC,SACL/D,EAAKG,KAAK,mBAAmB,IAG3BvB,EAASa,WACXe,EAAQR,MAKdgE,uBAAwB,WACtB,OAAOjB,EAAUC,EAAclD,QAGjCmE,QAAS,SAASC,GAChB,IAEIC,EAAcnB,EAFPlD,MAGX,IAAKqE,EACH,OAAO,KAGT,IAAIrF,EAASiE,EAAUoB,GACvB,GAAe,OAAXrF,EACF,OAAO,KAGJoF,IACHA,EAAgB,IAAIE,MAItB,IAAIC,EAAO,IAAID,KAAKF,GAMpB,OALAG,EAAKC,SAASxF,EAAS,MACvBuF,EAAKE,WAAYzF,EAAS,KAAQ,IAClCuF,EAAKG,WAAW1F,EAAS,IACzBuF,EAAKI,gBAAgB,GAEdJ,GAGTK,UAAW,WACT,IACIlD,EADO1B,KACKK,KAAK,mBACrB,SAAUqB,IAAQE,EAAWF,KAG/BmD,QAAS,SAASd,GAChB,IAAI7D,EAAOF,KACPlB,EAAWoB,EAAKG,KAAK,uBAEzB,GAAIvB,EAASP,eACX,IAAIuG,EAAaC,EAAoB9B,EAAUc,GAAQjF,QAEnDgG,EAAaE,EAAU/B,EAAUc,GAAQjF,GAc/C,OAXIiF,GAAwB,OAAfe,GAAuBhG,EAASJ,aAC3CoG,EAAaf,GAGfkB,EAAc/E,EAAM4E,EAAY,WAChC/D,EAAaI,KAAKjB,EAAKkB,IAAI,GAAI,CAAE4C,KAAM,UAAY,WAE/C9D,EAAKG,KAAK,oBACZyB,EAAa5B,EAAMA,EAAKG,KAAK,oBAGxBL,MAGTiE,OAAQ,WACN,IAAI/D,EAAOF,KAGX,GAAKE,EAAKkD,SAAS,uBAAnB,CAIA,IAAItE,EAAWoB,EAAKG,KAAK,uBAiBzB,OAhBAH,EAAKgF,WAAW,eAAgB,OAChChF,EAAK2C,YAAY,uBACjB3C,EAAKiF,WAAW,uBAChBjF,EAAKkF,IAAI,eAGLlF,EAAKG,KAAK,oBACZH,EAAKG,KAAK,mBAAmB4D,SAG3BnF,EAASa,WACXO,EAAKY,OAGPZ,EAAKiF,WAAW,mBAETnF,QAMX,SAAS4B,EAAWyD,GAClB,IAAIC,EAAKD,EAAK,GACd,OAAwB,EAAjBC,EAAGC,aAAqC,EAAlBD,EAAGE,aAGlC,SAAShF,EAAe1B,GAatB,GAZIA,EAASL,UACXK,EAASL,QAAUwE,EAAUnE,EAASL,UAGpCK,EAASN,UACXM,EAASN,QAAUyE,EAAUnE,EAASN,UAGpCM,EAASR,cAAiD,mBAA1BQ,EAASR,eAC3CQ,EAASR,aAAe2E,EAAUnE,EAASR,eAGf,OAA1BQ,EAASI,cACXJ,EAASI,cAAgB,WACvB,OAAOJ,EAASF,iBAAiBqE,EAAU,IAAIqB,MAASxF,SAErD,GACLA,EAASI,eACwB,mBAA1BJ,EAASI,cAChB,CACA,IAAI2C,EAAM/C,EAASI,cACnBJ,EAASI,cAAgB,WACvB,OAAOJ,EAASF,iBAAiBqE,EAAUpB,GAAM/C,SAE1CA,EAASL,UAClBK,EAASI,cAAgB,WACvB,OAAOJ,EAASF,iBAAiBE,EAASL,QAASK,KAkBvD,GAbkC,WAAhC1B,EAAE4G,KAAKlF,EAASW,aAChBX,EAASW,WAAWyC,MAAM,UAE1BpD,EAAS2G,iBAAkB,IAIF,IAAzB3G,EAASS,cAC4B,GAArCT,EAASQ,OAAOoG,QAAQ,UAExB5G,EAASQ,OAAOqG,OAAO7G,EAASQ,OAAOoG,QAAQ,SAAU,GAGnB,EAApC5G,EAASV,kBAAkBuD,OAAY,CAEzC,IAAK,IAAIf,KAAK9B,EAASV,kBACrBU,EAASV,kBAAkBwC,GAAK,CAC9BqC,EAAUnE,EAASV,kBAAkBwC,GAAG,IACxCqC,EAAUnE,EAASV,kBAAkBwC,GAAG,KAK5C9B,EAASV,kBAAoBU,EAASV,kBAAkBwH,KAAK,SAC3DC,EACAC,GAEA,OAAOD,EAAE,GAAKC,EAAE,KAIlB,IAASlF,EAAI9B,EAASV,kBAAkBuD,OAAS,EAAO,EAAJf,EAAOA,IAEvD9B,EAASV,kBAAkBwC,GAAG,IAC9B9B,EAASV,kBAAkBwC,EAAI,GAAG,KAElC9B,EAASV,kBAAkBwC,EAAI,GAAK,CAClCmF,KAAKC,IACHlH,EAASV,kBAAkBwC,GAAG,GAC9B9B,EAASV,kBAAkBwC,EAAI,GAAG,IAEpCmF,KAAKE,IACHnH,EAASV,kBAAkBwC,GAAG,GAC9B9B,EAASV,kBAAkBwC,EAAI,GAAG,KAGtC9B,EAASV,kBAAkBuH,OAAO/E,EAAG,IAK3C,OAAO9B,EAGT,SAAS4B,EAAQR,GACf,IAAIpB,EAAWoB,EAAKG,KAAK,uBACrBqB,EAAOxB,EAAKG,KAAK,mBAOrB,GALIqB,GAAQA,EAAKC,SACfD,EAAKuC,SACL/D,EAAKG,KAAK,mBAAmB,IAG3BvB,EAASa,UAAW,CACtB+B,EAAOtE,EAAE,aAAc,CAAE8I,MAAO,yBAC5BhG,EAAKiG,KAAK,SACZzE,EAAKyE,KAAK,OAAQ,iBAAmBjG,EAAKiG,KAAK,SAEjD,IAAIC,EAAe1E,MACd,CACLA,EAAOtE,EAAE,SAAU,CAAE8I,MAAO,wBAExBE,EAAehJ,EAAE,UAAW,CAC9B8I,MAAO,wBACPG,UAAW,KAEA/D,IAAI,CAAEgE,QAAS,OAAQhD,SAAU,aAAciD,OAAO7E,GAGrE,GAAI5C,EAASJ,WAKX,IAJ4B,IAAxBI,EAASJ,aACXI,EAASJ,WAAaI,EAASa,UAAY,UAAY,QAGrDvC,EAAEoJ,QAAQ1H,EAASJ,aACrB,IAAK,IAAIkC,KAAK9B,EAASJ,WACrB,GAAI2D,SAASzB,EAAG,KAAOA,EAAG,CACxB,IAAI6F,EAAcC,EAChB5H,EAASJ,WAAWkC,GACpB9B,EAASa,WAEX+B,EAAK6E,OAAOE,QAGX,CACDA,EAAcC,EAChB5H,EAASJ,WACTI,EAASa,WAEX+B,EAAK6E,OAAOE,GAQhB,GAJI3H,EAASb,WACXmI,EAAa3F,SAAS3B,EAASb,YAIT,OAArBa,EAASL,SAA8C,OAA1BK,EAASR,eACvCQ,EAASO,aACT,CAE0B,mBAAjBP,EAASC,MAAkCD,EAASC,KAC7DqH,EAAa3F,SAAS,+BACtB2F,EAAa3F,SAAS,sBAAwB3B,EAASC,MAGzD,IAAI4H,EAAW7H,EAASL,QACa,mBAA1BK,EAASR,aAClBqI,EAAW1D,EAAUnE,EAASR,gBACK,OAA1BQ,EAASR,eAClBqI,EAAW7H,EAASR,cAEtB,IAAIsI,EAA6B,OAArB9H,EAASL,QAAmBK,EAASL,QAAU,EACvDoI,EACmB,OAArB/H,EAASN,QAAmBM,EAASN,QAAUoI,EAAQvJ,EAAW,EAEhEwJ,EAAMD,IAERC,GAAOxJ,GAIPwJ,IAAQxJ,EAAW,GACa,WAAhCD,EAAE4G,KAAKlF,EAASW,aAChBX,EAASM,WAGTyH,EAAMxJ,GAGR,IAAIyJ,EAAKhI,EAASV,kBACd2I,EAAQ,EACRC,EAAQF,EAAGnF,OAEXsF,EAAWnI,EAASC,KACD,mBAAZkI,IACTA,EAAW,WACT,OAAOnI,EAASC,OAIX6B,EAAIgG,EAAb,IAAK,IAAeM,EAAI,EAAGtG,GAAKiG,EAAUjG,GAAmB,GAAdqG,IAAVC,GAA4B,CAC/D,IAOMC,EAPFnE,EAAUpC,EACVwG,EAAapC,EAAUhC,EAASlE,GAEpC,GAAIA,EAASa,WACPwH,EAAM/J,EAAE,aAAc,CAAE2G,MAAOqD,KAC/BC,KAAKD,QAELD,EAAM/J,EAAE,WACRqD,SACFuC,EAAU3F,EAAWA,EAAW,EAC5B,mBACA,oBAEN8J,EAAI9G,KAAK,OAAQpB,EAAe+D,EAASlE,IACzCqI,EAAIE,KAAKD,GAGX,IACwB,OAArBtI,EAASL,SAA8C,OAA1BK,EAASR,eACvCQ,EAASO,aACT,CACA,IAAIiI,EAAiBC,EAAc3G,EAAI+F,EAAU7H,EAASC,MAC1D,GAAID,EAASa,UACXwH,EAAIE,KAAKF,EAAIE,OAAS,KAAOC,EAAiB,SACzC,CACL,IAAIE,EAAWpK,EAAE,WAAY,CAAE8I,MAAO,2BACtCsB,EAASH,KAAK,KAAOC,EAAiB,KACtCH,EAAIZ,OAAOiB,IAIXT,EAAQC,IACNhE,GAAW8D,EAAGC,GAAO,KACvBA,GAAS,GAGPD,EAAGC,IAAU/D,GAAW8D,EAAGC,GAAO,IAAM/D,EAAU8D,EAAGC,GAAO,KAC1DjI,EAASa,UACXwH,EAAIxG,KAAK,YAAY,GAErBwG,EAAI1G,SAAS,4BAKnBiB,EAAK6E,OAAOY,GAMd,GAHAf,EAAa/F,KAAK,mBAAoBH,GACtCA,EAAKG,KAAK,kBAAmB+F,GAEzBtH,EAASa,UACPO,EAAK2B,OACPH,EAAKG,IAAIkD,EAAoB9B,EAAU/C,EAAK2B,OAAQ/C,IAGtD4C,EAAKb,GAAG,QAAS,WACfzD,EAAE4C,MACCK,KAAK,oBACLuD,QAAQ,oBAEblC,EAAKb,GAAG,OAAQ,WACdzD,EAAE4C,MACCK,KAAK,oBACLuD,QAAQ,oBAEblC,EAAKb,GAAG,SAAU,WAChBoE,EAAc/E,EAAM9C,EAAE4C,MAAM6B,MAAO,YAGrCoD,EAAc/E,EAAMwB,EAAKG,MAAO,WAChC3B,EAAK6B,OAAO0F,MAAM/F,OACb,CACL,IAAI1D,EAAWc,EAASd,SACA,iBAAbA,EACTA,EAAWZ,EAAEY,GACgB,mBAAbA,IAChBA,EAAWA,EAASkC,IAEtBlC,EAASuI,OAAOH,GAChBtE,EAAa5B,EAAMwB,GAEnBA,EAAKb,GAAG,kBAAmB,KAAM,SAASQ,GAIxCnB,EAAKkF,IAAI,oBACTlF,EAAKW,GAAG,2BAA4B,WAClCX,EAAKkF,IAAI,4BACTlF,EAAKW,GAAG,mBAAoBhB,EAAQiB,QAGjCU,EAActB,IACjBA,EAAK,GAAGqB,QAIVG,EAAKqB,KAAK,MAAMF,YAAY,0BAC5BzF,EAAE4C,MAAMS,SAAS,0BAEboD,EAAa3D,KACfA,EAAK0D,QAAQ,kBAEblC,EAAKb,GAAG,sCAAuC,KAAM,SAASQ,GAC5DK,EAAK0D,IAAI,uCACTgB,EAAarE,aAOvB,SAAS2E,EAAqBgB,EAAa/H,GACzC,IAAIgI,EAAO1J,EAAW8F,EAatB,MAX0B,iBAAf2D,GACTC,EAAQD,EAAYC,MACpB1J,EAAYyJ,EAAYzJ,UACxB8F,EAAQ2D,EAAY3D,OACW,iBAAf2D,GAChBC,EAAQD,EACR3D,EAAQ,IAER3G,EAAEwK,MAAM,4BAGNjI,EACKvC,EAAE,aAAc,CACrB2G,MAAOA,EACPmC,MAAOjI,EACPoJ,KAAMM,IAGDvK,EAAE,SAAU,CACjB8I,MAAOjI,EACPoJ,KAAMM,IACLtH,KAAK,OAAQwH,OAAO9D,IAI3B,SAASgB,EAAoBlG,EAASC,GAEpC,GAAgB,QADhBD,EAAUC,EAASF,iBAAiBC,EAASC,IAE3C,OAAOkG,EAAUnG,EAASC,GAK9B,SAAS6E,EAActC,GACrB,GAAIA,EAAEyG,QAAUpF,OAAhB,CAKA,IAAIoF,EAAS1K,EAAEiE,EAAEyG,QAGfA,EAAOC,QAAQ,wBAAwBpG,QACvCmG,EAAOC,QAAQ,0BAA0BpG,SAM3C9B,EAAQkC,OACR3E,EAAEmG,UAAUyE,OAAO,kBACnB5K,EAAEsF,QAAQsF,OAAO,oBAGnB,SAASxG,EAActB,GACrB,IAAIpB,EAAWoB,EAAKG,KAAK,uBACzB,OACGqC,OAAOuF,UAAUC,kBAAoB,iBAAkB3E,WACxDzE,EAAST,qBAIb,SAAS8E,EAASjD,EAAMwB,EAAMqC,GAC5B,IAAKA,GAAmB,IAAVA,EACZ,OAAO,EAGT,IAAIjF,EAAWoB,EAAKG,KAAK,uBACrB8H,GAAM,EACNpE,EAAQjF,EAASF,iBAAiBmF,EAAOjF,GAe7C,OAZA4C,EAAKqB,KAAK,MAAM9C,KAAK,SAASW,EAAGwH,GAC/B,IAAIC,EAAOjL,EAAEgL,GACb,GAAgC,iBAArBC,EAAKhI,KAAK,QAIrB,OAAIgI,EAAKhI,KAAK,SAAW0D,GACvBoE,EAAME,GACC,QAFT,IAMKF,EAGT,SAASrG,EAAa5B,EAAMwB,GAC1BA,EAAKqB,KAAK,MAAMF,YAAY,0BAE5B,IAAI/D,EAAWoB,EAAKG,KAAK,uBACrBiI,EAAYrF,EAAUC,EAAchD,GAAOpB,GAC/C,GAAkB,OAAdwJ,EAAJ,CAIA,IAAIxF,EAAWK,EAASjD,EAAMwB,EAAM4G,GACpC,GAAIxF,EAAU,CACZ,IAAIyF,EAAWzF,EAAS9D,SAASwD,IAAMd,EAAK1C,SAASwD,KAGnD+F,EAAWzF,EAASL,cAAgBf,EAAKe,eACzC8F,EAAW,IAEX7G,EAAKkB,UACHlB,EAAKkB,YAAcE,EAASQ,WAAWd,IAAMM,EAASL,gBAItD3D,EAASP,gBAAkBuE,EAASzC,KAAK,UAAYiI,IACvDxF,EAASrC,SAAS,4BAKxB,SAASM,EAAaM,EAAGmH,GACvB,GAAc,cAAVA,EAAJ,CAIA,IAAItI,EAAO9C,EAAE4C,MAEb,GAAmB,KAAfA,KAAK+D,OAKT,IAAI7D,EAAKuI,GAAG,WAAepH,GAAe,UAAVA,EAAE2C,KAAlC,CAIA,IAAIlF,EAAWoB,EAAKG,KAAK,uBACrBxB,EAAUoE,EAAUjD,KAAK+D,MAAOjF,GAEpC,GAAgB,OAAZD,EAAJ,CAKA,IAAI6J,GAAa,EAkBjB,GAfuB,OAArB5J,EAASL,SACY,OAArBK,EAASN,UACRK,EAAUC,EAASL,SAAWI,EAAUC,EAASN,WAElDkK,GAAa,GAIftL,EAAE6C,KAAKnB,EAASV,kBAAmB,WACjC,GAAIS,GAAWmB,KAAK,IAAMnB,EAAUmB,KAAK,GAEvC,QADA0I,GAAa,KAKb5J,EAASP,eAAgB,CAC3B,IAAIoK,EAAe7J,EAASF,iBAAiBC,EAASC,GAClD6J,GAAgB9J,IAClBA,EAAU8J,EACVH,EAAS,MAIb,IAAI1D,EAAaE,EAAUnG,EAASC,GAEhC4J,GAEAzD,EAAc/E,EAAM4E,EAAY,UAC/BzD,GAAe,UAAVA,EAAE2C,OAER9D,EAAK0D,QAAQ,kBAGfqB,EAAc/E,EAAM4E,EAAY0D,QAxChCtI,EAAK0D,QAAQ,yBAZbqB,EAAc/E,EAAM,KAAMsI,IAwD9B,SAAStF,EAAchD,GACrB,OAAIA,EAAKuI,GAAG,SACHvI,EAAK2B,MAGL3B,EAAKG,KAAK,uBAIrB,SAAS4E,EAAc/E,EAAM6D,EAAO6E,GAClC,GAAI1I,EAAKuI,GAAG,SAAU,CACpBvI,EAAK2B,IAAIkC,GAET,IAAIjF,EAAWoB,EAAKG,KAAK,uBACrBvB,EAASa,WAAuB,UAAViJ,GAAsB1I,EAAKG,KAAK,oBACxDH,EACGG,KAAK,mBACLwB,IAAIkD,EAAoB9B,EAAUc,GAAQjF,IAIjD,OAAIoB,EAAKG,KAAK,wBAA0B0D,GACtC7D,EAAKG,KAAK,sBAAuB0D,GACnB,UAAV6E,EACF1I,EACG0D,QAAQ,cACRA,QAAQ,cACRA,QAAQ,SAAU,eAC6B,GAAzC,CAAC,QAAS,WAAW8B,QAAQkD,IACtC1I,EAAK0D,QAAQ,eAGR,KAEsC,GAAzC,CAAC,QAAS,WAAW8B,QAAQkD,IAC/B1I,EAAK0D,QAAQ,eAER,GAOX,SAAS1C,EAAyBG,GAChC,OAAQA,EAAEwH,SACR,KAAK,GACL,KAAK,EACH,OAEF,QACExH,EAAEC,kBAOR,SAASN,EAAgBK,GACvB,IAAInB,EAAO9C,EAAE4C,MACT0B,EAAOxB,EAAKG,KAAK,mBAErB,IAAKqB,IAASE,EAAWF,GAAO,CAC9B,GAAiB,IAAbL,EAAEwH,QAQJ,OAAO,EANPhJ,EAAQiB,KAAKK,KAAKjB,EAAKkB,IAAI,IAC3BM,EAAOxB,EAAKG,KAAK,mBACZmB,EAActB,IACjBA,EAAKqB,QAOX,OAAQF,EAAEwH,SACR,KAAK,GAOH,OANIhF,EAAa3D,KACfa,EAAaI,KAAKjB,EAAKkB,IAAI,GAAI,CAAE4C,KAAM,WACvCnE,EAAQkC,KAAK+G,MAAM9I,OAGrBqB,EAAEC,kBACK,EAET,KAAK,GACH,IAAIwB,EAAWpB,EAAKqB,KAAK,2BAmBzB,OAjBKD,EAASnB,OAQFmB,EAAS2F,GAAG,kBACtB3F,EAASD,YAAY,0BACrBC,EAASiG,OAAOtI,SAAS,0BAErBqC,EAASiG,OAAOzF,WAAWd,IAAMM,EAASL,eAC5Cf,EAAKkB,UAAUlB,EAAKkB,YAAcE,EAASL,iBAZ7Cf,EAAKqB,KAAK,MAAM9C,KAAK,SAASW,EAAGwH,GAC/B,GAA4B,EAAxBhL,EAAEgL,GAAK9E,WAAWd,IAEpB,OADAM,EAAW1F,EAAEgL,IACN,IAGXtF,EAASrC,SAAS,4BAUb,EAET,KAAK,GAwBH,OArBwB,KAFxBqC,EAAWpB,EAAKqB,KAAK,4BAERpB,QACXD,EAAKqB,KAAK,MAAM9C,KAAK,SAASW,EAAGwH,GAC/B,GAA4B,EAAxBhL,EAAEgL,GAAK9E,WAAWd,IAEpB,OADAM,EAAW1F,EAAEgL,IACN,IAIXtF,EAASrC,SAAS,2BACRqC,EAAS2F,GAAG,iBACtB3F,EAASD,YAAY,0BACrBC,EAASkG,OAAOvI,SAAS,0BAGvBqC,EAASkG,OAAO1F,WAAWd,IAAM,EAAIM,EAASL,cAC9Cf,EAAKe,eAELf,EAAKkB,UAAUlB,EAAKkB,YAAcE,EAASL,iBAIxC,EAET,KAAK,GACHf,EAAKqB,KAAK,MAAMF,YAAY,0BAC5BhD,EAAQkC,OACR,MAEF,KAAK,EACHlC,EAAQkC,OACR,MAEF,QACE,OAAO,GAOb,SAASd,EAAcI,GACrB,IAAInB,EAAO9C,EAAE4C,MACT0B,EAAOxB,EAAKG,KAAK,mBACjBvB,EAAWoB,EAAKG,KAAK,uBAEzB,IAAKqB,IAASE,EAAWF,IAAS5C,EAASX,iBACzC,OAAO,EAGT,GAAe,UAAXkD,EAAE2C,MAA+B,QAAX3C,EAAE2C,KAW5B,OAAQ3C,EAAEwH,SACR,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,EACL,KAAK,GACC/J,EAASY,mBACXoC,EAAa5B,EAAMwB,GAEnBA,EAAKK,YAxCTkH,WAAW,WACLnK,EAASY,mBACXoC,EAAa5B,EAAMwB,GAEnBA,EAAKK,QAEN,GAwCP,SAAS8B,EAAa3D,GACpB,IAAIpB,EAAWoB,EAAKG,KAAK,uBAErBiI,EAAY,KAEZY,EAHOhJ,EAAKG,KAAK,mBAGH0C,KAAK,2BAEvB,OAAImG,EAAO9F,SAAS,4BAIhB8F,EAAOvH,SAET2G,EAAYY,EAAO7I,KAAK,SAGR,OAAdiI,IACsB,iBAAbA,IACTA,EAAYtD,EAAUsD,EAAWxJ,IAGnCmG,EAAc/E,EAAMoI,EAAW,YAG1B,GAGT,SAASf,EAAc1I,EAASE,GAC9BF,EAAUkH,KAAKoD,IAAItK,GACnB,IAEEuK,EACAxL,EAHEyL,EAAUtD,KAAKuD,MAAMzK,EAAU,IACjC2I,EAAW,GA2Bb,OAvBI6B,EAAU,GAEZ7B,EAAW,CAAC6B,EAAS/L,EAAMM,OAE3BwL,EAAQrD,KAAKwD,MAAMF,EAAU,IAC7BzL,EAAOyL,EAAU,GAGL,IAARtK,GAAsB,IAARnB,IAChBwL,GAAS9L,EAAMK,QAAU,GAG3B6J,EAASgC,KAAKJ,GACd5B,EAASgC,KAAc,GAATJ,EAAa9L,EAAMO,GAAKP,EAAMQ,KAIhC,IAARiB,GAAcnB,IAChB4J,EAASgC,KAAK5L,GACd4J,EAASgC,KAAKlM,EAAMM,QAIjB4J,EAASiC,KAAK,KAGvB,SAASzE,EAAUhC,EAASlE,GAC1B,GAAsB,iBAAXkE,EACT,OAAO,KAGT,IAAInE,EAAUwD,SAASW,EAAU,IAC/BqG,EAAUhH,SAAUW,EAAU,GAAM,IACpCoG,EAAQ/G,SAAUW,EAAU,KAAa,IAEvCuB,EAAO,IAAID,KAAK,KAAM,EAAG,EAAG8E,EAAOC,EAASxK,EAAS,GAEzD,GAAI6K,MAAMnF,EAAKJ,WACb,OAAO,KAGT,GAAoC,aAAhC/G,EAAE4G,KAAKlF,EAASW,YAClB,OAAOX,EAASW,WAAW8E,GAK7B,IAFA,IACIoF,EAAMC,EADNC,EAAS,GAEJjJ,EAAI,EAAGA,EAAI9B,EAASW,WAAWkC,OAAQf,IAE9C,OADAgJ,EAAO9K,EAASW,WAAWqK,OAAOlJ,IAEhC,IAAK,IACHiJ,GAA4B,GAAlBtF,EAAKwF,WAAkBzM,EAAME,GAAKF,EAAMC,GAClD,MAEF,IAAK,IACHsM,GAA4B,GAAlBtF,EAAKwF,WAAkBzM,EAAMI,GAAKJ,EAAMG,GAClD,MAEF,IAAK,IAEHoM,GAAmB,KADnBF,EAAOpF,EAAKwF,WAAa,IACF,KAAOJ,EAC9B,MAEF,IAAK,IACHA,EAAOpF,EAAKwF,WACR/G,IAAY3F,IAAUsM,EAAO7K,EAASM,SAAW,GAAK,GAC1DyK,GAAUF,EACV,MAEF,IAAK,IAGU,KAFbA,EAAOpF,EAAKwF,WAAa,KAEPJ,EAAO,KACvBA,EAAO,IAAMA,GAGfE,GAAmB,IAATF,EAAa,KAAOA,EAC9B,MAEF,IAAK,IACHA,EAAOpF,EAAKwF,WACR/G,IAAY3F,IAAUsM,EAAO7K,EAASM,SAAW,GAAK,GAC1DyK,GAAiB,EAAPF,EAAWA,EAAO,IAAMA,EAClC,MAEF,IAAK,IAEHE,GAAoB,GADhBR,EAAU9E,EAAKyF,cACKX,EAAU,IAAMA,EACxC,MAEF,IAAK,IAEHQ,GAAoB,GADpBhL,EAAU0F,EAAK0F,cACSpL,EAAU,IAAMA,EACxC,MAEF,IAAK,KAEH+B,IACAiJ,GAAU/K,EAASW,WAAWqK,OAAOlJ,GACrC,MAEF,QACEiJ,GAAUD,EAIhB,OAAOC,EAGT,SAAS5G,EAAUmE,EAAYtI,GAC7B,GAAmB,KAAfsI,GAAoC,OAAfA,EAAqB,OAAO,KACrD,GAAyB,iBAAdA,EACT,OAC0B,KAAxBA,EAAW2C,WACe,GAA1B3C,EAAW4C,aACX5C,EAAW6C,aAGf,GAAyB,iBAAd7C,EACT,OAAOA,EAMmB,MAH5BA,EAAaA,EAAW8C,cAAc3H,QAAQ,UAAW,KAG1C4H,OAAO,IAAqC,KAAxB/C,EAAW+C,OAAO,KACnD/C,GAAc,KAGhB,IAAIgD,EACF,IACA9M,EAAMC,GAAGgF,QAAQ,IAAK,IACtB,IACAjF,EAAME,GAAG+E,QAAQ,IAAK,IACtB,IACAjF,EAAMG,GAAG8E,QAAQ,IAAK,IACtB,IACAjF,EAAMI,GAAG6E,QAAQ,IAAK,IACtB,KAGE8H,EAAU,IAAIC,OAChB,IACEF,EACA,kDACAA,EACA,KAGA7F,EAAO6C,EAAWlF,MAAMmI,GAC5B,IAAK9F,EACH,OAAO,KAGT,IAAIoF,EAAOtH,SAAmB,EAAVkC,EAAK,GAAQ,IAC7BgG,EAAOhG,EAAK,IAAMA,EAAK,GACvB6E,EAAQO,EACRN,EAAoB,EAAV9E,EAAK,IAAU,EACzB1F,EAAoB,EAAV0F,EAAK,IAAU,EAE7B,GAAIoF,GAAQ,IAAMY,EAAM,CACtB,IAAIC,EAAOD,GAAQjN,EAAME,IAAM+M,GAAQjN,EAAMI,GAG3C0L,EADU,IAARO,EACMa,EAAO,GAAK,EAEZb,GAAQa,EAAO,GAAK,QAEzB,GAAI1L,EAAU,CAEnB,GADe,KAAP6K,EAAwB,GAAVN,EAAexK,GAC5BxB,GAAYyB,EAASM,SAAW,EAAI,GAAI,CAC/C,IAA2B,IAAvBN,EAASc,UACX,OAAO,KAGTwJ,EAAQO,EAAO,IAInB,IAAI3G,EAAkB,KAARoG,EAAyB,GAAVC,EAAexK,EAG5C,GACE8K,EAAO,KACNY,GACDzL,GACAA,EAAS2G,iBACT3G,EAASI,cACT,CACA,IAAIuL,EAAQzH,EAAUlE,EAASI,gBAC3BuL,EAAQ,GAAcpN,GAAY,GAArBoN,IACfzH,GAAWA,EAAU3F,EAAW,GAAKA,GAIzC,OAAO2F,EAOT,SAAS/D,EAAeJ,EAASC,GAC/B,OAAID,GAAWxB,GAAYyB,EAASM,SAC3BP,EAGFA,EAAUxB,EAInBD,EAAEsN,GAAGC,WAAa,SAASC,GACzB,OAAK5K,KAAK2B,OACN9B,EAAQ+K,GAEL5K,KAAKoD,SAAS,uBAGZvD,EAAQ+K,GAAQ9B,MACrB9I,KACA6K,MAAMC,UAAUX,MAAMhJ,KAAK4J,UAAW,IAJ/B/K,KAMkB,iBAAX4K,GAAwBA,OAGxCxN,EAAEwK,MAAM,UAAYgD,EAAS,wCAFtB/K,EAAQC,KAAKgJ,MAAM9I,KAAM+K,WAXT/K","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"]}