browser-timezone-rails 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3ad69b29ede257ebb886892cff3b8faf3d0e452b
4
- data.tar.gz: c77e14a2cc1943d610e8580c52d8234d363fc16c
3
+ metadata.gz: ecd7391cbef26fb49eb9b2122d07b4e8cb9e82d9
4
+ data.tar.gz: cdf8ef151ab7b26e1499856fb653bb83fe6a8033
5
5
  SHA512:
6
- metadata.gz: 9a78eddf66a61f1663cdcd240678e9eb2655ef96cd51f876905687805025da6a7d8007a6d238f321ec59d3805163f28c78ece232ce6e8d7dbbd889202c16f00e
7
- data.tar.gz: e399113c469e5307865f04fa3e2f647b5257d4ec6b6cf1e23f8207bbfb435f4789181a46eb886588e0ae2474e8b40e103ead213e79e5f5a72c1d819de7aaae85
6
+ metadata.gz: 49fbb5bfd0b9b19cf856910de7408839215918ed0c23e88c04601449a0361ac32cd15a525aa0566d87f1acec47862d08908457734e290dc0335a62193fbc36c6
7
+ data.tar.gz: 17267734fb8e0d4217e4eac13b874531ea2d8d70d8836566aeec85150c58748947abb3dd710e43dfbea6138776d8af454da403946bde7420f78cb46f3c1059a3
@@ -13,5 +13,5 @@
13
13
  //= require jquery
14
14
  //= require jquery_ujs
15
15
  //= require jquery.cookie
16
- //= require detect_timezone
16
+ //= require jstz
17
17
  //= require browser_timezone_rails/set_time_zone
