@@ -28,84 +28,6 @@ if ($.ui.timepicker.version) {
2828
2929$ . extend ( $ . ui , { timepicker : { version : "1.0.1" } } ) ;
3030
31- //#######################################################################################
32- // Return regexp to parse possible am/pm time postfixes.
33- // amNames, pmNames - arrays of strings
34- //#######################################################################################
35- var getPatternAmpm = function ( amNames , pmNames ) {
36- var markers = [ ] ;
37- if ( amNames )
38- $ . merge ( markers , amNames ) ;
39- if ( pmNames )
40- $ . merge ( markers , pmNames ) ;
41- markers = $ . map ( markers , function ( val ) { return val . replace ( / [ . * + ? | ( ) \[ \] { } \\ ] / g, '\\$&' ) ; } ) ;
42- return '(' + markers . join ( '|' ) + ')?' ;
43- }
44-
45- var getFormatPositions = function ( timeFormat ) {
46- var finds = timeFormat . toLowerCase ( ) . match ( / ( h { 1 , 2 } | m { 1 , 2 } | s { 1 , 2 } | l { 1 } | t { 1 , 2 } | z ) / g) ,
47- orders = { h : - 1 , m : - 1 , s : - 1 , l : - 1 , t : - 1 , z : - 1 } ;
48-
49- if ( finds )
50- for ( var i = 0 ; i < finds . length ; i ++ )
51- if ( orders [ finds [ i ] . toString ( ) . charAt ( 0 ) ] == - 1 )
52- orders [ finds [ i ] . toString ( ) . charAt ( 0 ) ] = i + 1 ;
53-
54- return orders ;
55- }
56-
57- //#######################################################################################
58- // Splits datetime string into date ans time substrings.
59- // Throws exception when date can't be parsed
60- // If only date is present, time substring eill be ''
61- //#######################################################################################
62- var splitDateTime = function ( dateFormat , dateTimeString , dateSettings )
63- {
64- try {
65- var date = $ . datepicker . _base_parseDate ( dateFormat , dateTimeString , dateSettings ) ;
66- } catch ( err ) {
67- if ( err . indexOf ( ":" ) >= 0 ) {
68- // Hack! The error message ends with a colon, a space, and
69- // the "extra" characters. We rely on that instead of
70- // attempting to perfectly reproduce the parsing algorithm.
71- var dateStringLength = dateTimeString . length - ( err . length - err . indexOf ( ':' ) - 2 ) ;
72- var timeString = dateTimeString . substring ( dateStringLength ) ;
73-
74- return [ dateTimeString . substring ( 0 , dateStringLength ) , dateTimeString . substring ( dateStringLength ) ]
75-
76- } else {
77- throw err ;
78- }
79- }
80- return [ dateTimeString , '' ] ;
81- }
82-
83- //#######################################################################################
84- // Internal function to parse datetime interval
85- // Returns: {date: Date, timeObj: Object}, where
86- // date is parsed date withowt time (type Date)
87- // timeObj = {hour: , minute: , second: , millisec: } - parsed time. Can be missed
88- //#######################################################################################
89- var parseDateTimeInternal = function ( dateFormat , timeFormat , dateTimeString , dateSettings , timeSettings )
90- {
91- var date ;
92- var splitRes = splitDateTime ( dateFormat , dateTimeString , dateSettings ) ;
93- date = $ . datepicker . _base_parseDate ( dateFormat , splitRes [ 0 ] , dateSettings ) ;
94- if ( splitRes [ 1 ] != '' )
95- {
96- var timeString = splitRes [ 1 ] ;
97- var separator = timeSettings && timeSettings . separator ? timeSettings . separator : $ . timepicker . _defaults . separator ;
98- if ( timeString . indexOf ( separator ) != 0 )
99- throw 'Missing time separator' ;
100- timeString = timeString . substring ( separator . length ) ;
101- var parsedTime = $ . datepicker . parseTime ( timeFormat , timeString , timeSettings ) ;
102- if ( parsedTime === null )
103- throw 'Wrong time format' ;
104- return { date : date , timeObj : parsedTime } ;
105- }
106- else
107- return { date : date } ;
108- }
10931/* Time picker manager.
11032 Use the singleton instance of this class, $.timepicker, to interact with the time picker.
11133 Settings for (groups of) time pickers are maintained in an instance object,
@@ -332,21 +254,7 @@ $.extend(Timepicker.prototype, {
332254 return true ;
333255 }
334256 } ,
335-
336- //########################################################################
337- // pattern for standard and localized AM/PM markers
338- //########################################################################
339- _getPatternAmpm : function ( ) {
340- return getPatternAmpm ( this . _defaults . amNames , this . _defaults . pmNames ) ;
341- } ,
342-
343- //########################################################################
344- // figure out position of time elements.. cause js cant do named captures
345- //########################################################################
346- _getFormatPositions : function ( ) {
347- return getFormatPositions ( this . _defaults . timeFormat ) ;
348- } ,
349-
257+
350258 //########################################################################
351259 // generate and inject html for timepicker into ui datepicker
352260 //########################################################################
@@ -954,6 +862,35 @@ $.datepicker.parseDateTime = function(dateFormat, timeFormat, dateTimeString, da
954862}
955863
956864$ . datepicker . parseTime = function ( timeFormat , timeString , options ) {
865+
866+ //########################################################################
867+ // pattern for standard and localized AM/PM markers
868+ //########################################################################
869+ var getPatternAmpm = function ( amNames , pmNames ) {
870+ var markers = [ ] ;
871+ if ( amNames )
872+ $ . merge ( markers , amNames ) ;
873+ if ( pmNames )
874+ $ . merge ( markers , pmNames ) ;
875+ markers = $ . map ( markers , function ( val ) { return val . replace ( / [ . * + ? | ( ) \[ \] { } \\ ] / g, '\\$&' ) ; } ) ;
876+ return '(' + markers . join ( '|' ) + ')?' ;
877+ }
878+
879+ //########################################################################
880+ // figure out position of time elements.. cause js cant do named captures
881+ //########################################################################
882+ var getFormatPositions = function ( timeFormat ) {
883+ var finds = timeFormat . toLowerCase ( ) . match ( / ( h { 1 , 2 } | m { 1 , 2 } | s { 1 , 2 } | l { 1 } | t { 1 , 2 } | z ) / g) ,
884+ orders = { h : - 1 , m : - 1 , s : - 1 , l : - 1 , t : - 1 , z : - 1 } ;
885+
886+ if ( finds )
887+ for ( var i = 0 ; i < finds . length ; i ++ )
888+ if ( orders [ finds [ i ] . toString ( ) . charAt ( 0 ) ] == - 1 )
889+ orders [ finds [ i ] . toString ( ) . charAt ( 0 ) ] = i + 1 ;
890+
891+ return orders ;
892+ }
893+
957894 var o = extendRemove ( extendRemove ( { } , $ . timepicker . _defaults ) , options || { } ) ;
958895
959896 var regstr = '^' + timeFormat . toString ( )
@@ -987,7 +924,7 @@ $.datepicker.parseTime = function(timeFormat, timeString, options) {
987924 if ( ampm == 'AM' && treg [ order . h ] == '12' )
988925 resTime . hour = 0 ; // 12am = 0 hour
989926 else if ( ampm == 'PM' && treg [ order . h ] != '12' )
990- resTime . hour = Number ( treg [ order . h ] ) + 12 ; // 12pm = 12 hour, any other pm = hour + 12
927+ resTime . hour = parseInt ( treg [ order . h ] , 10 ) + 12 ; // 12pm = 12 hour, any other pm = hour + 12
991928 else resTime . hour = Number ( treg [ order . h ] ) ;
992929 }
993930
@@ -1409,7 +1346,60 @@ function extendRemove(target, props) {
14091346 return target ;
14101347} ;
14111348
1349+ //#######################################################################################
1350+ // Splits datetime string into date ans time substrings.
1351+ // Throws exception when date can't be parsed
1352+ // If only date is present, time substring eill be ''
1353+ //#######################################################################################
1354+ var splitDateTime = function ( dateFormat , dateTimeString , dateSettings )
1355+ {
1356+ try {
1357+ var date = $ . datepicker . _base_parseDate ( dateFormat , dateTimeString , dateSettings ) ;
1358+ } catch ( err ) {
1359+ if ( err . indexOf ( ":" ) >= 0 ) {
1360+ // Hack! The error message ends with a colon, a space, and
1361+ // the "extra" characters. We rely on that instead of
1362+ // attempting to perfectly reproduce the parsing algorithm.
1363+ var dateStringLength = dateTimeString . length - ( err . length - err . indexOf ( ':' ) - 2 ) ;
1364+ var timeString = dateTimeString . substring ( dateStringLength ) ;
1365+
1366+ return [ dateTimeString . substring ( 0 , dateStringLength ) , dateTimeString . substring ( dateStringLength ) ]
1367+
1368+ } else {
1369+ throw err ;
1370+ }
1371+ }
1372+ return [ dateTimeString , '' ] ;
1373+ }
1374+
1375+ //#######################################################################################
1376+ // Internal function to parse datetime interval
1377+ // Returns: {date: Date, timeObj: Object}, where
1378+ // date - parsed date without time (type Date)
1379+ // timeObj = {hour: , minute: , second: , millisec: } - parsed time. Optional
1380+ //#######################################################################################
1381+ var parseDateTimeInternal = function ( dateFormat , timeFormat , dateTimeString , dateSettings , timeSettings )
1382+ {
1383+ var date ;
1384+ var splitRes = splitDateTime ( dateFormat , dateTimeString , dateSettings ) ;
1385+ date = $ . datepicker . _base_parseDate ( dateFormat , splitRes [ 0 ] , dateSettings ) ;
1386+ if ( splitRes [ 1 ] != '' )
1387+ {
1388+ var timeString = splitRes [ 1 ] ;
1389+ var separator = timeSettings && timeSettings . separator ? timeSettings . separator : $ . timepicker . _defaults . separator ;
1390+ if ( timeString . indexOf ( separator ) != 0 )
1391+ throw 'Missing time separator' ;
1392+ timeString = timeString . substring ( separator . length ) ;
1393+ var parsedTime = $ . datepicker . parseTime ( timeFormat , timeString , timeSettings ) ;
1394+ if ( parsedTime === null )
1395+ throw 'Wrong time format' ;
1396+ return { date : date , timeObj : parsedTime } ;
1397+ }
1398+ else
1399+ return { date : date } ;
1400+ }
1401+
14121402$ . timepicker = new Timepicker ( ) ; // singleton instance
14131403$ . timepicker . version = "1.0.1" ;
14141404
1415- } ) ( jQuery ) ;
1405+ } ) ( jQuery ) ;
0 commit comments