@@ -37,21 +37,24 @@ function Timepicker() {
37
37
timeText : 'Time' ,
38
38
hourText : 'Hour' ,
39
39
minuteText : 'Minute' ,
40
- secondText : 'Second'
40
+ secondText : 'Second' ,
41
+ timezoneText : 'Time Zone'
41
42
} ;
42
43
this . _defaults = { // Global defaults for all the datetime picker instances
43
44
showButtonPanel : true ,
44
45
timeOnly : false ,
45
46
showHour : true ,
46
47
showMinute : true ,
47
48
showSecond : false ,
49
+ showTimezone : false ,
48
50
showTime : true ,
49
51
stepHour : 0.05 ,
50
52
stepMinute : 0.05 ,
51
53
stepSecond : 0.05 ,
52
54
hour : 0 ,
53
55
minute : 0 ,
54
56
second : 0 ,
57
+ timezone : '+0000' ,
55
58
hourMin : 0 ,
56
59
minuteMin : 0 ,
57
60
secondMin : 0 ,
@@ -66,7 +69,11 @@ function Timepicker() {
66
69
alwaysSetTime : true ,
67
70
separator : ' ' ,
68
71
altFieldTimeOnly : true ,
69
- showTimepicker : true
72
+ showTimepicker : true ,
73
+ timezoneList : [ "-1100" , "-1000" , "-0900" , "-0800" , "-0700" , "-0600" ,
74
+ "-0500" , "-0400" , "-0300" , "-0200" , "-0100" , "+0000" ,
75
+ "+0100" , "+0200" , "+0300" , "+0400" , "+0500" , "+0600" ,
76
+ "+0700" , "+0800" , "+0900" , "+1000" , "+1100" , "+1200" ]
70
77
} ;
71
78
$ . extend ( this . _defaults , this . regional [ '' ] ) ;
72
79
}
@@ -79,9 +86,11 @@ $.extend(Timepicker.prototype, {
79
86
hour_slider : null ,
80
87
minute_slider : null ,
81
88
second_slider : null ,
89
+ timezone_select : null ,
82
90
hour : 0 ,
83
91
minute : 0 ,
84
92
second : 0 ,
93
+ timezone : '+0000' ,
85
94
hourMinOriginal : null ,
86
95
minuteMinOriginal : null ,
87
96
secondMinOriginal : null ,
@@ -92,6 +101,10 @@ $.extend(Timepicker.prototype, {
92
101
formattedDate : '' ,
93
102
formattedTime : '' ,
94
103
formattedDateTime : '' ,
104
+ timezoneList : [ "-1100" , "-1000" , "-0900" , "-0800" , "-0700" , "-0600" ,
105
+ "-0500" , "-0400" , "-0300" , "-0200" , "-0100" , "+0000" ,
106
+ "+0100" , "+0200" , "+0300" , "+0400" , "+0500" , "+0600" ,
107
+ "+0700" , "+0800" , "+0900" , "+1000" , "+1100" , "+1200" ] ,
95
108
96
109
/* Override the default settings for all instances of the time picker.
97
110
@param settings object - the new settings to use as defaults (anonymous object)
@@ -184,6 +197,7 @@ $.extend(Timepicker.prototype, {
184
197
. replace ( / m { 1 , 2 } / ig, '(\\d?\\d)' )
185
198
. replace ( / s { 1 , 2 } / ig, '(\\d?\\d)' )
186
199
. replace ( / t { 1 , 2 } / ig, '(am|pm|a|p)?' )
200
+ . replace ( / z { 1 } / ig, '((\\+|-)\\d\\d\\d\\d)?' )
187
201
. replace ( / \s / g, '\\s?' ) + '$' ,
188
202
order = this . _getFormatPositions ( ) ,
189
203
treg ;
@@ -196,7 +210,7 @@ $.extend(Timepicker.prototype, {
196
210
var dp_dateFormat = $ . datepicker . _get ( this . inst , 'dateFormat' ) ;
197
211
regstr = '.{' + dp_dateFormat . length + ',}' + this . _defaults . separator + regstr ;
198
212
}
199
-
213
+
200
214
treg = timeString . match ( new RegExp ( regstr , 'i' ) ) ;
201
215
202
216
if ( treg ) {
@@ -215,6 +229,7 @@ $.extend(Timepicker.prototype, {
215
229
216
230
if ( order . m !== - 1 ) this . minute = Number ( treg [ order . m ] ) ;
217
231
if ( order . s !== - 1 ) this . second = Number ( treg [ order . s ] ) ;
232
+ if ( order . z !== - 1 ) this . timezone = treg [ order . z ] ;
218
233
219
234
return true ;
220
235
@@ -226,8 +241,8 @@ $.extend(Timepicker.prototype, {
226
241
// figure out position of time elements.. cause js cant do named captures
227
242
//########################################################################
228
243
_getFormatPositions : function ( ) {
229
- var finds = this . _defaults . timeFormat . toLowerCase ( ) . match ( / ( h { 1 , 2 } | m { 1 , 2 } | s { 1 , 2 } | t { 1 , 2 } ) / g) ,
230
- orders = { h : - 1 , m : - 1 , s : - 1 , t : - 1 } ;
244
+ var finds = this . _defaults . timeFormat . toLowerCase ( ) . match ( / ( h { 1 , 2 } | m { 1 , 2 } | s { 1 , 2 } | t { 1 , 2 } | z ) / g) ,
245
+ orders = { h : - 1 , m : - 1 , s : - 1 , t : - 1 , z : - 1 } ;
231
246
232
247
if ( finds )
233
248
for ( var i = 0 ; i < finds . length ; i ++ )
@@ -327,6 +342,11 @@ $.extend(Timepicker.prototype, {
327
342
'</dd>' ;
328
343
} else html += '<dd class="ui_tpicker_second" id="ui_tpicker_second_' + dp_id + '"' +
329
344
( ( o . showSecond ) ? '' : noDisplay ) + '></dd>' ;
345
+
346
+ html += '<dt class="ui_tpicker_timezone_label" id="ui_tpicker_timezone_label_' + dp_id + '"' +
347
+ ( ( o . showTimezone ) ? '' : noDisplay ) + '>' + o . timezoneText + '</dt>' ;
348
+ html += '<dd class="ui_tpicker_timezone" id="ui_tpicker_timezone_' + dp_id + '"' +
349
+ ( ( o . showTimezone ) ? '' : noDisplay ) + '></dd>' ;
330
350
331
351
html += '</dl></div>' ;
332
352
$tp = $ ( html ) ;
@@ -378,6 +398,20 @@ $.extend(Timepicker.prototype, {
378
398
tp_inst . _onTimeChange ( ) ;
379
399
}
380
400
} ) ;
401
+
402
+
403
+ this . timezone_select = $tp . find ( '#ui_tpicker_timezone_' + dp_id ) . append ( '<select></select>' ) . find ( "select" ) ;
404
+ $ . fn . append . apply ( this . timezone_select ,
405
+ $ . map ( o . timezoneList , function ( val , idx ) {
406
+ return $ ( "<option />" )
407
+ . val ( typeof val == "object" ? val . value : val )
408
+ . text ( typeof val == "object" ? val . label : val ) ;
409
+ } )
410
+ ) ;
411
+ this . timezone_select . val ( ( typeof this . timezone != "undefined" && this . timezone != null && this . timezone != "" ) ? this . timezone : o . timezone ) ;
412
+ this . timezone_select . change ( function ( ) {
413
+ tp_inst . _onTimeChange ( ) ;
414
+ } ) ;
381
415
382
416
// Add grid functionality
383
417
if ( o . showHour && o . hourGrid > 0 ) {
@@ -546,8 +580,9 @@ $.extend(Timepicker.prototype, {
546
580
_onTimeChange : function ( ) {
547
581
var hour = ( this . hour_slider ) ? this . hour_slider . slider ( 'value' ) : false ,
548
582
minute = ( this . minute_slider ) ? this . minute_slider . slider ( 'value' ) : false ,
549
- second = ( this . second_slider ) ? this . second_slider . slider ( 'value' ) : false ;
550
-
583
+ second = ( this . second_slider ) ? this . second_slider . slider ( 'value' ) : false ,
584
+ timezone = ( this . timezone_select ) ? this . timezone_select . val ( ) : false
585
+
551
586
if ( hour !== false ) hour = parseInt ( hour , 10 ) ;
552
587
if ( minute !== false ) minute = parseInt ( minute , 10 ) ;
553
588
if ( second !== false ) second = parseInt ( second , 10 ) ;
@@ -556,13 +591,14 @@ $.extend(Timepicker.prototype, {
556
591
557
592
// If the update was done in the input field, the input field should not be updated.
558
593
// If the update was done using the sliders, update the input field.
559
- var hasChanged = ( hour != this . hour || minute != this . minute || second != this . second || ( this . ampm . length > 0 && this . ampm != ampm ) ) ;
594
+ var hasChanged = ( hour != this . hour || minute != this . minute || second != this . second || ( this . ampm . length > 0 && this . ampm != ampm ) || timezone != this . timezone ) ;
560
595
561
596
if ( hasChanged ) {
562
597
563
598
if ( hour !== false ) this . hour = hour ;
564
599
if ( minute !== false ) this . minute = minute ;
565
600
if ( second !== false ) this . second = second ;
601
+ if ( timezone !== false ) this . timezone = timezone ;
566
602
}
567
603
if ( this . _defaults . ampm ) this . ampm = ampm ;
568
604
@@ -589,7 +625,7 @@ $.extend(Timepicker.prototype, {
589
625
//########################################################################
590
626
_formatTime : function ( time , format , ampm ) {
591
627
if ( ampm == undefined ) ampm = this . _defaults . ampm ;
592
- time = time || { hour : this . hour , minute : this . minute , second : this . second , ampm : this . ampm } ;
628
+ time = time || { hour : this . hour , minute : this . minute , second : this . second , ampm : this . ampm , timezone : this . timezone } ;
593
629
var tmptime = format || this . _defaults . timeFormat . toString ( ) ;
594
630
595
631
if ( ampm ) {
@@ -605,15 +641,17 @@ $.extend(Timepicker.prototype, {
605
641
. replace ( / T T / g, time . ampm . toUpperCase ( ) )
606
642
. replace ( / t t / g, time . ampm . toLowerCase ( ) )
607
643
. replace ( / T / g, time . ampm . charAt ( 0 ) . toUpperCase ( ) )
608
- . replace ( / t / g, time . ampm . charAt ( 0 ) . toLowerCase ( ) ) ;
644
+ . replace ( / t / g, time . ampm . charAt ( 0 ) . toLowerCase ( ) )
645
+ . replace ( / z / g, time . timezone ) ;
609
646
} else {
610
647
tmptime = tmptime . toString ( )
611
648
. replace ( / h h / g, ( ( time . hour < 10 ) ? '0' : '' ) + time . hour )
612
649
. replace ( / h / g, time . hour )
613
650
. replace ( / m m / g, ( ( time . minute < 10 ) ? '0' : '' ) + time . minute )
614
651
. replace ( / m / g, time . minute )
615
652
. replace ( / s s / g, ( ( time . second < 10 ) ? '0' : '' ) + time . second )
616
- . replace ( / s / g, time . second ) ;
653
+ . replace ( / s / g, time . second )
654
+ . replace ( / z / g, time . timezone ) ;
617
655
tmptime = $ . trim ( tmptime . replace ( / t / gi, '' ) ) ;
618
656
}
619
657
0 commit comments