11/*
22 * jQuery timepicker addon
33 * By: Trent Richardson [http://trentrichardson.com]
4- * Version 1.1.1
5- * Last Modified: 11/07/2012
4+ * Version 1.1.2
5+ * Last Modified: 01/19/2013
66 *
77 * Copyright 2012 Trent Richardson
88 * You may use this project under MIT or GPL licenses.
2727 */
2828 $ . extend ( $ . ui , {
2929 timepicker : {
30- version : "1.1.1 "
30+ version : "1.1.2 "
3131 }
3232 } ) ;
3333
237237 }
238238
239239 tp_inst . timezone = tp_inst . _defaults . timezone ;
240- tp_inst . hour = tp_inst . _defaults . hour ;
241- tp_inst . minute = tp_inst . _defaults . minute ;
242- tp_inst . second = tp_inst . _defaults . second ;
243- tp_inst . millisec = tp_inst . _defaults . millisec ;
240+ tp_inst . hour = tp_inst . _defaults . hour < tp_inst . _defaults . hourMin ? tp_inst . _defaults . hourMin :
241+ tp_inst . _defaults . hour > tp_inst . _defaults . hourMax ? tp_inst . _defaults . hourMax : tp_inst . _defaults . hour ;
242+ tp_inst . minute = tp_inst . _defaults . minute < tp_inst . _defaults . minuteMin ? tp_inst . _defaults . minuteMin :
243+ tp_inst . _defaults . minute > tp_inst . _defaults . minuteMax ? tp_inst . _defaults . minuteMax : tp_inst . _defaults . minute ;
244+ tp_inst . second = tp_inst . _defaults . second < tp_inst . _defaults . secondMin ? tp_inst . _defaults . secondMin :
245+ tp_inst . _defaults . second > tp_inst . _defaults . secondMax ? tp_inst . _defaults . secondMax : tp_inst . _defaults . second ;
246+ tp_inst . millisec = tp_inst . _defaults . millisec < tp_inst . _defaults . millisecMin ? tp_inst . _defaults . millisecMin :
247+ tp_inst . _defaults . millisec > tp_inst . _defaults . millisecMax ? tp_inst . _defaults . millisecMax : tp_inst . _defaults . millisec ;
244248 tp_inst . ampm = '' ;
245249 tp_inst . $input = $input ;
246250
396400 for ( var i = 0 , l = tp_inst . units . length ; i < l ; i ++ ) {
397401 litem = tp_inst . units [ i ] ;
398402 uitem = litem . substr ( 0 , 1 ) . toUpperCase ( ) + litem . substr ( 1 ) ;
399-
403+
400404 // add the slider
401405 tp_inst [ litem + '_slider' ] = tp_inst . control . create ( tp_inst , $tp . find ( '.ui_tpicker_' + litem + '_slider' ) , litem , tp_inst [ litem ] , o [ litem + 'Min' ] , max [ litem ] , o [ 'step' + uitem ] ) ;
402406
464468 this . timezone_select . change ( function ( ) {
465469 tp_inst . _defaults . useLocalTimezone = false ;
466470 tp_inst . _onTimeChange ( ) ;
471+ tp_inst . _onSelectHandler ( ) ;
467472 } ) ;
468473 // End timezone options
469474
591596 if ( this . minute >= this . _defaults . minuteMax ) {
592597 this . minute = this . _defaults . minuteMax ;
593598 this . _defaults . secondMax = maxDateTime . getSeconds ( ) ;
594- } else if ( this . second >= this . _defaults . secondMax ) {
595- this . second = this . _defaults . secondMax ;
596- this . _defaults . millisecMax = maxDateTime . getMilliseconds ( ) ;
597- } else {
598- if ( this . millisec > this . _defaults . millisecMax ) {
599- this . millisec = this . _defaults . millisecMax ;
599+ if ( this . second >= this . _defaults . secondMax ) {
600+ this . second = this . _defaults . secondMax ;
601+ this . _defaults . millisecMax = maxDateTime . getMilliseconds ( ) ;
602+ } else {
603+ if ( this . millisec > this . _defaults . millisecMax ) {
604+ this . millisec = this . _defaults . millisecMax ;
605+ }
606+ this . _defaults . millisecMax = this . millisecMaxOriginal ;
600607 }
608+ } else {
609+ this . _defaults . secondMax = this . secondMaxOriginal ;
601610 this . _defaults . millisecMax = this . millisecMaxOriginal ;
602611 }
603612 } else {
621630
622631 if ( this . hour_slider ) {
623632 this . control . options ( this , this . hour_slider , 'hour' , { min : this . _defaults . hourMin , max : hourMax } ) ;
624- this . control . value ( this , this . hour_slider , 'hour' , this . hour ) ;
633+ this . control . value ( this , this . hour_slider , 'hour' , this . hour - ( this . hour % this . _defaults . stepHour ) ) ;
625634 }
626635 if ( this . minute_slider ) {
627636 this . control . options ( this , this . minute_slider , 'minute' , { min : this . _defaults . minuteMin , max : minMax } ) ;
628- this . control . value ( this , this . minute_slider , 'minute' , this . minute ) ;
637+ this . control . value ( this , this . minute_slider , 'minute' , this . minute - ( this . minute % this . _defaults . stepMinute ) ) ;
629638 }
630639 if ( this . second_slider ) {
631640 this . control . options ( this , this . second_slider , 'second' , { min : this . _defaults . secondMin , max : secMax } ) ;
632- this . control . value ( this , this . second_slider , 'second' , this . second ) ;
641+ this . control . value ( this , this . second_slider , 'second' , this . second - ( this . second % this . _defaults . stepSecond ) ) ;
633642 }
634643 if ( this . millisec_slider ) {
635644 this . control . options ( this , this . millisec_slider , 'millisec' , { min : this . _defaults . millisecMin , max : millisecMax } ) ;
636- this . control . value ( this , this . millisec_slider , 'millisec' , this . millisec ) ;
645+ this . control . value ( this , this . millisec_slider , 'millisec' , this . millisec - ( this . millisec % this . _defaults . stepMillisec ) ) ;
637646 }
638647 }
639648
10281037
10291038 var regstr = '^' + f . toString ( )
10301039 . replace ( / ( [ h H ] { 1 , 2 } | m m ? | s s ? | [ t T ] { 1 , 2 } | [ l z ] | ' .* ?' ) / g, function ( match ) {
1040+ var ml = match . length ;
10311041 switch ( match . charAt ( 0 ) . toLowerCase ( ) ) {
1032- case 'h' : return '(\\d?\\d)' ;
1033- case 'm' : return '(\\d?\\d)' ;
1034- case 's' : return '(\\d?\\d)' ;
1042+ case 'h' : return ml === 1 ? '(\\d?\\d)' : '(\\d{' + ml + '} )';
1043+ case 'm' : return ml === 1 ? '(\\d?\\d)' : '(\\d{' + ml + '} )';
1044+ case 's' : return ml === 1 ? '(\\d?\\d)' : '(\\d{' + ml + '} )';
10351045 case 'l' : return '(\\d?\\d?\\d)' ;
10361046 case 'z' : return '(z|[-+]\\d\\d:?\\d\\d|\\S+)?' ;
10371047 case 't' : return getPatternAmpm ( o . amNames , o . pmNames ) ;
11231133 var looseParse = function ( f , s , o ) {
11241134 try {
11251135 var d = new Date ( '2012-01-01 ' + s ) ;
1136+ if ( isNaN ( d . getTime ( ) ) ) {
1137+ d = new Date ( '2012-01-01T' + s ) ;
1138+ if ( isNaN ( d . getTime ( ) ) ) {
1139+ d = new Date ( '01/01/2012 ' + s ) ;
1140+ if ( isNaN ( d . getTime ( ) ) ) {
1141+ throw "Unable to parse time with native Date: " + s ;
1142+ }
1143+ }
1144+ }
1145+
11261146 return {
11271147 hour : d . getHours ( ) ,
1128- minutes : d . getMinutes ( ) ,
1129- seconds : d . getSeconds ( ) ,
1148+ minute : d . getMinutes ( ) ,
1149+ second : d . getSeconds ( ) ,
11301150 millisec : d . getMilliseconds ( ) ,
11311151 timezone : $ . timepicker . timeZoneOffsetString ( d )
11321152 } ;
12591279 if ( tp_inst ) {
12601280 tp_inst . _addTimePicker ( inst ) ;
12611281
1262- if ( tp_inst . _defaults . useLocalTimezone ) { //checks daylight saving with the new date.
1263- var date = new Date ( inst . selectedYear , inst . selectedMonth , inst . selectedDay , 12 ) ;
1264- selectLocalTimeZone ( tp_inst , date ) ;
1265- tp_inst . _onTimeChange ( ) ;
1266- }
1282+ // if (tp_inst._defaults.useLocalTimezone) { //checks daylight saving with the new date.
1283+ // var date = new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay, 12);
1284+ // selectLocalTimeZone(tp_inst, date);
1285+ // tp_inst._onTimeChange();
1286+ // }
12671287 }
12681288 }
12691289 } ;
13201340 altTimeFormat = tp_inst . _defaults . altTimeFormat !== null ? tp_inst . _defaults . altTimeFormat : tp_inst . _defaults . timeFormat ;
13211341
13221342 altFormattedDateTime += $ . datepicker . formatTime ( altTimeFormat , tp_inst , tp_inst . _defaults ) + altTimeSuffix ;
1323- if ( ! tp_inst . _defaults . timeOnly && ! tp_inst . _defaults . altFieldTimeOnly ) {
1343+ if ( ! tp_inst . _defaults . timeOnly && ! tp_inst . _defaults . altFieldTimeOnly && date !== null ) {
13241344 if ( tp_inst . _defaults . altFormat )
1325- altFormattedDateTime = $ . datepicker . formatDate ( tp_inst . _defaults . altFormat , ( date === null ? new Date ( ) : date ) , formatCfg ) + altSeparator + altFormattedDateTime ;
1345+ altFormattedDateTime = $ . datepicker . formatDate ( tp_inst . _defaults . altFormat , date , formatCfg ) + altSeparator + altFormattedDateTime ;
13261346 else altFormattedDateTime = tp_inst . formattedDate + altSeparator + altFormattedDateTime ;
13271347 }
13281348 $ ( altField ) . val ( altFormattedDateTime ) ;
17671787 var off = date . getTimezoneOffset ( ) * - 1 ,
17681788 minutes = off % 60 ,
17691789 hours = ( off - minutes ) / 60 ;
1770- return ( off >= 0 ? '+' : '-' ) + ( '0' + ( hours * 101 ) . toString ( ) ) . substr ( - 2 ) + ( '0' + ( minutes * 101 ) . toString ( ) ) . substr ( - 2 ) ;
1790+ return ( off >= 0 ? '+' : '-' ) + ( '0' + ( hours * 101 ) . toString ( ) ) . slice ( - 2 ) + ( '0' + ( minutes * 101 ) . toString ( ) ) . slice ( - 2 ) ;
17711791 } ;
17721792
17731793 /**
18771897 /*
18781898 * Keep up with the version
18791899 */
1880- $ . timepicker . version = "1.1.1 " ;
1900+ $ . timepicker . version = "1.1.2 " ;
18811901
1882- } ) ( jQuery ) ;
1902+ } ) ( jQuery ) ;
0 commit comments