! ( function ( e ) { 'function' == typeof define && define.amd ? define( [ 'jquery', 'jquery-ui' ], e ) : e( jQuery ); } )( function ( $ ) { if ( ( ( $.ui.timepicker = $.ui.timepicker || {} ), ! $.ui.timepicker.version ) ) { $.extend( $.ui, { timepicker: { version: '1.6.3' } } ); var Timepicker = function () { ( this.regional = [] ), ( this.regional[ '' ] = { currentText: 'Now', closeText: 'Done', amNames: [ 'AM', 'A' ], pmNames: [ 'PM', 'P' ], timeFormat: 'HH:mm', timeSuffix: '', timeOnlyTitle: 'Choose Time', timeText: 'Time', hourText: 'Hour', minuteText: 'Minute', secondText: 'Second', millisecText: 'Millisecond', microsecText: 'Microsecond', timezoneText: 'Time Zone', isRTL: ! 1, } ), ( this._defaults = { showButtonPanel: ! 0, timeOnly: ! 1, timeOnlyShowDate: ! 1, showHour: null, showMinute: null, showSecond: null, showMillisec: null, showMicrosec: null, showTimezone: null, showTime: ! 0, stepHour: 1, stepMinute: 1, stepSecond: 1, stepMillisec: 1, stepMicrosec: 1, hour: 0, minute: 0, second: 0, millisec: 0, microsec: 0, timezone: null, hourMin: 0, minuteMin: 0, secondMin: 0, millisecMin: 0, microsecMin: 0, hourMax: 23, minuteMax: 59, secondMax: 59, millisecMax: 999, microsecMax: 999, minDateTime: null, maxDateTime: null, maxTime: null, minTime: null, onSelect: null, hourGrid: 0, minuteGrid: 0, secondGrid: 0, millisecGrid: 0, microsecGrid: 0, alwaysSetTime: ! 0, separator: ' ', altFieldTimeOnly: ! 0, altTimeFormat: null, altSeparator: null, altTimeSuffix: null, altRedirectFocus: ! 0, pickerTimeFormat: null, pickerTimeSuffix: null, showTimepicker: ! 0, timezoneList: null, addSliderAccess: ! 1, sliderAccessArgs: null, controlType: 'slider', oneLine: ! 1, defaultValue: null, parse: 'strict', afterInject: null, } ), $.extend( this._defaults, this.regional[ '' ] ); }; $.extend( Timepicker.prototype, { $input: null, $altInput: null, $timeObj: null, inst: null, hour_slider: null, minute_slider: null, second_slider: null, millisec_slider: null, microsec_slider: null, timezone_select: null, maxTime: null, minTime: null, hour: 0, minute: 0, second: 0, millisec: 0, microsec: 0, timezone: null, hourMinOriginal: null, minuteMinOriginal: null, secondMinOriginal: null, millisecMinOriginal: null, microsecMinOriginal: null, hourMaxOriginal: null, minuteMaxOriginal: null, secondMaxOriginal: null, millisecMaxOriginal: null, microsecMaxOriginal: null, ampm: '', formattedDate: '', formattedTime: '', formattedDateTime: '', timezoneList: null, units: [ 'hour', 'minute', 'second', 'millisec', 'microsec' ], support: {}, control: null, setDefaults: function ( e ) { return extendRemove( this._defaults, e || {} ), this; }, _newInst: function ( $input, opts ) { var tp_inst = new Timepicker(), inlineSettings = {}, fns = {}, overrides, i; for ( var attrName in this._defaults ) if ( this._defaults.hasOwnProperty( attrName ) ) { var attrValue = $input.attr( 'time:' + attrName ); if ( attrValue ) try { inlineSettings[ attrName ] = eval( attrValue ); } catch ( e ) { inlineSettings[ attrName ] = attrValue; } } overrides = { beforeShow: function ( e, t ) { if ( $.isFunction( tp_inst._defaults.evnts.beforeShow ) ) return tp_inst._defaults.evnts.beforeShow.call( $input[ 0 ], e, t, tp_inst ); }, onChangeMonthYear: function ( e, t, i ) { $.isFunction( tp_inst._defaults.evnts.onChangeMonthYear ) && tp_inst._defaults.evnts.onChangeMonthYear.call( $input[ 0 ], e, t, i, tp_inst ); }, onClose: function ( e, t ) { tp_inst.timeDefined === ! 0 && '' !== $input.val() && tp_inst._updateDateTime( t ), $.isFunction( tp_inst._defaults.evnts.onClose ) && tp_inst._defaults.evnts.onClose.call( $input[ 0 ], e, t, tp_inst ); }, }; for ( i in overrides ) overrides.hasOwnProperty( i ) && ( fns[ i ] = opts[ i ] || this._defaults[ i ] || null ); ( tp_inst._defaults = $.extend( {}, this._defaults, inlineSettings, opts, overrides, { evnts: fns, timepicker: tp_inst } ) ), ( tp_inst.amNames = $.map( tp_inst._defaults.amNames, function ( e ) { return e.toUpperCase(); } ) ), ( tp_inst.pmNames = $.map( tp_inst._defaults.pmNames, function ( e ) { return e.toUpperCase(); } ) ), ( tp_inst.support = detectSupport( tp_inst._defaults.timeFormat + ( tp_inst._defaults.pickerTimeFormat ? tp_inst._defaults.pickerTimeFormat : '' ) + ( tp_inst._defaults.altTimeFormat ? tp_inst._defaults.altTimeFormat : '' ) ) ), 'string' == typeof tp_inst._defaults.controlType ? ( 'slider' === tp_inst._defaults.controlType && 'undefined' == typeof $.ui.slider && ( tp_inst._defaults.controlType = 'select' ), ( tp_inst.control = tp_inst._controls[ tp_inst._defaults.controlType ] ) ) : ( tp_inst.control = tp_inst._defaults.controlType ); var timezoneList = [ -720, -660, -600, -570, -540, -480, -420, -360, -300, -270, -240, -210, -180, -120, -60, 0, 60, 120, 180, 210, 240, 270, 300, 330, 345, 360, 390, 420, 480, 525, 540, 570, 600, 630, 660, 690, 720, 765, 780, 840, ]; null !== tp_inst._defaults.timezoneList && ( timezoneList = tp_inst._defaults.timezoneList ); var tzl = timezoneList.length, tzi = 0, tzv = null; if ( tzl > 0 && 'object' != typeof timezoneList[ 0 ] ) for ( ; tzi < tzl; tzi++ ) ( tzv = timezoneList[ tzi ] ), ( timezoneList[ tzi ] = { value: tzv, label: $.timepicker.timezoneOffsetString( tzv, tp_inst.support.iso8601 ), } ); return ( ( tp_inst._defaults.timezoneList = timezoneList ), ( tp_inst.timezone = null !== tp_inst._defaults.timezone ? $.timepicker.timezoneOffsetNumber( tp_inst._defaults.timezone ) : new Date().getTimezoneOffset() * -1 ), ( tp_inst.hour = tp_inst._defaults.hour < tp_inst._defaults.hourMin ? tp_inst._defaults.hourMin : tp_inst._defaults.hour > tp_inst._defaults.hourMax ? tp_inst._defaults.hourMax : tp_inst._defaults.hour ), ( tp_inst.minute = tp_inst._defaults.minute < tp_inst._defaults.minuteMin ? tp_inst._defaults.minuteMin : tp_inst._defaults.minute > tp_inst._defaults.minuteMax ? tp_inst._defaults.minuteMax : tp_inst._defaults.minute ), ( tp_inst.second = tp_inst._defaults.second < tp_inst._defaults.secondMin ? tp_inst._defaults.secondMin : tp_inst._defaults.second > tp_inst._defaults.secondMax ? tp_inst._defaults.secondMax : tp_inst._defaults.second ), ( tp_inst.millisec = tp_inst._defaults.millisec < tp_inst._defaults.millisecMin ? tp_inst._defaults.millisecMin : tp_inst._defaults.millisec > tp_inst._defaults.millisecMax ? tp_inst._defaults.millisecMax : tp_inst._defaults.millisec ), ( tp_inst.microsec = tp_inst._defaults.microsec < tp_inst._defaults.microsecMin ? tp_inst._defaults.microsecMin : tp_inst._defaults.microsec > tp_inst._defaults.microsecMax ? tp_inst._defaults.microsecMax : tp_inst._defaults.microsec ), ( tp_inst.ampm = '' ), ( tp_inst.$input = $input ), tp_inst._defaults.altField && ( ( tp_inst.$altInput = $( tp_inst._defaults.altField ) ), tp_inst._defaults.altRedirectFocus === ! 0 && tp_inst.$altInput .css( { cursor: 'pointer' } ) .focus( function () { $input.trigger( 'focus' ); } ) ), ( 0 !== tp_inst._defaults.minDate && 0 !== tp_inst._defaults.minDateTime ) || ( tp_inst._defaults.minDate = new Date() ), ( 0 !== tp_inst._defaults.maxDate && 0 !== tp_inst._defaults.maxDateTime ) || ( tp_inst._defaults.maxDate = new Date() ), void 0 !== tp_inst._defaults.minDate && tp_inst._defaults.minDate instanceof Date && ( tp_inst._defaults.minDateTime = new Date( tp_inst._defaults.minDate.getTime() ) ), void 0 !== tp_inst._defaults.minDateTime && tp_inst._defaults.minDateTime instanceof Date && ( tp_inst._defaults.minDate = new Date( tp_inst._defaults.minDateTime.getTime() ) ), void 0 !== tp_inst._defaults.maxDate && tp_inst._defaults.maxDate instanceof Date && ( tp_inst._defaults.maxDateTime = new Date( tp_inst._defaults.maxDate.getTime() ) ), void 0 !== tp_inst._defaults.maxDateTime && tp_inst._defaults.maxDateTime instanceof Date && ( tp_inst._defaults.maxDate = new Date( tp_inst._defaults.maxDateTime.getTime() ) ), tp_inst.$input.bind( 'focus', function () { tp_inst._onFocus(); } ), tp_inst ); }, _addTimePicker: function ( e ) { var t = $.trim( this.$altInput && this._defaults.altFieldTimeOnly ? this.$input.val() + ' ' + this.$altInput.val() : this.$input.val() ); ( this.timeDefined = this._parseTime( t ) ), this._limitMinMaxDateTime( e, ! 1 ), this._injectTimePicker(), this._afterInject(); }, _parseTime: function ( e, t ) { if ( ( this.inst || ( this.inst = $.datepicker._getInst( this.$input[ 0 ] ) ), t || ! this._defaults.timeOnly ) ) { var i = $.datepicker._get( this.inst, 'dateFormat' ); try { var s = parseDateTimeInternal( i, this._defaults.timeFormat, e, $.datepicker._getFormatConfig( this.inst ), this._defaults ); if ( ! s.timeObj ) return ! 1; $.extend( this, s.timeObj ); } catch ( t ) { return ( $.timepicker.log( 'Error parsing the date/time string: ' + t + '\ndate/time string = ' + e + '\ntimeFormat = ' + this._defaults.timeFormat + '\ndateFormat = ' + i ), ! 1 ); } return ! 0; } var n = $.datepicker.parseTime( this._defaults.timeFormat, e, this._defaults ); return !! n && ( $.extend( this, n ), ! 0 ); }, _afterInject: function () { var e = this.inst.settings; $.isFunction( e.afterInject ) && e.afterInject.call( this ); }, _injectTimePicker: function () { var e = this.inst.dpDiv, t = this.inst.settings, i = this, s = '', n = '', a = null, r = {}, l = {}, o = null, u = 0, c = 0; if ( 0 === e.find( 'div.ui-timepicker-div' ).length && t.showTimepicker ) { var m = ' ui_tpicker_unit_hide', d = '
' + t.timeText + '
'; for ( u = 0, c = this.units.length; u < c; u++ ) { if ( ( ( s = this.units[ u ] ), ( n = s.substr( 0, 1 ).toUpperCase() + s.substr( 1 ) ), ( a = null !== t[ 'show' + n ] ? t[ 'show' + n ] : this.support[ s ] ), ( r[ s ] = parseInt( t[ s + 'Max' ] - ( ( t[ s + 'Max' ] - t[ s + 'Min' ] ) % t[ 'step' + n ] ), 10 ) ), ( l[ s ] = 0 ), ( d += '
' + t[ s + 'Text' ] + '
' ), a && t[ s + 'Grid' ] > 0 ) ) { if ( ( ( d += '
' ), 'hour' === s ) ) for ( var p = t[ s + 'Min' ]; p <= r[ s ]; p += parseInt( t[ s + 'Grid' ], 10 ) ) { l[ s ]++; var h = $.datepicker.formatTime( this.support.ampm ? 'hht' : 'HH', { hour: p }, t ); d += ''; } else for ( var f = t[ s + 'Min' ]; f <= r[ s ]; f += parseInt( t[ s + 'Grid' ], 10 ) ) l[ s ]++, ( d += '' ); d += '
' + h + '' + ( f < 10 ? '0' : '' ) + f + '
'; } d += '
'; } var _ = null !== t.showTimezone ? t.showTimezone : this.support.timezone; ( d += '
' + t.timezoneText + '
' ), ( d += '
' ), ( d += '
' ); var g = $( d ); for ( t.timeOnly === ! 0 && ( g.prepend( '
' + t.timeOnlyTitle + '
' ), e .find( '.ui-datepicker-header, .ui-datepicker-calendar' ) .hide() ), u = 0, c = i.units.length; u < c; u++ ) ( s = i.units[ u ] ), ( n = s.substr( 0, 1 ).toUpperCase() + s.substr( 1 ) ), ( a = null !== t[ 'show' + n ] ? t[ 'show' + n ] : this.support[ s ] ), ( i[ s + '_slider' ] = i.control.create( i, g.find( '.ui_tpicker_' + s + '_slider' ), s, i[ s ], t[ s + 'Min' ], r[ s ], t[ 'step' + n ] ) ), a && t[ s + 'Grid' ] > 0 && ( ( o = ( 100 * l[ s ] * t[ s + 'Grid' ] ) / ( r[ s ] - t[ s + 'Min' ] ) ), g .find( '.ui_tpicker_' + s + ' table' ) .css( { width: o + '%', marginLeft: t.isRTL ? '0' : o / ( -2 * l[ s ] ) + '%', marginRight: t.isRTL ? o / ( -2 * l[ s ] ) + '%' : '0', borderCollapse: 'collapse', } ) .find( 'td' ) .click( function ( e ) { var t = $( this ), n = t.html(), a = parseInt( n.replace( /[^0-9]/g ), 10 ), r = n.replace( /[^apm]/gi ), l = t.data( 'for' ); 'hour' === l && ( r.indexOf( 'p' ) !== -1 && a < 12 ? ( a += 12 ) : r.indexOf( 'a' ) !== -1 && 12 === a && ( a = 0 ) ), i.control.value( i, i[ l + '_slider' ], s, a ), i._onTimeChange(), i._onSelectHandler(); } ) .css( { cursor: 'pointer', width: 100 / l[ s ] + '%', textAlign: 'center', overflow: 'hidden', } ) ); if ( ( ( this.timezone_select = g .find( '.ui_tpicker_timezone' ) .append( '' ) .find( 'select' ) ), $.fn.append.apply( this.timezone_select, $.map( t.timezoneList, function ( e, t ) { return $( '