@@ -0,0 +1,358 @@
1
+ /**
2
+ * This script gives you the zone info key representing your device's time zone setting.
3
+ *
4
+ * @name jsTimezoneDetect
5
+ * @version 1.0.5
6
+ * @author Jon Nylander
7
+ * @license MIT License - http://www.opensource.org/licenses/mit-license.php
8
+ *
9
+ * For usage and examples, visit:
10
+ * http://pellepim.bitbucket.org/jstz/
11
+ *
12
+ * Copyright (c) Jon Nylander
13
+ */
14
+
15
+ /*jslint undef: true */
16
+ /*global console, exports*/
17
+
18
+ (function(root) {
19
+ /**
20
+ * Namespace to hold all the code for timezone detection.
21
+ */
22
+ var jstz = (function () {
23
+ 'use strict';
24
+ var HEMISPHERE_SOUTH = 's',
25
+
26
+ /**
27
+ * Gets the offset in minutes from UTC for a certain date.
28
+ * @param {Date} date
29
+ * @returns {Number}
30
+ */
31
+ get_date_offset = function (date) {
32
+ var offset = -date.getTimezoneOffset();
33
+ return (offset !== null ? offset : 0);
34
+ },
35
+
36
+ get_date = function (year, month, date) {
37
+ var d = new Date();
38
+ if (year !== undefined) {
39
+ d.setFullYear(year);
40
+ }
41
+ d.setMonth(month);
42
+ d.setDate(date);
43
+ return d;
44
+ },
45
+
46
+ get_january_offset = function (year) {
47
+ return get_date_offset(get_date(year, 0 ,2));
48
+ },
49
+
50
+ get_june_offset = function (year) {
51
+ return get_date_offset(get_date(year, 5, 2));
52
+ },
53
+
54
+ /**
55
+ * Private method.
56
+ * Checks whether a given date is in daylight saving time.
57
+ * If the date supplied is after august, we assume that we're checking
58
+ * for southern hemisphere DST.
59
+ * @param {Date} date
60
+ * @returns {Boolean}
61
+ */
62
+ date_is_dst = function (date) {
63
+ var is_southern = date.getMonth() > 7,
64
+ base_offset = is_southern ? get_june_offset(date.getFullYear()) :
65
+ get_january_offset(date.getFullYear()),
66
+ date_offset = get_date_offset(date),
67
+ is_west = base_offset < 0,
68
+ dst_offset = base_offset - date_offset;
69
+
70
+ if (!is_west && !is_southern) {
71
+ return dst_offset < 0;
72
+ }
73
+
74
+ return dst_offset !== 0;
75
+ },
76
+
77
+ /**
78
+ * This function does some basic calculations to create information about
79
+ * the user's timezone. It uses REFERENCE_YEAR as a solid year for which
80
+ * the script has been tested rather than depend on the year set by the
81
+ * client device.
82
+ *
83
+ * Returns a key that can be used to do lookups in jstz.olson.timezones.
84
+ * eg: "720,1,2".
85
+ *
86
+ * @returns {String}
87
+ */
88
+
89
+ lookup_key = function () {
90
+ var january_offset = get_january_offset(),
91
+ june_offset = get_june_offset(),
92
+ diff = january_offset - june_offset;
93
+
94
+ if (diff < 0) {
95
+ return january_offset + ",1";
96
+ } else if (diff > 0) {
97
+ return june_offset + ",1," + HEMISPHERE_SOUTH;
98
+ }
99
+
100
+ return january_offset + ",0";
101
+ },
102
+
103
+ /**
104
+ * Uses get_timezone_info() to formulate a key to use in the olson.timezones dictionary.
105
+ *
106
+ * Returns a primitive object on the format:
107
+ * {'timezone': TimeZone, 'key' : 'the key used to find the TimeZone object'}
108
+ *
109
+ * @returns Object
110
+ */
111
+ determine = function () {
112
+ var key = lookup_key();
113
+ return new jstz.TimeZone(jstz.olson.timezones[key]);
114
+ },
115
+
116
+ /**
117
+ * This object contains information on when daylight savings starts for
118
+ * different timezones.
119
+ *
120
+ * The list is short for a reason. Often we do not have to be very specific
121
+ * to single out the correct timezone. But when we do, this list comes in
122
+ * handy.
123
+ *
124
+ * Each value is a date denoting when daylight savings starts for that timezone.
125
+ */
126
+ dst_start_for = function (tz_name) {
127
+
128
+ var ru_pre_dst_change = new Date(2010, 6, 15, 1, 0, 0, 0), // In 2010 Russia had DST, this allows us to detect Russia :)
129
+ dst_starts = {
130
+ 'America/Denver': new Date(2011, 2, 13, 3, 0, 0, 0),
131
+ 'America/Mazatlan': new Date(2011, 3, 3, 3, 0, 0, 0),
132
+ 'America/Chicago': new Date(2011, 2, 13, 3, 0, 0, 0),
133
+ 'America/Mexico_City': new Date(2011, 3, 3, 3, 0, 0, 0),
134
+ 'America/Asuncion': new Date(2012, 9, 7, 3, 0, 0, 0),
135
+ 'America/Santiago': new Date(2012, 9, 3, 3, 0, 0, 0),
136
+ 'America/Campo_Grande': new Date(2012, 9, 21, 5, 0, 0, 0),
137
+ 'America/Montevideo': new Date(2011, 9, 2, 3, 0, 0, 0),
138
+ 'America/Sao_Paulo': new Date(2011, 9, 16, 5, 0, 0, 0),
139
+ 'America/Los_Angeles': new Date(2011, 2, 13, 8, 0, 0, 0),
140
+ 'America/Santa_Isabel': new Date(2011, 3, 5, 8, 0, 0, 0),
141
+ 'America/Havana': new Date(2012, 2, 10, 2, 0, 0, 0),
142
+ 'America/New_York': new Date(2012, 2, 10, 7, 0, 0, 0),
143
+ 'Europe/Helsinki': new Date(2013, 2, 31, 5, 0, 0, 0),
144
+ 'Pacific/Auckland': new Date(2011, 8, 26, 7, 0, 0, 0),
145
+ 'America/Halifax': new Date(2011, 2, 13, 6, 0, 0, 0),
146
+ 'America/Goose_Bay': new Date(2011, 2, 13, 2, 1, 0, 0),
147
+ 'America/Miquelon': new Date(2011, 2, 13, 5, 0, 0, 0),
148
+ 'America/Godthab': new Date(2011, 2, 27, 1, 0, 0, 0),
149
+ 'Europe/Moscow': ru_pre_dst_change,
150
+ 'Asia/Amman': new Date(2013, 2, 29, 1, 0, 0, 0),
151
+ 'Asia/Beirut': new Date(2013, 2, 31, 2, 0, 0, 0),
152
+ 'Asia/Damascus': new Date(2013, 3, 6, 2, 0, 0, 0),
153
+ 'Asia/Jerusalem': new Date(2013, 2, 29, 5, 0, 0, 0),
154
+ 'Asia/Yekaterinburg': ru_pre_dst_change,
155
+ 'Asia/Omsk': ru_pre_dst_change,
156
+ 'Asia/Krasnoyarsk': ru_pre_dst_change,
157
+ 'Asia/Irkutsk': ru_pre_dst_change,
158
+ 'Asia/Yakutsk': ru_pre_dst_change,
159
+ 'Asia/Vladivostok': ru_pre_dst_change,
160
+ 'Asia/Baku': new Date(2013, 2, 31, 4, 0, 0),
161
+ 'Asia/Yerevan': new Date(2013, 2, 31, 3, 0, 0),
162
+ 'Asia/Kamchatka': ru_pre_dst_change,
163
+ 'Asia/Gaza': new Date(2010, 2, 27, 4, 0, 0),
164
+ 'Africa/Cairo': new Date(2010, 4, 1, 3, 0, 0),
165
+ 'Europe/Minsk': ru_pre_dst_change,
166
+ 'Pacific/Apia': new Date(2010, 10, 1, 1, 0, 0, 0),
167
+ 'Pacific/Fiji': new Date(2010, 11, 1, 0, 0, 0),
168
+ 'Australia/Perth': new Date(2008, 10, 1, 1, 0, 0, 0)
169
+ };
170
+
171
+ return dst_starts[tz_name];
172
+ };
173
+
174
+ return {
175
+ determine: determine,
176
+ date_is_dst: date_is_dst,
177
+ dst_start_for: dst_start_for
178
+ };
179
+ }());
180
+
181
+ /**
182
+ * Simple object to perform ambiguity check and to return name of time zone.
183
+ */
184
+ jstz.TimeZone = function (tz_name) {
185
+ 'use strict';
186
+ /**
187
+ * The keys in this object are timezones that we know may be ambiguous after
188
+ * a preliminary scan through the olson_tz object.
189
+ *
190
+ * The array of timezones to compare must be in the order that daylight savings
191
+ * starts for the regions.
192
+ */
193
+ var AMBIGUITIES = {
194
+ 'America/Denver': ['America/Denver', 'America/Mazatlan'],
195
+ 'America/Chicago': ['America/Chicago', 'America/Mexico_City'],
196
+ 'America/Santiago': ['America/Santiago', 'America/Asuncion', 'America/Campo_Grande'],
197
+ 'America/Montevideo': ['America/Montevideo', 'America/Sao_Paulo'],
198
+ 'Asia/Beirut': ['Asia/Amman', 'Asia/Jerusalem', 'Asia/Beirut', 'Europe/Helsinki','Asia/Damascus'],
199
+ 'Pacific/Auckland': ['Pacific/Auckland', 'Pacific/Fiji'],
200
+ 'America/Los_Angeles': ['America/Los_Angeles', 'America/Santa_Isabel'],
201
+ 'America/New_York': ['America/Havana', 'America/New_York'],
202
+ 'America/Halifax': ['America/Goose_Bay', 'America/Halifax'],
203
+ 'America/Godthab': ['America/Miquelon', 'America/Godthab'],
204
+ 'Asia/Dubai': ['Europe/Moscow'],
205
+ 'Asia/Dhaka': ['Asia/Yekaterinburg'],
206
+ 'Asia/Jakarta': ['Asia/Omsk'],
207
+ 'Asia/Shanghai': ['Asia/Krasnoyarsk', 'Australia/Perth'],
208
+ 'Asia/Tokyo': ['Asia/Irkutsk'],
209
+ 'Australia/Brisbane': ['Asia/Yakutsk'],
210
+ 'Pacific/Noumea': ['Asia/Vladivostok'],
211
+ 'Pacific/Tarawa': ['Asia/Kamchatka', 'Pacific/Fiji'],
212
+ 'Pacific/Tongatapu': ['Pacific/Apia'],
213
+ 'Asia/Baghdad': ['Europe/Minsk'],
214
+ 'Asia/Baku': ['Asia/Yerevan','Asia/Baku'],
215
+ 'Africa/Johannesburg': ['Asia/Gaza', 'Africa/Cairo']
216
+ },
217
+
218
+ timezone_name = tz_name,
219
+
220
+ /**
221
+ * Checks if a timezone has possible ambiguities. I.e timezones that are similar.
222
+ *
223
+ * For example, if the preliminary scan determines that we're in America/Denver.
224
+ * We double check here that we're really there and not in America/Mazatlan.
225
+ *
226
+ * This is done by checking known dates for when daylight savings start for different
227
+ * timezones during 2010 and 2011.
228
+ */
229
+ ambiguity_check = function () {
230
+ var ambiguity_list = AMBIGUITIES[timezone_name],
231
+ length = ambiguity_list.length,
232
+ i = 0,
233
+ tz = ambiguity_list[0];
234
+
235
+ for (; i < length; i += 1) {
236
+ tz = ambiguity_list[i];
237
+
238
+ if (jstz.date_is_dst(jstz.dst_start_for(tz))) {
239
+ timezone_name = tz;
240
+ return;
241
+ }
242
+ }
243
+ },
244
+
245
+ /**
246
+ * Checks if it is possible that the timezone is ambiguous.
247
+ */
248
+ is_ambiguous = function () {
249
+ return typeof (AMBIGUITIES[timezone_name]) !== 'undefined';
250
+ };
251
+
252
+ if (is_ambiguous()) {
253
+ ambiguity_check();
254
+ }
255
+
256
+ return {
257
+ name: function () {
258
+ return timezone_name;
259
+ }
260
+ };
261
+ };
262
+
263
+ jstz.olson = {};
264
+
265
+ /*
266
+ * The keys in this dictionary are comma separated as such:
267
+ *
268
+ * First the offset compared to UTC time in minutes.
269
+ *
270
+ * Then a flag which is 0 if the timezone does not take daylight savings into account and 1 if it
271
+ * does.
272
+ *
273
+ * Thirdly an optional 's' signifies that the timezone is in the southern hemisphere,
274
+ * only interesting for timezones with DST.
275
+ *
276
+ * The mapped arrays is used for constructing the jstz.TimeZone object from within
277
+ * jstz.determine_timezone();
278
+ */
279
+ jstz.olson.timezones = {
280
+ '-720,0' : 'Pacific/Majuro',
281
+ '-660,0' : 'Pacific/Pago_Pago',
282
+ '-600,1' : 'America/Adak',
283
+ '-600,0' : 'Pacific/Honolulu',
284
+ '-570,0' : 'Pacific/Marquesas',
285
+ '-540,0' : 'Pacific/Gambier',
286
+ '-540,1' : 'America/Anchorage',
287
+ '-480,1' : 'America/Los_Angeles',
288
+ '-480,0' : 'Pacific/Pitcairn',
289
+ '-420,0' : 'America/Phoenix',
290
+ '-420,1' : 'America/Denver',
291
+ '-360,0' : 'America/Guatemala',
292
+ '-360,1' : 'America/Chicago',
293
+ '-360,1,s' : 'Pacific/Easter',
294
+ '-300,0' : 'America/Bogota',
295
+ '-300,1' : 'America/New_York',
296
+ '-270,0' : 'America/Caracas',
297
+ '-240,1' : 'America/Halifax',
298
+ '-240,0' : 'America/Santo_Domingo',
299
+ '-240,1,s' : 'America/Santiago',
300
+ '-210,1' : 'America/St_Johns',
301
+ '-180,1' : 'America/Godthab',
302
+ '-180,0' : 'America/Argentina/Buenos_Aires',
303
+ '-180,1,s' : 'America/Montevideo',
304
+ '-120,0' : 'America/Noronha',
305
+ '-120,1' : 'America/Noronha',
306
+ '-60,1' : 'Atlantic/Azores',
307
+ '-60,0' : 'Atlantic/Cape_Verde',
308
+ '0,0' : 'UTC',
309
+ '0,1' : 'Europe/London',
310
+ '60,1' : 'Europe/Berlin',
311
+ '60,0' : 'Africa/Lagos',
312
+ '60,1,s' : 'Africa/Windhoek',
313
+ '120,1' : 'Asia/Beirut',
314
+ '120,0' : 'Africa/Johannesburg',
315
+ '180,0' : 'Asia/Baghdad',
316
+ '180,1' : 'Europe/Moscow',
317
+ '210,1' : 'Asia/Tehran',
318
+ '240,0' : 'Asia/Dubai',
319
+ '240,1' : 'Asia/Baku',
320
+ '270,0' : 'Asia/Kabul',
321
+ '300,1' : 'Asia/Yekaterinburg',
322
+ '300,0' : 'Asia/Karachi',
323
+ '330,0' : 'Asia/Kolkata',
324
+ '345,0' : 'Asia/Kathmandu',
325
+ '360,0' : 'Asia/Dhaka',
326
+ '360,1' : 'Asia/Omsk',
327
+ '390,0' : 'Asia/Rangoon',
328
+ '420,1' : 'Asia/Krasnoyarsk',
329
+ '420,0' : 'Asia/Jakarta',
330
+ '480,0' : 'Asia/Shanghai',
331
+ '480,1' : 'Asia/Irkutsk',
332
+ '525,0' : 'Australia/Eucla',
333
+ '525,1,s' : 'Australia/Eucla',
334
+ '540,1' : 'Asia/Yakutsk',
335
+ '540,0' : 'Asia/Tokyo',
336
+ '570,0' : 'Australia/Darwin',
337
+ '570,1,s' : 'Australia/Adelaide',
338
+ '600,0' : 'Australia/Brisbane',
339
+ '600,1' : 'Asia/Vladivostok',
340
+ '600,1,s' : 'Australia/Sydney',
341
+ '630,1,s' : 'Australia/Lord_Howe',
342
+ '660,1' : 'Asia/Kamchatka',
343
+ '660,0' : 'Pacific/Noumea',
344
+ '690,0' : 'Pacific/Norfolk',
345
+ '720,1,s' : 'Pacific/Auckland',
346
+ '720,0' : 'Pacific/Tarawa',
347
+ '765,1,s' : 'Pacific/Chatham',
348
+ '780,0' : 'Pacific/Tongatapu',
349
+ '780,1,s' : 'Pacific/Apia',
350
+ '840,0' : 'Pacific/Kiritimati'
351
+ };
352
+
353
+ if (typeof exports !== 'undefined') {
354
+ exports.jstz = jstz;
355
+ } else {
356
+ root.jstz = jstz;
357
+ }
358
+ })(this);
@@ -1,3 +1,3 @@
1
1
  module BrowserTimezoneRails
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: browser-timezone-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - kbaum
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-02 00:00:00.000000000 Z
11
+ date: 2014-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -101,18 +101,18 @@ executables: []
101
101
  extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
