summaryrefslogtreecommitdiffstats
path: root/jquery-ui-timepicker-addon.js
diff options
context:
space:
mode:
authorJun Omae <jun66j5@gmail.com>2011-08-09 21:25:08 +0900
committerJun Omae <jun66j5@gmail.com>2011-08-09 21:25:08 +0900
commit6737b60eee2ac9d2b698c62a2bf036a5af183c00 (patch)
treee190a0fb76deae82bbe0522e03cd9a15beb5f43c /jquery-ui-timepicker-addon.js
parent04efa5859c47725c9547b2825c248a102fa64e5b (diff)
downloadjQuery-Timepicker-Addon-6737b60eee2ac9d2b698c62a2bf036a5af183c00.zip
jQuery-Timepicker-Addon-6737b60eee2ac9d2b698c62a2bf036a5af183c00.tar.gz
jQuery-Timepicker-Addon-6737b60eee2ac9d2b698c62a2bf036a5af183c00.tar.bz2
Support timezone designators in iso8601.
Diffstat (limited to 'jquery-ui-timepicker-addon.js')
-rw-r--r--jquery-ui-timepicker-addon.js48
1 files changed, 38 insertions, 10 deletions
diff --git a/jquery-ui-timepicker-addon.js b/jquery-ui-timepicker-addon.js
index 1b17233..573e5be 100644
--- a/jquery-ui-timepicker-addon.js
+++ b/jquery-ui-timepicker-addon.js
@@ -79,10 +79,8 @@ function Timepicker() {
separator: ' ',
altFieldTimeOnly: true,
showTimepicker: true,
- timezoneList: ["-1100", "-1000", "-0900", "-0800", "-0700", "-0600",
- "-0500", "-0400", "-0300", "-0200", "-0100", "+0000",
- "+0100", "+0200", "+0300", "+0400", "+0500", "+0600",
- "+0700", "+0800", "+0900", "+1000", "+1100", "+1200"]
+ timezoneIso8609: false,
+ timezoneList: null
};
$.extend(this._defaults, this.regional['']);
}
@@ -114,10 +112,7 @@ $.extend(Timepicker.prototype, {
formattedDate: '',
formattedTime: '',
formattedDateTime: '',
- timezoneList: ["-1100", "-1000", "-0900", "-0800", "-0700", "-0600",
- "-0500", "-0400", "-0300", "-0200", "-0100", "+0000",
- "+0100", "+0200", "+0300", "+0400", "+0500", "+0600",
- "+0700", "+0800", "+0900", "+1000", "+1100", "+1200"],
+ timezoneList: null,
/* Override the default settings for all instances of the time picker.
@param settings object - the new settings to use as defaults (anonymous object)
@@ -164,6 +159,17 @@ $.extend(Timepicker.prototype, {
timepicker: tp_inst // add timepicker as a property of datepicker: $.datepicker._get(dp_inst, 'timepicker');
});
+ if (tp_inst._defaults.timezoneList === null) {
+ var timezoneList = [];
+ for (var i = -11; i <= 12; i++)
+ timezoneList.push((i >= 0 ? '+' : '-') + ('0' + Math.abs(i).toString()).slice(-2) + '00');
+ if (tp_inst._defaults.timezoneIso8609)
+ timezoneList = $.map(timezoneList, function(val) {
+ return val == '+0000' ? 'Z' : (val.substring(0, 3) + ':' + val.substring(3));
+ });
+ tp_inst._defaults.timezoneList = timezoneList;
+ }
+
tp_inst.hour = tp_inst._defaults.hour;
tp_inst.minute = tp_inst._defaults.minute;
tp_inst.second = tp_inst._defaults.second;
@@ -220,7 +226,7 @@ $.extend(Timepicker.prototype, {
.replace(/s{1,2}/ig, '(\\d?\\d)')
.replace(/l{1}/ig, '(\\d?\\d?\\d)')
.replace(/t{1,2}/ig, '(am|pm|a|p)?')
- .replace(/z{1}/ig, '((\\+|-)\\d\\d\\d\\d)?')
+ .replace(/z{1}/ig, '(z|[-+]\\d\\d:?\\d\\d)?')
.replace(/\s/g, '\\s?') + this._defaults.timeSuffix + '$',
order = this._getFormatPositions(),
treg;
@@ -255,7 +261,29 @@ $.extend(Timepicker.prototype, {
if (order.m !== -1) this.minute = Number(treg[order.m]);
if (order.s !== -1) this.second = Number(treg[order.s]);
if (order.l !== -1) this.millisec = Number(treg[order.l]);
- if (order.z !== -1) this.timezone = treg[order.z];
+ if (order.z !== -1 && treg[order.z] !== undefined) {
+ var tz = treg[order.z].toUpperCase();
+ switch (tz.length) {
+ case 1: // Z
+ tz = this._defaults.timezoneIso8609 ? 'Z' : '+0000';
+ break;
+ case 5: // +hhmm
+ if (this._defaults.timezoneIso8609)
+ tz = tz.substring(1) == '0000'
+ ? 'Z'
+ : tz.substring(0, 3) + ':' + tz.substring(3);
+ break;
+ case 6: // +hh:mm
+ if (!this._defaults.timezoneIso8609)
+ tz = tz == 'Z' || tz.substring(1) == '00:00'
+ ? '+0000'
+ : tz.replace(/:/, '');
+ else if (tz.substring(1) == '00:00')
+ tz = 'Z';
+ break;
+ }
+ this.timezone = tz;
+ }
return true;