+ - MIT-LICENSE
105
+ - README.md
106
+ - Rakefile
104
107
  - app/assets/javascripts/browser_timezone_rails/application.js
105
108
  - app/assets/javascripts/browser_timezone_rails/set_time_zone.js.coffee
106
- - app/assets/javascripts/detect_timezone.js
107
109
  - app/assets/javascripts/jquery.cookie.js
110
+ - app/assets/javascripts/jstz.js
108
111
  - app/controllers/browser_timezone_rails/application_controller.rb
109
112
  - config/routes.rb
113
+ - lib/browser-timezone-rails.rb
110
114
  - lib/browser-timezone-rails/engine.rb
111
115
  - lib/browser-timezone-rails/version.rb
112
- - lib/browser-timezone-rails.rb
113
- - MIT-LICENSE
114
- - Rakefile
115
- - README.md
116
116
  homepage: https://github.com/kbaum/browser-timezone-rails
117
117
  licenses: []
118
118
  metadata: {}
@@ -132,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
132
  version: '0'
133
133
  requirements: []
134
134
  rubyforge_project:
135
- rubygems_version: 2.0.3
135
+ rubygems_version: 2.2.2
136
136
  signing_key:
137
137
  specification_version: 4
138
138
  summary: Sets the browser timezone within rails
@@ -1,302 +0,0 @@
1
- /*jslint undef: true */
2
- /*global console*/
3
- /*version 2012-05-10*/
4
-
5
- /**
6
- * Namespace to hold all the code for timezone detection.
7
- */
8
- var jstz = (function () {
9
- 'use strict';
10
- var HEMISPHERE_SOUTH = 's',
11
-
12
- /**
13
- * Gets the offset in minutes from UTC for a certain date.
14
- * @param {Date} date
15
- * @returns {Number}
16
- */
17
- get_date_offset = function (date) {
18
- var offset = -date.getTimezoneOffset();
19
- return (offset !== null ? offset : 0);
20
- },
21
-
22
- get_january_offset = function () {
23
- return get_date_offset(new Date(2010, 0, 1, 0, 0, 0, 0));
24
- },
25
-
26
- get_june_offset = function () {
27
- return get_date_offset(new Date(2010, 5, 1, 0, 0, 0, 0));
28
- },
29
-
30
- /**
31
- * Private method.
32
- * Checks whether a given date is in daylight savings time.
33
- * If the date supplied is after june, we assume that we're checking
34
- * for southern hemisphere DST.
35
- * @param {Date} date
36
- * @returns {Boolean}
37
- */
38
- date_is_dst = function (date) {
39
- var base_offset = ((date.getMonth() > 5 ? get_june_offset()
40
- : get_january_offset())),
41
- date_offset = get_date_offset(date);
42
-
43
- return (base_offset - date_offset) !== 0;
44
- },
45
-
46
- /**
47
- * This function does some basic calculations to create information about
48
- * the user's timezone.
49
- *
50
- * Returns a key that can be used to do lookups in jstz.olson.timezones.
51
- *
52
- * @returns {String}
53
- */
54
-
55
- lookup_key = function () {
56
- var january_offset = get_january_offset(),
57
- june_offset = get_june_offset(),
58
- diff = get_january_offset() - get_june_offset();
59
-
60
- if (diff < 0) {
61
- return january_offset + ",1";
62
- } else if (diff > 0) {
63
- return june_offset + ",1," + HEMISPHERE_SOUTH;
64
- }
65
-
66
- return january_offset + ",0";
67
- },
68
-
69
- /**
70
- * Uses get_timezone_info() to formulate a key to use in the olson.timezones dictionary.
71
- *
72
- * Returns a primitive object on the format:
73
- * {'timezone': TimeZone, 'key' : 'the key used to find the TimeZone object'}
74
- *
75
- * @returns Object
76
- */
77
- determine = function () {
78
- var key = lookup_key();
79
- return new jstz.TimeZone(jstz.olson.timezones[key]);
80
- };
81
-
82
- return {
83
- determine_timezone : function () {
84
- if (typeof console !== 'undefined') {
85
- console.log("jstz.determine_timezone() is deprecated and will be removed in an upcoming version. Please use jstz.determine() instead.");
86
- }
87
- return determine();
88
- },
89
- determine: determine,
90
- date_is_dst : date_is_dst
91
- };
92
- }());
93
-
94
- /**
95
- * Simple object to perform ambiguity check and to return name of time zone.
96
- */
97
- jstz.TimeZone = function (tz_name) {
98
- 'use strict';
99
- var timezone_name = null,
100
-
101
- name = function () {
102
- return timezone_name;
103
- },
104
-
105
- /**
106
- * Checks if a timezone has possible ambiguities. I.e timezones that are similar.
107
- *
108
- * For example, if the preliminary scan determines that we're in America/Denver.
109
- * We double check here that we're really there and not in America/Mazatlan.
110
- *
111
- * This is done by checking known dates for when daylight savings start for different
112
- * timezones during 2010 and 2011.
113
- */
114
- ambiguity_check = function () {
115
- var ambiguity_list = jstz.olson.ambiguity_list[timezone_name],
116
- length = ambiguity_list.length,
117
- i = 0,
118
- tz = ambiguity_list[0];
119
-
120
- for (; i < length; i += 1) {
121
- tz = ambiguity_list[i];
122
-
123
- if (jstz.date_is_dst(jstz.olson.dst_start_dates[tz])) {
124
- timezone_name = tz;
125
- return;
126
- }
127
- }
128
- },
129
-
130
- /**
131
- * Checks if it is possible that the timezone is ambiguous.
132
- */
133
- is_ambiguous = function () {
134
- return typeof (jstz.olson.ambiguity_list[timezone_name]) !== 'undefined';
135
- };
136
-
137
-
138
-
139
- timezone_name = tz_name;
140
- if (is_ambiguous()) {
141
- ambiguity_check();
142
- }
143
-
144
- return {
145
- name: name
146
- };
147
- };
148
-
149
- jstz.olson = {};
150
-
151
- /*
152
- * The keys in this dictionary are comma separated as such:
153
- *
154
- * First the offset compared to UTC time in minutes.
155
- *
156
- * Then a flag which is 0 if the timezone does not take daylight savings into account and 1 if it
157
- * does.
158
- *
159
- * Thirdly an optional 's' signifies that the timezone is in the southern hemisphere,
160
- * only interesting for timezones with DST.
161
- *
162
- * The mapped arrays is used for constructing the jstz.TimeZone object from within
163
- * jstz.determine_timezone();
164
- */
165
- jstz.olson.timezones = {
166
- '-720,0' : 'Etc/GMT+12',
167
- '-660,0' : 'Pacific/Pago_Pago',
168
- '-600,1' : 'America/Adak',
169
- '-600,0' : 'Pacific/Honolulu',
170
- '-570,0' : 'Pacific/Marquesas',
171
- '-540,0' : 'Pacific/Gambier',
172
- '-540,1' : 'America/Anchorage',
173
- '-480,1' : 'America/Los_Angeles',
174
- '-480,0' : 'Pacific/Pitcairn',
175
- '-420,0' : 'America/Phoenix',
176
- '-420,1' : 'America/Denver',
177
- '-360,0' : 'America/Guatemala',
178
- '-360,1' : 'America/Chicago',
179
- '-360,1,s' : 'Pacific/Easter',
180
- '-300,0' : 'America/Bogota',
181
- '-300,1' : 'America/New_York',
182
- '-270,0' : 'America/Caracas',
183
- '-240,1' : 'America/Halifax',
184
- '-240,0' : 'America/Santo_Domingo',
185
- '-240,1,s' : 'America/Asuncion',
186
- '-210,1' : 'America/St_Johns',
187
- '-180,1' : 'America/Godthab',
188
- '-180,0' : 'America/Argentina/Buenos_Aires',
189
- '-180,1,s' : 'America/Montevideo',
190
- '-120,0' : 'America/Noronha',
191
- '-120,1' : 'Etc/GMT+2',
192
- '-60,1' : 'Atlantic/Azores',
193
- '-60,0' : 'Atlantic/Cape_Verde',
194
- '0,0' : 'Etc/UTC',
195
- '0,1' : 'Europe/London',
196
- '60,1' : 'Europe/Berlin',
197
- '60,0' : 'Africa/Lagos',
198
- '60,1,s' : 'Africa/Windhoek',
199
- '120,1' : 'Asia/Beirut',
200
- '120,0' : 'Africa/Johannesburg',
201
- '180,1' : 'Europe/Moscow',
202
- '180,0' : 'Asia/Baghdad',
203
- '210,1' : 'Asia/Tehran',
204
- '240,0' : 'Asia/Dubai',
205
- '240,1' : 'Asia/Yerevan',
206
- '270,0' : 'Asia/Kabul',
207
- '300,1' : 'Asia/Yekaterinburg',
208
- '300,0' : 'Asia/Karachi',
209
- '330,0' : 'Asia/Kolkata',
210
- '345,0' : 'Asia/Kathmandu',
211
- '360,0' : 'Asia/Dhaka',
212
- '360,1' : 'Asia/Omsk',
213
- '390,0' : 'Asia/Rangoon',
214
- '420,1' : 'Asia/Krasnoyarsk',
215
- '420,0' : 'Asia/Jakarta',
216
- '480,0' : 'Asia/Shanghai',
217
- '480,1' : 'Asia/Irkutsk',
218
- '525,0' : 'Australia/Eucla',
219
- '525,1,s' : 'Australia/Eucla',
220
- '540,1' : 'Asia/Yakutsk',
221
- '540,0' : 'Asia/Tokyo',
222
- '570,0' : 'Australia/Darwin',
223
- '570,1,s' : 'Australia/Adelaide',
224
- '600,0' : 'Australia/Brisbane',
225
- '600,1' : 'Asia/Vladivostok',
226
- '600,1,s' : 'Australia/Sydney',
227
- '630,1,s' : 'Australia/Lord_Howe',
228
- '660,1' : 'Asia/Kamchatka',
229
- '660,0' : 'Pacific/Noumea',
230
- '690,0' : 'Pacific/Norfolk',
231
- '720,1,s' : 'Pacific/Auckland',
232
- '720,0' : 'Pacific/Tarawa',
233
- '765,1,s' : 'Pacific/Chatham',
234
- '780,0' : 'Pacific/Tongatapu',
235
- '780,1,s' : 'Pacific/Apia',
236
- '840,0' : 'Pacific/Kiritimati'
237
- };
238
-
239
-
240
- /**
241
- * This object contains information on when daylight savings starts for
242
- * different timezones.
243
- *
244
- * The list is short for a reason. Often we do not have to be very specific
245
- * to single out the correct timezone. But when we do, this list comes in
246
- * handy.
247
- *
248
- * Each value is a date denoting when daylight savings starts for that timezone.
249
- */
250
- jstz.olson.dst_start_dates = {
251
- 'America/Denver' : new Date(2011, 2, 13, 3, 0, 0, 0),
252
- 'America/Mazatlan' : new Date(2011, 3, 3, 3, 0, 0, 0),
253
- 'America/Chicago' : new Date(2011, 2, 13, 3, 0, 0, 0),
254
- 'America/Mexico_City' : new Date(2011, 3, 3, 3, 0, 0, 0),
255
- 'Atlantic/Stanley' : new Date(2011, 8, 4, 7, 0, 0, 0),
256
- 'America/Asuncion' : new Date(2011, 9, 2, 3, 0, 0, 0),
257
- 'America/Santiago' : new Date(2011, 9, 9, 3, 0, 0, 0),
258
- 'America/Campo_Grande' : new Date(2011, 9, 16, 5, 0, 0, 0),
259
- 'America/Montevideo' : new Date(2011, 9, 2, 3, 0, 0, 0),
260
- 'America/Sao_Paulo' : new Date(2011, 9, 16, 5, 0, 0, 0),
261
- 'America/Los_Angeles' : new Date(2011, 2, 13, 8, 0, 0, 0),
262
- 'America/Santa_Isabel' : new Date(2011, 3, 5, 8, 0, 0, 0),
263
- 'America/Havana' : new Date(2011, 2, 13, 2, 0, 0, 0),
264
- 'America/New_York' : new Date(2011, 2, 13, 7, 0, 0, 0),
265
- 'Asia/Gaza' : new Date(2011, 2, 26, 23, 0, 0, 0),
266
- 'Asia/Beirut' : new Date(2011, 2, 27, 1, 0, 0, 0),
267
- 'Europe/Minsk' : new Date(2011, 2, 27, 2, 0, 0, 0),
268
- 'Europe/Helsinki' : new Date(2011, 2, 27, 4, 0, 0, 0),
269
- 'Europe/Istanbul' : new Date(2011, 2, 28, 5, 0, 0, 0),
270
- 'Asia/Damascus' : new Date(2011, 3, 1, 2, 0, 0, 0),
271
- 'Asia/Jerusalem' : new Date(2011, 3, 1, 6, 0, 0, 0),
272
- 'Africa/Cairo' : new Date(2010, 3, 30, 4, 0, 0, 0),
273
- 'Asia/Yerevan' : new Date(2011, 2, 27, 4, 0, 0, 0),
274
- 'Asia/Baku' : new Date(2011, 2, 27, 8, 0, 0, 0),
275
- 'Pacific/Auckland' : new Date(2011, 8, 26, 7, 0, 0, 0),
276
- 'Pacific/Fiji' : new Date(2010, 11, 29, 23, 0, 0, 0),
277
- 'America/Halifax' : new Date(2011, 2, 13, 6, 0, 0, 0),
278
- 'America/Goose_Bay' : new Date(2011, 2, 13, 2, 1, 0, 0),
279
- 'America/Miquelon' : new Date(2011, 2, 13, 5, 0, 0, 0),
280
- 'America/Godthab' : new Date(2011, 2, 27, 1, 0, 0, 0)
281
- };
282
-
283
- /**
284
- * The keys in this object are timezones that we know may be ambiguous after
285
- * a preliminary scan through the olson_tz object.
286
- *
287
- * The array of timezones to compare must be in the order that daylight savings
288
- * starts for the regions.
289
- */
290
- jstz.olson.ambiguity_list = {
291
- 'America/Denver' : ['America/Denver', 'America/Mazatlan'],
292
- 'America/Chicago' : ['America/Chicago', 'America/Mexico_City'],
293
- 'America/Asuncion' : ['Atlantic/Stanley', 'America/Asuncion', 'America/Santiago', 'America/Campo_Grande'],
294
- 'America/Montevideo' : ['America/Montevideo', 'America/Sao_Paulo'],
295
- 'Asia/Beirut' : ['Asia/Gaza', 'Asia/Beirut', 'Europe/Minsk', 'Europe/Helsinki', 'Europe/Istanbul', 'Asia/Damascus', 'Asia/Jerusalem', 'Africa/Cairo'],
296
- 'Asia/Yerevan' : ['Asia/Yerevan', 'Asia/Baku'],
297
- 'Pacific/Auckland' : ['Pacific/Auckland', 'Pacific/Fiji'],
298
- 'America/Los_Angeles' : ['America/Los_Angeles', 'America/Santa_Isabel'],
299
- 'America/New_York' : ['America/Havana', 'America/New_York'],
300
- 'America/Halifax' : ['America/Goose_Bay', 'America/Halifax'],
301
- 'America/Godthab' : ['America/Miquelon', 'America/Godthab']
302
- };