You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by mg...@apache.org on 2017/02/07 09:11:43 UTC
[1/8] ambari git commit: AMBARI-19878 Log Search Portal time zone
selection bug (mgergely)
Repository: ambari
Updated Branches:
refs/heads/trunk e55a595ac -> 5c7997f59
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c7997f5/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/Init.js
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/Init.js b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/Init.js
index cc16129..ed940041 100644
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/Init.js
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/Init.js
@@ -16,224 +16,223 @@
* limitations under the License.
*/
- require.config({
-
- // baseUrl: "/scripts",
-
- urlArgs: 'ver=build.version',
-
- /* starting point for application */
- deps: ['backbone.marionette', 'bootstrap', 'Main', 'globalize', 'utils/LangSupport'],
-
- waitSeconds: 30,
-
- shim: {
- 'backbone': {
- deps: ['underscore', 'jquery'],
- exports: 'Backbone'
- },
- 'underscore': {
- exports: '_'
- },
- 'backbone.marionette': {
- deps: ['backbone']
- },
- bootstrap: {
- deps: ['jquery'],
- exports: 'jquery'
- },
- 'backgrid': {
- deps: ['backbone', 'jquery'],
- exports: 'Backgrid'
- },
- 'backgrid-paginator': {
- deps: ['backbone', 'backgrid']
- },
- 'backgrid-filter': {
- deps: ['backbone', 'backgrid']
- },
- 'backgrid-select-all': {
- deps: ['backbone', 'backgrid']
- },
- 'backgrid-filter': {
- deps: ['backbone', 'backgrid']
- },
- 'backgrid-columnmanager': {
- deps: ['backbone', 'backgrid'],
- },
- 'backgrid-sizeable': {
- deps: ['backbone', 'backgrid'],
- },
- 'backgrid-orderable': {
- deps: ['backbone', 'backgrid'],
- },
- /* 'backbone-forms.templates': {
- deps: ['backbone-forms.list', 'backbone-forms']
- },
- 'backbone-forms.XAOverrides': {
- deps: ['backbone-forms']
- },*/
- 'Backbone.BootstrapModal': {
- deps: ['jquery', 'underscore', 'backbone']
- },
- 'bootstrap-editable': {
+require.config({
+
+ // baseUrl: "/scripts",
+
+ urlArgs: 'ver=build.version',
+
+ /* starting point for application */
+ deps: ['backbone.marionette', 'bootstrap', 'Main', 'globalize', 'utils/LangSupport'],
+
+ waitSeconds: 30,
+
+ shim: {
+ 'backbone': {
+ deps: ['underscore', 'jquery'],
+ exports: 'Backbone'
+ },
+ 'underscore': {
+ exports: '_'
+ },
+ 'backbone.marionette': {
+ deps: ['backbone']
+ },
+ bootstrap: {
+ deps: ['jquery'],
+ exports: 'jquery'
+ },
+ 'backgrid': {
+ deps: ['backbone', 'jquery'],
+ exports: 'Backgrid'
+ },
+ 'backgrid-paginator': {
+ deps: ['backbone', 'backgrid']
+ },
+ 'backgrid-filter': {
+ deps: ['backbone', 'backgrid']
+ },
+ 'backgrid-select-all': {
+ deps: ['backbone', 'backgrid']
+ },
+ 'backgrid-filter': {
+ deps: ['backbone', 'backgrid']
+ },
+ 'backgrid-columnmanager': {
+ deps: ['backbone', 'backgrid'],
+ },
+ 'backgrid-sizeable': {
+ deps: ['backbone', 'backgrid'],
+ },
+ 'backgrid-orderable': {
+ deps: ['backbone', 'backgrid'],
+ },
+ /* 'backbone-forms.templates': {
+ deps: ['backbone-forms.list', 'backbone-forms']
+ },
+ 'backbone-forms.XAOverrides': {
+ deps: ['backbone-forms']
+ },*/
+ 'Backbone.BootstrapModal': {
+ deps: ['jquery', 'underscore', 'backbone']
+ },
+ 'bootstrap-editable': {
+ deps: ['bootstrap']
+ },
+ /* 'jquery-toggles': {
+ deps: ['jquery']
+ },
+ 'jquery.cookie': {
+ deps: ['jquery']
+ },
+ 'tag-it': {
+ deps: ['jquery', 'jquery-ui']
+ },*/
+ 'jquery-ui': {
+ deps: ['jquery']
+ },
+ 'globalize': {
+ exports: 'Globalize'
+ },
+ /* 'bootstrap-datepicker': {
deps: ['bootstrap']
- },
- /* 'jquery-toggles': {
- deps: ['jquery']
- },
- 'jquery.cookie': {
- deps: ['jquery']
- },
- 'tag-it': {
- deps: ['jquery', 'jquery-ui']
- },*/
- 'jquery-ui': {
- deps: ['jquery']
- },
- 'globalize': {
- exports: 'Globalize'
- },
- /* 'bootstrap-datepicker': {
- deps: ['bootstrap']
- },*/
- 'bootstrap-daterangepicker': {
- deps: ['bootstrap', 'jquery', 'moment'],
- exports: 'daterangepicker'
- },
- /*
- 'bootstrap-notify': {
- deps: ['jquery', 'bootstrap'],
- },*/
- moment: {
- deps: [],
- exports: 'moment'
- },
- 'moment-tz': {
- deps: ['moment']
- },
- 'localstorage': {
- deps: ['backbone', 'underscore', 'jquery']
- },
- 'backbone-fetch-cache': {
- deps: ['backbone', 'underscore', 'jquery']
- },
- 'visualsearch': {
- deps: ['jquery', 'jquery-ui', 'backbone', 'underscore']
- },
- 'select2': {
- deps: ['jquery', 'bootstrap']
- },
- 'bootbox': {
- deps: ['jquery']
- },
- 'd3.tip': {
- deps: ['d3']
- },
- 'nv': {
- deps: ['d3'],
- exports: 'nv'
- },
- noty: {
- deps: ['jquery'],
- },
- WorldMapGenerator: {
- deps: ['jquery']
- },
- jstimezonedetect: {
- exports: 'jstz'
- },
- sparkline: {
- deps: ['jquery']
- },
- gridster: {
- deps: ['jquery']
- },
- dashboard: {
- deps: ['jquery', 'jquery-ui', 'gridster']
- },
- tour : {
- exports : 'tour'
- }
-
- },
-
- paths: {
-
- jquery: '../libs/bower/jquery/js/jquery.min',
- 'jquery-ui': '../libs/other/jquery-ui/js/jquery-ui-1.11.4.min',
- backbone: '../libs/bower/backbone-amd/js/backbone',
- underscore: '../libs/bower/underscore-amd/js/underscore',
-
- /* alias all marionette libs */
- 'backbone.marionette': '../libs/bower/backbone.marionette/js/backbone.marionette',
- 'backbone.wreqr': '../libs/bower/backbone.wreqr/js/backbone.wreqr',
- 'backbone.babysitter': '../libs/bower/backbone.babysitter/js/backbone.babysitter',
-
- /* alias the bootstrap js lib */
- bootstrap: '../libs/bower/bootstrap/bootstrap',
-
- /* BackGrid for Tables */
- 'backgrid': '../libs/bower/backgrid/js/backgrid.min',
- 'backgrid-filter': '../libs/bower/backgrid-filter/js/backgrid-filter.min',
- 'backgrid-select-all': '../libs/bower/backgrid-select-all/js/backgrid-select-all.min',
- 'backbone.paginator': '../libs/bower/backbone.paginator/js/backbone.paginator.min',
- 'backgrid-paginator': '../libs/bower/backgrid-paginator/js/backgrid-paginator.min',
- 'backgrid-columnmanager': '../libs/bower/backgrid-columnmanager/Backgrid.ColumnManager',
- 'backgrid-sizeable': '../libs/bower/backgrid-sizeable/js/backgrid-sizeable-columns',
- 'backgrid-orderable': '../libs/bower/backgrid-sizeable/backgrid-orderable-columns',
-
- 'backbone-pageable': '../libs/bower/backbone-pageable/js/backbone-pageable',
- 'localstorage': '../libs/bower/backbone.localstorage/backbone.localStorage',
- /*'backbone-forms': '../libs/bower/backbone-forms/js/backbone-forms',
- 'backbone-forms.list': '../libs/bower/backbone-forms/js/list',
- ' backbone-forms.templates': '../libs/bower/backbone-forms/js/bootstrap',
- 'backbone-forms.XAOverrides': '../libs/fsOverrides/BBFOverrides',*/
-
- /*'Backbone.BootstrapModal': '../libs/bower/backbone.bootstrap-modal/js/backbone.bootstrap-modal',
- 'bootstrap-editable': '../libs/bower/x-editable/js/bootstrap-editable',
- 'bootstrap-datepicker': '../libs/other/datepicker/js/bootstrap-datepicker',
- 'bootstrap-notify': '../libs/bower/bootstrap-notify/js/bootstrap-notify',*/
- 'bootstrap-daterangepicker': '../libs/other/daterangepicker/js/daterangepicker',
-
-
- /*'jquery.cookie': '../libs/other/jquery-cookie/js/jquery.cookie',
- 'jquery-toggles': '../libs/bower/jquery-toggles/js/toggles.min',
- 'tag-it': '../libs/bower/tag-it/js/tag-it',*/
- 'select2': '../libs/bower/select2/select2',
- 'bootbox': '../libs/bower/bootbox/js/bootbox.min',
- 'moment': '../libs/bower/moment/js/moment.min',
- 'moment-tz': '../libs/bower/moment/js/moment-timezone-with-data.min',
- 'visualsearch': '../libs/other/custom/visualsearch/visualsearch',
- 'globalize': '../libs/bower/globalize/lib/globalize',
- /*'handlebars from the require handlerbars plugin below */
- 'handlebars': '../libs/bower/require-handlebars-plugin/js/Handlebars',
- /* require handlebars plugin - Alex Sexton */
- 'i18nprecompile': '../libs/bower/require-handlebars-plugin/js/i18nprecompile',
- 'json2': '../libs/bower/require-handlebars-plugin/js/json2',
- 'hbs': '../libs/bower/require-handlebars-plugin/js/hbs',
- 'd3': "../libs/other/d3/d3.min",
- 'd3.tip': "../libs/other/d3/d3.tip",
- 'nv': "../libs/other/nvd3/js/nv.d3",
- 'noty': '../libs/other/noty/jquery.noty.packaged',
- 'tmpl': '../templates',
- 'WorldMapGenerator': '../libs/other/timezone/WorldMapGenerator',
- 'jstimezonedetect': '../libs/other/timezone/jstz-1.0.4.min',
- 'sparkline': '../libs/other/sparkline/jquery.sparkline',
- 'gridster': '../libs/other/gridster/js/jquery.gridster',
- 'dashboard': '../libs/other/dashboard/dashboard',
- 'tour' : '../libs/other/bootstrap-tour-0.10.3/js/bootstrap-tour.min'
-
-
- },
-
- hbs: {
- disableI18n: true,
- helperPathCallback: // Callback to determine the path to look for helpers
- function(name) { // ('/template/helpers/'+name by default)
- return "../helpers/Helpers";
- },
- templateExtension: "html",
- compileOptions: {}
- }
- });
+ },*/
+ 'bootstrap-daterangepicker': {
+ deps: ['bootstrap', 'jquery', 'moment'],
+ exports: 'daterangepicker'
+ },
+ /* 'bootstrap-notify': {
+ deps: ['jquery', 'bootstrap'],
+ },*/
+ moment: {
+ deps: [],
+ exports: 'moment'
+ },
+ 'moment-tz': {
+ deps: ['moment']
+ },
+ 'localstorage': {
+ deps: ['backbone', 'underscore', 'jquery']
+ },
+ 'backbone-fetch-cache': {
+ deps: ['backbone', 'underscore', 'jquery']
+ },
+ 'visualsearch': {
+ deps: ['jquery', 'jquery-ui', 'backbone', 'underscore']
+ },
+ 'select2': {
+ deps: ['jquery', 'bootstrap']
+ },
+ 'bootbox': {
+ deps: ['jquery']
+ },
+ 'd3.tip': {
+ deps: ['d3']
+ },
+ 'nv': {
+ deps: ['d3'],
+ exports: 'nv'
+ },
+ noty: {
+ deps: ['jquery'],
+ },
+ WorldMapGenerator: {
+ deps: ['jquery']
+ },
+ jstimezonedetect: {
+ exports: 'jstz'
+ },
+ sparkline: {
+ deps: ['jquery']
+ },
+ gridster: {
+ deps: ['jquery']
+ },
+ dashboard: {
+ deps: ['jquery', 'jquery-ui', 'gridster']
+ },
+ tour : {
+ exports : 'tour'
+ }
+
+ },
+
+ paths: {
+
+ jquery: '../libs/bower/jquery/js/jquery.min',
+ 'jquery-ui': '../libs/other/jquery-ui/js/jquery-ui-1.11.4.min',
+ backbone: '../libs/bower/backbone-amd/js/backbone',
+ underscore: '../libs/bower/underscore-amd/js/underscore',
+
+ /* alias all marionette libs */
+ 'backbone.marionette': '../libs/bower/backbone.marionette/js/backbone.marionette',
+ 'backbone.wreqr': '../libs/bower/backbone.wreqr/js/backbone.wreqr',
+ 'backbone.babysitter': '../libs/bower/backbone.babysitter/js/backbone.babysitter',
+
+ /* alias the bootstrap js lib */
+ bootstrap: '../libs/bower/bootstrap/bootstrap',
+
+ /* BackGrid for Tables */
+ 'backgrid': '../libs/bower/backgrid/js/backgrid.min',
+ 'backgrid-filter': '../libs/bower/backgrid-filter/js/backgrid-filter.min',
+ 'backgrid-select-all': '../libs/bower/backgrid-select-all/js/backgrid-select-all.min',
+ 'backbone.paginator': '../libs/bower/backbone.paginator/js/backbone.paginator.min',
+ 'backgrid-paginator': '../libs/bower/backgrid-paginator/js/backgrid-paginator.min',
+ 'backgrid-columnmanager': '../libs/bower/backgrid-columnmanager/Backgrid.ColumnManager',
+ 'backgrid-sizeable': '../libs/bower/backgrid-sizeable/js/backgrid-sizeable-columns',
+ 'backgrid-orderable': '../libs/bower/backgrid-sizeable/backgrid-orderable-columns',
+
+ 'backbone-pageable': '../libs/bower/backbone-pageable/js/backbone-pageable',
+ 'localstorage': '../libs/bower/backbone.localstorage/backbone.localStorage',
+ /*'backbone-forms': '../libs/bower/backbone-forms/js/backbone-forms',
+ 'backbone-forms.list': '../libs/bower/backbone-forms/js/list',
+ 'backbone-forms.templates': '../libs/bower/backbone-forms/js/bootstrap',
+ 'backbone-forms.XAOverrides': '../libs/fsOverrides/BBFOverrides',*/
+
+ /*'Backbone.BootstrapModal': '../libs/bower/backbone.bootstrap-modal/js/backbone.bootstrap-modal',
+ 'bootstrap-editable': '../libs/bower/x-editable/js/bootstrap-editable',
+ 'bootstrap-datepicker': '../libs/other/datepicker/js/bootstrap-datepicker',
+ 'bootstrap-notify': '../libs/bower/bootstrap-notify/js/bootstrap-notify',*/
+ 'bootstrap-daterangepicker': '../libs/custom/daterangepicker/js/daterangepicker',
+
+
+ /*'jquery.cookie': '../libs/other/jquery-cookie/js/jquery.cookie',
+ 'jquery-toggles': '../libs/bower/jquery-toggles/js/toggles.min',
+ 'tag-it': '../libs/bower/tag-it/js/tag-it',*/
+ 'select2': '../libs/bower/select2/select2',
+ 'bootbox': '../libs/bower/bootbox/js/bootbox.min',
+ 'moment': '../libs/bower/moment/js/moment.min',
+ 'moment-tz': '../libs/bower/moment/js/moment-timezone-with-data.min',
+ 'visualsearch': '../libs/other/custom/visualsearch/visualsearch',
+ 'globalize': '../libs/bower/globalize/lib/globalize',
+ /*'handlebars from the require handlerbars plugin below */
+ 'handlebars': '../libs/bower/require-handlebars-plugin/js/Handlebars',
+ /* require handlebars plugin - Alex Sexton */
+ 'i18nprecompile': '../libs/bower/require-handlebars-plugin/js/i18nprecompile',
+ 'json2': '../libs/bower/require-handlebars-plugin/js/json2',
+ 'hbs': '../libs/bower/require-handlebars-plugin/js/hbs',
+ 'd3': "../libs/other/d3/d3.min",
+ 'd3.tip': "../libs/other/d3/d3.tip",
+ 'nv': "../libs/other/nvd3/js/nv.d3",
+ 'noty': '../libs/other/noty/jquery.noty.packaged',
+ 'tmpl': '../templates',
+ 'WorldMapGenerator': '../libs/custom/timezone/WorldMapGenerator',
+ 'jstimezonedetect': '../libs/custom/timezone/jstz-1.0.4.min',
+ 'sparkline': '../libs/other/sparkline/jquery.sparkline',
+ 'gridster': '../libs/other/gridster/js/jquery.gridster',
+ 'dashboard': '../libs/other/dashboard/dashboard',
+ 'tour' : '../libs/other/bootstrap-tour-0.10.3/js/bootstrap-tour.min'
+
+
+ },
+
+ hbs: {
+ disableI18n: true,
+ helperPathCallback: // Callback to determine the path to look for helpers
+ function(name) { // ('/template/helpers/'+name by default)
+ return "../helpers/Helpers";
+ },
+ templateExtension: "html",
+ compileOptions: {}
+ }
+});
[6/8] ambari git commit: AMBARI-19878 Log Search Portal time zone
selection bug (mgergely)
Posted by mg...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c7997f5/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/custom/timezone/WorldMapGenerator.js
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/custom/timezone/WorldMapGenerator.js b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/custom/timezone/WorldMapGenerator.js
new file mode 100644
index 0000000..cfc44c7
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/custom/timezone/WorldMapGenerator.js
@@ -0,0 +1,3474 @@
+/**
+ * @version: 1.0.1
+ * @author: Keval Bhatt
+ * @copyright: Copyright (c) 2015 Keval Bhatt. All rights reserved.
+ * @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php
+ * @website: http://kevalbhatt.github.io/WorldMapGenerator/
+ */
+'use strict';
+(function(root, factory) {
+
+ if (typeof define === 'function' && define.amd) {
+ define(['moment', 'jquery'], function(momentjs, $) {
+ root.worldMapTime = {};
+ factory(momentjs, $, root.worldMapTime);
+ });
+
+ } else {
+ if ((typeof root.moment == "undefined")) {
+ var moment = false;
+ console.log('Day light feature requires moment.js')
+ } else {
+ if (!(root.moment.tz)) {
+ throw new Error('moment-timezone dependency not found');
+ }
+ }
+ if ((root.jQuery != "undefined" || root.Zepto != "undefined" || root.ender != "undefined" || root.$ != "undefined")) {
+ var c = root.worldMapTime = {};
+ factory(root.moment || moment, (root.jQuery || root.Zepto || root.ender || root.$), c);
+ } else {
+ throw new Error('jQuery dependnecy not found');
+ }
+
+ }
+
+}(this, function(moment, $, getTimeZoneObjct) {
+ var findValue = function(key, value) {
+ var referObj = [];
+ var obj = WorldMapGenerator.timeZoneValue.filter(function(object) {
+ if (object[key] === value) {
+ referObj.push($.extend(true, {},object));
+ return object;
+ }
+ });
+ for(var i=0;i<referObj.length;i++){
+ delete referObj[i].points;
+ delete referObj[i].pin;
+ }
+ return referObj;
+ }
+ getTimeZoneObjct['getSystemTimezone'] = function() {
+ /* var d = new Date()
+ var n = d.getTimezoneOffset();
+ var offset = (-(n))/60*/
+ var zoneAbr = new Date().toString().split('(')[1].slice(0, -1)
+ return findValue('zoneName', zoneAbr)
+ }
+ getTimeZoneObjct['getZoneName'] = function(zoneAbr) {
+ return findValue('zoneName', zoneAbr).zoneName
+ }
+ getTimeZoneObjct['getTimeZoneString'] = function(zoneAbr) {
+ return findValue('zoneName', zoneAbr).timezone
+ }
+ getTimeZoneObjct['getTimeZoneObject'] = function(zoneAbr) {
+ return findValue('zoneName', zoneAbr)
+ }
+
+
+ var WorldMapGenerator = function(element, options) {
+ this.$el = element;
+ this.generateMap(options);
+ }
+
+ WorldMapGenerator.VERSION = '1.0.1';
+
+ WorldMapGenerator.DEFAULTS = {
+ width: 500,
+ height: 250,
+ hoverColor: '#5A5A5A',
+ selectedColor: '#496A84',
+ mapColor: '#BBB',
+ defaultCss: true,
+ localStore: true,
+ quickLink: [{
+ "IST": "IST",
+ "EAT": "EAT"
+ }],
+ selectBox: true,
+ showHoverText: true,
+ dayLightSaving: ((typeof moment == "function") ? (true) : (false))
+ };
+
+ WorldMapGenerator.prototype = {
+
+ constructor: WorldMapGenerator,
+
+ /**
+ * [setValue set value in map]
+ * @param {[type]} value [attribute value]
+ * @param {[type]} attribute [attribute name]
+ */
+ setValue: function(value, attribute) {
+
+ this.$el.find('svg polygon').attr('data-selected', 'false');
+ var elements = this.$el.find('svg polygon[data-' + ((attribute) ? (attribute) : ("timezone")) + '="' + value + '"]');
+
+ if (elements && elements.length) {
+ elements.attr('data-selected', 'true');
+ this.$el.find('select option[value="' + ((attribute) ? (elements.attr('data-timeZone')) : (value)) + '"]').prop('selected', true);
+ this.$el.find('.quickLink span').removeClass('active');
+ var findQuickLink = this.$el.find('.quickLink span[data-select="' + value + '"]');
+ this.$el.find('.quickLink span[data-select="' + value + '"]').addClass('active');
+ this.$el.find('.quickLink span[data-select="' + elements.attr('data-zonename') + '"]').addClass('active');
+
+ }
+ },
+ /**
+ * [getValue get selected value array]
+ * @return {[type]} [description]
+ */
+ getValue: function() {
+ var value = [];
+ this.$el.find('svg polygon[data-selected="true"]').map(function(index, el) {
+ value.push($(el).data());
+ });
+ return value;
+ },
+ /**
+ * [generateMap create element dynamically]
+ * @param {[type]} options [depanding on option it will create e]
+ * @return {[type]} [description]
+ */
+ generateMap: function(options) {
+
+ var polygon = [],
+ option = [],
+ quickLink = [],
+ containerArr = [],
+ timezone = WorldMapGenerator.timeZoneValue;
+ for (var index in timezone) {
+ var zoneName = ((options.dayLightSaving) ? (moment().tz(timezone[index].timezone).zoneName()) : (timezone[index].zoneName))
+ if (zoneName == 'CST' && timezone[index].timezone.startsWith('Asia'))
+ zoneName = 'CST/China'
+ polygon.push(this.genrateElement('polygon', {
+ 'data-timezone': timezone[index].timezone,
+ 'data-country': timezone[index].country,
+ 'data-pin': timezone[index].pin,
+ 'data-offset': timezone[index].offset,
+ 'points': timezone[index].points,
+ 'data-zonename': zoneName
+ }, false, true));
+ option.push(this.genrateElement('option', {
+ 'value': timezone[index].timezone
+ }, timezone[index].timezone + " (" + ((options.dayLightSaving) ? (moment().tz(timezone[index].timezone).zoneName()) : (timezone[index].zoneName)) + ")"));
+ }
+ if (options.selectBox) {
+ var select = this.genrateElement('select', {
+ 'class': 'mapDropDown dropdown-toggle',
+ }, option);
+ containerArr.push(select);
+ }
+
+
+ if (options.quickLink.length > 0) {
+ for (var index in options.quickLink[0]) {
+ quickLink.push(this.genrateElement('span', {
+ 'data-select': options.quickLink[0][index]
+ }, index));
+ }
+ var qickLinkDiv = this.genrateElement('div', {
+ 'class': 'quickLink'
+ }, quickLink);
+ containerArr.push(qickLinkDiv);
+ }
+
+
+
+ var svg = this.genrateElement('svg', {
+ 'class': 'timezone-map',
+ 'viewBox': '0 0 ' + options.width + ' ' + options.height
+ }, polygon, true);
+
+ if (containerArr.length > 0) {
+ var container = this.genrateElement('div', {
+ 'class': 'Cbox'
+ }, containerArr);
+ this.$el.append(container);
+
+ }
+ this.$el.append(svg);
+
+ if (options.showHoverText) {
+ var hoverZone = this.genrateElement('span', {
+ 'class': 'hoverZone',
+ });
+ this.$el.append(hoverZone);
+ }
+
+
+
+ if (options.defaultCss) {
+ this.createCss(options);
+ }
+ this.bindEvent(options);
+
+ },
+ /**
+ * [bindEvent bind all event i.e click,mouseenter,mouseleave,change(select)]
+ * @return {[type]} [description]
+ */
+ bindEvent: function() {
+ var that = this;
+ this.$el.on('mouseenter', 'svg polygon', function(e) {
+ var d = $(this).data();
+ $('.timezone-map polygon[data-zonename="' + d.zonename + '"]').attr('class', 'active');
+ that.$el.find('.hoverZone').text(d.timezone + " (" + d.zonename + ")");
+ });
+ this.$el.on('mouseleave', 'svg polygon', function(e) {
+ $('.timezone-map polygon').attr('class', '');
+ that.$el.find('.hoverZone').text('');
+ });
+ this.$el.on('click', 'svg polygon', function() {
+
+ that.setValue($(this).attr('data-timezone'));
+ that.$el.trigger("map:clicked");
+
+ });
+ this.$el.on('change', 'select', function() {
+ that.setValue($(this).val());
+ that.$el.trigger("map:clicked");
+ });
+ this.$el.on('click', '.quickLink span', function() {
+ var selectValue = $(this).data().select
+ if (selectValue.search('/') > 0) {
+ that.setValue(selectValue, 'timezone');
+ } else {
+ that.setValue(selectValue, 'zonename');
+ }
+ that.$el.trigger("map:clicked");
+ });
+ },
+ /**
+ * [genrateElement description]
+ * @param {[Jquery Object]} element [selector]
+ * @param {[type]} elementAttr [description]
+ * @param {[javascript Object or text]} chilled [If we pass javascript object or array it will append all chilled and if you pass string it will add string(value) inside element ]
+ * @param {Boolean} isSvg [If it is svg then it will create svg element]
+ * @return {[type]} [description]
+ */
+ genrateElement: function(element, elementAttr, chilled, isSvg) {
+
+
+ if (isSvg) {
+ var elementObject = document.createElementNS('http://www.w3.org/2000/svg', element);
+ } else {
+ var elementObject = document.createElement(element);
+ }
+ if (elementAttr) {
+ for (var key in elementAttr) {
+ elementObject.setAttribute(key, elementAttr[key]);
+ }
+ }
+ if (chilled) {
+ if (chilled instanceof Array) {
+ for (var chilleds in chilled) {
+ elementObject.appendChild(chilled[chilleds]);
+ }
+ } else if (typeof chilled == 'string') {
+ elementObject.innerHTML = chilled;
+ } else {
+ elementObject.appendChild(chilled);
+ }
+
+ }
+
+ return elementObject;
+
+ },
+ /**
+ * [createCss function will create css dynamically it is insert style attribute in in head ]
+ * @param {[type]} options [options has mapColor,selectedColor,hoverColor ]
+ * @return {[type]} [description]
+ */
+ createCss: function(options) {
+ var style = document.createElement('style');
+ style.type = 'text/css';
+ style.innerHTML = '.timezone-map polygon[data-selected="true"] {fill: ' + options.selectedColor + '}' +
+ '.timezone-map polygon { fill: ' + options.mapColor + ';}' +
+ '.timezone-map polygon.active {fill: ' + options.hoverColor + ';}' +
+ '.timezone-map polygon:hover { cursor: pointer;}' +
+ '.Cbox .quickLink{width: 52%;float: right;padding-bottom: 11px;overflow-x: auto; white-space: nowrap;overflow-y: hidden;}' +
+ '.Cbox .quickLink span:hover {color:#FFF;background-color: #496A84; cursor: pointer;}' +
+ '.Cbox select{width: 45%;float: left;height: 27px; padding: 0px 0px 0px 10px;}' +
+ '.Cbox .quickLink span.active {color: #FFF; background-color: #496A84;}' +
+ '.Cbox .quickLink span{ font-weight: 300; border-radius: 3px; color: #000; background-color: #FFF; border: solid 1px #CCC;margin-left: 10px;' +
+ 'font-size: 9px;padding: 4px 6px 4px 6px;}';
+ document.getElementsByTagName('head')[0].appendChild(style);
+
+ }
+ };
+ /**
+ * [Plugin Staring point for plugin]
+ * @param {[type]} option [user options which can be override the default options]
+ */
+ function Plugin(option) {
+
+ return this.each(function() {
+ var $el = $(this)
+ var options = $.extend({}, WorldMapGenerator.DEFAULTS, $el.data(), typeof option == 'object' && option);
+ $el.data('WorldMapGenerator', new WorldMapGenerator($el, options));
+ $el.trigger("map:loaded");
+ });
+ };
+
+ $.fn.WorldMapGenerator = Plugin;
+
+ WorldMapGenerator.timeZoneValue = [{
+ "timezone": "Africa/Abidjan",
+ "country": "CI",
+ "pin": "244,118",
+ "offset": 0,
+ "points": "241,118,240,119,240,117,238,116,238,115,239,114,239,113,239,113,239,111,241,110,241,111,243,111,244,112,246,111,247,113,245,116,246,118,241,118",
+ "zoneName": "GMT"
+ }, {
+ "timezone": "Africa/Accra",
+ "country": "GH",
+ "pin": "250,117",
+ "offset": 0,
+ "points": "251,117,247,118,246,118,246,118,246,116,247,114,246,110,250,110,251,113,251,116,252,116,251,117",
+ "zoneName": "GMT"
+ }, {
+ "timezone": "Africa/Addis_Ababa",
+ "country": "ET",
+ "pin": "304,112",
+ "offset": 3,
+ "points": "313,118,311,118,308,120,307,119,305,120,300,119,299,116,296,114,296,113,297,113,298,110,299,110,300,107,300,107,301,105,302,105,303,104,303,105,307,105,309,108,308,110,310,110,309,110,310,112,317,114,313,118",
+ "zoneName": "EAT"
+ }, {
+ "timezone": "Africa/Algiers",
+ "country": "DZ",
+ "pin": "254,74",
+ "offset": 1,
+ "points": "263,83,264,86,264,88,263,89,264,91,266,91,267,92,258,98,255,99,254,97,252,97,250,95,238,87,238,85,239,85,243,83,243,82,245,82,245,81,246,81,246,80,248,80,249,80,248,79,248,77,247,76,254,74,262,74,261,74,262,77,260,78,263,81,263,83",
+ "zoneName": "CET"
+ }, {
+ "timezone": "Africa/Asmara",
+ "country": "ER",
+ "pin": "304,104",
+ "offset": 3,
+ "points": "306,104,310,107,309,108,306,105,303,105,303,104,302,105,301,105,301,101,304,100,305,104,305,103,306,104",
+ "zoneName": "EAT"
+ }, {
+ "timezone": "Africa/Bamako",
+ "country": "ML",
+ "pin": "239,107",
+ "offset": 0,
+ "points": "244,107,244,108,242,109,242,111,241,111,241,110,240,111,239,110,239,111,238,110,238,110,238,109,237,108,235,108,234,108,234,107,233,105,234,103,235,104,237,103,242,103,241,90,243,90,252,96,252,97,254,97,255,99,256,98,256,101,255,104,249,104,246,105,245,107,244,106,244,107",
+ "zoneName": "GMT"
+ }, {
+ "timezone": "Africa/Bangui",
+ "country": "CF",
+ "pin": "276,119",
+ "offset": 1,
+ "points": "284,118,283,119,282,118,281,119,277,118,276,119,276,120,273,120,272,122,270,119,270,117,272,115,276,114,276,113,278,112,280,110,281,110,283,111,283,113,284,113,284,113,285,114,288,118,285,118,285,118,284,118",
+ "zoneName": "WAT"
+ }, {
+ "timezone": "Africa/Banjul",
+ "country": "GM",
+ "pin": "227,106",
+ "offset": 0,
+ "points": "231,106,227,106,229,106,231,106",
+ "zoneName": "GMT"
+ }, {
+ "timezone": "Africa/Bissau",
+ "country": "GW",
+ "pin": "228,109",
+ "offset": 0,
+ "points": "228,109,228,109,228,109",
+ "zoneName": "GMT"
+ }, {
+ "timezone": "Africa/Blantyre",
+ "country": "MW",
+ "pin": "299,147",
+ "offset": 2,
+ "points": "298,144,300,146,299,149,298,147,298,145,297,145,295,144,297,142,296,140,297,140,296,138,298,139,299,141,298,142,298,144",
+ "zoneName": "CAT"
+ }, {
+ "timezone": "Africa/Brazzaville",
+ "country": "CG",
+ "pin": "271,131",
+ "offset": 1,
+ "points": "266,131,267,130,266,128,267,128,268,128,270,128,270,128,270,126,269,125,270,124,269,123,268,123,268,122,272,123,273,120,276,120,275,126,273,128,272,130,270,132,270,131,269,132,268,131,267,132,266,131",
+ "zoneName": "WAT"
+ }, {
+ "timezone": "Africa/Bujumbura",
+ "country": "BI",
+ "pin": "291,130",
+ "offset": 2,
+ "points": "292,131,291,131,290,129,291,129,292,128,292,128,293,130,292,131",
+ "zoneName": "CAT"
+ }, {
+ "timezone": "Asia/Oral",
+ "country": "KZ",
+ "pin": "321,54",
+ "offset": 5,
+ "points": "316,55,317,56,318,56,317,55,319,54,320,53,323,53,326,54,326,56,323,58,321,57,319,58,315,58,316,55",
+ "zoneName": "ORAT"
+ }, {
+ "timezone": "Africa/Cairo",
+ "country": "EG",
+ "pin": "293,83",
+ "offset": 2,
+ "points": "294,94,285,94,284,83,285,81,290,82,293,81,294,81,295,82,298,82,298,84,298,86,296,85,295,83,295,84,300,92,299,92,299,93,297,95,294,94",
+ "zoneName": "EET"
+ }, {
+ "timezone": "Africa/Casablanca",
+ "country": "MA",
+ "pin": "239,78",
+ "offset": 0,
+ "points": "242,84,240,84,238,85,238,87,232,87,236,84,237,83,236,81,237,80,241,78,242,75,243,75,244,76,246,76,248,77,248,80,246,80,246,81,245,81,245,82,243,82,242,84",
+ "zoneName": "WET"
+ }, {
+ "timezone": "Africa/Ceuta",
+ "country": "ES",
+ "pin": "243,75",
+ "offset": 1,
+ "points": "243,75,243,75,243,75",
+ "zoneName": "CET"
+ }, {
+ "timezone": "Africa/Conakry",
+ "country": "GN",
+ "pin": "231,112",
+ "offset": 0,
+ "points": "238,114,237,115,236,113,235,114,235,113,234,111,233,111,232,112,231,111,230,110,229,109,231,109,231,107,234,108,235,108,237,108,238,109,238,110,238,110,239,111,239,112,239,113,239,113,239,114,238,114",
+ "zoneName": "GMT"
+ }, {
+ "timezone": "Africa/Dakar",
+ "country": "SN",
+ "pin": "226,105",
+ "offset": 0,
+ "points": "227,107,229,106,231,106,229,106,227,106,226,105,227,102,230,102,233,105,234,108,229,107,227,108,227,108,227,108,227,107",
+ "zoneName": "GMT"
+ }, {
+ "timezone": "Africa/Dar_es_Salaam",
+ "country": "TZ",
+ "pin": "305,134",
+ "offset": 3,
+ "points": "306,139,306,139,306,140,302,141,299,141,297,138,293,137,291,134,291,132,293,130,292,129,293,128,292,126,297,126,302,129,302,130,304,131,304,134,305,135,305,137,306,139",
+ "zoneName": "EAT"
+ }, {
+ "timezone": "Asia/Yekaterinburg",
+ "country": "RU",
+ "pin": "334,46",
+ "offset": 6,
+ "points": "333,53,335,54,335,54,333,55,331,54,329,54,327,55,326,54,326,55,324,53,321,53,322,51,322,50,324,50,325,49,324,48,325,48,324,47,326,47,325,46,326,46,325,44,325,43,324,43,325,42,323,41,322,40,326,40,329,40,332,39,333,35,342,31,341,31,342,31,341,31,341,30,340,29,342,29,342,29,341,29,345,30,346,29,345,28,343,28,344,28,344,27,343,27,345,25,346,24,351,24,350,26,351,27,351,27,351,29,352,30,350,32,346,32,346,33,350,33,354,31,353,30,356,29,357,30,357,31,358,31,361,32,358,31,359,30,358,29,353,29,352,28,353,27,351,26,354,25,354,24,355,25,354,26,355,26,359,27,356,25,358,25,357,25,358,25,362,25,360,26,362,26,362,27,360,28,365,29,365,30,364,31,364,31,364,32,366,32,366,34,367,34,367,35,369,35,369,36,368,37,369,37,367,39,369,40,369,40,364,41,357,40,356,42,353,44,349,44,348,44,348,45,350,46,348,47,348,48,346,48,341,50,335,50,335,51,336,51,335,51,334,52,335,52,333,53",
+ "zoneName": "YEKT"
+ }, {
+ "timezone": "Africa/Djibouti",
+ "country": "DJ",
+ "pin": "310,109",
+ "offset": 3,
+ "points": "310,109,310,109,310,109",
+ "zoneName": "EAT"
+ }, {
+ "timezone": "Africa/Douala",
+ "country": "CM",
+ "pin": "263,119",
+ "offset": 1,
+ "points": "270,117,270,119,272,121,272,123,270,122,264,122,263,119,263,120,262,119,262,117,264,116,265,115,266,116,266,115,269,110,270,109,270,107,271,107,271,110,272,111,269,112,272,114,270,117",
+ "zoneName": "WAT"
+ }, {
+ "timezone": "Africa/Freetown",
+ "country": "SL",
+ "pin": "232,113",
+ "offset": 0,
+ "points": "235,115,234,115,232,114,232,112,233,111,234,111,235,112,235,114,236,114,235,115",
+ "zoneName": "GMT"
+ }, {
+ "timezone": "Africa/Gaborone",
+ "country": "BW",
+ "pin": "286,159",
+ "offset": 2,
+ "points": "287,158,285,161,282,160,281,162,279,162,279,161,278,159,278,156,279,156,279,150,282,150,283,151,285,150,286,152,289,153,289,155,291,156,287,158",
+ "zoneName": "CAT"
+ }, {
+ "timezone": "Africa/Harare",
+ "country": "ZW",
+ "pin": "293,150",
+ "offset": 2,
+ "points": "293,156,289,155,289,153,286,152,285,150,288,150,291,147,296,148,295,151,296,153,295,155,293,156",
+ "zoneName": "CAT"
+ }, {
+ "timezone": "Africa/El_Aaiun",
+ "country": "EH",
+ "pin": "232,87",
+ "offset": 0,
+ "points": "233,89,233,92,232,93,232,95,227,95,226,96,226,95,228,92,228,92,229,91,230,89,231,88,232,87,238,87,238,89,233,89",
+ "zoneName": "WET"
+ }, {
+ "timezone": "Africa/Johannesburg",
+ "country": "ZA",
+ "pin": "289,161",
+ "offset": 2,
+ "points": "283,172,278,173,276,172,276,173,275,171,275,170,275,169,273,165,274,164,274,165,275,165,278,164,278,159,279,161,279,162,280,162,282,160,285,161,288,158,290,156,293,156,294,159,294,161,294,161,293,162,294,163,294,163,294,162,296,162,295,165,289,171,286,172,283,172",
+ "zoneName": "SAST"
+ }, {
+ "timezone": "Africa/Juba",
+ "country": "SS",
+ "pin": "294,118",
+ "offset": 3,
+ "points": "299,117,299,118,300,118,300,119,298,119,297,120,293,120,291,119,289,119,289,119,287,116,284,113,285,111,286,111,287,112,290,112,292,111,293,111,295,110,295,108,296,108,296,110,297,111,297,113,296,113,296,114,297,115,299,117",
+ "zoneName": "EAT"
+ }, {
+ "timezone": "Africa/Kampala",
+ "country": "UG",
+ "pin": "295,125",
+ "offset": 3,
+ "points": "293,126,291,127,292,124,293,122,293,122,293,120,297,120,297,119,299,122,297,125,297,126,293,126",
+ "zoneName": "EAT"
+ }, {
+ "timezone": "Africa/Khartoum",
+ "country": "SD",
+ "pin": "295,103",
+ "offset": 3,
+ "points": "300,107,299,110,298,110,297,112,296,110,296,108,295,108,295,108,295,110,293,111,292,111,290,112,287,112,286,111,285,111,284,113,283,113,283,111,282,110,281,107,280,107,282,103,283,103,283,97,285,97,285,94,294,94,297,95,299,93,301,94,302,96,302,99,304,100,301,101,301,106,300,107,300,107",
+ "zoneName": "EAT"
+ }, {
+ "timezone": "Africa/Kinshasa",
+ "country": "CD",
+ "pin": "271,131",
+ "offset": 1,
+ "points": "271,131,272,130,273,128,275,126,276,119,277,118,277,118,279,119,283,120,281,120,283,122,281,122,281,123,283,125,282,126,283,126,282,126,284,127,281,128,281,128,281,128,279,128,279,131,278,131,278,135,277,135,277,136,274,136,273,133,267,133,268,131,269,132,270,131,270,132,271,131",
+ "zoneName": "WAT"
+ }, {
+ "timezone": "Africa/Lagos",
+ "country": "NG",
+ "pin": "255,116",
+ "offset": 1,
+ "points": "261,119,258,119,256,116,254,116,254,112,255,110,255,109,256,106,258,106,260,107,261,106,263,107,265,106,267,107,269,106,270,108,270,109,269,110,266,115,266,116,264,115,262,117,262,118,261,119",
+ "zoneName": "WAT"
+ }, {
+ "timezone": "Africa/Libreville",
+ "country": "GA",
+ "pin": "263,124",
+ "offset": 1,
+ "points": "269,125,270,126,270,128,267,128,267,128,266,128,267,130,266,131,263,128,262,126,263,126,263,125,264,125,263,124,263,124,266,124,266,122,268,122,268,123,270,123,270,124,269,125",
+ "zoneName": "WAT"
+ }, {
+ "timezone": "Africa/Lome",
+ "country": "TG",
+ "pin": "252,116",
+ "offset": 0,
+ "points": "252,116,251,116,251,113,250,110,251,110,251,111,252,111,253,116,252,116",
+ "zoneName": "GMT"
+ }, {
+ "timezone": "Africa/Kigali",
+ "country": "RW",
+ "pin": "292,128",
+ "offset": 2,
+ "points": "292,128,291,129,290,129,291,127,292,126,293,128,292,128",
+ "zoneName": "CAT"
+ }, {
+ "timezone": "Africa/Luanda",
+ "country": "AO",
+ "pin": "268,137",
+ "offset": 1,
+ "points": "281,140,281,141,283,140,283,143,281,143,281,148,283,149,279,150,276,149,269,149,268,149,266,149,267,144,269,142,269,140,268,138,269,137,267,133,273,133,274,136,277,136,277,135,280,135,280,138,281,140",
+ "zoneName": "WAT"
+ }, {
+ "timezone": "Africa/Lubumbashi",
+ "country": "CD",
+ "pin": "288,141",
+ "offset": 2,
+ "points": "291,132,291,134,293,136,290,137,289,138,290,139,289,141,290,142,291,142,291,144,290,144,288,141,287,142,286,142,285,141,284,141,283,140,281,141,280,135,278,135,277,134,278,133,278,131,279,131,279,128,281,128,281,128,281,128,284,127,282,126,283,126,282,126,283,125,281,123,281,122,283,122,281,120,283,120,281,119,282,118,285,118,285,118,288,118,289,119,291,119,293,120,293,122,293,122,292,124,291,127,290,128,291,132",
+ "zoneName": "CAT"
+ }, {
+ "timezone": "Africa/Lusaka",
+ "country": "ZM",
+ "pin": "289,146",
+ "offset": 2,
+ "points": "290,147,290,148,287,150,284,149,283,149,281,148,281,143,283,143,283,140,284,141,285,141,286,142,287,142,288,141,290,144,291,144,291,142,290,142,289,141,290,139,289,138,290,137,293,136,296,138,297,140,296,140,297,142,295,144,296,144,292,146,292,147,290,147",
+ "zoneName": "CAT"
+ }, {
+ "timezone": "Africa/Malabo",
+ "country": "GQ",
+ "pin": "262,120",
+ "offset": 1,
+ "points": "266,123,266,124,263,123,264,122,266,122,266,123",
+ "zoneName": "WAT"
+ }, {
+ "timezone": "Africa/Maputo",
+ "country": "MZ",
+ "pin": "295,161",
+ "offset": 2,
+ "points": "296,160,295,161,295,162,296,161,296,162,295,162,294,159,293,156,295,155,296,153,295,151,296,148,292,147,292,146,296,144,297,145,298,145,298,146,298,147,299,149,300,146,298,144,298,141,302,141,306,140,306,146,305,148,303,149,300,151,298,152,298,154,299,156,299,158,296,160",
+ "zoneName": "CAT"
+ }, {
+ "timezone": "Africa/Mbabane",
+ "country": "SZ",
+ "pin": "293,162",
+ "offset": 2,
+ "points": "294,161,295,162,294,163,293,162,294,161,294,161",
+ "zoneName": "SAST"
+ }, {
+ "timezone": "Africa/Mogadishu",
+ "country": "SO",
+ "pin": "313,122",
+ "offset": 3,
+ "points": "310,125,308,127,307,126,307,121,308,119,312,118,317,114,311,113,309,110,310,109,312,111,321,109,321,111,321,111,321,111,321,112,317,119,310,125",
+ "zoneName": "EAT"
+ }, {
+ "timezone": "Africa/Monrovia",
+ "country": "LR",
+ "pin": "235,116",
+ "offset": 0,
+ "points": "239,118,240,119,238,119,234,116,236,113,237,113,237,115,238,115,238,114,239,115,238,116,240,117,239,118",
+ "zoneName": "GMT"
+ }, {
+ "timezone": "Africa/Nairobi",
+ "country": "KE",
+ "pin": "301,127",
+ "offset": 3,
+ "points": "308,127,306,129,304,131,302,130,302,129,297,126,297,125,299,122,297,119,298,119,300,119,305,120,307,119,308,119,307,121,307,126,308,127",
+ "zoneName": "EAT"
+ }, {
+ "timezone": "Africa/Maseru",
+ "country": "LS",
+ "pin": "288,166",
+ "offset": 2,
+ "points": "289,167,289,167,288,166,290,165,291,166,289,167",
+ "zoneName": "SAST"
+ }, {
+ "timezone": "Africa/Ndjamena",
+ "country": "TD",
+ "pin": "271,108",
+ "offset": 1,
+ "points": "278,112,276,113,276,114,272,115,269,112,270,111,272,111,271,110,271,107,270,107,269,105,272,102,272,97,271,95,271,93,272,92,283,98,283,103,282,103,280,107,281,107,282,110,280,110,279,112,278,112",
+ "zoneName": "WAT"
+ }, {
+ "timezone": "Africa/Niamey",
+ "country": "NE",
+ "pin": "253,106",
+ "offset": 1,
+ "points": "256,106,255,108,255,109,254,108,253,108,253,107,251,107,252,106,251,106,250,104,255,104,256,101,256,98,258,98,267,92,270,94,271,93,271,95,272,97,272,102,269,105,269,106,267,107,265,106,263,107,261,106,260,107,258,106,256,106",
+ "zoneName": "WAT"
+ }, {
+ "timezone": "Africa/Nouakchott",
+ "country": "MR",
+ "pin": "228,100",
+ "offset": 0,
+ "points": "234,103,233,105,230,102,227,102,227,103,228,100,227,98,228,97,227,95,226,96,232,95,232,93,233,92,233,89,238,89,238,87,243,90,241,90,242,103,237,103,235,104,234,103",
+ "zoneName": "GMT"
+ }, {
+ "timezone": "Africa/Ouagadougou",
+ "country": "BF",
+ "pin": "248,108",
+ "offset": 0,
+ "points": "249,110,246,110,246,112,246,111,243,112,242,111,242,109,244,108,244,106,245,107,247,105,250,104,250,104,251,106,252,106,251,107,253,107,253,109,252,110,249,110",
+ "zoneName": "GMT"
+ }, {
+ "timezone": "Africa/Porto-Novo",
+ "country": "BJ",
+ "pin": "254,116",
+ "offset": 1,
+ "points": "254,114,254,116,252,116,252,112,251,111,252,109,253,109,254,108,255,109,255,110,254,112,254,114",
+ "zoneName": "WAT"
+ }, {
+ "timezone": "Africa/Tunis",
+ "country": "TN",
+ "pin": "264,74",
+ "offset": 1,
+ "points": "266,80,264,81,264,82,263,83,263,80,261,79,260,78,262,76,261,74,263,73,264,73,264,74,265,74,265,75,266,76,264,78,266,79,266,80",
+ "zoneName": "CET"
+ }, {
+ "timezone": "Africa/Sao_Tome",
+ "country": "ST",
+ "pin": "259,125",
+ "offset": 0,
+ "points": "260,123,260,123,260,123",
+ "zoneName": "GMT"
+ }, {
+ "timezone": "Africa/Tripoli",
+ "country": "LY",
+ "pin": "268,79",
+ "offset": 2,
+ "points": "285,88,285,97,283,97,283,98,272,92,270,94,264,91,263,89,264,88,264,86,263,83,264,82,264,81,266,80,266,79,271,80,272,81,276,83,278,82,278,80,281,79,282,80,285,81,284,83,285,88",
+ "zoneName": "EET"
+ }, {
+ "timezone": "Africa/Windhoek",
+ "country": "NA",
+ "pin": "274,156",
+ "offset": 2,
+ "points": "278,163,278,164,277,165,274,165,274,164,273,165,272,164,271,162,270,156,267,151,266,149,268,149,269,149,276,149,279,150,284,149,285,150,283,151,282,150,279,150,279,156,278,156,278,163",
+ "zoneName": "WAST"
+ }, {
+ "timezone": "America/Adak",
+ "country": "US",
+ "pin": "5,53",
+ "offset": -10,
+ "points": "7,53,6,53,8,52,7,53",
+ "zoneName": "HST"
+ }, {
+ "timezone": "America/Argentina/Salta",
+ "country": "AR",
+ "pin": "159,159",
+ "offset": -3,
+ "points": "162,180,162,182,163,182,160,182,160,183,150,183,150,180,152,179,151,176,152,175,153,177,155,177,155,175,160,175,160,174,162,174,162,180",
+ "zoneName": "ART"
+ }, {
+ "timezone": "America/Argentina/Salta",
+ "country": "AR",
+ "pin": "159,159",
+ "offset": -3,
+ "points": "159,156,161,157,161,156,163,156,163,156,163,159,162,161,158,162,157,161,158,160,155,160,155,159,157,158,158,159,158,157,159,159,161,159,161,158,160,158,159,156",
+ "zoneName": "ART"
+ }, {
+ "timezone": "America/Anchorage",
+ "country": "US",
+ "pin": "42,40",
+ "offset": -9,
+ "points": "42,42,40,43,39,43,40,42,39,42,40,41,43,41,42,40,42,40,40,40,36,43,37,43,36,44,30,47,30,47,25,48,25,48,27,48,27,47,31,45,31,44,32,43,30,44,30,43,29,44,27,43,25,44,25,37,27,36,26,36,27,35,25,35,25,33,26,33,25,33,25,32,26,33,25,32,25,27,33,26,34,26,33,27,35,26,39,27,39,27,38,27,39,27,51,28,54,28,54,42,54,41,50,42,46,41,47,40,44,40,45,40,43,41,44,41,44,41,44,41,42,42",
+ "zoneName": "AKST"
+ }, {
+ "timezone": "America/Anguilla",
+ "country": "AI",
+ "pin": "162,100",
+ "offset": -4,
+ "points": "162,100,162,100,162,100",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Antigua",
+ "country": "AG",
+ "pin": "164,101",
+ "offset": -4,
+ "points": "164,101,164,101,164,101",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Araguaina",
+ "country": "BR",
+ "pin": "183,135",
+ "offset": -3,
+ "points": "185,136,185,136,185,138,186,139,185,141,186,141,186,143,184,143,182,143,182,142,181,143,180,143,180,142,180,143,180,140,182,137,182,135,183,134,183,133,183,132,184,133,184,135,185,136",
+ "zoneName": "BRT"
+ }, {
+ "timezone": "America/Argentina/Buenos_Aires",
+ "country": "AR",
+ "pin": "169,173",
+ "offset": -3,
+ "points": "167,171,169,172,169,173,171,174,170,175,171,176,169,178,165,179,163,179,164,180,163,180,163,181,164,181,163,182,162,182,162,173,164,173,165,172,167,171",
+ "zoneName": "ART"
+ }, {
+ "timezone": "America/Argentina/Catamarca",
+ "country": "AR",
+ "pin": "159,165",
+ "offset": -3,
+ "points": "159,188,157,188,156,189,151,189,151,188,150,187,151,187,150,187,151,186,150,184,160,183,161,184,161,183,162,184,160,184,161,185,159,186,159,188",
+ "zoneName": "ART"
+ }, {
+ "timezone": "America/Argentina/Catamarca",
+ "country": "AR",
+ "pin": "159,165",
+ "offset": -3,
+ "points": "160,167,158,164,154,164,155,162,155,160,158,160,157,161,159,162,158,163,159,164,159,164,160,167",
+ "zoneName": "ART"
+ }, {
+ "timezone": "America/Argentina/Cordoba",
+ "country": "AR",
+ "pin": "161,169",
+ "offset": -3,
+ "points": "163,173,162,173,162,174,160,174,160,170,159,169,159,168,160,166,159,164,161,161,162,161,163,159,163,156,165,158,170,160,169,163,173,163,174,162,174,161,175,161,175,163,173,164,170,167,169,172,166,171,164,173,163,173",
+ "zoneName": "ART"
+ }, {
+ "timezone": "America/Argentina/Jujuy",
+ "country": "AR",
+ "pin": "159,159",
+ "offset": -3,
+ "points": "157,157,158,155,159,156,159,157,160,158,161,158,161,159,160,159,159,159,158,157,158,159,157,158,157,157",
+ "zoneName": "ART"
+ }, {
+ "timezone": "America/Argentina/La_Rioja",
+ "country": "AR",
+ "pin": "157,166",
+ "offset": -3,
+ "points": "156,167,154,166,154,165,153,164,154,164,158,164,160,167,159,169,157,169,156,167",
+ "zoneName": "ART"
+ }, {
+ "timezone": "America/Argentina/Mendoza",
+ "country": "AR",
+ "pin": "154,171",
+ "offset": -3,
+ "points": "152,170,156,170,157,171,157,175,155,175,155,177,153,177,152,175,152,174,153,171,152,170",
+ "zoneName": "ART"
+ }, {
+ "timezone": "America/Argentina/Rio_Gallegos",
+ "country": "AR",
+ "pin": "154,197",
+ "offset": -3,
+ "points": "151,189,156,189,157,190,159,191,158,192,154,195,154,197,155,198,150,197,149,197,150,195,148,196,148,195,148,193,150,192,149,191,150,191,151,189",
+ "zoneName": "ART"
+ }, {
+ "timezone": "America/Argentina/San_Juan",
+ "country": "AR",
+ "pin": "155,169",
+ "offset": -3,
+ "points": "153,167,154,164,154,165,154,166,156,167,157,169,156,169,156,170,154,169,152,170,152,168,153,167",
+ "zoneName": "ART"
+ }, {
+ "timezone": "America/Argentina/San_Luis",
+ "country": "AR",
+ "pin": "158,171",
+ "offset": -3,
+ "points": "159,169,160,170,160,175,157,175,156,169,159,169",
+ "zoneName": "ART"
+ }, {
+ "timezone": "America/Argentina/Tucuman",
+ "country": "AR",
+ "pin": "159,162",
+ "offset": -3,
+ "points": "158,161,160,161,160,164,159,164,158,163,159,162,158,161",
+ "zoneName": "ART"
+ }, {
+ "timezone": "America/Aruba",
+ "country": "AW",
+ "pin": "153,108",
+ "offset": -4,
+ "points": "153,108,153,108,153,108",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Argentina/Ushuaia",
+ "country": "AR",
+ "pin": "155,201",
+ "offset": -3,
+ "points": "155,201,155,198,155,199,155,199,156,200,160,201,158,201,155,201",
+ "zoneName": "ART"
+ }, {
+ "timezone": "America/Asuncion",
+ "country": "PY",
+ "pin": "170,160",
+ "offset": -3,
+ "points": "174,161,173,163,169,163,170,160,165,158,163,156,164,152,167,152,169,152,169,156,172,156,173,158,175,158,174,161",
+ "zoneName": "PYST"
+ }, {
+ "timezone": "America/Bahia_Banderas",
+ "country": "MX",
+ "pin": "104,96",
+ "offset": -6,
+ "points": "104,96,103,96,104,96",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Atikokan",
+ "country": "CA",
+ "pin": "123,57",
+ "offset": -5,
+ "points": "125,58,122,58,123,57,124,57,124,58,125,58",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Bahia",
+ "country": "BR",
+ "pin": "197,143",
+ "offset": -2,
+ "points": "187,146,186,146,186,141,185,141,186,140,187,139,188,140,189,140,189,138,191,138,193,137,194,138,195,137,197,137,198,139,197,140,198,141,196,143,196,147,195,150,194,149,195,147,194,147,193,147,192,146,189,145,189,145,187,146",
+ "zoneName": "BRT"
+ }, {
+ "timezone": "America/Barbados",
+ "country": "BB",
+ "pin": "167,107",
+ "offset": -4,
+ "points": "167,106,167,107,167,106",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Belem",
+ "country": "BR",
+ "pin": "183,127",
+ "offset": -3,
+ "points": "179,126,180,125,179,126,180,125,183,125,182,127,180,128,182,127,181,128,183,127,183,126,186,127,185,130,182,132,183,133,182,135,182,137,180,139,177,138,178,138,177,136,178,134,177,132,177,130,178,129,177,127,178,127,177,126,176,123,174,122,174,122,177,122,178,119,180,122,181,123,179,126",
+ "zoneName": "BRT"
+ }, {
+ "timezone": "America/Belize",
+ "country": "BZ",
+ "pin": "128,101",
+ "offset": -6,
+ "points": "128,101,128,101,128,101",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Blanc-Sablon",
+ "country": "CA",
+ "pin": "171,54",
+ "offset": -4,
+ "points": "169,54,167,55,169,54",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Boa_Vista",
+ "country": "BR",
+ "pin": "166,121",
+ "offset": -4,
+ "points": "167,118,166,119,167,120,167,121,167,122,168,123,168,125,167,125,166,126,165,126,164,127,163,126,163,122,161,122,160,119,163,120,163,119,165,119,166,118,167,118",
+ "zoneName": "AMT"
+ }, {
+ "timezone": "America/Bogota",
+ "country": "CO",
+ "pin": "147,119",
+ "offset": -5,
+ "points": "154,126,153,131,152,130,153,129,152,128,150,128,149,128,146,125,142,124,140,123,143,120,142,119,143,117,142,115,143,114,143,113,143,114,143,113,145,112,145,110,148,109,150,108,151,108,149,110,148,112,149,113,149,115,150,115,153,115,154,117,156,117,156,119,157,120,156,121,157,122,157,123,156,122,153,123,153,124,154,124,153,124,154,126",
+ "zoneName": "COT"
+ }, {
+ "timezone": "America/Boise",
+ "country": "US",
+ "pin": "89,64",
+ "offset": -7,
+ "points": "96,66,96,67,87,67,87,66,86,66,86,64,87,63,88,62,88,61,89,62,92,62,93,63,96,63,96,66",
+ "zoneName": "MST"
+ }, {
+ "timezone": "America/Cambridge_Bay",
+ "country": "CA",
+ "pin": "104,29",
+ "offset": -7,
+ "points": "99,18,100,19,99,19,101,19,100,20,102,19,104,20,103,21,97,21,97,20,99,20,97,20,98,19,97,19,99,18",
+ "zoneName": "MST"
+ }, {
+ "timezone": "America/Cambridge_Bay",
+ "country": "CA",
+ "pin": "104,29",
+ "offset": -7,
+ "points": "108,36,97,35,95,34,92,34,81,30,81,28,89,29,92,30,89,31,90,31,97,31,100,32,99,32,101,33,100,32,101,32,101,32,101,32,100,31,103,30,99,30,100,30,103,29,105,31,106,30,109,31,113,31,113,30,115,30,116,30,116,31,117,30,116,31,118,32,117,30,120,30,120,30,120,29,119,30,120,28,116,28,117,27,116,27,116,26,119,25,118,25,120,25,121,26,121,27,123,28,122,27,121,28,122,28,121,28,125,29,123,29,124,29,124,30,125,30,126,29,126,32,108,32,108,36",
+ "zoneName": "MST"
+ }, {
+ "timezone": "America/Cambridge_Bay",
+ "country": "CA",
+ "pin": "104,29",
+ "offset": -7,
+ "points": "115,24,116,24,116,25,116,25,114,25,114,26,113,26,107,24,111,24,110,23,115,24",
+ "zoneName": "MST"
+ }, {
+ "timezone": "America/Cambridge_Bay",
+ "country": "CA",
+ "pin": "104,29",
+ "offset": -7,
+ "points": "100,23,103,24,105,26,105,26,110,27,110,28,106,28,107,28,107,29,108,28,109,29,107,29,104,29,104,29,102,28,99,30,93,30,92,29,93,29,88,29,87,28,97,28,97,24,99,24,100,26,101,25,100,23,100,23",
+ "zoneName": "MST"
+ }, {
+ "timezone": "America/Campo_Grande",
+ "country": "BR",
+ "pin": "174,153",
+ "offset": -3,
+ "points": "176,150,177,151,179,152,179,153,175,158,173,158,172,156,169,156,170,150,172,149,173,150,175,149,175,150,176,150",
+ "zoneName": "AMST"
+ }, {
+ "timezone": "America/Cancun",
+ "country": "MX",
+ "pin": "129,96",
+ "offset": -6,
+ "points": "128,95,130,96,128,98,129,98,128,100,128,99,127,100,126,100,126,98,128,96,128,95",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Caracas",
+ "country": "VE",
+ "pin": "157,110",
+ "offset": -4.5,
+ "points": "163,111,165,112,165,113,167,113,166,115,166,115,165,116,165,117,166,118,163,119,163,120,160,119,161,122,162,122,159,124,159,124,158,124,157,123,157,122,156,121,157,120,156,119,156,116,154,117,153,115,150,115,149,112,148,112,149,110,151,109,150,109,151,110,150,111,150,112,151,112,151,112,151,110,153,109,153,108,153,109,155,109,155,110,158,110,160,111,162,110,161,110,164,110,163,110,163,111",
+ "zoneName": "VET"
+ }, {
+ "timezone": "America/Cayenne",
+ "country": "GF",
+ "pin": "177,118",
+ "offset": -3,
+ "points": "176,117,178,119,177,122,175,122,175,120,174,118,175,117,176,117",
+ "zoneName": "GFT"
+ }, {
+ "timezone": "America/Cayman",
+ "country": "KY",
+ "pin": "137,98",
+ "offset": -5,
+ "points": "139,98,139,98,139,98",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Chicago",
+ "country": "US",
+ "pin": "128,67",
+ "offset": -6,
+ "points": "128,72,132,74,132,75,131,76,132,80,132,84,130,83,130,83,129,83,129,82,128,83,128,82,128,83,124,83,126,83,125,84,126,84,126,85,125,84,125,85,120,83,118,84,118,84,118,85,116,86,117,85,116,85,116,86,115,86,115,87,114,87,115,87,115,89,112,88,112,87,109,84,107,84,107,85,105,84,104,82,104,81,107,81,107,74,108,74,108,73,109,73,109,70,108,70,108,69,109,69,109,67,110,67,109,64,111,63,110,63,111,62,111,61,109,61,110,60,110,59,106,59,105,57,118,57,118,56,119,57,126,58,122,60,124,60,124,60,128,61,128,62,128,63,129,63,128,66,129,67,130,67,128,68,128,72",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Chihuahua",
+ "country": "MX",
+ "pin": "103,85",
+ "offset": -7,
+ "points": "106,85,106,86,106,88,105,88,103,88,101,89,98,86,99,86,99,82,100,82,100,81,102,81,104,83,105,84,106,85",
+ "zoneName": "MST"
+ }, {
+ "timezone": "America/Coral_Harbour",
+ "country": "",
+ "pin": "250,125",
+ "offset": -5,
+ "points": "131,33,132,34,133,34,136,35,137,36,136,36,139,36,137,37,135,36,131,37,131,36,129,37,130,36,130,34,131,33",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Costa_Rica",
+ "country": "CR",
+ "pin": "133,111",
+ "offset": -6,
+ "points": "132,112,131,111,131,109,134,110,135,112,135,112,135,114,131,111,132,112",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Creston",
+ "country": "CA",
+ "pin": "88,57",
+ "offset": -7,
+ "points": "89,57,87,57,88,56,89,57",
+ "zoneName": "MST"
+ }, {
+ "timezone": "America/Cuiaba",
+ "country": "BR",
+ "pin": "172,147",
+ "offset": -3,
+ "points": "179,146,176,148,176,150,175,150,175,149,173,150,172,149,170,150,169,149,169,148,166,148,166,144,167,142,167,141,165,140,164,137,169,137,169,135,170,137,171,138,180,139,180,141,180,143,179,146",
+ "zoneName": "AMST"
+ }, {
+ "timezone": "America/Curacao",
+ "country": "CW",
+ "pin": "154,108",
+ "offset": -4,
+ "points": "154,108,154,108,154,108",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Danmarkshavn",
+ "country": "GL",
+ "pin": "224,18",
+ "offset": 0,
+ "points": "223,15,223,15,224,15,221,16,221,16,220,17,221,17,223,17,224,17,221,17,224,18,225,18,218,18,223,19,220,19,223,20,218,20,219,14,223,15",
+ "zoneName": "GMT"
+ }, {
+ "timezone": "America/Dawson",
+ "country": "CA",
+ "pin": "56,36",
+ "offset": -8,
+ "points": "56,36,56,36,56,36",
+ "zoneName": "PST"
+ }, {
+ "timezone": "America/Dawson_Creek",
+ "country": "CA",
+ "pin": "83,42",
+ "offset": -7,
+ "points": "83,45,83,50,79,48,78,46,83,45",
+ "zoneName": "MST"
+ }, {
+ "timezone": "America/Denver",
+ "country": "US",
+ "pin": "104,70",
+ "offset": -7,
+ "points": "93,63,92,62,91,62,91,60,89,59,89,57,105,57,106,59,108,59,108,60,110,61,109,61,111,61,111,62,110,63,111,63,109,64,110,67,109,67,109,69,108,69,108,70,109,70,109,73,108,73,108,74,107,74,107,81,104,81,104,82,102,81,99,81,99,76,96,76,95,74,95,74,92,74,92,67,96,67,96,63,93,63",
+ "zoneName": "MST"
+ }, {
+ "timezone": "America/Detroit",
+ "country": "US",
+ "pin": "135,66",
+ "offset": -5,
+ "points": "132,67,129,67,130,66,130,64,130,63,131,62,132,63,132,61,134,62,134,62,134,63,133,65,135,64,136,65,134,67,132,67",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Detroit",
+ "country": "US",
+ "pin": "135,66",
+ "offset": -5,
+ "points": "125,60,127,59,127,60,130,61,132,60,134,61,131,61,130,62,129,61,128,62,129,62,128,61,126,61,125,60",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Dominica",
+ "country": "DM",
+ "pin": "165,104",
+ "offset": -4,
+ "points": "165,103,165,104,165,103",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Edmonton",
+ "country": "CA",
+ "pin": "92,51",
+ "offset": -7,
+ "points": "92,57,88,56,88,55,85,53,86,52,86,52,83,51,83,42,97,42,97,51,99,51,97,52,97,57,92,57",
+ "zoneName": "MST"
+ }, {
+ "timezone": "America/Eirunepe",
+ "country": "BR",
+ "pin": "153,134",
+ "offset": -4,
+ "points": "156,138,148,135,148,134,149,132,150,131,153,131,156,138",
+ "zoneName": "ACT"
+ }, {
+ "timezone": "America/El_Salvador",
+ "country": "SV",
+ "pin": "126,106",
+ "offset": -6,
+ "points": "126,106,125,106,126,105,128,106,128,107,126,106",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Fortaleza",
+ "country": "BR",
+ "pin": "197,130",
+ "offset": -3,
+ "points": "201,134,202,135,201,135,199,137,198,136,198,135,197,136,194,135,194,136,192,138,189,138,189,140,187,140,186,139,185,138,185,136,184,135,184,133,182,132,185,130,186,126,187,127,187,127,188,127,188,128,188,130,188,128,189,129,190,128,191,129,194,129,198,132,201,132,201,134",
+ "zoneName": "BRT"
+ }, {
+ "timezone": "America/Glace_Bay",
+ "country": "CA",
+ "pin": "167,61",
+ "offset": -4,
+ "points": "167,61,166,61,166,61,167,61",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Godthab",
+ "country": "GL",
+ "pin": "178,36",
+ "offset": -3,
+ "points": "188,42,187,42,188,41,187,41,188,41,187,41,187,41,186,41,187,40,186,41,187,40,183,41,184,40,183,40,183,40,182,40,183,39,182,39,182,39,181,39,182,39,181,39,182,39,180,38,181,37,180,38,180,38,180,37,180,37,179,37,180,37,179,37,180,37,179,37,179,36,178,36,180,36,178,36,180,35,179,35,180,35,181,36,179,34,180,35,178,36,178,35,179,35,177,35,178,34,177,34,180,34,177,34,177,34,176,34,178,33,176,33,180,32,175,33,176,33,175,33,177,33,176,32,177,32,175,32,180,32,175,31,181,31,177,31,178,31,175,31,176,30,178,31,176,30,180,31,179,30,179,30,176,30,179,30,180,29,179,30,179,29,180,29,180,29,180,29,180,29,179,29,180,28,179,28,180,28,174,27,180,27,179,27,179,27,178,26,179,26,177,26,178,26,177,26,179,26,176,26,178,25,176,25,175,25,175,26,173,26,172,25,174,25,173,25,174,25,173,24,174,24,173,23,174,23,172,23,173,22,172,22,172,22,170,22,172,21,168,20,169,20,169,20,161,19,158,15,160,15,160,14,162,14,156,13,162,12,163,13,162,12,165,12,165,12,166,12,165,11,166,11,172,12,167,11,169,11,174,1
1,176,11,175,12,176,11,181,12,179,11,181,11,179,10,180,10,188,11,189,11,188,11,188,11,188,11,191,11,186,10,195,10,187,10,196,10,196,10,199,10,196,9,202,9,214,9,201,10,215,9,216,10,214,10,220,10,204,11,216,11,213,12,213,12,221,11,220,12,217,13,224,12,223,12,228,11,234,12,229,13,221,13,228,13,221,14,222,14,226,14,225,14,219,14,218,20,223,20,223,21,219,20,220,20,219,20,222,21,219,21,224,22,219,22,219,22,219,22,220,23,220,22,222,22,221,23,219,23,217,23,219,23,214,22,216,23,212,23,213,23,212,23,212,24,215,24,212,24,216,24,213,24,215,24,215,25,216,25,216,26,210,25,212,25,210,26,215,26,211,26,212,26,209,27,213,27,210,28,212,28,215,27,219,28,213,30,208,30,206,30,205,30,206,31,204,31,202,33,198,33,198,34,197,33,198,33,197,33,197,33,197,33,197,34,195,34,194,34,195,34,194,35,193,35,194,36,192,36,194,36,194,37,192,36,193,37,192,37,192,37,191,37,192,38,190,38,191,38,190,38,192,39,190,39,191,39,190,40,191,40,189,40,191,40,190,41,190,41,189,41,190,42,189,41,188,42",
+ "zoneName": "WGT"
+ }, {
+ "timezone": "America/Goose_Bay",
+ "country": "CA",
+ "pin": "166,51",
+ "offset": -4,
+ "points": "171,53,161,53,161,52,162,52,162,52,161,52,160,53,158,53,158,51,156,52,157,51,156,50,157,49,156,49,157,49,157,48,159,49,161,49,162,48,161,48,161,47,162,47,161,47,162,45,160,44,162,43,160,43,161,43,161,42,160,42,160,41,162,43,161,43,163,43,162,44,163,44,162,44,164,45,163,45,165,46,163,46,164,46,164,47,166,48,166,48,166,49,167,48,167,48,168,48,167,49,168,48,168,49,170,49,167,50,169,50,166,51,170,50,171,50,170,51,171,53",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Grand_Turk",
+ "country": "TC",
+ "pin": "151,95",
+ "offset": -5,
+ "points": "151,95,151,95,151,95",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Grenada",
+ "country": "GD",
+ "pin": "164,108",
+ "offset": -4,
+ "points": "165,108,165,108,165,108",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Guadeloupe",
+ "country": "GP",
+ "pin": "165,102",
+ "offset": -4,
+ "points": "165,102,165,102,165,102",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Guatemala",
+ "country": "GT",
+ "pin": "124,105",
+ "offset": -6,
+ "points": "125,106,123,105,122,104,123,103,124,103,123,101,124,101,124,100,126,100,126,103,127,103,125,106",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Guayaquil",
+ "country": "EC",
+ "pin": "139,128",
+ "offset": -5,
+ "points": "141,130,140,132,139,131,138,131,139,128,139,129,137,128,139,124,141,123,142,124,144,124,145,125,145,125,146,126,141,130",
+ "zoneName": "ECT"
+ }, {
+ "timezone": "America/Guyana",
+ "country": "GY",
+ "pin": "169,116",
+ "offset": -4,
+ "points": "170,116,171,118,170,118,169,119,172,122,170,122,168,123,167,122,167,121,167,120,166,119,167,118,165,117,165,116,166,115,166,115,167,114,167,113,169,115,169,116,169,115,170,116",
+ "zoneName": "GYT"
+ }, {
+ "timezone": "America/Halifax",
+ "country": "CA",
+ "pin": "162,63",
+ "offset": -4,
+ "points": "161,63,162,62,160,62,161,61,163,62,164,61,165,62,161,63,159,65,158,64,158,63,160,62,161,63",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Havana",
+ "country": "CU",
+ "pin": "136,93",
+ "offset": -5,
+ "points": "146,96,147,97,142,97,143,96,141,96,141,95,136,94,136,94,137,94,136,93,132,95,134,93,138,93,146,96",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Hermosillo",
+ "country": "MX",
+ "pin": "96,85",
+ "offset": -7,
+ "points": "90,81,91,80,96,81,99,81,99,86,98,86,99,88,98,88,96,87,97,86,94,85,93,82,90,81",
+ "zoneName": "MST"
+ }, {
+ "timezone": "America/Indiana/Petersburg",
+ "country": "US",
+ "pin": "129,72",
+ "offset": -5,
+ "points": "129,72,129,72,129,72",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Indiana/Tell_City",
+ "country": "US",
+ "pin": "129,72",
+ "offset": -6,
+ "points": "130,72,130,72,130,72",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Indiana/Vevay",
+ "country": "US",
+ "pin": "132,71",
+ "offset": -5,
+ "points": "132,71,132,71,132,71",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Indiana/Indianapolis",
+ "country": "US",
+ "pin": "130,70",
+ "offset": -5,
+ "points": "132,71,130,72,130,71,128,71,128,68,130,68,130,67,132,67,132,70,132,71",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Indiana/Knox",
+ "country": "US",
+ "pin": "130,68",
+ "offset": -6,
+ "points": "130,67,129,68,130,67",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Indiana/Marengo",
+ "country": "US",
+ "pin": "130,72",
+ "offset": -5,
+ "points": "130,72,130,72,130,72,130,72",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Indiana/Vincennes",
+ "country": "US",
+ "pin": "128,71",
+ "offset": -5,
+ "points": "128,72,128,71,130,71,130,72,128,72",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Indiana/Winamac",
+ "country": "US",
+ "pin": "130,68",
+ "offset": -5,
+ "points": "130,68,129,68,130,68",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Inuvik",
+ "country": "CA",
+ "pin": "64,30",
+ "offset": -7,
+ "points": "65,30,64,30,65,30",
+ "zoneName": "MST"
+ }, {
+ "timezone": "America/Iqaluit",
+ "country": "CA",
+ "pin": "155,36",
+ "offset": -5,
+ "points": "139,20,138,20,140,20,138,21,140,21,132,21,132,20,139,20",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Iqaluit",
+ "country": "CA",
+ "pin": "155,36",
+ "offset": -5,
+ "points": "139,10,145,10,144,11,145,10,142,10,156,10,155,10,156,10,156,12,154,12,156,12,152,12,156,12,156,13,152,13,153,14,149,14,152,14,151,14,147,14,146,14,148,15,142,15,147,15,142,15,146,16,143,16,145,16,145,17,141,17,142,17,141,18,136,18,142,18,141,19,137,19,138,19,135,18,136,19,132,19,132,18,134,18,134,17,136,17,132,17,132,15,136,16,134,16,137,15,132,15,134,15,132,15,132,14,138,14,139,14,134,13,144,13,140,13,143,12,140,12,140,12,139,13,132,13,132,12,136,12,132,12,132,11,133,11,132,10,140,11,135,11,138,10,137,10,141,10,138,10,139,10",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Iqaluit",
+ "country": "CA",
+ "pin": "155,36",
+ "offset": -5,
+ "points": "132,30,133,29,132,29,132,28,136,28,134,28,137,29,136,29,137,30,135,30,137,31,134,33,133,32,132,32,132,30",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Iqaluit",
+ "country": "CA",
+ "pin": "155,36",
+ "offset": -5,
+ "points": "144,24,140,24,138,23,142,23,144,24",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Iqaluit",
+ "country": "CA",
+ "pin": "155,36",
+ "offset": -5,
+ "points": "133,23,137,23,139,24,138,24,138,24,138,25,139,24,142,25,140,25,142,25,141,24,142,24,146,24,146,25,144,25,147,25,145,26,146,25,146,26,148,25,147,26,148,26,147,26,149,26,148,26,149,25,151,26,149,27,150,27,149,27,152,26,150,27,151,27,151,28,153,27,152,27,155,27,152,28,155,28,153,28,156,27,155,28,153,28,156,29,154,29,155,29,154,29,155,29,155,29,156,29,154,29,156,30,156,33,155,33,156,34,156,37,154,36,156,37,156,39,151,37,150,37,151,37,149,36,148,36,148,35,148,36,148,35,147,36,147,35,146,35,146,35,147,36,142,36,141,35,142,34,148,34,147,33,150,32,148,30,148,30,147,30,148,30,145,29,144,30,145,29,143,28,143,28,143,28,143,28,142,28,142,27,140,27,139,27,140,27,141,28,136,28,138,28,135,27,137,28,132,28,132,26,133,25,132,25,132,25,133,25,132,25,132,24,133,24,132,23,133,24,132,23,133,23",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/La_Paz",
+ "country": "BO",
+ "pin": "155,148",
+ "offset": -4,
+ "points": "164,154,163,156,161,156,161,157,160,156,158,155,157,157,156,157,155,153,155,152,153,149,154,148,154,147,155,142,153,140,155,140,157,139,159,138,160,142,166,144,166,148,169,148,169,149,170,150,170,153,168,152,164,152,164,154",
+ "zoneName": "BOT"
+ }, {
+ "timezone": "America/Jamaica",
+ "country": "JM",
+ "pin": "143,100",
+ "offset": -5,
+ "points": "144,100,143,100,141,100,143,99,144,100",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Juneau",
+ "country": "US",
+ "pin": "63,44",
+ "offset": -9,
+ "points": "59,43,62,42,66,45,65,46,65,45,64,45,65,45,64,45,65,45,64,44,64,44,63,44,62,42,62,42,62,44,61,44,61,43,61,43,61,43,60,43,61,44,60,44,58,43,59,43",
+ "zoneName": "AKST"
+ }, {
+ "timezone": "America/Kentucky/Louisville",
+ "country": "US",
+ "pin": "131,72",
+ "offset": -5,
+ "points": "130,72,130,72,131,71,130,72",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Kentucky/Monticello",
+ "country": "US",
+ "pin": "132,74",
+ "offset": -5,
+ "points": "132,74,133,74,132,74,132,74",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Kralendijk",
+ "country": "BQ",
+ "pin": "155,108",
+ "offset": -4,
+ "points": "162,101,162,100,162,101",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Lima",
+ "country": "PE",
+ "pin": "143,142",
+ "offset": -5,
+ "points": "153,149,153,150,152,150,151,149,146,146,144,145,144,144,139,135,137,133,138,133,137,131,138,130,139,130,138,131,140,132,141,130,145,127,146,126,145,125,146,125,149,128,150,128,153,129,152,130,153,131,152,131,149,132,148,134,147,135,149,137,148,138,150,138,150,139,152,138,152,140,153,140,155,142,154,147,154,148,153,149",
+ "zoneName": "PET"
+ }, {
+ "timezone": "America/Managua",
+ "country": "NI",
+ "pin": "130,108",
+ "offset": -6,
+ "points": "132,110,131,110,128,107,129,107,129,106,131,106,132,104,135,104,134,110,132,110",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Manaus",
+ "country": "BR",
+ "pin": "167,129",
+ "offset": -4,
+ "points": "167,125,168,125,169,127,172,128,169,134,169,135,169,137,164,137,163,136,162,136,161,137,160,138,158,138,157,139,156,138,153,131,154,127,153,124,154,124,153,124,153,123,156,122,157,123,158,124,159,124,159,124,161,122,162,122,163,124,163,126,164,127,165,126,166,126,167,125",
+ "zoneName": "AMT"
+ }, {
+ "timezone": "America/Los_Angeles",
+ "country": "US",
+ "pin": "86,78",
+ "offset": -8,
+ "points": "91,62,88,62,88,61,88,62,87,63,86,64,86,66,87,66,87,67,92,67,92,75,91,75,91,77,91,79,91,79,87,80,85,78,82,77,82,76,80,73,80,72,79,72,78,71,77,69,78,67,77,66,78,61,78,61,78,61,78,60,78,60,78,60,78,60,77,58,80,58,79,59,80,58,80,59,79,60,80,59,80,57,89,57,89,59,91,60,91,62",
+ "zoneName": "PST"
+ }, {
+ "timezone": "America/Lower_Princes",
+ "country": "SX",
+ "pin": "162,100",
+ "offset": -4,
+ "points": "162,100,162,100,162,100",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Maceio",
+ "country": "BR",
+ "pin": "200,138",
+ "offset": -3,
+ "points": "199,140,198,141,197,140,198,139,197,138,198,137,199,138,201,137,199,140",
+ "zoneName": "BRT"
+ }, {
+ "timezone": "America/Marigot",
+ "country": "MF",
+ "pin": "162,100",
+ "offset": -4,
+ "points": "162,100,162,100,162,100",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Martinique",
+ "country": "MQ",
+ "pin": "165,105",
+ "offset": -4,
+ "points": "165,104,165,104,165,104",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Matamoros",
+ "country": "MX",
+ "pin": "115,89",
+ "offset": -6,
+ "points": "113,89,112,89,109,84,108,84,107,85,107,85,107,84,109,84,112,87,112,88,115,89,115,90,113,89",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Mazatlan",
+ "country": "MX",
+ "pin": "102,93",
+ "offset": -7,
+ "points": "104,93,106,95,105,96,104,96,104,95,103,94,100,90,98,89,98,88,100,88,101,90,104,93",
+ "zoneName": "MST"
+ }, {
+ "timezone": "America/Mazatlan",
+ "country": "MX",
+ "pin": "102,93",
+ "offset": -7,
+ "points": "91,86,93,86,98,93,97,93,94,91,94,89,93,88,92,88,90,86,92,87,91,86",
+ "zoneName": "MST"
+ }, {
+ "timezone": "America/Menominee",
+ "country": "US",
+ "pin": "128,62",
+ "offset": -6,
+ "points": "128,62,128,61,124,60,128,61,129,62,128,62",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Mexico_City",
+ "country": "MX",
+ "pin": "112,98",
+ "offset": -6,
+ "points": "119,103,118,102,116,103,114,103,104,98,103,97,104,96,105,96,106,95,105,94,106,92,108,91,107,90,110,91,111,93,114,94,117,99,119,100,122,99,122,100,124,100,124,101,123,101,124,102,123,103,122,105,119,102,119,103",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Merida",
+ "country": "MX",
+ "pin": "126,96",
+ "offset": -6,
+ "points": "124,96,125,95,128,95,128,96,126,98,126,100,122,100,122,99,123,99,124,96",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Metlakatla",
+ "country": "US",
+ "pin": "67,48",
+ "offset": -8,
+ "points": "67,48,67,48,67,48",
+ "zoneName": "PST"
+ }, {
+ "timezone": "America/Miquelon",
+ "country": "PM",
+ "pin": "172,60",
+ "offset": -3,
+ "points": "172,60,172,60,172,60",
+ "zoneName": "PMST"
+ }, {
+ "timezone": "America/Moncton",
+ "country": "CA",
+ "pin": "160,61",
+ "offset": -4,
+ "points": "157,58,160,59,159,60,160,60,160,61,161,61,158,62,156,62,156,62,156,60,154,59,155,58,157,58",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Monterrey",
+ "country": "MX",
+ "pin": "111,89",
+ "offset": -6,
+ "points": "107,90,108,91,106,92,105,94,104,94,101,90,103,88,105,88,106,88,106,86,106,85,108,84,109,84,112,89,115,89,115,90,115,90,114,90,114,94,111,93,110,91,107,90",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Montevideo",
+ "country": "UY",
+ "pin": "172,173",
+ "offset": -2,
+ "points": "172,173,170,173,169,172,170,167,171,167,172,168,173,168,176,170,175,173,172,173",
+ "zoneName": "UYT"
+ }, {
+ "timezone": "America/Montreal",
+ "country": "",
+ "pin": "250,125",
+ "offset": -5,
+ "points": "146,63,147,62,144,62,141,61,139,59,140,53,140,54,140,53,141,52,140,51,140,50,139,49,142,48,144,47,143,44,141,44,143,42,142,41,143,41,142,41,142,40,141,41,142,40,142,39,142,38,146,39,148,38,150,39,150,39,151,39,150,40,151,40,153,40,153,42,151,42,153,42,153,43,154,43,152,44,154,43,155,44,154,45,156,44,155,44,156,44,156,45,158,43,158,44,158,43,159,43,159,43,160,43,159,42,160,41,160,42,161,42,161,43,160,43,162,43,160,44,162,45,161,47,162,47,161,47,161,48,162,48,161,49,159,49,157,48,157,49,156,49,157,49,156,50,157,51,156,52,158,51,158,53,160,53,161,52,162,52,162,52,161,52,161,53,171,53,171,53,168,54,167,55,164,55,158,55,158,55,156,57,155,57,152,60,149,61,157,57,160,57,161,58,159,58,155,58,153,60,152,62,151,63,146,63",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Montserrat",
+ "country": "MS",
+ "pin": "164,102",
+ "offset": -4,
+ "points": "164,102,164,102,164,102",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Nassau",
+ "country": "BS",
+ "pin": "143,90",
+ "offset": -5,
+ "points": "143,90,143,90,143,90",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/New_York",
+ "country": "US",
+ "pin": "147,68",
+ "offset": -5,
+ "points": "132,82,131,76,132,75,133,74,130,72,132,71,132,71,132,67,136,67,140,66,140,65,144,65,144,64,146,63,152,62,154,59,156,60,156,62,157,63,155,64,154,63,154,64,152,64,151,66,152,67,153,67,153,67,151,67,151,67,151,68,148,68,146,71,145,70,146,72,145,73,145,72,144,71,145,70,144,70,144,72,143,72,144,72,143,72,144,74,143,73,144,74,145,75,144,74,145,75,143,75,145,76,143,76,144,76,143,76,144,76,144,77,138,80,137,82,139,88,138,90,137,90,136,88,136,88,136,88,135,87,136,86,135,86,135,84,133,83,131,84,132,82",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Nipigon",
+ "country": "CA",
+ "pin": "127,57",
+ "offset": -5,
+ "points": "127,57,127,57,127,57",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Nome",
+ "country": "US",
+ "pin": "20,35",
+ "offset": -9,
+ "points": "25,32,23,32,22,31,18,30,19,29,23,29,25,27,25,32",
+ "zoneName": "AKST"
+ }, {
+ "timezone": "America/Nome",
+ "country": "US",
+ "pin": "20,35",
+ "offset": -9,
+ "points": "25,35,24,36,19,35,18,35,19,34,16,34,23,33,22,33,25,33,25,35",
+ "zoneName": "AKST"
+ }, {
+ "timezone": "America/Nome",
+ "country": "US",
+ "pin": "20,35",
+ "offset": -9,
+ "points": "25,42,22,42,20,41,21,40,19,39,22,37,23,37,25,37,25,42",
+ "zoneName": "AKST"
+ }, {
+ "timezone": "America/Noronha",
+ "country": "BR",
+ "pin": "205,130",
+ "offset": -2,
+ "points": "205,130,205,130,205,130",
+ "zoneName": "FNT"
+ }, {
+ "timezone": "America/North_Dakota/Beulah",
+ "country": "US",
+ "pin": "109,59",
+ "offset": -6,
+ "points": "109,59,108,60,108,59,109,59",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/North_Dakota/Center",
+ "country": "US",
+ "pin": "109,60",
+ "offset": -6,
+ "points": "110,60,109,60,110,60",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/North_Dakota/New_Salem",
+ "country": "US",
+ "pin": "109,60",
+ "offset": -6,
+ "points": "110,60,110,60,110,61,108,60,110,60",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Ojinaga",
+ "country": "MX",
+ "pin": "105,84",
+ "offset": -7,
+ "points": "102,81,106,85,105,84,104,83,102,81,99,82,100,81,100,81,102,81",
+ "zoneName": "MST"
+ }, {
+ "timezone": "America/Panama",
+ "country": "PA",
+ "pin": "140,113",
+ "offset": -5,
+ "points": "142,113,143,114,142,115,141,114,141,113,142,114,140,112,138,114,139,115,138,115,138,115,137,114,137,114,136,113,135,114,135,113,135,112,137,113,140,112,142,113",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Pangnirtung",
+ "country": "CA",
+ "pin": "159,33",
+ "offset": -5,
+ "points": "156,10,160,10,165,11,156,12,156,10",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Pangnirtung",
+ "country": "CA",
+ "pin": "159,33",
+ "offset": -5,
+ "points": "156,34,157,34,157,35,157,35,160,35,159,36,160,36,160,36,160,37,159,36,160,38,159,37,159,38,158,37,158,37,156,37,156,34",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Pangnirtung",
+ "country": "CA",
+ "pin": "159,33",
+ "offset": -5,
+ "points": "156,30,157,30,156,30,158,30,157,31,158,31,158,31,158,31,160,31,159,31,160,31,161,31,160,31,161,32,160,32,162,31,161,32,163,32,163,32,164,32,165,32,163,33,164,33,162,33,163,33,163,33,163,34,162,33,162,35,159,34,161,33,159,33,159,33,158,33,156,32,157,33,156,33,157,33,156,33,156,30",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Paramaribo",
+ "country": "SR",
+ "pin": "173,117",
+ "offset": -3,
+ "points": "175,118,175,120,174,122,172,121,172,122,171,122,169,119,170,118,171,118,171,117,175,117,175,118",
+ "zoneName": "SRT"
+ }, {
+ "timezone": "America/Phoenix",
+ "country": "US",
+ "pin": "94,79",
+ "offset": -7,
+ "points": "99,80,99,81,96,81,91,80,91,77,91,75,91,75,92,74,95,74,95,74,96,76,99,76,99,80",
+ "zoneName": "MST"
+ }, {
+ "timezone": "America/Port-au-Prince",
+ "country": "HT",
+ "pin": "150,99",
+ "offset": -5,
+ "points": "148,99,149,99,148,99",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Port_of_Spain",
+ "country": "TT",
+ "pin": "165,110",
+ "offset": -4,
+ "points": "164,110,164,110,164,110",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Porto_Velho",
+ "country": "BR",
+ "pin": "161,137",
+ "offset": -4,
+ "points": "167,142,166,144,164,144,160,142,159,138,157,139,158,138,160,138,161,137,162,136,163,136,165,137,165,140,167,140,167,142",
+ "zoneName": "AMT"
+ }, {
+ "timezone": "America/Puerto_Rico",
+ "country": "PR",
+ "pin": "158,99",
+ "offset": -4,
+ "points": "158,99,158,99,158,99",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Rainy_River",
+ "country": "CA",
+ "pin": "119,57",
+ "offset": -6,
+ "points": "119,57,119,57,119,57",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Rankin_Inlet",
+ "country": "CA",
+ "pin": "122,38",
+ "offset": -6,
+ "points": "132,12,125,12,125,12,129,12,122,12,132,11,132,12",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Rankin_Inlet",
+ "country": "CA",
+ "pin": "122,38",
+ "offset": -6,
+ "points": "113,19,114,19,114,20,115,20,111,21,110,20,111,20,108,20,108,20,109,20,108,19,111,20,111,19,112,19,110,19,113,19",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Rankin_Inlet",
+ "country": "CA",
+ "pin": "122,38",
+ "offset": -6,
+ "points": "125,16,126,16,122,16,121,16,123,16,119,15,124,15,118,15,117,15,119,14,116,14,119,14,118,14,119,14,116,13,120,13,117,13,121,12,119,12,120,12,127,14,128,13,128,14,129,14,129,15,132,15,128,16,128,15,127,16,128,16,127,16,127,16,125,16",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Rankin_Inlet",
+ "country": "CA",
+ "pin": "122,38",
+ "offset": -6,
+ "points": "132,21,122,21,122,21,122,20,121,19,118,19,118,19,115,18,117,18,121,18,120,19,124,19,124,19,123,19,126,19,123,19,126,20,132,20,132,21",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Rankin_Inlet",
+ "country": "CA",
+ "pin": "122,38",
+ "offset": -6,
+ "points": "132,19,125,19,130,18,127,17,129,17,132,18,132,19",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Rankin_Inlet",
+ "country": "CA",
+ "pin": "122,38",
+ "offset": -6,
+ "points": "132,28,127,27,126,26,129,26,125,26,125,25,126,25,125,24,128,23,132,23,130,24,130,24,130,25,132,26,129,26,132,26,132,28",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Rankin_Inlet",
+ "country": "CA",
+ "pin": "122,38",
+ "offset": -6,
+ "points": "125,36,124,37,119,36,123,37,124,37,122,38,122,38,120,39,120,39,119,40,120,40,118,42,108,42,108,32,126,32,126,29,128,30,128,30,127,31,129,32,130,31,131,30,132,30,132,33,130,33,131,33,129,34,123,33,129,35,128,36,125,36",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Rankin_Inlet",
+ "country": "CA",
+ "pin": "122,38",
+ "offset": -6,
+ "points": "118,22,120,22,125,22,122,24,119,24,120,24,120,25,117,24,117,23,119,23,118,22",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Recife",
+ "country": "BR",
+ "pin": "202,136",
+ "offset": -3,
+ "points": "196,136,197,136,198,135,199,137,201,135,202,136,201,137,199,138,198,137,197,138,195,137,194,138,193,137,194,136,194,135,196,136",
+ "zoneName": "BRT"
+ }, {
+ "timezone": "America/Regina",
+ "country": "CA",
+ "pin": "105,55",
+ "offset": -6,
+ "points": "104,57,97,57,97,52,99,51,97,51,97,42,108,42,108,48,108,49,109,50,109,57,104,57",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Resolute",
+ "country": "CA",
+ "pin": "118,21",
+ "offset": -6,
+ "points": "118,20,120,20,120,21,116,21,118,20",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Rio_Branco",
+ "country": "BR",
+ "pin": "156,139",
+ "offset": -4,
+ "points": "148,135,152,136,157,139,155,140,152,140,152,138,150,139,150,138,148,138,149,137,147,135,148,135",
+ "zoneName": "ACT"
+ }, {
+ "timezone": "America/Santa_Isabel",
+ "country": "MX",
+ "pin": "90,83",
+ "offset": -8,
+ "points": "91,80,91,83,93,86,91,86,92,85,89,84,88,81,88,80,91,80",
+ "zoneName": "PST"
+ }, {
+ "timezone": "America/Santarem",
+ "country": "BR",
+ "pin": "174,128",
+ "offset": -3,
+ "points": "176,125,177,126,178,127,177,127,178,129,177,130,177,132,178,134,177,136,178,138,177,138,171,138,170,137,169,134,172,128,168,126,168,123,170,122,172,122,172,121,174,121,174,123,176,123,176,125",
+ "zoneName": "BRT"
+ }, {
+ "timezone": "America/Santiago",
+ "country": "CL",
+ "pin": "152,171",
+ "offset": -3,
+ "points": "152,199,154,198,155,198,155,201,150,201,153,201,152,200,154,201,154,201,154,201,153,200,154,199,152,199,152,199",
+ "zoneName": "CLT"
+ }, {
+ "timezone": "America/Santiago",
+ "country": "CL",
+ "pin": "152,171",
+ "offset": -3,
+ "points": "148,193,148,195,148,196,150,195,149,197,150,197,155,198,152,198,151,200,149,199,150,199,151,198,151,198,149,198,149,199,148,199,149,198,148,198,148,197,149,198,149,197,149,198,149,198,149,198,149,197,148,196,148,197,149,197,148,197,149,197,148,197,148,197,148,197,147,197,148,196,147,196,148,195,148,195,147,196,147,195,146,195,147,195,147,194,148,194,147,193,147,194,147,193,147,193,147,193,147,192,146,192,148,192,148,191,146,191,147,191,147,191,147,191,147,190,145,190,146,189,147,189,147,190,148,188,148,189,148,188,149,188,148,188,149,187,148,186,149,184,149,184,149,184,149,183,149,183,150,183,148,183,147,182,148,180,148,177,148,177,151,172,151,165,152,162,152,157,153,155,152,150,154,149,155,152,155,153,156,157,157,157,156,158,155,159,155,162,153,164,153,167,152,168,153,173,152,174,152,175,151,176,152,179,150,180,150,183,150,184,151,186,150,187,151,187,150,187,151,188,150,188,150,190,149,191,149,193,148,193",
+ "zoneName": "CLT"
+ }, {
+ "timezone": "America/Santo_Domingo",
+ "country": "DO",
+ "pin": "153,99",
+ "offset": -4,
+ "points": "151,100,150,100,150,99,150,97,153,98,154,98,153,98,155,99,155,100,151,100",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Scoresbysund",
+ "country": "GL",
+ "pin": "219,27",
+ "offset": -1,
+ "points": "216,25,219,25,218,26,220,25,219,26,220,26,220,26,219,26,220,26,219,26,220,27,217,27,216,26,216,25",
+ "zoneName": "EGT"
+ }, {
+ "timezone": "America/Sao_Paulo",
+ "country": "BR",
+ "pin": "185,158",
+ "offset": -2,
+ "points": "181,166,179,168,178,170,180,167,179,167,179,168,176,172,176,171,176,170,175,170,173,168,172,168,171,167,170,167,173,164,175,162,175,161,174,161,175,159,176,157,178,155,179,152,177,151,176,149,179,146,180,142,181,143,182,142,182,143,184,143,186,143,186,146,189,145,195,147,194,149,195,150,195,152,193,155,193,156,192,157,188,157,183,160,182,160,183,161,182,161,183,161,182,164,181,166",
+ "zoneName": "BRST"
+ }, {
+ "timezone": "America/Sitka",
+ "country": "US",
+ "pin": "62,46",
+ "offset": -9,
+ "points": "66,45,67,46,65,46,66,45,66,45",
+ "zoneName": "AKST"
+ }, {
+ "timezone": "America/St_Barthelemy",
+ "country": "BL",
+ "pin": "163,100",
+ "offset": -4,
+ "points": "163,100,163,100,163,100",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/St_Johns",
+ "country": "CA",
+ "pin": "177,59",
+ "offset": -3.5,
+ "points": "173,53,172,54,173,54,172,54,171,56,172,55,173,56,172,56,173,56,173,57,174,56,176,57,175,58,176,57,175,58,175,59,177,58,176,59,177,59,176,60,176,60,176,59,175,60,175,59,175,58,173,60,174,59,172,59,173,59,173,58,171,59,168,59,169,58,168,58,169,57,170,57,169,57,170,56,169,56,170,55,173,53",
+ "zoneName": "NST"
+ }, {
+ "timezone": "America/Thule",
+ "country": "GL",
+ "pin": "154,19",
+ "offset": -4,
+ "points": "161,19,155,19,153,19,156,18,151,18,158,17,153,17,153,17,149,16,158,15,161,19",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/St_Kitts",
+ "country": "KN",
+ "pin": "163,101",
+ "offset": -4,
+ "points": "163,101,163,101,163,101",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/St_Lucia",
+ "country": "LC",
+ "pin": "165,106",
+ "offset": -4,
+ "points": "165,105,165,106,165,105",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/St_Thomas",
+ "country": "VI",
+ "pin": "160,100",
+ "offset": -4,
+ "points": "160,99,160,99,160,99",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/St_Vincent",
+ "country": "VC",
+ "pin": "165,107",
+ "offset": -4,
+ "points": "165,106,165,107,165,106",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Swift_Current",
+ "country": "CA",
+ "pin": "100,55",
+ "offset": -6,
+ "points": "100,55,100,55,100,55",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Tegucigalpa",
+ "country": "HN",
+ "pin": "129,105",
+ "offset": -6,
+ "points": "129,106,129,107,128,106,126,105,126,104,128,103,131,103,133,103,135,104,132,104,131,106,129,106",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Thunder_Bay",
+ "country": "CA",
+ "pin": "126,58",
+ "offset": -5,
+ "points": "126,58,126,58,126,58",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Tijuana",
+ "country": "MX",
+ "pin": "87,80",
+ "offset": -8,
+ "points": "87,80,87,80,87,80",
+ "zoneName": "PST"
+ }, {
+ "timezone": "America/Toronto",
+ "country": "CA",
+ "pin": "140,64",
+ "offset": -5,
+ "points": "146,62,147,62,143,64,142,63,143,64,143,64,140,64,139,65,140,65,135,67,137,65,137,63,137,62,138,63,139,63,138,61,137,61,136,62,133,61,133,60,132,58,131,58,130,57,127,57,128,58,126,58,126,58,124,58,124,57,125,56,125,55,124,53,125,53,125,52,126,52,127,51,126,50,125,50,125,47,127,46,128,47,132,48,136,48,136,51,138,54,140,54,140,60,141,61,144,62,146,62",
+ "zoneName": "EST"
+ }, {
+ "timezone": "America/Tortola",
+ "country": "VG",
+ "pin": "160,99",
+ "offset": -4,
+ "points": "160,99,160,99,160,99",
+ "zoneName": "AST"
+ }, {
+ "timezone": "America/Vancouver",
+ "country": "CA",
+ "pin": "79,57",
+ "offset": -8,
+ "points": "72,54,76,55,79,58,76,57,77,57,76,57,75,56,74,56,75,56,72,55,73,55,72,54",
+ "zoneName": "PST"
+ }, {
+ "timezone": "America/Vancouver",
+ "country": "CA",
+ "pin": "79,57",
+ "offset": -8,
+ "points": "63,43,62,42,59,43,57,42,83,42,83,45,78,46,79,48,86,52,86,52,85,53,88,55,88,57,79,57,81,56,81,57,80,56,81,57,80,57,80,56,79,57,79,56,79,56,79,55,79,56,78,56,78,56,78,56,78,55,77,56,77,55,77,55,76,55,77,54,76,54,76,55,75,55,76,54,75,55,74,54,75,54,73,54,74,54,73,54,74,53,73,53,72,53,73,52,74,53,74,52,75,52,73,52,73,52,73,52,72,53,72,52,72,52,72,52,71,51,73,51,71,51,71,50,70,51,69,50,70,50,69,49,69,50,69,49,70,48,69,49,70,48,70,48,69,49,69,47,67,46,65,44,63,43",
+ "zoneName": "PST"
+ }, {
+ "timezone": "America/Whitehorse",
+ "country": "CA",
+ "pin": "62,41",
+ "offset": -8,
+ "points": "57,29,60,29,61,32,64,32,64,33,66,33,66,35,69,36,70,37,69,37,70,37,70,39,73,40,74,41,77,40,78,42,54,41,54,28,57,29",
+ "zoneName": "PST"
+ }, {
+ "timezone": "America/Winnipeg",
+ "country": "CA",
+ "pin": "115,56",
+ "offset": -6,
+ "points": "122,58,119,57,118,56,118,57,109,57,109,50,108,49,108,48,108,42,118,42,118,43,121,43,122,45,121,46,124,45,126,46,125,47,125,50,126,50,127,51,126,52,125,52,125,53,124,53,125,55,125,56,123,57,122,58",
+ "zoneName": "CST"
+ }, {
+ "timezone": "America/Yakutat",
+ "country": "US",
+ "pin": "56,42",
+ "offset": -9,
+ "points": "56,42,56,42,56,42",
+ "zoneName": "AKST"
+ }, {
+ "timezone": "America/Yellowknife",
+ "country": "CA",
+ "pin": "91,38",
+ "offset": -7,
+ "points": "83,31,92,34,95,34,97,35,108,36,108,42,78,42,77,40,74,41,73,40,70,39,70,37,69,37,70,37,69,36,66,35,66,33,64,33,64,32,61,32,60,29,62,30,61,29,63,28,64,28,64,29,70,28,67,28,67,29,68,28,68,29,69,28,73,27,72,27,76,29,77,28,78,28,77,29,79,28,82,28,81,28,81,30,83,31",
+ "zoneName": "MST"
+ }, {
+ "timezone": "America/Yellowknife",
+ "country": "CA",
+ "pin": "91,38",
+ "offset": -7,
+ "points": "88,17,90,18,88,18,89,18,87,19,86,19,86,18,83,20,79,19,84,18,88,17",
+ "zoneName": "MST"
+ }, {
+ "timezone": "America/Yellowknife",
+ "country": "CA",
+ "pin": "91,38",
+ "offset": -7,
+ "points": "84,22,87,22,90,23,85,24,83,25,83,26,79,26,75,25,78,23,77,22,81,21,84,22",
+ "zoneName": "MST"
+ }, {
+ "timezone": "America/Yellowknife",
+ "country": "CA",
+ "pin": "91,38",
+ "offset": -7,
+ "points": "91,19,97,20,97,21,93,22,91,21,96,20,87,20,90,20,87,20,91,20,88,20,91,19",
+ "zoneName": "MST"
+ }, {
+ "timezone": "America/Yellowknife",
+ "country": "CA",
+ "pin": "91,38",
+ "offset": -7,
+ "points": "90,23,92,23,91,24,93,24,96,24,95,25,97,24,97,28,87,28,87,28,87,28,95,27,87,27,86,26,90,26,86,26,87,25,85,25,86,25,86,24,90,23",
+ "zoneName": "MST"
+ }, {
+ "timezone": "Antarctica/Macquarie",
+ "country": "AU",
+ "pin": "471,201",
+ "offset": 11,
+ "points": "471,201,471,201,471,201",
+ "zoneName": "MIST"
+ }, {
+ "timezone": "Arctic/Longyearbyen",
+ "country": "SJ",
+ "pin": "272,17",
+ "offset": 1,
+ "points": "275,14,275,14,275,15,275,14,280,16,276,16,276,17,274,18,274,19,273,19,272,18,273,18,269,17,273,17,270,17,274,17,269,17,269,17,274,16,273,16,273,16,271,16,271,15,270,16,271,16,268,16,267,16,268,16,266,15,267,15,266,15,267,15,266,15,265,15,269,14,267,14,269,15,269,15,270,14,273,15,272,14,275,14",
+ "zoneName": "CET"
+ }, {
+ "timezone": "Arctic/Longyearbyen",
+ "country": "SJ",
+ "pin": "272,17",
+ "offset": 1,
+ "points": "285,14,288,14,283,15,275,14,277,14,276,13,278,14,277,13,281,14,282,13,282,13,282,14,285,14",
+ "zoneName": "CET"
+ }, {
+ "timezone": "Asia/Aden",
+ "country": "YE",
+ "pin": "313,107",
+ "offset": 3,
+ "points": "313,107,310,107,309,104,310,101,314,102,314,103,318,100,322,99,324,102,323,102,322,103,313,107",
+ "zoneName": "AST"
+ }, {
+ "timezone": "Asia/Almaty",
+ "country": "KZ",
+ "pin": "357,65",
+ "offset": 6,
+ "points": "348,66,345,68,343,68,342,66,344,65,345,64,344,63,343,61,337,60,339,58,339,58,340,57,342,57,345,55,344,54,344,52,342,52,342,51,342,51,342,51,342,49,346,48,348,48,349,50,352,50,352,51,357,49,356,50,358,51,361,55,362,54,363,55,366,54,368,56,371,56,371,57,369,58,369,60,365,59,364,62,365,62,363,62,361,63,362,63,362,65,361,66,359,65,355,66,353,65,352,65,352,66,350,66,348,66",
+ "zoneName": "ALMT"
+ }, {
+ "timezone": "Asia/Amman",
+ "country": "JO",
+ "pin": "300,81",
+ "offset": 2,
+ "points": "302,82,303,83,302,83,300,84,299,84,299,80,301,80,304,79,305,80,301,81,302,82",
+ "zoneName": "EET"
+ }, {
+ "timezone": "Asia/Anadyr",
+ "country": "RU",
+ "pin": "497,35",
+ "offset": 12,
+ "points": "10,32,14,33,13,34,12,34,12,34,10,34,11,34,11,35,9,35,11,36,10,36,6,35,6,34,2,34,2,33,2,33,0,33,1,34,0,35,0,29,7,31,8,33,9,33,7,32,10,32",
+ "zoneName": "ANAT"
+ }, {
+ "timezone": "Asia/Anadyr",
+ "country": "RU",
+ "pin": "497,35",
+ "offset": 12,
+ "points": "497,35,493,35,498,36,499,38,499,39,496,38,492,39,491,38,487,39,484,37,486,37,484,36,473,35,471,34,471,33,470,33,471,32,469,31,470,30,476,30,476,29,475,28,476,28,483,28,486,30,488,29,486,28,487,28,495,28,500,29,500,35,498,35,497,35",
+ "zoneName": "ANAT"
+ }, {
+ "timezone": "Asia/Aqtau",
+ "country": "KZ",
+ "pin": "320,63",
+ "offset": 5,
+ "points": "328,63,328,68,325,66,323,67,323,66,321,65,320,63,322,63,321,63,321,62,324,62,323,60,321,60,319,61,317,60,318,60,318,59,315,58,319,58,325,57,325,57,326,57,327,60,329,61,329,62,328,63",
+ "zoneName": "AQTT"
+ }, {
+ "timezone": "Asia/Aqtobe",
+ "country": "KZ",
+ "pin": "329,55",
+ "offset": 5,
+ "points": "326,55,326,54,327,55,328,54,331,54,333,55,335,54,336,54,337,56,337,57,339,58,337,60,335,59,331,62,329,62,328,60,326,59,326,57,324,57,326,56,326,55",
+ "zoneName": "AQTT"
+ }, {
+ "timezone": "Asia/Ashgabat",
+ "country": "TM",
+ "pin": "331,72",
+ "offset": 5,
+ "points": "340,74,340,75,337,76,335,75,335,74,334,74,332,73,329,72,325,73,325,71,324,71,324,70,325,70,323,69,324,68,323,67,325,66,327,68,329,68,329,67,331,66,331,66,331,66,331,66,333,66,334,68,336,68,337,70,343,72,342,73,341,73,340,74",
+
<TRUNCATED>
[7/8] ambari git commit: AMBARI-19878 Log Search Portal time zone
selection bug (mgergely)
Posted by mg...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c7997f5/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/custom/daterangepicker/js/daterangepicker.js
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/custom/daterangepicker/js/daterangepicker.js b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/custom/daterangepicker/js/daterangepicker.js
new file mode 100644
index 0000000..e88b45f
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/custom/daterangepicker/js/daterangepicker.js
@@ -0,0 +1,1560 @@
+/**
+* @version: 2.1.24
+* @author: Dan Grossman http://www.dangrossman.info/
+* @copyright: Copyright (c) 2012-2016 Dan Grossman. All rights reserved.
+* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php
+* @website: https://www.improvely.com/
+*/
+// Follow the UMD template https://github.com/umdjs/umd/blob/master/templates/returnExportsGlobal.js
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Make globaly available as well
+ define(['moment', 'jquery'], function (moment, jquery) {
+ return (root.daterangepicker = factory(moment, jquery));
+ });
+ } else if (typeof module === 'object' && module.exports) {
+ // Node / Browserify
+ //isomorphic issue
+ var jQuery = (typeof window != 'undefined') ? window.jQuery : undefined;
+ if (!jQuery) {
+ jQuery = require('jquery');
+ if (!jQuery.fn) jQuery.fn = {};
+ }
+ module.exports = factory(require('moment'), jQuery);
+ } else {
+ // Browser globals
+ root.daterangepicker = factory(root.moment, root.jQuery);
+ }
+}(this, function(moment, $) {
+ var DateRangePicker = function(element, options, cb) {
+
+ //default settings for options
+ this.parentEl = 'body';
+ this.element = $(element);
+ this.startDate = moment().startOf('day');
+ this.endDate = moment().endOf('day');
+ this.minDate = false;
+ this.maxDate = false;
+ this.dateLimit = false;
+ this.autoApply = false;
+ this.singleDatePicker = false;
+ this.showDropdowns = false;
+ this.showWeekNumbers = false;
+ this.showISOWeekNumbers = false;
+ this.showCustomRangeLabel = true;
+ this.timePicker = false;
+ this.timePicker24Hour = false;
+ this.timePickerIncrement = 1;
+ this.timePickerSeconds = false;
+ this.linkedCalendars = true;
+ this.autoUpdateInput = true;
+ this.alwaysShowCalendars = false;
+
+ this.opens = 'right';
+ if (this.element.hasClass('pull-right'))
+ this.opens = 'left';
+
+ this.drops = 'down';
+ if (this.element.hasClass('dropup'))
+ this.drops = 'up';
+
+ this.buttonClasses = 'btn btn-sm';
+ this.applyClass = 'btn-success';
+ this.cancelClass = 'btn-default';
+
+ this.locale = {
+ direction: 'ltr',
+ format: 'MM/DD/YYYY',
+ separator: ' - ',
+ applyLabel: 'Apply',
+ cancelLabel: 'Cancel',
+ weekLabel: 'W',
+ customRangeLabel: 'Custom Range',
+ daysOfWeek: moment.weekdaysMin(),
+ monthNames: moment.monthsShort(),
+ firstDay: moment.localeData().firstDayOfWeek()
+ };
+
+ this.callback = function() { };
+
+ //some state information
+ this.isShowing = false;
+ this.leftCalendar = {};
+ this.rightCalendar = {};
+
+ //custom options from user
+ if (typeof options !== 'object' || options === null)
+ options = {};
+
+ //allow setting options with data attributes
+ //data-api options will be overwritten with custom javascript options
+ options = $.extend(this.element.data(), options);
+
+ //html template for the picker UI
+ if (typeof options.template !== 'string' && !(options.template instanceof $))
+ options.template = '<div class="daterangepicker dropdown-menu">' +
+ '<div class="calendar left">' +
+ '<div class="daterangepicker_input">' +
+ '<input class="input-mini form-control" type="text" name="daterangepicker_start" value="" />' +
+ '<i class="fa fa-calendar glyphicon glyphicon-calendar"></i>' +
+ '<div class="calendar-time">' +
+ '<div></div>' +
+ '<i class="fa fa-clock-o glyphicon glyphicon-time"></i>' +
+ '</div>' +
+ '</div>' +
+ '<div class="calendar-table"></div>' +
+ '</div>' +
+ '<div class="calendar right">' +
+ '<div class="daterangepicker_input">' +
+ '<input class="input-mini form-control" type="text" name="daterangepicker_end" value="" />' +
+ '<i class="fa fa-calendar glyphicon glyphicon-calendar"></i>' +
+ '<div class="calendar-time">' +
+ '<div></div>' +
+ '<i class="fa fa-clock-o glyphicon glyphicon-time"></i>' +
+ '</div>' +
+ '</div>' +
+ '<div class="calendar-table"></div>' +
+ '</div>' +
+ '<div class="ranges">' +
+ '<div class="range_inputs">' +
+ '<button class="applyBtn" disabled="disabled" type="button"></button> ' +
+ '<button class="cancelBtn" type="button"></button>' +
+ '</div>' +
+ '</div>' +
+ '</div>';
+
+ this.parentEl = (options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl);
+ this.container = $(options.template).appendTo(this.parentEl);
+
+ //
+ // handle all the possible options overriding defaults
+ //
+
+ if (typeof options.locale === 'object') {
+
+ if (typeof options.locale.direction === 'string')
+ this.locale.direction = options.locale.direction;
+
+ if (typeof options.locale.format === 'string')
+ this.locale.format = options.locale.format;
+
+ if (typeof options.locale.separator === 'string')
+ this.locale.separator = options.locale.separator;
+
+ if (typeof options.locale.daysOfWeek === 'object')
+ this.locale.daysOfWeek = options.locale.daysOfWeek.slice();
+
+ if (typeof options.locale.monthNames === 'object')
+ this.locale.monthNames = options.locale.monthNames.slice();
+
+ if (typeof options.locale.firstDay === 'number')
+ this.locale.firstDay = options.locale.firstDay;
+
+ if (typeof options.locale.applyLabel === 'string')
+ this.locale.applyLabel = options.locale.applyLabel;
+
+ if (typeof options.locale.cancelLabel === 'string')
+ this.locale.cancelLabel = options.locale.cancelLabel;
+
+ if (typeof options.locale.weekLabel === 'string')
+ this.locale.weekLabel = options.locale.weekLabel;
+
+ if (typeof options.locale.customRangeLabel === 'string')
+ this.locale.customRangeLabel = options.locale.customRangeLabel;
+
+ }
+ this.container.addClass(this.locale.direction);
+
+ if (typeof options.startDate === 'string')
+ this.startDate = moment(options.startDate, this.locale.format);
+
+ if (typeof options.endDate === 'string')
+ this.endDate = moment(options.endDate, this.locale.format);
+
+ if (typeof options.minDate === 'string')
+ this.minDate = moment(options.minDate, this.locale.format);
+
+ if (typeof options.maxDate === 'string')
+ this.maxDate = moment(options.maxDate, this.locale.format);
+
+ if (typeof options.startDate === 'object')
+ this.startDate = moment(options.startDate);
+
+ if (typeof options.endDate === 'object')
+ this.endDate = moment(options.endDate);
+
+ if (typeof options.minDate === 'object')
+ this.minDate = moment(options.minDate);
+
+ if (typeof options.maxDate === 'object')
+ this.maxDate = moment(options.maxDate);
+
+ // sanity check for bad options
+ if (this.minDate && this.startDate.isBefore(this.minDate))
+ this.startDate = this.minDate.clone();
+
+ // sanity check for bad options
+ if (this.maxDate && this.endDate.isAfter(this.maxDate))
+ this.endDate = this.maxDate.clone();
+
+ if (typeof options.applyClass === 'string')
+ this.applyClass = options.applyClass;
+
+ if (typeof options.cancelClass === 'string')
+ this.cancelClass = options.cancelClass;
+
+ if (typeof options.dateLimit === 'object')
+ this.dateLimit = options.dateLimit;
+
+ if (typeof options.opens === 'string')
+ this.opens = options.opens;
+
+ if (typeof options.drops === 'string')
+ this.drops = options.drops;
+
+ if (typeof options.showWeekNumbers === 'boolean')
+ this.showWeekNumbers = options.showWeekNumbers;
+
+ if (typeof options.showISOWeekNumbers === 'boolean')
+ this.showISOWeekNumbers = options.showISOWeekNumbers;
+
+ if (typeof options.buttonClasses === 'string')
+ this.buttonClasses = options.buttonClasses;
+
+ if (typeof options.buttonClasses === 'object')
+ this.buttonClasses = options.buttonClasses.join(' ');
+
+ if (typeof options.showDropdowns === 'boolean')
+ this.showDropdowns = options.showDropdowns;
+
+ if (typeof options.showCustomRangeLabel === 'boolean')
+ this.showCustomRangeLabel = options.showCustomRangeLabel;
+
+ if (typeof options.singleDatePicker === 'boolean') {
+ this.singleDatePicker = options.singleDatePicker;
+ if (this.singleDatePicker)
+ this.endDate = this.startDate.clone();
+ }
+
+ if (typeof options.timePicker === 'boolean')
+ this.timePicker = options.timePicker;
+
+ if (typeof options.timePickerSeconds === 'boolean')
+ this.timePickerSeconds = options.timePickerSeconds;
+
+ if (typeof options.timePickerIncrement === 'number')
+ this.timePickerIncrement = options.timePickerIncrement;
+
+ if (typeof options.timePicker24Hour === 'boolean')
+ this.timePicker24Hour = options.timePicker24Hour;
+
+ if (typeof options.autoApply === 'boolean')
+ this.autoApply = options.autoApply;
+
+ if (typeof options.autoUpdateInput === 'boolean')
+ this.autoUpdateInput = options.autoUpdateInput;
+
+ if (typeof options.linkedCalendars === 'boolean')
+ this.linkedCalendars = options.linkedCalendars;
+
+ if (typeof options.isInvalidDate === 'function')
+ this.isInvalidDate = options.isInvalidDate;
+
+ if (typeof options.isCustomDate === 'function')
+ this.isCustomDate = options.isCustomDate;
+
+ if (typeof options.alwaysShowCalendars === 'boolean')
+ this.alwaysShowCalendars = options.alwaysShowCalendars;
+
+ // update day names order to firstDay
+ if (this.locale.firstDay != 0) {
+ var iterator = this.locale.firstDay;
+ while (iterator > 0) {
+ this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift());
+ iterator--;
+ }
+ }
+
+ var start, end, range;
+
+ //if no start/end dates set, check if an input element contains initial values
+ if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') {
+ if ($(this.element).is('input[type=text]')) {
+ var val = $(this.element).val(),
+ split = val.split(this.locale.separator);
+
+ start = end = null;
+
+ if (split.length == 2) {
+ start = moment(split[0], this.locale.format);
+ end = moment(split[1], this.locale.format);
+ } else if (this.singleDatePicker && val !== "") {
+ start = moment(val, this.locale.format);
+ end = moment(val, this.locale.format);
+ }
+ if (start !== null && end !== null) {
+ this.setStartDate(start);
+ this.setEndDate(end);
+ }
+ }
+ }
+
+ if (typeof options.ranges === 'object') {
+ var list = '<ul>';
+ for (range of options.ranges) {
+ list += '<li data-range-key="' + range + '">' + range + '</li>';
+ }
+ if (this.showCustomRangeLabel) {
+ list += '<li data-range-key="' + this.locale.customRangeLabel + '">' + this.locale.customRangeLabel + '</li>';
+ }
+ list += '</ul>';
+ this.container.find('.ranges').prepend(list);
+ }
+
+ if (typeof cb === 'function') {
+ this.callback = cb;
+ }
+
+ if (!this.timePicker) {
+ this.startDate = this.startDate.startOf('day');
+ this.endDate = this.endDate.endOf('day');
+ this.container.find('.calendar-time').hide();
+ }
+
+ //can't be used together for now
+ if (this.timePicker && this.autoApply)
+ this.autoApply = false;
+
+ if (this.autoApply && typeof options.ranges !== 'object') {
+ this.container.find('.ranges').hide();
+ } else if (this.autoApply) {
+ this.container.find('.applyBtn, .cancelBtn').addClass('hide');
+ }
+
+ if (this.singleDatePicker) {
+ this.container.addClass('single');
+ this.container.find('.calendar.left').addClass('single');
+ this.container.find('.calendar.left').show();
+ this.container.find('.calendar.right').hide();
+ this.container.find('.daterangepicker_input input, .daterangepicker_input > i').hide();
+ if (this.timePicker) {
+ this.container.find('.ranges ul').hide();
+ } else {
+ this.container.find('.ranges').hide();
+ }
+ }
+
+ if ((typeof options.ranges === 'undefined' && !this.singleDatePicker) || this.alwaysShowCalendars) {
+ this.container.addClass('show-calendar');
+ }
+
+ this.container.addClass('opens' + this.opens);
+
+ //swap the position of the predefined ranges if opens right
+ if (typeof options.ranges !== 'undefined' && this.opens == 'right') {
+ this.container.find('.ranges').prependTo( this.container.find('.calendar.left').parent() );
+ }
+
+ //apply CSS classes and labels to buttons
+ this.container.find('.applyBtn, .cancelBtn').addClass(this.buttonClasses);
+ if (this.applyClass.length)
+ this.container.find('.applyBtn').addClass(this.applyClass);
+ if (this.cancelClass.length)
+ this.container.find('.cancelBtn').addClass(this.cancelClass);
+ this.container.find('.applyBtn').html(this.locale.applyLabel);
+ this.container.find('.cancelBtn').html(this.locale.cancelLabel);
+
+ //
+ // event listeners
+ //
+
+ this.container.find('.calendar')
+ .on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this))
+ .on('click.daterangepicker', '.next', $.proxy(this.clickNext, this))
+ .on('mousedown.daterangepicker', 'td.available', $.proxy(this.clickDate, this))
+ .on('mouseenter.daterangepicker', 'td.available', $.proxy(this.hoverDate, this))
+ .on('mouseleave.daterangepicker', 'td.available', $.proxy(this.updateFormInputs, this))
+ .on('change.daterangepicker', 'select.yearselect', $.proxy(this.monthOrYearChanged, this))
+ .on('change.daterangepicker', 'select.monthselect', $.proxy(this.monthOrYearChanged, this))
+ .on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect', $.proxy(this.timeChanged, this))
+ .on('click.daterangepicker', '.daterangepicker_input input', $.proxy(this.showCalendars, this))
+ .on('focus.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsFocused, this))
+ .on('blur.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsBlurred, this))
+ .on('change.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsChanged, this));
+
+ this.container.find('.ranges')
+ .on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this))
+ .on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this))
+ .on('click.daterangepicker', 'li', $.proxy(this.clickRange, this))
+ .on('mouseenter.daterangepicker', 'li', $.proxy(this.hoverRange, this))
+ .on('mouseleave.daterangepicker', 'li', $.proxy(this.updateFormInputs, this));
+
+ if (this.element.is('input') || this.element.is('button')) {
+ this.element.on({
+ 'click.daterangepicker': $.proxy(this.show, this),
+ 'focus.daterangepicker': $.proxy(this.show, this),
+ 'keyup.daterangepicker': $.proxy(this.elementChanged, this),
+ 'keydown.daterangepicker': $.proxy(this.keydown, this)
+ });
+ } else {
+ this.element.on('click.daterangepicker', $.proxy(this.toggle, this));
+ }
+
+ //
+ // if attached to a text input, set the initial value
+ //
+
+ if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) {
+ this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));
+ this.element.trigger('change');
+ } else if (this.element.is('input') && this.autoUpdateInput) {
+ this.element.val(this.startDate.format(this.locale.format));
+ this.element.trigger('change');
+ }
+
+ };
+
+ DateRangePicker.prototype = {
+
+ constructor: DateRangePicker,
+
+ setStartDate: function(startDate) {
+ if (typeof startDate === 'string')
+ this.startDate = moment(startDate, this.locale.format);
+
+ if (typeof startDate === 'object')
+ this.startDate = moment(startDate);
+
+ if (!this.timePicker)
+ this.startDate = this.startDate.startOf('day');
+
+ if (this.timePicker && this.timePickerIncrement)
+ this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);
+
+ if (this.minDate && this.startDate.isBefore(this.minDate)) {
+ this.startDate = this.minDate;
+ if (this.timePicker && this.timePickerIncrement)
+ this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);
+ }
+
+ if (this.maxDate && this.startDate.isAfter(this.maxDate)) {
+ this.startDate = this.maxDate;
+ if (this.timePicker && this.timePickerIncrement)
+ this.startDate.minute(Math.floor(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);
+ }
+
+ if (!this.isShowing)
+ this.updateElement();
+
+ this.updateMonthsInView();
+ },
+
+ setEndDate: function(endDate) {
+ if (typeof endDate === 'string')
+ this.endDate = moment(endDate, this.locale.format);
+
+ if (typeof endDate === 'object')
+ this.endDate = moment(endDate);
+
+ if (!this.timePicker)
+ this.endDate = this.endDate.endOf('day');
+
+ if (this.timePicker && this.timePickerIncrement)
+ this.endDate.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);
+
+ if (this.endDate.isBefore(this.startDate))
+ this.endDate = this.startDate.clone();
+
+ if (this.maxDate && this.endDate.isAfter(this.maxDate))
+ this.endDate = this.maxDate;
+
+ if (this.dateLimit && this.startDate.clone().add(this.dateLimit).isBefore(this.endDate))
+ this.endDate = this.startDate.clone().add(this.dateLimit);
+
+ this.previousRightTime = this.endDate.clone();
+
+ if (!this.isShowing)
+ this.updateElement();
+
+ this.updateMonthsInView();
+ },
+
+ isInvalidDate: function() {
+ return false;
+ },
+
+ isCustomDate: function() {
+ return false;
+ },
+
+ updateView: function() {
+ if (this.timePicker) {
+ this.renderTimePicker('left');
+ this.renderTimePicker('right');
+ if (!this.endDate) {
+ this.container.find('.right .calendar-time select').attr('disabled', 'disabled').addClass('disabled');
+ } else {
+ this.container.find('.right .calendar-time select').removeAttr('disabled').removeClass('disabled');
+ }
+ }
+ if (this.endDate) {
+ this.container.find('input[name="daterangepicker_end"]').removeClass('active');
+ this.container.find('input[name="daterangepicker_start"]').addClass('active');
+ } else {
+ this.container.find('input[name="daterangepicker_end"]').addClass('active');
+ this.container.find('input[name="daterangepicker_start"]').removeClass('active');
+ }
+ this.updateMonthsInView();
+ this.updateCalendars();
+ this.updateFormInputs();
+ },
+
+ updateMonthsInView: function() {
+ if (this.endDate) {
+
+ //if both dates are visible already, do nothing
+ if (!this.singleDatePicker && this.leftCalendar.month && this.rightCalendar.month &&
+ (this.startDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.startDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))
+ &&
+ (this.endDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.endDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))
+ ) {
+ return;
+ }
+
+ this.leftCalendar.month = this.startDate.clone().date(2);
+ if (!this.linkedCalendars && (this.endDate.month() != this.startDate.month() || this.endDate.year() != this.startDate.year())) {
+ this.rightCalendar.month = this.endDate.clone().date(2);
+ } else {
+ this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');
+ }
+
+ } else {
+ if (this.leftCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM') && this.rightCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM')) {
+ this.leftCalendar.month = this.startDate.clone().date(2);
+ this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');
+ }
+ }
+ if (this.maxDate && this.linkedCalendars && !this.singleDatePicker && this.rightCalendar.month > this.maxDate) {
+ this.rightCalendar.month = this.maxDate.clone().date(2);
+ this.leftCalendar.month = this.maxDate.clone().date(2).subtract(1, 'month');
+ }
+ },
+
+ updateCalendars: function() {
+
+ if (this.timePicker) {
+ var hour, minute, second;
+ if (this.endDate) {
+ hour = parseInt(this.container.find('.left .hourselect').val(), 10);
+ minute = parseInt(this.container.find('.left .minuteselect').val(), 10);
+ second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;
+ if (!this.timePicker24Hour) {
+ var ampm = this.container.find('.left .ampmselect').val();
+ if (ampm === 'PM' && hour < 12)
+ hour += 12;
+ if (ampm === 'AM' && hour === 12)
+ hour = 0;
+ }
+ } else {
+ hour = parseInt(this.container.find('.right .hourselect').val(), 10);
+ minute = parseInt(this.container.find('.right .minuteselect').val(), 10);
+ second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;
+ if (!this.timePicker24Hour) {
+ var ampm = this.container.find('.right .ampmselect').val();
+ if (ampm === 'PM' && hour < 12)
+ hour += 12;
+ if (ampm === 'AM' && hour === 12)
+ hour = 0;
+ }
+ }
+ this.leftCalendar.month.hour(hour).minute(minute).second(second);
+ this.rightCalendar.month.hour(hour).minute(minute).second(second);
+ }
+
+ this.renderCalendar('left');
+ this.renderCalendar('right');
+
+ //highlight any predefined range matching the current start and end dates
+ this.container.find('.ranges li').removeClass('active');
+ this.chosenLabel = this.container.find('.ranges li:last').addClass('active').html();
+ if (this.endDate == null) return;
+ this.showCalendars();
+ },
+
+ renderCalendar: function(side) {
+
+ //
+ // Build the matrix of dates that will populate the calendar
+ //
+
+ var calendar = side == 'left' ? this.leftCalendar : this.rightCalendar;
+ var month = calendar.month.month();
+ var year = calendar.month.year();
+ var hour = calendar.month.hour();
+ var minute = calendar.month.minute();
+ var second = calendar.month.second();
+ var daysInMonth = moment([year, month]).daysInMonth();
+ var firstDay = moment([year, month, 1]);
+ var lastDay = moment([year, month, daysInMonth]);
+ var lastMonth = moment(firstDay).subtract(1, 'month').month();
+ var lastYear = moment(firstDay).subtract(1, 'month').year();
+ var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth();
+ var dayOfWeek = firstDay.day();
+
+ //initialize a 6 rows x 7 columns array for the calendar
+ var calendar = [];
+ calendar.firstDay = firstDay;
+ calendar.lastDay = lastDay;
+
+ for (var i = 0; i < 6; i++) {
+ calendar[i] = [];
+ }
+
+ //populate the calendar with date objects
+ var curDate;
+ var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1;
+ if (startDay == daysInLastMonth + 1)
+ curDate = moment([year, month, 1, 12, minute, second]);
+ else if (startDay > daysInLastMonth )
+ curDate = moment([lastYear, lastMonth, startDay-7, 12, minute, second]);
+ else
+ curDate = moment([lastYear, lastMonth, startDay, 12, minute, second]);
+
+ var col, row;
+ for (var i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add(24, 'hour')) {
+ if (i > 0 && col % 7 === 0) {
+ col = 0;
+ row++;
+ if (curDate.month() != month)
+ break
+ }
+ calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second);
+ curDate.hour(12);
+
+ if (this.minDate && calendar[row][col].format('YYYY-MM-DD') == this.minDate.format('YYYY-MM-DD') && calendar[row][col].isBefore(this.minDate) && side == 'left') {
+ calendar[row][col] = this.minDate.clone();
+ }
+
+ if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') == this.maxDate.format('YYYY-MM-DD') && calendar[row][col].isAfter(this.maxDate) && side == 'right') {
+ calendar[row][col] = this.maxDate.clone();
+ }
+
+ }
+
+ //make the calendar object available to hoverDate/clickDate
+ if (side == 'left') {
+ this.leftCalendar.calendar = calendar;
+ } else {
+ this.rightCalendar.calendar = calendar;
+ }
+
+ //
+ // Display the calendar
+ //
+
+ var minDate = side == 'left' ? this.minDate : this.startDate;
+ var maxDate = this.maxDate;
+ var selected = side == 'left' ? this.startDate : this.endDate;
+ var arrow = this.locale.direction == 'ltr' ? {left: 'chevron-left', right: 'chevron-right'} : {left: 'chevron-right', right: 'chevron-left'};
+
+ var html = '<table class="table-condensed">';
+ html += '<thead>';
+ html += '<tr>';
+
+ // add empty cell for week number
+ if (this.showWeekNumbers || this.showISOWeekNumbers)
+ html += '<th></th>';
+
+ if ((!minDate || minDate.isBefore(calendar.firstDay)) && (!this.linkedCalendars || side == 'left')) {
+ html += '<th class="prev available"><i class="fa fa-' + arrow.left + ' glyphicon glyphicon-' + arrow.left + '"></i></th>';
+ } else {
+ html += '<th></th>';
+ }
+
+ var dateHtml = this.locale.monthNames[calendar[1][1].month()] + " " + calendar[1][1].year();
+
+ if (this.showDropdowns) {
+ var currentMonth = calendar[1][1].month();
+ var currentYear = calendar[1][1].year();
+ var maxYear = (maxDate && maxDate.year()) || (currentYear + 5);
+ var minYear = (minDate && minDate.year()) || (currentYear - 50);
+ var inMinYear = currentYear == minYear;
+ var inMaxYear = currentYear == maxYear;
+
+ var monthHtml = '<select class="monthselect">';
+ for (var m = 0; m < 12; m++) {
+ if ((!inMinYear || m >= minDate.month()) && (!inMaxYear || m <= maxDate.month())) {
+ monthHtml += "<option value='" + m + "'" +
+ (m === currentMonth ? " selected='selected'" : "") +
+ ">" + this.locale.monthNames[m] + "</option>";
+ } else {
+ monthHtml += "<option value='" + m + "'" +
+ (m === currentMonth ? " selected='selected'" : "") +
+ " disabled='disabled'>" + this.locale.monthNames[m] + "</option>";
+ }
+ }
+ monthHtml += "</select>";
+
+ var yearHtml = '<select class="yearselect">';
+ for (var y = minYear; y <= maxYear; y++) {
+ yearHtml += '<option value="' + y + '"' +
+ (y === currentYear ? ' selected="selected"' : '') +
+ '>' + y + '</option>';
+ }
+ yearHtml += '</select>';
+
+ dateHtml = monthHtml + yearHtml;
+ }
+
+ html += '<th colspan="5" class="month">' + dateHtml + '</th>';
+ if ((!maxDate || maxDate.isAfter(calendar.lastDay)) && (!this.linkedCalendars || side == 'right' || this.singleDatePicker)) {
+ html += '<th class="next available"><i class="fa fa-' + arrow.right + ' glyphicon glyphicon-' + arrow.right + '"></i></th>';
+ } else {
+ html += '<th></th>';
+ }
+
+ html += '</tr>';
+ html += '<tr>';
+
+ // add week number label
+ if (this.showWeekNumbers || this.showISOWeekNumbers)
+ html += '<th class="week">' + this.locale.weekLabel + '</th>';
+
+ $.each(this.locale.daysOfWeek, function(index, dayOfWeek) {
+ html += '<th>' + dayOfWeek + '</th>';
+ });
+
+ html += '</tr>';
+ html += '</thead>';
+ html += '<tbody>';
+
+ //adjust maxDate to reflect the dateLimit setting in order to
+ //grey out end dates beyond the dateLimit
+ if (this.endDate == null && this.dateLimit) {
+ var maxLimit = this.startDate.clone().add(this.dateLimit).endOf('day');
+ if (!maxDate || maxLimit.isBefore(maxDate)) {
+ maxDate = maxLimit;
+ }
+ }
+
+ for (var row = 0; row < 6; row++) {
+ if (calendar[row].length == 0)
+ continue
+
+ html += '<tr>';
+
+ // add week number
+ if (this.showWeekNumbers)
+ html += '<td class="week">' + calendar[row][0].week() + '</td>';
+ else if (this.showISOWeekNumbers)
+ html += '<td class="week">' + calendar[row][0].isoWeek() + '</td>';
+
+ for (var col = 0; col < 7; col++) {
+
+ var classes = [];
+
+ //highlight today's date
+ if (calendar[row][col].isSame(new Date(), "day"))
+ classes.push('today');
+
+ //highlight weekends
+ if (calendar[row][col].isoWeekday() > 5)
+ classes.push('weekend');
+
+ //grey out the dates in other months displayed at beginning and end of this calendar
+ if (calendar[row][col].month() != calendar[1][1].month())
+ classes.push('off');
+
+ //don't allow selection of dates before the minimum date
+ if (this.minDate && calendar[row][col].isBefore(this.minDate, 'day'))
+ classes.push('off', 'disabled');
+
+ //don't allow selection of dates after the maximum date
+ if (maxDate && calendar[row][col].isAfter(maxDate, 'day'))
+ classes.push('off', 'disabled');
+
+ //don't allow selection of date if a custom function decides it's invalid
+ if (this.isInvalidDate(calendar[row][col]))
+ classes.push('off', 'disabled');
+
+ //highlight the currently selected start date
+ if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD'))
+ classes.push('active', 'start-date');
+
+ //highlight the currently selected end date
+ if (this.endDate != null && calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD'))
+ classes.push('active', 'end-date');
+
+ //highlight dates in-between the selected dates
+ if (this.endDate != null && calendar[row][col] > this.startDate && calendar[row][col] < this.endDate)
+ classes.push('in-range');
+
+ //apply custom classes for this date
+ var isCustom = this.isCustomDate(calendar[row][col]);
+ if (isCustom !== false) {
+ if (typeof isCustom === 'string')
+ classes.push(isCustom);
+ else
+ Array.prototype.push.apply(classes, isCustom);
+ }
+
+ var cname = '', disabled = false;
+ for (var i = 0; i < classes.length; i++) {
+ cname += classes[i] + ' ';
+ if (classes[i] == 'disabled')
+ disabled = true;
+ }
+ if (!disabled)
+ cname += 'available';
+
+ html += '<td class="' + cname.replace(/^\s+|\s+$/g, '') + '" data-title="' + 'r' + row + 'c' + col + '">' + calendar[row][col].date() + '</td>';
+
+ }
+ html += '</tr>';
+ }
+
+ html += '</tbody>';
+ html += '</table>';
+
+ this.container.find('.calendar.' + side + ' .calendar-table').html(html);
+
+ },
+
+ renderTimePicker: function(side) {
+
+ // Don't bother updating the time picker if it's currently disabled
+ // because an end date hasn't been clicked yet
+ if (side == 'right' && !this.endDate) return;
+
+ var html, selected, minDate, maxDate = this.maxDate;
+
+ if (this.dateLimit && (!this.maxDate || this.startDate.clone().add(this.dateLimit).isAfter(this.maxDate)))
+ maxDate = this.startDate.clone().add(this.dateLimit);
+
+ if (side == 'left') {
+ selected = this.startDate.clone();
+ minDate = this.minDate;
+ } else if (side == 'right') {
+ selected = this.endDate.clone();
+ minDate = this.startDate;
+
+ //Preserve the time already selected
+ var timeSelector = this.container.find('.calendar.right .calendar-time div');
+ if (!this.endDate && timeSelector.html() != '') {
+
+ selected.hour(timeSelector.find('.hourselect option:selected').val() || selected.hour());
+ selected.minute(timeSelector.find('.minuteselect option:selected').val() || selected.minute());
+ selected.second(timeSelector.find('.secondselect option:selected').val() || selected.second());
+
+ if (!this.timePicker24Hour) {
+ var ampm = timeSelector.find('.ampmselect option:selected').val();
+ if (ampm === 'PM' && selected.hour() < 12)
+ selected.hour(selected.hour() + 12);
+ if (ampm === 'AM' && selected.hour() === 12)
+ selected.hour(0);
+ }
+
+ }
+
+ if (selected.isBefore(this.startDate))
+ selected = this.startDate.clone();
+
+ if (maxDate && selected.isAfter(maxDate))
+ selected = maxDate.clone();
+
+ }
+
+ //
+ // hours
+ //
+
+ html = '<select class="hourselect">';
+
+ var start = this.timePicker24Hour ? 0 : 1;
+ var end = this.timePicker24Hour ? 23 : 12;
+
+ for (var i = start; i <= end; i++) {
+ var i_in_24 = i;
+ if (!this.timePicker24Hour)
+ i_in_24 = selected.hour() >= 12 ? (i == 12 ? 12 : i + 12) : (i == 12 ? 0 : i);
+
+ var time = selected.clone().hour(i_in_24);
+ var disabled = false;
+ if (minDate && time.minute(59).isBefore(minDate))
+ disabled = true;
+ if (maxDate && time.minute(0).isAfter(maxDate))
+ disabled = true;
+
+ if (i_in_24 == selected.hour() && !disabled) {
+ html += '<option value="' + i + '" selected="selected">' + i + '</option>';
+ } else if (disabled) {
+ html += '<option value="' + i + '" disabled="disabled" class="disabled">' + i + '</option>';
+ } else {
+ html += '<option value="' + i + '">' + i + '</option>';
+ }
+ }
+
+ html += '</select> ';
+
+ //
+ // minutes
+ //
+
+ html += ': <select class="minuteselect">';
+
+ for (var i = 0; i < 60; i += this.timePickerIncrement) {
+ var padded = i < 10 ? '0' + i : i;
+ var time = selected.clone().minute(i);
+
+ var disabled = false;
+ if (minDate && time.second(59).isBefore(minDate))
+ disabled = true;
+ if (maxDate && time.second(0).isAfter(maxDate))
+ disabled = true;
+
+ if (selected.minute() == i && !disabled) {
+ html += '<option value="' + i + '" selected="selected">' + padded + '</option>';
+ } else if (disabled) {
+ html += '<option value="' + i + '" disabled="disabled" class="disabled">' + padded + '</option>';
+ } else {
+ html += '<option value="' + i + '">' + padded + '</option>';
+ }
+ }
+
+ html += '</select> ';
+
+ //
+ // seconds
+ //
+
+ if (this.timePickerSeconds) {
+ html += ': <select class="secondselect">';
+
+ for (var i = 0; i < 60; i++) {
+ var padded = i < 10 ? '0' + i : i;
+ var time = selected.clone().second(i);
+
+ var disabled = false;
+ if (minDate && time.isBefore(minDate))
+ disabled = true;
+ if (maxDate && time.isAfter(maxDate))
+ disabled = true;
+
+ if (selected.second() == i && !disabled) {
+ html += '<option value="' + i + '" selected="selected">' + padded + '</option>';
+ } else if (disabled) {
+ html += '<option value="' + i + '" disabled="disabled" class="disabled">' + padded + '</option>';
+ } else {
+ html += '<option value="' + i + '">' + padded + '</option>';
+ }
+ }
+
+ html += '</select> ';
+ }
+
+ //
+ // AM/PM
+ //
+
+ if (!this.timePicker24Hour) {
+ html += '<select class="ampmselect">';
+
+ var am_html = '';
+ var pm_html = '';
+
+ if (minDate && selected.clone().hour(12).minute(0).second(0).isBefore(minDate))
+ am_html = ' disabled="disabled" class="disabled"';
+
+ if (maxDate && selected.clone().hour(0).minute(0).second(0).isAfter(maxDate))
+ pm_html = ' disabled="disabled" class="disabled"';
+
+ if (selected.hour() >= 12) {
+ html += '<option value="AM"' + am_html + '>AM</option><option value="PM" selected="selected"' + pm_html + '>PM</option>';
+ } else {
+ html += '<option value="AM" selected="selected"' + am_html + '>AM</option><option value="PM"' + pm_html + '>PM</option>';
+ }
+
+ html += '</select>';
+ }
+
+ this.container.find('.calendar.' + side + ' .calendar-time div').html(html);
+
+ },
+
+ updateFormInputs: function() {
+
+ //ignore mouse movements while an above-calendar text input has focus
+ if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus"))
+ return;
+
+ this.container.find('input[name=daterangepicker_start]').val(this.startDate.format(this.locale.format));
+ if (this.endDate)
+ this.container.find('input[name=daterangepicker_end]').val(this.endDate.format(this.locale.format));
+
+ if (this.singleDatePicker || (this.endDate && (this.startDate.isBefore(this.endDate) || this.startDate.isSame(this.endDate)))) {
+ this.container.find('button.applyBtn').removeAttr('disabled');
+ } else {
+ this.container.find('button.applyBtn').attr('disabled', 'disabled');
+ }
+
+ },
+
+ move: function() {
+ var parentOffset = { top: 0, left: 0 },
+ containerTop;
+ var parentRightEdge = $(window).width();
+ if (!this.parentEl.is('body')) {
+ parentOffset = {
+ top: this.parentEl.offset().top - this.parentEl.scrollTop(),
+ left: this.parentEl.offset().left - this.parentEl.scrollLeft()
+ };
+ parentRightEdge = this.parentEl[0].clientWidth + this.parentEl.offset().left;
+ }
+
+ if (this.drops == 'up')
+ containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top;
+ else
+ containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top;
+ this.container[this.drops == 'up' ? 'addClass' : 'removeClass']('dropup');
+
+ if (this.opens == 'left') {
+ this.container.css({
+ top: containerTop,
+ right: parentRightEdge - this.element.offset().left - this.element.outerWidth(),
+ left: 'auto'
+ });
+ if (this.container.offset().left < 0) {
+ this.container.css({
+ right: 'auto',
+ left: 9
+ });
+ }
+ } else if (this.opens == 'center') {
+ this.container.css({
+ top: containerTop,
+ left: this.element.offset().left - parentOffset.left + this.element.outerWidth() / 2
+ - this.container.outerWidth() / 2,
+ right: 'auto'
+ });
+ if (this.container.offset().left < 0) {
+ this.container.css({
+ right: 'auto',
+ left: 9
+ });
+ }
+ } else {
+ this.container.css({
+ top: containerTop,
+ left: this.element.offset().left - parentOffset.left,
+ right: 'auto'
+ });
+ if (this.container.offset().left + this.container.outerWidth() > $(window).width()) {
+ this.container.css({
+ left: 'auto',
+ right: 0
+ });
+ }
+ }
+ },
+
+ show: function(e) {
+ if (this.isShowing) return;
+
+ // Create a click proxy that is private to this instance of datepicker, for unbinding
+ this._outsideClickProxy = $.proxy(function(e) { this.outsideClick(e); }, this);
+
+ // Bind global datepicker mousedown for hiding and
+ $(document)
+ .on('mousedown.daterangepicker', this._outsideClickProxy)
+ // also support mobile devices
+ .on('touchend.daterangepicker', this._outsideClickProxy)
+ // also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them
+ .on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy)
+ // and also close when focus changes to outside the picker (eg. tabbing between controls)
+ .on('focusin.daterangepicker', this._outsideClickProxy);
+
+ // Reposition the picker if the window is resized while it's open
+ $(window).on('resize.daterangepicker', $.proxy(function(e) { this.move(e); }, this));
+
+ this.oldStartDate = this.startDate.clone();
+ this.oldEndDate = this.endDate.clone();
+ this.previousRightTime = this.endDate.clone();
+
+ this.updateView();
+ this.container.show();
+ this.move();
+ this.element.trigger('show.daterangepicker', this);
+ this.isShowing = true;
+ },
+
+ hide: function(e) {
+ if (!this.isShowing) return;
+
+ //incomplete date selection, revert to last values
+ if (!this.endDate) {
+ this.startDate = this.oldStartDate.clone();
+ this.endDate = this.oldEndDate.clone();
+ }
+
+ //if a new date range was selected, invoke the user callback function
+ if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate))
+ this.callback(this.startDate, this.endDate, this.chosenLabel);
+
+ //if picker is attached to a text input, update it
+ this.updateElement();
+
+ $(document).off('.daterangepicker');
+ $(window).off('.daterangepicker');
+ this.container.hide();
+ this.element.trigger('hide.daterangepicker', this);
+ this.isShowing = false;
+ },
+
+ toggle: function(e) {
+ if (this.isShowing) {
+ this.hide();
+ } else {
+ this.show();
+ }
+ },
+
+ outsideClick: function(e) {
+ var target = $(e.target);
+ // if the page is clicked anywhere except within the daterangerpicker/button
+ // itself then call this.hide()
+ if (
+ // ie modal dialog fix
+ e.type == "focusin" ||
+ target.closest(this.element).length ||
+ target.closest(this.container).length ||
+ target.closest('.calendar-table').length
+ ) return;
+ this.hide();
+ this.element.trigger('outsideClick.daterangepicker', this);
+ },
+
+ showCalendars: function() {
+ this.container.addClass('show-calendar');
+ this.move();
+ this.element.trigger('showCalendar.daterangepicker', this);
+ },
+
+ hideCalendars: function() {
+ this.container.removeClass('show-calendar');
+ this.element.trigger('hideCalendar.daterangepicker', this);
+ },
+
+ hoverRange: function(e) {
+ //ignore mouse movements while an above-calendar text input has focus
+ if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus"))
+ return;
+
+ var label = e.target.getAttribute('data-range-key');
+
+ if (label == this.locale.customRangeLabel) {
+ this.updateView();
+ } else {
+ var Utils = require('utils/Utils');
+ var dates = Utils.dateUtil.getRelativeDateFromString(label);
+ this.container.find('input[name=daterangepicker_start]').val(dates[0].format(this.locale.format));
+ this.container.find('input[name=daterangepicker_end]').val(dates[1].format(this.locale.format));
+ }
+
+ },
+
+ clickRange: function(e) {
+ var label = e.target.getAttribute('data-range-key');
+ this.chosenLabel = label;
+ if (label == this.locale.customRangeLabel) {
+ this.showCalendars();
+ } else {
+ var Utils = require('utils/Utils');
+ var dates = Utils.dateUtil.getRelativeDateFromString(label);
+ this.startDate = dates[0];
+ this.endDate = dates[1];
+
+ if (!this.timePicker) {
+ this.startDate.startOf('day');
+ this.endDate.endOf('day');
+ }
+
+ if (!this.alwaysShowCalendars)
+ this.hideCalendars();
+ this.clickApply();
+ }
+ },
+
+ clickPrev: function(e) {
+ var cal = $(e.target).parents('.calendar');
+ if (cal.hasClass('left')) {
+ this.leftCalendar.month.subtract(1, 'month');
+ if (this.linkedCalendars)
+ this.rightCalendar.month.subtract(1, 'month');
+ } else {
+ this.rightCalendar.month.subtract(1, 'month');
+ }
+ this.updateCalendars();
+ },
+
+ clickNext: function(e) {
+ var cal = $(e.target).parents('.calendar');
+ if (cal.hasClass('left')) {
+ this.leftCalendar.month.add(1, 'month');
+ } else {
+ this.rightCalendar.month.add(1, 'month');
+ if (this.linkedCalendars)
+ this.leftCalendar.month.add(1, 'month');
+ }
+ this.updateCalendars();
+ },
+
+ hoverDate: function(e) {
+
+ //ignore mouse movements while an above-calendar text input has focus
+ //if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus"))
+ // return;
+
+ //ignore dates that can't be selected
+ if (!$(e.target).hasClass('available')) return;
+
+ //have the text inputs above calendars reflect the date being hovered over
+ var title = $(e.target).attr('data-title');
+ var row = title.substr(1, 1);
+ var col = title.substr(3, 1);
+ var cal = $(e.target).parents('.calendar');
+ var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];
+
+ if (this.endDate && !this.container.find('input[name=daterangepicker_start]').is(":focus")) {
+ this.container.find('input[name=daterangepicker_start]').val(date.format(this.locale.format));
+ } else if (!this.endDate && !this.container.find('input[name=daterangepicker_end]').is(":focus")) {
+ this.container.find('input[name=daterangepicker_end]').val(date.format(this.locale.format));
+ }
+
+ //highlight the dates between the start date and the date being hovered as a potential end date
+ var leftCalendar = this.leftCalendar;
+ var rightCalendar = this.rightCalendar;
+ var startDate = this.startDate;
+ if (!this.endDate) {
+ this.container.find('.calendar td').each(function(index, el) {
+
+ //skip week numbers, only look at dates
+ if ($(el).hasClass('week')) return;
+
+ var title = $(el).attr('data-title');
+ var row = title.substr(1, 1);
+ var col = title.substr(3, 1);
+ var cal = $(el).parents('.calendar');
+ var dt = cal.hasClass('left') ? leftCalendar.calendar[row][col] : rightCalendar.calendar[row][col];
+
+ if ((dt.isAfter(startDate) && dt.isBefore(date)) || dt.isSame(date, 'day')) {
+ $(el).addClass('in-range');
+ } else {
+ $(el).removeClass('in-range');
+ }
+
+ });
+ }
+
+ },
+
+ clickDate: function(e) {
+
+ if (!$(e.target).hasClass('available')) return;
+
+ var title = $(e.target).attr('data-title');
+ var row = title.substr(1, 1);
+ var col = title.substr(3, 1);
+ var cal = $(e.target).parents('.calendar');
+ var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];
+
+ //
+ // this function needs to do a few things:
+ // * alternate between selecting a start and end date for the range,
+ // * if the time picker is enabled, apply the hour/minute/second from the select boxes to the clicked date
+ // * if autoapply is enabled, and an end date was chosen, apply the selection
+ // * if single date picker mode, and time picker isn't enabled, apply the selection immediately
+ // * if one of the inputs above the calendars was focused, cancel that manual input
+ //
+
+ if (this.endDate || date.isBefore(this.startDate, 'day')) { //picking start
+ if (this.timePicker) {
+ var hour = parseInt(this.container.find('.left .hourselect').val(), 10);
+ if (!this.timePicker24Hour) {
+ var ampm = this.container.find('.left .ampmselect').val();
+ if (ampm === 'PM' && hour < 12)
+ hour += 12;
+ if (ampm === 'AM' && hour === 12)
+ hour = 0;
+ }
+ var minute = parseInt(this.container.find('.left .minuteselect').val(), 10);
+ var second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;
+ date = date.clone().hour(hour).minute(minute).second(second);
+ }
+ this.endDate = null;
+ this.setStartDate(date.clone());
+ } else if (!this.endDate && date.isBefore(this.startDate)) {
+ //special case: clicking the same date for start/end,
+ //but the time of the end date is before the start date
+ this.setEndDate(this.startDate.clone());
+ } else { // picking end
+ if (this.timePicker) {
+ var hour = parseInt(this.container.find('.right .hourselect').val(), 10);
+ if (!this.timePicker24Hour) {
+ var ampm = this.container.find('.right .ampmselect').val();
+ if (ampm === 'PM' && hour < 12)
+ hour += 12;
+ if (ampm === 'AM' && hour === 12)
+ hour = 0;
+ }
+ var minute = parseInt(this.container.find('.right .minuteselect').val(), 10);
+ var second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;
+ date = date.clone().hour(hour).minute(minute).second(second);
+ }
+ this.setEndDate(date.clone());
+ if (this.autoApply) {
+ this.showCalendars();
+ this.clickApply();
+ }
+ }
+
+ if (this.singleDatePicker) {
+ this.setEndDate(this.startDate);
+ if (!this.timePicker)
+ this.clickApply();
+ }
+
+ this.updateView();
+
+ //This is to cancel the blur event handler if the mouse was in one of the inputs
+ e.stopPropagation();
+
+ },
+
+ clickApply: function(e) {
+ this.hide();
+ this.element.trigger('apply.daterangepicker', this);
+ },
+
+ clickCancel: function(e) {
+ this.startDate = this.oldStartDate;
+ this.endDate = this.oldEndDate;
+ this.hide();
+ this.element.trigger('cancel.daterangepicker', this);
+ },
+
+ monthOrYearChanged: function(e) {
+ var isLeft = $(e.target).closest('.calendar').hasClass('left'),
+ leftOrRight = isLeft ? 'left' : 'right',
+ cal = this.container.find('.calendar.'+leftOrRight);
+
+ // Month must be Number for new moment versions
+ var month = parseInt(cal.find('.monthselect').val(), 10);
+ var year = cal.find('.yearselect').val();
+
+ if (!isLeft) {
+ if (year < this.startDate.year() || (year == this.startDate.year() && month < this.startDate.month())) {
+ month = this.startDate.month();
+ year = this.startDate.year();
+ }
+ }
+
+ if (this.minDate) {
+ if (year < this.minDate.year() || (year == this.minDate.year() && month < this.minDate.month())) {
+ month = this.minDate.month();
+ year = this.minDate.year();
+ }
+ }
+
+ if (this.maxDate) {
+ if (year > this.maxDate.year() || (year == this.maxDate.year() && month > this.maxDate.month())) {
+ month = this.maxDate.month();
+ year = this.maxDate.year();
+ }
+ }
+
+ if (isLeft) {
+ this.leftCalendar.month.month(month).year(year);
+ if (this.linkedCalendars)
+ this.rightCalendar.month = this.leftCalendar.month.clone().add(1, 'month');
+ } else {
+ this.rightCalendar.month.month(month).year(year);
+ if (this.linkedCalendars)
+ this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, 'month');
+ }
+ this.updateCalendars();
+ },
+
+ timeChanged: function(e) {
+
+ var cal = $(e.target).closest('.calendar'),
+ isLeft = cal.hasClass('left');
+
+ var hour = parseInt(cal.find('.hourselect').val(), 10);
+ var minute = parseInt(cal.find('.minuteselect').val(), 10);
+ var second = this.timePickerSeconds ? parseInt(cal.find('.secondselect').val(), 10) : 0;
+
+ if (!this.timePicker24Hour) {
+ var ampm = cal.find('.ampmselect').val();
+ if (ampm === 'PM' && hour < 12)
+ hour += 12;
+ if (ampm === 'AM' && hour === 12)
+ hour = 0;
+ }
+
+ if (isLeft) {
+ var start = this.startDate.clone();
+ start.hour(hour);
+ start.minute(minute);
+ start.second(second);
+ this.setStartDate(start);
+ if (this.singleDatePicker) {
+ this.endDate = this.startDate.clone();
+ } else if (this.endDate && this.endDate.format('YYYY-MM-DD') == start.format('YYYY-MM-DD') && this.endDate.isBefore(start)) {
+ this.setEndDate(start.clone());
+ }
+ } else if (this.endDate) {
+ var end = this.endDate.clone();
+ end.hour(hour);
+ end.minute(minute);
+ end.second(second);
+ this.setEndDate(end);
+ }
+
+ //update the calendars so all clickable dates reflect the new time component
+ this.updateCalendars();
+
+ //update the form inputs above the calendars with the new time
+ this.updateFormInputs();
+
+ //re-render the time pickers because changing one selection can affect what's enabled in another
+ this.renderTimePicker('left');
+ this.renderTimePicker('right');
+
+ },
+
+ formInputsChanged: function(e) {
+ var isRight = $(e.target).closest('.calendar').hasClass('right');
+ var start = moment(this.container.find('input[name="daterangepicker_start"]').val(), this.locale.format);
+ var end = moment(this.container.find('input[name="daterangepicker_end"]').val(), this.locale.format);
+
+ if (start.isValid() && end.isValid()) {
+
+ if (isRight && end.isBefore(start))
+ start = end.clone();
+
+ this.setStartDate(start);
+ this.setEndDate(end);
+
+ if (isRight) {
+ this.container.find('input[name="daterangepicker_start"]').val(this.startDate.format(this.locale.format));
+ } else {
+ this.container.find('input[name="daterangepicker_end"]').val(this.endDate.format(this.locale.format));
+ }
+
+ }
+
+ this.updateView();
+ },
+
+ formInputsFocused: function(e) {
+
+ // Highlight the focused input
+ this.container.find('input[name="daterangepicker_start"], input[name="daterangepicker_end"]').removeClass('active');
+ $(e.target).addClass('active');
+
+ // Set the state such that if the user goes back to using a mouse,
+ // the calendars are aware we're selecting the end of the range, not
+ // the start. This allows someone to edit the end of a date range without
+ // re-selecting the beginning, by clicking on the end date input then
+ // using the calendar.
+ var isRight = $(e.target).closest('.calendar').hasClass('right');
+ if (isRight) {
+ this.endDate = null;
+ this.setStartDate(this.startDate.clone());
+ this.updateView();
+ }
+
+ },
+
+ formInputsBlurred: function(e) {
+
+ // this function has one purpose right now: if you tab from the first
+ // text input to the second in the UI, the endDate is nulled so that
+ // you can click another, but if you tab out without clicking anything
+ // or changing the input value, the old endDate should be retained
+
+ if (!this.endDate) {
+ var val = this.container.find('input[name="daterangepicker_end"]').val();
+ var end = moment(val, this.locale.format);
+ if (end.isValid()) {
+ this.setEndDate(end);
+ this.updateView();
+ }
+ }
+
+ },
+
+ elementChanged: function() {
+ if (!this.element.is('input')) return;
+ if (!this.element.val().length) return;
+ if (this.element.val().length < this.locale.format.length) return;
+
+ var dateString = this.element.val().split(this.locale.separator),
+ start = null,
+ end = null;
+
+ if (dateString.length === 2) {
+ start = moment(dateString[0], this.locale.format);
+ end = moment(dateString[1], this.locale.format);
+ }
+
+ if (this.singleDatePicker || start === null || end === null) {
+ start = moment(this.element.val(), this.locale.format);
+ end = start;
+ }
+
+ if (!start.isValid() || !end.isValid()) return;
+
+ this.setStartDate(start);
+ this.setEndDate(end);
+ this.updateView();
+ },
+
+ keydown: function(e) {
+ //hide on tab or enter
+ if ((e.keyCode === 9) || (e.keyCode === 13)) {
+ this.hide();
+ }
+ },
+
+ updateElement: function() {
+ if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) {
+ this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));
+ this.element.trigger('change');
+ } else if (this.element.is('input') && this.autoUpdateInput) {
+ this.element.val(this.startDate.format(this.locale.format));
+ this.element.trigger('change');
+ }
+ },
+
+ remove: function() {
+ this.container.remove();
+ this.element.off('.daterangepicker');
+ this.element.removeData();
+ }
+
+ };
+
+ $.fn.daterangepicker = function(options, callback) {
+ this.each(function() {
+ var el = $(this);
+ if (el.data('daterangepicker'))
+ el.data('daterangepicker').remove();
+ el.data('daterangepicker', new DateRangePicker(el, options, callback));
+ });
+ return this;
+ };
+
+ return DateRangePicker;
+
+}));
[2/8] ambari git commit: AMBARI-19878 Log Search Portal time zone
selection bug (mgergely)
Posted by mg...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c7997f5/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/other/timezone/mapdata.json
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/other/timezone/mapdata.json b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/other/timezone/mapdata.json
deleted file mode 100644
index 9d88d40..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/other/timezone/mapdata.json
+++ /dev/null
@@ -1,3158 +0,0 @@
-[{
- "timezone": "Africa/Abidjan",
- "country": "CI",
- "pin": "244,118",
- "offset": 0,
- "points": "241,118,240,119,240,117,238,116,238,115,239,114,239,113,239,113,239,111,241,110,241,111,243,111,244,112,246,111,247,113,245,116,246,118,241,118",
- "zoneName": "GMT"
-}, {
- "timezone": "Africa/Accra",
- "country": "GH",
- "pin": "250,117",
- "offset": 0,
- "points": "251,117,247,118,246,118,246,118,246,116,247,114,246,110,250,110,251,113,251,116,252,116,251,117",
- "zoneName": "GMT"
-}, {
- "timezone": "Africa/Addis_Ababa",
- "country": "ET",
- "pin": "304,112",
- "offset": 3,
- "points": "313,118,311,118,308,120,307,119,305,120,300,119,299,116,296,114,296,113,297,113,298,110,299,110,300,107,300,107,301,105,302,105,303,104,303,105,307,105,309,108,308,110,310,110,309,110,310,112,317,114,313,118",
- "zoneName": "EAT"
-}, {
- "timezone": "Africa/Algiers",
- "country": "DZ",
- "pin": "254,74",
- "offset": 1,
- "points": "263,83,264,86,264,88,263,89,264,91,266,91,267,92,258,98,255,99,254,97,252,97,250,95,238,87,238,85,239,85,243,83,243,82,245,82,245,81,246,81,246,80,248,80,249,80,248,79,248,77,247,76,254,74,262,74,261,74,262,77,260,78,263,81,263,83",
- "zoneName": "CET"
-}, {
- "timezone": "Africa/Asmara",
- "country": "ER",
- "pin": "304,104",
- "offset": 3,
- "points": "306,104,310,107,309,108,306,105,303,105,303,104,302,105,301,105,301,101,304,100,305,104,305,103,306,104",
- "zoneName": "EAT"
-}, {
- "timezone": "Africa/Bamako",
- "country": "ML",
- "pin": "239,107",
- "offset": 0,
- "points": "244,107,244,108,242,109,242,111,241,111,241,110,240,111,239,110,239,111,238,110,238,110,238,109,237,108,235,108,234,108,234,107,233,105,234,103,235,104,237,103,242,103,241,90,243,90,252,96,252,97,254,97,255,99,256,98,256,101,255,104,249,104,246,105,245,107,244,106,244,107",
- "zoneName": "GMT"
-}, {
- "timezone": "Africa/Bangui",
- "country": "CF",
- "pin": "276,119",
- "offset": 1,
- "points": "284,118,283,119,282,118,281,119,277,118,276,119,276,120,273,120,272,122,270,119,270,117,272,115,276,114,276,113,278,112,280,110,281,110,283,111,283,113,284,113,284,113,285,114,288,118,285,118,285,118,284,118",
- "zoneName": "WAT"
-}, {
- "timezone": "Africa/Banjul",
- "country": "GM",
- "pin": "227,106",
- "offset": 0,
- "points": "231,106,227,106,229,106,231,106",
- "zoneName": "GMT"
-}, {
- "timezone": "Africa/Bissau",
- "country": "GW",
- "pin": "228,109",
- "offset": 0,
- "points": "228,109,228,109,228,109",
- "zoneName": "GMT"
-}, {
- "timezone": "Africa/Blantyre",
- "country": "MW",
- "pin": "299,147",
- "offset": 2,
- "points": "298,144,300,146,299,149,298,147,298,145,297,145,295,144,297,142,296,140,297,140,296,138,298,139,299,141,298,142,298,144",
- "zoneName": "CAT"
-}, {
- "timezone": "Africa/Brazzaville",
- "country": "CG",
- "pin": "271,131",
- "offset": 1,
- "points": "266,131,267,130,266,128,267,128,268,128,270,128,270,128,270,126,269,125,270,124,269,123,268,123,268,122,272,123,273,120,276,120,275,126,273,128,272,130,270,132,270,131,269,132,268,131,267,132,266,131",
- "zoneName": "WAT"
-}, {
- "timezone": "Africa/Bujumbura",
- "country": "BI",
- "pin": "291,130",
- "offset": 2,
- "points": "292,131,291,131,290,129,291,129,292,128,292,128,293,130,292,131",
- "zoneName": "CAT"
-}, {
- "timezone": "Asia/Oral",
- "country": "KZ",
- "pin": "321,54",
- "offset": 5,
- "points": "316,55,317,56,318,56,317,55,319,54,320,53,323,53,326,54,326,56,323,58,321,57,319,58,315,58,316,55",
- "zoneName": "ORAT"
-}, {
- "timezone": "Africa/Cairo",
- "country": "EG",
- "pin": "293,83",
- "offset": 2,
- "points": "294,94,285,94,284,83,285,81,290,82,293,81,294,81,295,82,298,82,298,84,298,86,296,85,295,83,295,84,300,92,299,92,299,93,297,95,294,94",
- "zoneName": "EET"
-}, {
- "timezone": "Africa/Casablanca",
- "country": "MA",
- "pin": "239,78",
- "offset": 0,
- "points": "242,84,240,84,238,85,238,87,232,87,236,84,237,83,236,81,237,80,241,78,242,75,243,75,244,76,246,76,248,77,248,80,246,80,246,81,245,81,245,82,243,82,242,84",
- "zoneName": "WET"
-}, {
- "timezone": "Africa/Ceuta",
- "country": "ES",
- "pin": "243,75",
- "offset": 1,
- "points": "243,75,243,75,243,75",
- "zoneName": "CET"
-}, {
- "timezone": "Africa/Conakry",
- "country": "GN",
- "pin": "231,112",
- "offset": 0,
- "points": "238,114,237,115,236,113,235,114,235,113,234,111,233,111,232,112,231,111,230,110,229,109,231,109,231,107,234,108,235,108,237,108,238,109,238,110,238,110,239,111,239,112,239,113,239,113,239,114,238,114",
- "zoneName": "GMT"
-}, {
- "timezone": "Africa/Dakar",
- "country": "SN",
- "pin": "226,105",
- "offset": 0,
- "points": "227,107,229,106,231,106,229,106,227,106,226,105,227,102,230,102,233,105,234,108,229,107,227,108,227,108,227,108,227,107",
- "zoneName": "GMT"
-}, {
- "timezone": "Africa/Dar_es_Salaam",
- "country": "TZ",
- "pin": "305,134",
- "offset": 3,
- "points": "306,139,306,139,306,140,302,141,299,141,297,138,293,137,291,134,291,132,293,130,292,129,293,128,292,126,297,126,302,129,302,130,304,131,304,134,305,135,305,137,306,139",
- "zoneName": "EAT"
-}, {
- "timezone": "Asia/Yekaterinburg",
- "country": "RU",
- "pin": "334,46",
- "offset": 6,
- "points": "333,53,335,54,335,54,333,55,331,54,329,54,327,55,326,54,326,55,324,53,321,53,322,51,322,50,324,50,325,49,324,48,325,48,324,47,326,47,325,46,326,46,325,44,325,43,324,43,325,42,323,41,322,40,326,40,329,40,332,39,333,35,342,31,341,31,342,31,341,31,341,30,340,29,342,29,342,29,341,29,345,30,346,29,345,28,343,28,344,28,344,27,343,27,345,25,346,24,351,24,350,26,351,27,351,27,351,29,352,30,350,32,346,32,346,33,350,33,354,31,353,30,356,29,357,30,357,31,358,31,361,32,358,31,359,30,358,29,353,29,352,28,353,27,351,26,354,25,354,24,355,25,354,26,355,26,359,27,356,25,358,25,357,25,358,25,362,25,360,26,362,26,362,27,360,28,365,29,365,30,364,31,364,31,364,32,366,32,366,34,367,34,367,35,369,35,369,36,368,37,369,37,367,39,369,40,369,40,364,41,357,40,356,42,353,44,349,44,348,44,348,45,350,46,348,47,348,48,346,48,341,50,335,50,335,51,336,51,335,51,334,52,335,52,333,53",
- "zoneName": "YEKT"
-}, {
- "timezone": "Africa/Djibouti",
- "country": "DJ",
- "pin": "310,109",
- "offset": 3,
- "points": "310,109,310,109,310,109",
- "zoneName": "EAT"
-}, {
- "timezone": "Africa/Douala",
- "country": "CM",
- "pin": "263,119",
- "offset": 1,
- "points": "270,117,270,119,272,121,272,123,270,122,264,122,263,119,263,120,262,119,262,117,264,116,265,115,266,116,266,115,269,110,270,109,270,107,271,107,271,110,272,111,269,112,272,114,270,117",
- "zoneName": "WAT"
-}, {
- "timezone": "Africa/Freetown",
- "country": "SL",
- "pin": "232,113",
- "offset": 0,
- "points": "235,115,234,115,232,114,232,112,233,111,234,111,235,112,235,114,236,114,235,115",
- "zoneName": "GMT"
-}, {
- "timezone": "Africa/Gaborone",
- "country": "BW",
- "pin": "286,159",
- "offset": 2,
- "points": "287,158,285,161,282,160,281,162,279,162,279,161,278,159,278,156,279,156,279,150,282,150,283,151,285,150,286,152,289,153,289,155,291,156,287,158",
- "zoneName": "CAT"
-}, {
- "timezone": "Africa/Harare",
- "country": "ZW",
- "pin": "293,150",
- "offset": 2,
- "points": "293,156,289,155,289,153,286,152,285,150,288,150,291,147,296,148,295,151,296,153,295,155,293,156",
- "zoneName": "CAT"
-}, {
- "timezone": "Africa/El_Aaiun",
- "country": "EH",
- "pin": "232,87",
- "offset": 0,
- "points": "233,89,233,92,232,93,232,95,227,95,226,96,226,95,228,92,228,92,229,91,230,89,231,88,232,87,238,87,238,89,233,89",
- "zoneName": "WET"
-}, {
- "timezone": "Africa/Johannesburg",
- "country": "ZA",
- "pin": "289,161",
- "offset": 2,
- "points": "283,172,278,173,276,172,276,173,275,171,275,170,275,169,273,165,274,164,274,165,275,165,278,164,278,159,279,161,279,162,280,162,282,160,285,161,288,158,290,156,293,156,294,159,294,161,294,161,293,162,294,163,294,163,294,162,296,162,295,165,289,171,286,172,283,172",
- "zoneName": "SAST"
-}, {
- "timezone": "Africa/Juba",
- "country": "SS",
- "pin": "294,118",
- "offset": 3,
- "points": "299,117,299,118,300,118,300,119,298,119,297,120,293,120,291,119,289,119,289,119,287,116,284,113,285,111,286,111,287,112,290,112,292,111,293,111,295,110,295,108,296,108,296,110,297,111,297,113,296,113,296,114,297,115,299,117",
- "zoneName": "EAT"
-}, {
- "timezone": "Africa/Kampala",
- "country": "UG",
- "pin": "295,125",
- "offset": 3,
- "points": "293,126,291,127,292,124,293,122,293,122,293,120,297,120,297,119,299,122,297,125,297,126,293,126",
- "zoneName": "EAT"
-}, {
- "timezone": "Africa/Khartoum",
- "country": "SD",
- "pin": "295,103",
- "offset": 3,
- "points": "300,107,299,110,298,110,297,112,296,110,296,108,295,108,295,108,295,110,293,111,292,111,290,112,287,112,286,111,285,111,284,113,283,113,283,111,282,110,281,107,280,107,282,103,283,103,283,97,285,97,285,94,294,94,297,95,299,93,301,94,302,96,302,99,304,100,301,101,301,106,300,107,300,107",
- "zoneName": "EAT"
-}, {
- "timezone": "Africa/Kinshasa",
- "country": "CD",
- "pin": "271,131",
- "offset": 1,
- "points": "271,131,272,130,273,128,275,126,276,119,277,118,277,118,279,119,283,120,281,120,283,122,281,122,281,123,283,125,282,126,283,126,282,126,284,127,281,128,281,128,281,128,279,128,279,131,278,131,278,135,277,135,277,136,274,136,273,133,267,133,268,131,269,132,270,131,270,132,271,131",
- "zoneName": "WAT"
-}, {
- "timezone": "Africa/Lagos",
- "country": "NG",
- "pin": "255,116",
- "offset": 1,
- "points": "261,119,258,119,256,116,254,116,254,112,255,110,255,109,256,106,258,106,260,107,261,106,263,107,265,106,267,107,269,106,270,108,270,109,269,110,266,115,266,116,264,115,262,117,262,118,261,119",
- "zoneName": "WAT"
-}, {
- "timezone": "Africa/Libreville",
- "country": "GA",
- "pin": "263,124",
- "offset": 1,
- "points": "269,125,270,126,270,128,267,128,267,128,266,128,267,130,266,131,263,128,262,126,263,126,263,125,264,125,263,124,263,124,266,124,266,122,268,122,268,123,270,123,270,124,269,125",
- "zoneName": "WAT"
-}, {
- "timezone": "Africa/Lome",
- "country": "TG",
- "pin": "252,116",
- "offset": 0,
- "points": "252,116,251,116,251,113,250,110,251,110,251,111,252,111,253,116,252,116",
- "zoneName": "GMT"
-}, {
- "timezone": "Africa/Kigali",
- "country": "RW",
- "pin": "292,128",
- "offset": 2,
- "points": "292,128,291,129,290,129,291,127,292,126,293,128,292,128",
- "zoneName": "CAT"
-}, {
- "timezone": "Africa/Luanda",
- "country": "AO",
- "pin": "268,137",
- "offset": 1,
- "points": "281,140,281,141,283,140,283,143,281,143,281,148,283,149,279,150,276,149,269,149,268,149,266,149,267,144,269,142,269,140,268,138,269,137,267,133,273,133,274,136,277,136,277,135,280,135,280,138,281,140",
- "zoneName": "WAT"
-}, {
- "timezone": "Africa/Lubumbashi",
- "country": "CD",
- "pin": "288,141",
- "offset": 2,
- "points": "291,132,291,134,293,136,290,137,289,138,290,139,289,141,290,142,291,142,291,144,290,144,288,141,287,142,286,142,285,141,284,141,283,140,281,141,280,135,278,135,277,134,278,133,278,131,279,131,279,128,281,128,281,128,281,128,284,127,282,126,283,126,282,126,283,125,281,123,281,122,283,122,281,120,283,120,281,119,282,118,285,118,285,118,288,118,289,119,291,119,293,120,293,122,293,122,292,124,291,127,290,128,291,132",
- "zoneName": "CAT"
-}, {
- "timezone": "Africa/Lusaka",
- "country": "ZM",
- "pin": "289,146",
- "offset": 2,
- "points": "290,147,290,148,287,150,284,149,283,149,281,148,281,143,283,143,283,140,284,141,285,141,286,142,287,142,288,141,290,144,291,144,291,142,290,142,289,141,290,139,289,138,290,137,293,136,296,138,297,140,296,140,297,142,295,144,296,144,292,146,292,147,290,147",
- "zoneName": "CAT"
-}, {
- "timezone": "Africa/Malabo",
- "country": "GQ",
- "pin": "262,120",
- "offset": 1,
- "points": "266,123,266,124,263,123,264,122,266,122,266,123",
- "zoneName": "WAT"
-}, {
- "timezone": "Africa/Maputo",
- "country": "MZ",
- "pin": "295,161",
- "offset": 2,
- "points": "296,160,295,161,295,162,296,161,296,162,295,162,294,159,293,156,295,155,296,153,295,151,296,148,292,147,292,146,296,144,297,145,298,145,298,146,298,147,299,149,300,146,298,144,298,141,302,141,306,140,306,146,305,148,303,149,300,151,298,152,298,154,299,156,299,158,296,160",
- "zoneName": "CAT"
-}, {
- "timezone": "Africa/Mbabane",
- "country": "SZ",
- "pin": "293,162",
- "offset": 2,
- "points": "294,161,295,162,294,163,293,162,294,161,294,161",
- "zoneName": "SAST"
-}, {
- "timezone": "Africa/Mogadishu",
- "country": "SO",
- "pin": "313,122",
- "offset": 3,
- "points": "310,125,308,127,307,126,307,121,308,119,312,118,317,114,311,113,309,110,310,109,312,111,321,109,321,111,321,111,321,111,321,112,317,119,310,125",
- "zoneName": "EAT"
-}, {
- "timezone": "Africa/Monrovia",
- "country": "LR",
- "pin": "235,116",
- "offset": 0,
- "points": "239,118,240,119,238,119,234,116,236,113,237,113,237,115,238,115,238,114,239,115,238,116,240,117,239,118",
- "zoneName": "GMT"
-}, {
- "timezone": "Africa/Nairobi",
- "country": "KE",
- "pin": "301,127",
- "offset": 3,
- "points": "308,127,306,129,304,131,302,130,302,129,297,126,297,125,299,122,297,119,298,119,300,119,305,120,307,119,308,119,307,121,307,126,308,127",
- "zoneName": "EAT"
-}, {
- "timezone": "Africa/Maseru",
- "country": "LS",
- "pin": "288,166",
- "offset": 2,
- "points": "289,167,289,167,288,166,290,165,291,166,289,167",
- "zoneName": "SAST"
-}, {
- "timezone": "Africa/Ndjamena",
- "country": "TD",
- "pin": "271,108",
- "offset": 1,
- "points": "278,112,276,113,276,114,272,115,269,112,270,111,272,111,271,110,271,107,270,107,269,105,272,102,272,97,271,95,271,93,272,92,283,98,283,103,282,103,280,107,281,107,282,110,280,110,279,112,278,112",
- "zoneName": "WAT"
-}, {
- "timezone": "Africa/Niamey",
- "country": "NE",
- "pin": "253,106",
- "offset": 1,
- "points": "256,106,255,108,255,109,254,108,253,108,253,107,251,107,252,106,251,106,250,104,255,104,256,101,256,98,258,98,267,92,270,94,271,93,271,95,272,97,272,102,269,105,269,106,267,107,265,106,263,107,261,106,260,107,258,106,256,106",
- "zoneName": "WAT"
-}, {
- "timezone": "Africa/Nouakchott",
- "country": "MR",
- "pin": "228,100",
- "offset": 0,
- "points": "234,103,233,105,230,102,227,102,227,103,228,100,227,98,228,97,227,95,226,96,232,95,232,93,233,92,233,89,238,89,238,87,243,90,241,90,242,103,237,103,235,104,234,103",
- "zoneName": "GMT"
-}, {
- "timezone": "Africa/Ouagadougou",
- "country": "BF",
- "pin": "248,108",
- "offset": 0,
- "points": "249,110,246,110,246,112,246,111,243,112,242,111,242,109,244,108,244,106,245,107,247,105,250,104,250,104,251,106,252,106,251,107,253,107,253,109,252,110,249,110",
- "zoneName": "GMT"
-}, {
- "timezone": "Africa/Porto-Novo",
- "country": "BJ",
- "pin": "254,116",
- "offset": 1,
- "points": "254,114,254,116,252,116,252,112,251,111,252,109,253,109,254,108,255,109,255,110,254,112,254,114",
- "zoneName": "WAT"
-}, {
- "timezone": "Africa/Tunis",
- "country": "TN",
- "pin": "264,74",
- "offset": 1,
- "points": "266,80,264,81,264,82,263,83,263,80,261,79,260,78,262,76,261,74,263,73,264,73,264,74,265,74,265,75,266,76,264,78,266,79,266,80",
- "zoneName": "CET"
-}, {
- "timezone": "Africa/Sao_Tome",
- "country": "ST",
- "pin": "259,125",
- "offset": 0,
- "points": "260,123,260,123,260,123",
- "zoneName": "GMT"
-}, {
- "timezone": "Africa/Tripoli",
- "country": "LY",
- "pin": "268,79",
- "offset": 2,
- "points": "285,88,285,97,283,97,283,98,272,92,270,94,264,91,263,89,264,88,264,86,263,83,264,82,264,81,266,80,266,79,271,80,272,81,276,83,278,82,278,80,281,79,282,80,285,81,284,83,285,88",
- "zoneName": "EET"
-}, {
- "timezone": "Africa/Windhoek",
- "country": "NA",
- "pin": "274,156",
- "offset": 2,
- "points": "278,163,278,164,277,165,274,165,274,164,273,165,272,164,271,162,270,156,267,151,266,149,268,149,269,149,276,149,279,150,284,149,285,150,283,151,282,150,279,150,279,156,278,156,278,163",
- "zoneName": "WAST"
-}, {
- "timezone": "America/Adak",
- "country": "US",
- "pin": "5,53",
- "offset": -10,
- "points": "7,53,6,53,8,52,7,53",
- "zoneName": "HST"
-}, {
- "timezone": "America/Argentina/Salta",
- "country": "AR",
- "pin": "159,159",
- "offset": -3,
- "points": "162,180,162,182,163,182,160,182,160,183,150,183,150,180,152,179,151,176,152,175,153,177,155,177,155,175,160,175,160,174,162,174,162,180",
- "zoneName": "ART"
-}, {
- "timezone": "America/Argentina/Salta",
- "country": "AR",
- "pin": "159,159",
- "offset": -3,
- "points": "159,156,161,157,161,156,163,156,163,156,163,159,162,161,158,162,157,161,158,160,155,160,155,159,157,158,158,159,158,157,159,159,161,159,161,158,160,158,159,156",
- "zoneName": "ART"
-}, {
- "timezone": "America/Anchorage",
- "country": "US",
- "pin": "42,40",
- "offset": -9,
- "points": "42,42,40,43,39,43,40,42,39,42,40,41,43,41,42,40,42,40,40,40,36,43,37,43,36,44,30,47,30,47,25,48,25,48,27,48,27,47,31,45,31,44,32,43,30,44,30,43,29,44,27,43,25,44,25,37,27,36,26,36,27,35,25,35,25,33,26,33,25,33,25,32,26,33,25,32,25,27,33,26,34,26,33,27,35,26,39,27,39,27,38,27,39,27,51,28,54,28,54,42,54,41,50,42,46,41,47,40,44,40,45,40,43,41,44,41,44,41,44,41,42,42",
- "zoneName": "AKST"
-}, {
- "timezone": "America/Anguilla",
- "country": "AI",
- "pin": "162,100",
- "offset": -4,
- "points": "162,100,162,100,162,100",
- "zoneName": "AST"
-}, {
- "timezone": "America/Antigua",
- "country": "AG",
- "pin": "164,101",
- "offset": -4,
- "points": "164,101,164,101,164,101",
- "zoneName": "AST"
-}, {
- "timezone": "America/Araguaina",
- "country": "BR",
- "pin": "183,135",
- "offset": -3,
- "points": "185,136,185,136,185,138,186,139,185,141,186,141,186,143,184,143,182,143,182,142,181,143,180,143,180,142,180,143,180,140,182,137,182,135,183,134,183,133,183,132,184,133,184,135,185,136",
- "zoneName": "BRT"
-}, {
- "timezone": "America/Argentina/Buenos_Aires",
- "country": "AR",
- "pin": "169,173",
- "offset": -3,
- "points": "167,171,169,172,169,173,171,174,170,175,171,176,169,178,165,179,163,179,164,180,163,180,163,181,164,181,163,182,162,182,162,173,164,173,165,172,167,171",
- "zoneName": "ART"
-}, {
- "timezone": "America/Argentina/Catamarca",
- "country": "AR",
- "pin": "159,165",
- "offset": -3,
- "points": "159,188,157,188,156,189,151,189,151,188,150,187,151,187,150,187,151,186,150,184,160,183,161,184,161,183,162,184,160,184,161,185,159,186,159,188",
- "zoneName": "ART"
-}, {
- "timezone": "America/Argentina/Catamarca",
- "country": "AR",
- "pin": "159,165",
- "offset": -3,
- "points": "160,167,158,164,154,164,155,162,155,160,158,160,157,161,159,162,158,163,159,164,159,164,160,167",
- "zoneName": "ART"
-}, {
- "timezone": "America/Argentina/Cordoba",
- "country": "AR",
- "pin": "161,169",
- "offset": -3,
- "points": "163,173,162,173,162,174,160,174,160,170,159,169,159,168,160,166,159,164,161,161,162,161,163,159,163,156,165,158,170,160,169,163,173,163,174,162,174,161,175,161,175,163,173,164,170,167,169,172,166,171,164,173,163,173",
- "zoneName": "ART"
-}, {
- "timezone": "America/Argentina/Jujuy",
- "country": "AR",
- "pin": "159,159",
- "offset": -3,
- "points": "157,157,158,155,159,156,159,157,160,158,161,158,161,159,160,159,159,159,158,157,158,159,157,158,157,157",
- "zoneName": "ART"
-}, {
- "timezone": "America/Argentina/La_Rioja",
- "country": "AR",
- "pin": "157,166",
- "offset": -3,
- "points": "156,167,154,166,154,165,153,164,154,164,158,164,160,167,159,169,157,169,156,167",
- "zoneName": "ART"
-}, {
- "timezone": "America/Argentina/Mendoza",
- "country": "AR",
- "pin": "154,171",
- "offset": -3,
- "points": "152,170,156,170,157,171,157,175,155,175,155,177,153,177,152,175,152,174,153,171,152,170",
- "zoneName": "ART"
-}, {
- "timezone": "America/Argentina/Rio_Gallegos",
- "country": "AR",
- "pin": "154,197",
- "offset": -3,
- "points": "151,189,156,189,157,190,159,191,158,192,154,195,154,197,155,198,150,197,149,197,150,195,148,196,148,195,148,193,150,192,149,191,150,191,151,189",
- "zoneName": "ART"
-}, {
- "timezone": "America/Argentina/San_Juan",
- "country": "AR",
- "pin": "155,169",
- "offset": -3,
- "points": "153,167,154,164,154,165,154,166,156,167,157,169,156,169,156,170,154,169,152,170,152,168,153,167",
- "zoneName": "ART"
-}, {
- "timezone": "America/Argentina/San_Luis",
- "country": "AR",
- "pin": "158,171",
- "offset": -3,
- "points": "159,169,160,170,160,175,157,175,156,169,159,169",
- "zoneName": "ART"
-}, {
- "timezone": "America/Argentina/Tucuman",
- "country": "AR",
- "pin": "159,162",
- "offset": -3,
- "points": "158,161,160,161,160,164,159,164,158,163,159,162,158,161",
- "zoneName": "ART"
-}, {
- "timezone": "America/Aruba",
- "country": "AW",
- "pin": "153,108",
- "offset": -4,
- "points": "153,108,153,108,153,108",
- "zoneName": "AST"
-}, {
- "timezone": "America/Argentina/Ushuaia",
- "country": "AR",
- "pin": "155,201",
- "offset": -3,
- "points": "155,201,155,198,155,199,155,199,156,200,160,201,158,201,155,201",
- "zoneName": "ART"
-}, {
- "timezone": "America/Asuncion",
- "country": "PY",
- "pin": "170,160",
- "offset": -3,
- "points": "174,161,173,163,169,163,170,160,165,158,163,156,164,152,167,152,169,152,169,156,172,156,173,158,175,158,174,161",
- "zoneName": "PYST"
-}, {
- "timezone": "America/Bahia_Banderas",
- "country": "MX",
- "pin": "104,96",
- "offset": -6,
- "points": "104,96,103,96,104,96",
- "zoneName": "CST"
-}, {
- "timezone": "America/Atikokan",
- "country": "CA",
- "pin": "123,57",
- "offset": -5,
- "points": "125,58,122,58,123,57,124,57,124,58,125,58",
- "zoneName": "EST"
-}, {
- "timezone": "America/Bahia",
- "country": "BR",
- "pin": "197,143",
- "offset": -2,
- "points": "187,146,186,146,186,141,185,141,186,140,187,139,188,140,189,140,189,138,191,138,193,137,194,138,195,137,197,137,198,139,197,140,198,141,196,143,196,147,195,150,194,149,195,147,194,147,193,147,192,146,189,145,189,145,187,146",
- "zoneName": "BRT"
-}, {
- "timezone": "America/Barbados",
- "country": "BB",
- "pin": "167,107",
- "offset": -4,
- "points": "167,106,167,107,167,106",
- "zoneName": "AST"
-}, {
- "timezone": "America/Belem",
- "country": "BR",
- "pin": "183,127",
- "offset": -3,
- "points": "179,126,180,125,179,126,180,125,183,125,182,127,180,128,182,127,181,128,183,127,183,126,186,127,185,130,182,132,183,133,182,135,182,137,180,139,177,138,178,138,177,136,178,134,177,132,177,130,178,129,177,127,178,127,177,126,176,123,174,122,174,122,177,122,178,119,180,122,181,123,179,126",
- "zoneName": "BRT"
-}, {
- "timezone": "America/Belize",
- "country": "BZ",
- "pin": "128,101",
- "offset": -6,
- "points": "128,101,128,101,128,101",
- "zoneName": "CST"
-}, {
- "timezone": "America/Blanc-Sablon",
- "country": "CA",
- "pin": "171,54",
- "offset": -4,
- "points": "169,54,167,55,169,54",
- "zoneName": "AST"
-}, {
- "timezone": "America/Boa_Vista",
- "country": "BR",
- "pin": "166,121",
- "offset": -4,
- "points": "167,118,166,119,167,120,167,121,167,122,168,123,168,125,167,125,166,126,165,126,164,127,163,126,163,122,161,122,160,119,163,120,163,119,165,119,166,118,167,118",
- "zoneName": "AMT"
-}, {
- "timezone": "America/Bogota",
- "country": "CO",
- "pin": "147,119",
- "offset": -5,
- "points": "154,126,153,131,152,130,153,129,152,128,150,128,149,128,146,125,142,124,140,123,143,120,142,119,143,117,142,115,143,114,143,113,143,114,143,113,145,112,145,110,148,109,150,108,151,108,149,110,148,112,149,113,149,115,150,115,153,115,154,117,156,117,156,119,157,120,156,121,157,122,157,123,156,122,153,123,153,124,154,124,153,124,154,126",
- "zoneName": "COT"
-}, {
- "timezone": "America/Boise",
- "country": "US",
- "pin": "89,64",
- "offset": -7,
- "points": "96,66,96,67,87,67,87,66,86,66,86,64,87,63,88,62,88,61,89,62,92,62,93,63,96,63,96,66",
- "zoneName": "MST"
-}, {
- "timezone": "America/Cambridge_Bay",
- "country": "CA",
- "pin": "104,29",
- "offset": -7,
- "points": "99,18,100,19,99,19,101,19,100,20,102,19,104,20,103,21,97,21,97,20,99,20,97,20,98,19,97,19,99,18",
- "zoneName": "MST"
-}, {
- "timezone": "America/Cambridge_Bay",
- "country": "CA",
- "pin": "104,29",
- "offset": -7,
- "points": "108,36,97,35,95,34,92,34,81,30,81,28,89,29,92,30,89,31,90,31,97,31,100,32,99,32,101,33,100,32,101,32,101,32,101,32,100,31,103,30,99,30,100,30,103,29,105,31,106,30,109,31,113,31,113,30,115,30,116,30,116,31,117,30,116,31,118,32,117,30,120,30,120,30,120,29,119,30,120,28,116,28,117,27,116,27,116,26,119,25,118,25,120,25,121,26,121,27,123,28,122,27,121,28,122,28,121,28,125,29,123,29,124,29,124,30,125,30,126,29,126,32,108,32,108,36",
- "zoneName": "MST"
-}, {
- "timezone": "America/Cambridge_Bay",
- "country": "CA",
- "pin": "104,29",
- "offset": -7,
- "points": "115,24,116,24,116,25,116,25,114,25,114,26,113,26,107,24,111,24,110,23,115,24",
- "zoneName": "MST"
-}, {
- "timezone": "America/Cambridge_Bay",
- "country": "CA",
- "pin": "104,29",
- "offset": -7,
- "points": "100,23,103,24,105,26,105,26,110,27,110,28,106,28,107,28,107,29,108,28,109,29,107,29,104,29,104,29,102,28,99,30,93,30,92,29,93,29,88,29,87,28,97,28,97,24,99,24,100,26,101,25,100,23,100,23",
- "zoneName": "MST"
-}, {
- "timezone": "America/Campo_Grande",
- "country": "BR",
- "pin": "174,153",
- "offset": -3,
- "points": "176,150,177,151,179,152,179,153,175,158,173,158,172,156,169,156,170,150,172,149,173,150,175,149,175,150,176,150",
- "zoneName": "AMST"
-}, {
- "timezone": "America/Cancun",
- "country": "MX",
- "pin": "129,96",
- "offset": -6,
- "points": "128,95,130,96,128,98,129,98,128,100,128,99,127,100,126,100,126,98,128,96,128,95",
- "zoneName": "EST"
-}, {
- "timezone": "America/Caracas",
- "country": "VE",
- "pin": "157,110",
- "offset": -4.5,
- "points": "163,111,165,112,165,113,167,113,166,115,166,115,165,116,165,117,166,118,163,119,163,120,160,119,161,122,162,122,159,124,159,124,158,124,157,123,157,122,156,121,157,120,156,119,156,116,154,117,153,115,150,115,149,112,148,112,149,110,151,109,150,109,151,110,150,111,150,112,151,112,151,112,151,110,153,109,153,108,153,109,155,109,155,110,158,110,160,111,162,110,161,110,164,110,163,110,163,111",
- "zoneName": "VET"
-}, {
- "timezone": "America/Cayenne",
- "country": "GF",
- "pin": "177,118",
- "offset": -3,
- "points": "176,117,178,119,177,122,175,122,175,120,174,118,175,117,176,117",
- "zoneName": "GFT"
-}, {
- "timezone": "America/Cayman",
- "country": "KY",
- "pin": "137,98",
- "offset": -5,
- "points": "139,98,139,98,139,98",
- "zoneName": "EST"
-}, {
- "timezone": "America/Chicago",
- "country": "US",
- "pin": "128,67",
- "offset": -6,
- "points": "128,72,132,74,132,75,131,76,132,80,132,84,130,83,130,83,129,83,129,82,128,83,128,82,128,83,124,83,126,83,125,84,126,84,126,85,125,84,125,85,120,83,118,84,118,84,118,85,116,86,117,85,116,85,116,86,115,86,115,87,114,87,115,87,115,89,112,88,112,87,109,84,107,84,107,85,105,84,104,82,104,81,107,81,107,74,108,74,108,73,109,73,109,70,108,70,108,69,109,69,109,67,110,67,109,64,111,63,110,63,111,62,111,61,109,61,110,60,110,59,106,59,105,57,118,57,118,56,119,57,126,58,122,60,124,60,124,60,128,61,128,62,128,63,129,63,128,66,129,67,130,67,128,68,128,72",
- "zoneName": "CST"
-}, {
- "timezone": "America/Chihuahua",
- "country": "MX",
- "pin": "103,85",
- "offset": -7,
- "points": "106,85,106,86,106,88,105,88,103,88,101,89,98,86,99,86,99,82,100,82,100,81,102,81,104,83,105,84,106,85",
- "zoneName": "MST"
-}, {
- "timezone": "America/Coral_Harbour",
- "country": "",
- "pin": "250,125",
- "offset": -5,
- "points": "131,33,132,34,133,34,136,35,137,36,136,36,139,36,137,37,135,36,131,37,131,36,129,37,130,36,130,34,131,33",
- "zoneName": "EST"
-}, {
- "timezone": "America/Costa_Rica",
- "country": "CR",
- "pin": "133,111",
- "offset": -6,
- "points": "132,112,131,111,131,109,134,110,135,112,135,112,135,114,131,111,132,112",
- "zoneName": "CST"
-}, {
- "timezone": "America/Creston",
- "country": "CA",
- "pin": "88,57",
- "offset": -7,
- "points": "89,57,87,57,88,56,89,57",
- "zoneName": "MST"
-}, {
- "timezone": "America/Cuiaba",
- "country": "BR",
- "pin": "172,147",
- "offset": -3,
- "points": "179,146,176,148,176,150,175,150,175,149,173,150,172,149,170,150,169,149,169,148,166,148,166,144,167,142,167,141,165,140,164,137,169,137,169,135,170,137,171,138,180,139,180,141,180,143,179,146",
- "zoneName": "AMST"
-}, {
- "timezone": "America/Curacao",
- "country": "CW",
- "pin": "154,108",
- "offset": -4,
- "points": "154,108,154,108,154,108",
- "zoneName": "AST"
-}, {
- "timezone": "America/Danmarkshavn",
- "country": "GL",
- "pin": "224,18",
- "offset": 0,
- "points": "223,15,223,15,224,15,221,16,221,16,220,17,221,17,223,17,224,17,221,17,224,18,225,18,218,18,223,19,220,19,223,20,218,20,219,14,223,15",
- "zoneName": "GMT"
-}, {
- "timezone": "America/Dawson",
- "country": "CA",
- "pin": "56,36",
- "offset": -8,
- "points": "56,36,56,36,56,36",
- "zoneName": "PST"
-}, {
- "timezone": "America/Dawson_Creek",
- "country": "CA",
- "pin": "83,42",
- "offset": -7,
- "points": "83,45,83,50,79,48,78,46,83,45",
- "zoneName": "MST"
-}, {
- "timezone": "America/Denver",
- "country": "US",
- "pin": "104,70",
- "offset": -7,
- "points": "93,63,92,62,91,62,91,60,89,59,89,57,105,57,106,59,108,59,108,60,110,61,109,61,111,61,111,62,110,63,111,63,109,64,110,67,109,67,109,69,108,69,108,70,109,70,109,73,108,73,108,74,107,74,107,81,104,81,104,82,102,81,99,81,99,76,96,76,95,74,95,74,92,74,92,67,96,67,96,63,93,63",
- "zoneName": "MST"
-}, {
- "timezone": "America/Detroit",
- "country": "US",
- "pin": "135,66",
- "offset": -5,
- "points": "132,67,129,67,130,66,130,64,130,63,131,62,132,63,132,61,134,62,134,62,134,63,133,65,135,64,136,65,134,67,132,67",
- "zoneName": "EST"
-}, {
- "timezone": "America/Detroit",
- "country": "US",
- "pin": "135,66",
- "offset": -5,
- "points": "125,60,127,59,127,60,130,61,132,60,134,61,131,61,130,62,129,61,128,62,129,62,128,61,126,61,125,60",
- "zoneName": "EST"
-}, {
- "timezone": "America/Dominica",
- "country": "DM",
- "pin": "165,104",
- "offset": -4,
- "points": "165,103,165,104,165,103",
- "zoneName": "AST"
-}, {
- "timezone": "America/Edmonton",
- "country": "CA",
- "pin": "92,51",
- "offset": -7,
- "points": "92,57,88,56,88,55,85,53,86,52,86,52,83,51,83,42,97,42,97,51,99,51,97,52,97,57,92,57",
- "zoneName": "MST"
-}, {
- "timezone": "America/Eirunepe",
- "country": "BR",
- "pin": "153,134",
- "offset": -4,
- "points": "156,138,148,135,148,134,149,132,150,131,153,131,156,138",
- "zoneName": "ACT"
-}, {
- "timezone": "America/El_Salvador",
- "country": "SV",
- "pin": "126,106",
- "offset": -6,
- "points": "126,106,125,106,126,105,128,106,128,107,126,106",
- "zoneName": "CST"
-}, {
- "timezone": "America/Fortaleza",
- "country": "BR",
- "pin": "197,130",
- "offset": -3,
- "points": "201,134,202,135,201,135,199,137,198,136,198,135,197,136,194,135,194,136,192,138,189,138,189,140,187,140,186,139,185,138,185,136,184,135,184,133,182,132,185,130,186,126,187,127,187,127,188,127,188,128,188,130,188,128,189,129,190,128,191,129,194,129,198,132,201,132,201,134",
- "zoneName": "BRT"
-}, {
- "timezone": "America/Glace_Bay",
- "country": "CA",
- "pin": "167,61",
- "offset": -4,
- "points": "167,61,166,61,166,61,167,61",
- "zoneName": "AST"
-}, {
- "timezone": "America/Godthab",
- "country": "GL",
- "pin": "178,36",
- "offset": -3,
- "points": "188,42,187,42,188,41,187,41,188,41,187,41,187,41,186,41,187,40,186,41,187,40,183,41,184,40,183,40,183,40,182,40,183,39,182,39,182,39,181,39,182,39,181,39,182,39,180,38,181,37,180,38,180,38,180,37,180,37,179,37,180,37,179,37,180,37,179,37,179,36,178,36,180,36,178,36,180,35,179,35,180,35,181,36,179,34,180,35,178,36,178,35,179,35,177,35,178,34,177,34,180,34,177,34,177,34,176,34,178,33,176,33,180,32,175,33,176,33,175,33,177,33,176,32,177,32,175,32,180,32,175,31,181,31,177,31,178,31,175,31,176,30,178,31,176,30,180,31,179,30,179,30,176,30,179,30,180,29,179,30,179,29,180,29,180,29,180,29,180,29,179,29,180,28,179,28,180,28,174,27,180,27,179,27,179,27,178,26,179,26,177,26,178,26,177,26,179,26,176,26,178,25,176,25,175,25,175,26,173,26,172,25,174,25,173,25,174,25,173,24,174,24,173,23,174,23,172,23,173,22,172,22,172,22,170,22,172,21,168,20,169,20,169,20,161,19,158,15,160,15,160,14,162,14,156,13,162,12,163,13,162,12,165,12,165,12,166,12,165,11,166,11,172,12,167,11,169,11,174,11,17
6,11,175,12,176,11,181,12,179,11,181,11,179,10,180,10,188,11,189,11,188,11,188,11,188,11,191,11,186,10,195,10,187,10,196,10,196,10,199,10,196,9,202,9,214,9,201,10,215,9,216,10,214,10,220,10,204,11,216,11,213,12,213,12,221,11,220,12,217,13,224,12,223,12,228,11,234,12,229,13,221,13,228,13,221,14,222,14,226,14,225,14,219,14,218,20,223,20,223,21,219,20,220,20,219,20,222,21,219,21,224,22,219,22,219,22,219,22,220,23,220,22,222,22,221,23,219,23,217,23,219,23,214,22,216,23,212,23,213,23,212,23,212,24,215,24,212,24,216,24,213,24,215,24,215,25,216,25,216,26,210,25,212,25,210,26,215,26,211,26,212,26,209,27,213,27,210,28,212,28,215,27,219,28,213,30,208,30,206,30,205,30,206,31,204,31,202,33,198,33,198,34,197,33,198,33,197,33,197,33,197,33,197,34,195,34,194,34,195,34,194,35,193,35,194,36,192,36,194,36,194,37,192,36,193,37,192,37,192,37,191,37,192,38,190,38,191,38,190,38,192,39,190,39,191,39,190,40,191,40,189,40,191,40,190,41,190,41,189,41,190,42,189,41,188,42",
- "zoneName": "WGT"
-}, {
- "timezone": "America/Goose_Bay",
- "country": "CA",
- "pin": "166,51",
- "offset": -4,
- "points": "171,53,161,53,161,52,162,52,162,52,161,52,160,53,158,53,158,51,156,52,157,51,156,50,157,49,156,49,157,49,157,48,159,49,161,49,162,48,161,48,161,47,162,47,161,47,162,45,160,44,162,43,160,43,161,43,161,42,160,42,160,41,162,43,161,43,163,43,162,44,163,44,162,44,164,45,163,45,165,46,163,46,164,46,164,47,166,48,166,48,166,49,167,48,167,48,168,48,167,49,168,48,168,49,170,49,167,50,169,50,166,51,170,50,171,50,170,51,171,53",
- "zoneName": "AST"
-}, {
- "timezone": "America/Grand_Turk",
- "country": "TC",
- "pin": "151,95",
- "offset": -5,
- "points": "151,95,151,95,151,95",
- "zoneName": "AST"
-}, {
- "timezone": "America/Grenada",
- "country": "GD",
- "pin": "164,108",
- "offset": -4,
- "points": "165,108,165,108,165,108",
- "zoneName": "AST"
-}, {
- "timezone": "America/Guadeloupe",
- "country": "GP",
- "pin": "165,102",
- "offset": -4,
- "points": "165,102,165,102,165,102",
- "zoneName": "AST"
-}, {
- "timezone": "America/Guatemala",
- "country": "GT",
- "pin": "124,105",
- "offset": -6,
- "points": "125,106,123,105,122,104,123,103,124,103,123,101,124,101,124,100,126,100,126,103,127,103,125,106",
- "zoneName": "CST"
-}, {
- "timezone": "America/Guayaquil",
- "country": "EC",
- "pin": "139,128",
- "offset": -5,
- "points": "141,130,140,132,139,131,138,131,139,128,139,129,137,128,139,124,141,123,142,124,144,124,145,125,145,125,146,126,141,130",
- "zoneName": "ECT"
-}, {
- "timezone": "America/Guyana",
- "country": "GY",
- "pin": "169,116",
- "offset": -4,
- "points": "170,116,171,118,170,118,169,119,172,122,170,122,168,123,167,122,167,121,167,120,166,119,167,118,165,117,165,116,166,115,166,115,167,114,167,113,169,115,169,116,169,115,170,116",
- "zoneName": "GYT"
-}, {
- "timezone": "America/Halifax",
- "country": "CA",
- "pin": "162,63",
- "offset": -4,
- "points": "161,63,162,62,160,62,161,61,163,62,164,61,165,62,161,63,159,65,158,64,158,63,160,62,161,63",
- "zoneName": "AST"
-}, {
- "timezone": "America/Havana",
- "country": "CU",
- "pin": "136,93",
- "offset": -5,
- "points": "146,96,147,97,142,97,143,96,141,96,141,95,136,94,136,94,137,94,136,93,132,95,134,93,138,93,146,96",
- "zoneName": "CST"
-}, {
- "timezone": "America/Hermosillo",
- "country": "MX",
- "pin": "96,85",
- "offset": -7,
- "points": "90,81,91,80,96,81,99,81,99,86,98,86,99,88,98,88,96,87,97,86,94,85,93,82,90,81",
- "zoneName": "MST"
-}, {
- "timezone": "America/Indiana/Petersburg",
- "country": "US",
- "pin": "129,72",
- "offset": -5,
- "points": "129,72,129,72,129,72",
- "zoneName": "EST"
-}, {
- "timezone": "America/Indiana/Tell_City",
- "country": "US",
- "pin": "129,72",
- "offset": -6,
- "points": "130,72,130,72,130,72",
- "zoneName": "CST"
-}, {
- "timezone": "America/Indiana/Vevay",
- "country": "US",
- "pin": "132,71",
- "offset": -5,
- "points": "132,71,132,71,132,71",
- "zoneName": "EST"
-}, {
- "timezone": "America/Indiana/Indianapolis",
- "country": "US",
- "pin": "130,70",
- "offset": -5,
- "points": "132,71,130,72,130,71,128,71,128,68,130,68,130,67,132,67,132,70,132,71",
- "zoneName": "EST"
-}, {
- "timezone": "America/Indiana/Knox",
- "country": "US",
- "pin": "130,68",
- "offset": -6,
- "points": "130,67,129,68,130,67",
- "zoneName": "CST"
-}, {
- "timezone": "America/Indiana/Marengo",
- "country": "US",
- "pin": "130,72",
- "offset": -5,
- "points": "130,72,130,72,130,72,130,72",
- "zoneName": "EST"
-}, {
- "timezone": "America/Indiana/Vincennes",
- "country": "US",
- "pin": "128,71",
- "offset": -5,
- "points": "128,72,128,71,130,71,130,72,128,72",
- "zoneName": "EST"
-}, {
- "timezone": "America/Indiana/Winamac",
- "country": "US",
- "pin": "130,68",
- "offset": -5,
- "points": "130,68,129,68,130,68",
- "zoneName": "EST"
-}, {
- "timezone": "America/Inuvik",
- "country": "CA",
- "pin": "64,30",
- "offset": -7,
- "points": "65,30,64,30,65,30",
- "zoneName": "MST"
-}, {
- "timezone": "America/Iqaluit",
- "country": "CA",
- "pin": "155,36",
- "offset": -5,
- "points": "139,20,138,20,140,20,138,21,140,21,132,21,132,20,139,20",
- "zoneName": "EST"
-}, {
- "timezone": "America/Iqaluit",
- "country": "CA",
- "pin": "155,36",
- "offset": -5,
- "points": "139,10,145,10,144,11,145,10,142,10,156,10,155,10,156,10,156,12,154,12,156,12,152,12,156,12,156,13,152,13,153,14,149,14,152,14,151,14,147,14,146,14,148,15,142,15,147,15,142,15,146,16,143,16,145,16,145,17,141,17,142,17,141,18,136,18,142,18,141,19,137,19,138,19,135,18,136,19,132,19,132,18,134,18,134,17,136,17,132,17,132,15,136,16,134,16,137,15,132,15,134,15,132,15,132,14,138,14,139,14,134,13,144,13,140,13,143,12,140,12,140,12,139,13,132,13,132,12,136,12,132,12,132,11,133,11,132,10,140,11,135,11,138,10,137,10,141,10,138,10,139,10",
- "zoneName": "EST"
-}, {
- "timezone": "America/Iqaluit",
- "country": "CA",
- "pin": "155,36",
- "offset": -5,
- "points": "132,30,133,29,132,29,132,28,136,28,134,28,137,29,136,29,137,30,135,30,137,31,134,33,133,32,132,32,132,30",
- "zoneName": "EST"
-}, {
- "timezone": "America/Iqaluit",
- "country": "CA",
- "pin": "155,36",
- "offset": -5,
- "points": "144,24,140,24,138,23,142,23,144,24",
- "zoneName": "EST"
-}, {
- "timezone": "America/Iqaluit",
- "country": "CA",
- "pin": "155,36",
- "offset": -5,
- "points": "133,23,137,23,139,24,138,24,138,24,138,25,139,24,142,25,140,25,142,25,141,24,142,24,146,24,146,25,144,25,147,25,145,26,146,25,146,26,148,25,147,26,148,26,147,26,149,26,148,26,149,25,151,26,149,27,150,27,149,27,152,26,150,27,151,27,151,28,153,27,152,27,155,27,152,28,155,28,153,28,156,27,155,28,153,28,156,29,154,29,155,29,154,29,155,29,155,29,156,29,154,29,156,30,156,33,155,33,156,34,156,37,154,36,156,37,156,39,151,37,150,37,151,37,149,36,148,36,148,35,148,36,148,35,147,36,147,35,146,35,146,35,147,36,142,36,141,35,142,34,148,34,147,33,150,32,148,30,148,30,147,30,148,30,145,29,144,30,145,29,143,28,143,28,143,28,143,28,142,28,142,27,140,27,139,27,140,27,141,28,136,28,138,28,135,27,137,28,132,28,132,26,133,25,132,25,132,25,133,25,132,25,132,24,133,24,132,23,133,24,132,23,133,23",
- "zoneName": "EST"
-}, {
- "timezone": "America/La_Paz",
- "country": "BO",
- "pin": "155,148",
- "offset": -4,
- "points": "164,154,163,156,161,156,161,157,160,156,158,155,157,157,156,157,155,153,155,152,153,149,154,148,154,147,155,142,153,140,155,140,157,139,159,138,160,142,166,144,166,148,169,148,169,149,170,150,170,153,168,152,164,152,164,154",
- "zoneName": "BOT"
-}, {
- "timezone": "America/Jamaica",
- "country": "JM",
- "pin": "143,100",
- "offset": -5,
- "points": "144,100,143,100,141,100,143,99,144,100",
- "zoneName": "EST"
-}, {
- "timezone": "America/Juneau",
- "country": "US",
- "pin": "63,44",
- "offset": -9,
- "points": "59,43,62,42,66,45,65,46,65,45,64,45,65,45,64,45,65,45,64,44,64,44,63,44,62,42,62,42,62,44,61,44,61,43,61,43,61,43,60,43,61,44,60,44,58,43,59,43",
- "zoneName": "AKST"
-}, {
- "timezone": "America/Kentucky/Louisville",
- "country": "US",
- "pin": "131,72",
- "offset": -5,
- "points": "130,72,130,72,131,71,130,72",
- "zoneName": "EST"
-}, {
- "timezone": "America/Kentucky/Monticello",
- "country": "US",
- "pin": "132,74",
- "offset": -5,
- "points": "132,74,133,74,132,74,132,74",
- "zoneName": "EST"
-}, {
- "timezone": "America/Kralendijk",
- "country": "BQ",
- "pin": "155,108",
- "offset": -4,
- "points": "162,101,162,100,162,101",
- "zoneName": "AST"
-}, {
- "timezone": "America/Lima",
- "country": "PE",
- "pin": "143,142",
- "offset": -5,
- "points": "153,149,153,150,152,150,151,149,146,146,144,145,144,144,139,135,137,133,138,133,137,131,138,130,139,130,138,131,140,132,141,130,145,127,146,126,145,125,146,125,149,128,150,128,153,129,152,130,153,131,152,131,149,132,148,134,147,135,149,137,148,138,150,138,150,139,152,138,152,140,153,140,155,142,154,147,154,148,153,149",
- "zoneName": "PET"
-}, {
- "timezone": "America/Managua",
- "country": "NI",
- "pin": "130,108",
- "offset": -6,
- "points": "132,110,131,110,128,107,129,107,129,106,131,106,132,104,135,104,134,110,132,110",
- "zoneName": "CST"
-}, {
- "timezone": "America/Manaus",
- "country": "BR",
- "pin": "167,129",
- "offset": -4,
- "points": "167,125,168,125,169,127,172,128,169,134,169,135,169,137,164,137,163,136,162,136,161,137,160,138,158,138,157,139,156,138,153,131,154,127,153,124,154,124,153,124,153,123,156,122,157,123,158,124,159,124,159,124,161,122,162,122,163,124,163,126,164,127,165,126,166,126,167,125",
- "zoneName": "AMT"
-}, {
- "timezone": "America/Los_Angeles",
- "country": "US",
- "pin": "86,78",
- "offset": -8,
- "points": "91,62,88,62,88,61,88,62,87,63,86,64,86,66,87,66,87,67,92,67,92,75,91,75,91,77,91,79,91,79,87,80,85,78,82,77,82,76,80,73,80,72,79,72,78,71,77,69,78,67,77,66,78,61,78,61,78,61,78,60,78,60,78,60,78,60,77,58,80,58,79,59,80,58,80,59,79,60,80,59,80,57,89,57,89,59,91,60,91,62",
- "zoneName": "PST"
-}, {
- "timezone": "America/Lower_Princes",
- "country": "SX",
- "pin": "162,100",
- "offset": -4,
- "points": "162,100,162,100,162,100",
- "zoneName": "AST"
-}, {
- "timezone": "America/Maceio",
- "country": "BR",
- "pin": "200,138",
- "offset": -3,
- "points": "199,140,198,141,197,140,198,139,197,138,198,137,199,138,201,137,199,140",
- "zoneName": "BRT"
-}, {
- "timezone": "America/Marigot",
- "country": "MF",
- "pin": "162,100",
- "offset": -4,
- "points": "162,100,162,100,162,100",
- "zoneName": "AST"
-}, {
- "timezone": "America/Martinique",
- "country": "MQ",
- "pin": "165,105",
- "offset": -4,
- "points": "165,104,165,104,165,104",
- "zoneName": "AST"
-}, {
- "timezone": "America/Matamoros",
- "country": "MX",
- "pin": "115,89",
- "offset": -6,
- "points": "113,89,112,89,109,84,108,84,107,85,107,85,107,84,109,84,112,87,112,88,115,89,115,90,113,89",
- "zoneName": "CST"
-}, {
- "timezone": "America/Mazatlan",
- "country": "MX",
- "pin": "102,93",
- "offset": -7,
- "points": "104,93,106,95,105,96,104,96,104,95,103,94,100,90,98,89,98,88,100,88,101,90,104,93",
- "zoneName": "MST"
-}, {
- "timezone": "America/Mazatlan",
- "country": "MX",
- "pin": "102,93",
- "offset": -7,
- "points": "91,86,93,86,98,93,97,93,94,91,94,89,93,88,92,88,90,86,92,87,91,86",
- "zoneName": "MST"
-}, {
- "timezone": "America/Menominee",
- "country": "US",
- "pin": "128,62",
- "offset": -6,
- "points": "128,62,128,61,124,60,128,61,129,62,128,62",
- "zoneName": "CST"
-}, {
- "timezone": "America/Mexico_City",
- "country": "MX",
- "pin": "112,98",
- "offset": -6,
- "points": "119,103,118,102,116,103,114,103,104,98,103,97,104,96,105,96,106,95,105,94,106,92,108,91,107,90,110,91,111,93,114,94,117,99,119,100,122,99,122,100,124,100,124,101,123,101,124,102,123,103,122,105,119,102,119,103",
- "zoneName": "CST"
-}, {
- "timezone": "America/Merida",
- "country": "MX",
- "pin": "126,96",
- "offset": -6,
- "points": "124,96,125,95,128,95,128,96,126,98,126,100,122,100,122,99,123,99,124,96",
- "zoneName": "CST"
-}, {
- "timezone": "America/Metlakatla",
- "country": "US",
- "pin": "67,48",
- "offset": -8,
- "points": "67,48,67,48,67,48",
- "zoneName": "PST"
-}, {
- "timezone": "America/Miquelon",
- "country": "PM",
- "pin": "172,60",
- "offset": -3,
- "points": "172,60,172,60,172,60",
- "zoneName": "PMST"
-}, {
- "timezone": "America/Moncton",
- "country": "CA",
- "pin": "160,61",
- "offset": -4,
- "points": "157,58,160,59,159,60,160,60,160,61,161,61,158,62,156,62,156,62,156,60,154,59,155,58,157,58",
- "zoneName": "AST"
-}, {
- "timezone": "America/Monterrey",
- "country": "MX",
- "pin": "111,89",
- "offset": -6,
- "points": "107,90,108,91,106,92,105,94,104,94,101,90,103,88,105,88,106,88,106,86,106,85,108,84,109,84,112,89,115,89,115,90,115,90,114,90,114,94,111,93,110,91,107,90",
- "zoneName": "CST"
-}, {
- "timezone": "America/Montevideo",
- "country": "UY",
- "pin": "172,173",
- "offset": -2,
- "points": "172,173,170,173,169,172,170,167,171,167,172,168,173,168,176,170,175,173,172,173",
- "zoneName": "UYT"
-}, {
- "timezone": "America/Montreal",
- "country": "",
- "pin": "250,125",
- "offset": -5,
- "points": "146,63,147,62,144,62,141,61,139,59,140,53,140,54,140,53,141,52,140,51,140,50,139,49,142,48,144,47,143,44,141,44,143,42,142,41,143,41,142,41,142,40,141,41,142,40,142,39,142,38,146,39,148,38,150,39,150,39,151,39,150,40,151,40,153,40,153,42,151,42,153,42,153,43,154,43,152,44,154,43,155,44,154,45,156,44,155,44,156,44,156,45,158,43,158,44,158,43,159,43,159,43,160,43,159,42,160,41,160,42,161,42,161,43,160,43,162,43,160,44,162,45,161,47,162,47,161,47,161,48,162,48,161,49,159,49,157,48,157,49,156,49,157,49,156,50,157,51,156,52,158,51,158,53,160,53,161,52,162,52,162,52,161,52,161,53,171,53,171,53,168,54,167,55,164,55,158,55,158,55,156,57,155,57,152,60,149,61,157,57,160,57,161,58,159,58,155,58,153,60,152,62,151,63,146,63",
- "zoneName": "EST"
-}, {
- "timezone": "America/Montserrat",
- "country": "MS",
- "pin": "164,102",
- "offset": -4,
- "points": "164,102,164,102,164,102",
- "zoneName": "AST"
-}, {
- "timezone": "America/Nassau",
- "country": "BS",
- "pin": "143,90",
- "offset": -5,
- "points": "143,90,143,90,143,90",
- "zoneName": "EST"
-}, {
- "timezone": "America/New_York",
- "country": "US",
- "pin": "147,68",
- "offset": -5,
- "points": "132,82,131,76,132,75,133,74,130,72,132,71,132,71,132,67,136,67,140,66,140,65,144,65,144,64,146,63,152,62,154,59,156,60,156,62,157,63,155,64,154,63,154,64,152,64,151,66,152,67,153,67,153,67,151,67,151,67,151,68,148,68,146,71,145,70,146,72,145,73,145,72,144,71,145,70,144,70,144,72,143,72,144,72,143,72,144,74,143,73,144,74,145,75,144,74,145,75,143,75,145,76,143,76,144,76,143,76,144,76,144,77,138,80,137,82,139,88,138,90,137,90,136,88,136,88,136,88,135,87,136,86,135,86,135,84,133,83,131,84,132,82",
- "zoneName": "EST"
-}, {
- "timezone": "America/Nipigon",
- "country": "CA",
- "pin": "127,57",
- "offset": -5,
- "points": "127,57,127,57,127,57",
- "zoneName": "EST"
-}, {
- "timezone": "America/Nome",
- "country": "US",
- "pin": "20,35",
- "offset": -9,
- "points": "25,32,23,32,22,31,18,30,19,29,23,29,25,27,25,32",
- "zoneName": "AKST"
-}, {
- "timezone": "America/Nome",
- "country": "US",
- "pin": "20,35",
- "offset": -9,
- "points": "25,35,24,36,19,35,18,35,19,34,16,34,23,33,22,33,25,33,25,35",
- "zoneName": "AKST"
-}, {
- "timezone": "America/Nome",
- "country": "US",
- "pin": "20,35",
- "offset": -9,
- "points": "25,42,22,42,20,41,21,40,19,39,22,37,23,37,25,37,25,42",
- "zoneName": "AKST"
-}, {
- "timezone": "America/Noronha",
- "country": "BR",
- "pin": "205,130",
- "offset": -2,
- "points": "205,130,205,130,205,130",
- "zoneName": "FNT"
-}, {
- "timezone": "America/North_Dakota/Beulah",
- "country": "US",
- "pin": "109,59",
- "offset": -6,
- "points": "109,59,108,60,108,59,109,59",
- "zoneName": "CST"
-}, {
- "timezone": "America/North_Dakota/Center",
- "country": "US",
- "pin": "109,60",
- "offset": -6,
- "points": "110,60,109,60,110,60",
- "zoneName": "CST"
-}, {
- "timezone": "America/North_Dakota/New_Salem",
- "country": "US",
- "pin": "109,60",
- "offset": -6,
- "points": "110,60,110,60,110,61,108,60,110,60",
- "zoneName": "CST"
-}, {
- "timezone": "America/Ojinaga",
- "country": "MX",
- "pin": "105,84",
- "offset": -7,
- "points": "102,81,106,85,105,84,104,83,102,81,99,82,100,81,100,81,102,81",
- "zoneName": "MST"
-}, {
- "timezone": "America/Panama",
- "country": "PA",
- "pin": "140,113",
- "offset": -5,
- "points": "142,113,143,114,142,115,141,114,141,113,142,114,140,112,138,114,139,115,138,115,138,115,137,114,137,114,136,113,135,114,135,113,135,112,137,113,140,112,142,113",
- "zoneName": "EST"
-}, {
- "timezone": "America/Pangnirtung",
- "country": "CA",
- "pin": "159,33",
- "offset": -5,
- "points": "156,10,160,10,165,11,156,12,156,10",
- "zoneName": "EST"
-}, {
- "timezone": "America/Pangnirtung",
- "country": "CA",
- "pin": "159,33",
- "offset": -5,
- "points": "156,34,157,34,157,35,157,35,160,35,159,36,160,36,160,36,160,37,159,36,160,38,159,37,159,38,158,37,158,37,156,37,156,34",
- "zoneName": "EST"
-}, {
- "timezone": "America/Pangnirtung",
- "country": "CA",
- "pin": "159,33",
- "offset": -5,
- "points": "156,30,157,30,156,30,158,30,157,31,158,31,158,31,158,31,160,31,159,31,160,31,161,31,160,31,161,32,160,32,162,31,161,32,163,32,163,32,164,32,165,32,163,33,164,33,162,33,163,33,163,33,163,34,162,33,162,35,159,34,161,33,159,33,159,33,158,33,156,32,157,33,156,33,157,33,156,33,156,30",
- "zoneName": "EST"
-}, {
- "timezone": "America/Paramaribo",
- "country": "SR",
- "pin": "173,117",
- "offset": -3,
- "points": "175,118,175,120,174,122,172,121,172,122,171,122,169,119,170,118,171,118,171,117,175,117,175,118",
- "zoneName": "SRT"
-}, {
- "timezone": "America/Phoenix",
- "country": "US",
- "pin": "94,79",
- "offset": -7,
- "points": "99,80,99,81,96,81,91,80,91,77,91,75,91,75,92,74,95,74,95,74,96,76,99,76,99,80",
- "zoneName": "MST"
-}, {
- "timezone": "America/Port-au-Prince",
- "country": "HT",
- "pin": "150,99",
- "offset": -5,
- "points": "148,99,149,99,148,99",
- "zoneName": "EST"
-}, {
- "timezone": "America/Port_of_Spain",
- "country": "TT",
- "pin": "165,110",
- "offset": -4,
- "points": "164,110,164,110,164,110",
- "zoneName": "AST"
-}, {
- "timezone": "America/Porto_Velho",
- "country": "BR",
- "pin": "161,137",
- "offset": -4,
- "points": "167,142,166,144,164,144,160,142,159,138,157,139,158,138,160,138,161,137,162,136,163,136,165,137,165,140,167,140,167,142",
- "zoneName": "AMT"
-}, {
- "timezone": "America/Puerto_Rico",
- "country": "PR",
- "pin": "158,99",
- "offset": -4,
- "points": "158,99,158,99,158,99",
- "zoneName": "AST"
-}, {
- "timezone": "America/Rainy_River",
- "country": "CA",
- "pin": "119,57",
- "offset": -6,
- "points": "119,57,119,57,119,57",
- "zoneName": "CST"
-}, {
- "timezone": "America/Rankin_Inlet",
- "country": "CA",
- "pin": "122,38",
- "offset": -6,
- "points": "132,12,125,12,125,12,129,12,122,12,132,11,132,12",
- "zoneName": "CST"
-}, {
- "timezone": "America/Rankin_Inlet",
- "country": "CA",
- "pin": "122,38",
- "offset": -6,
- "points": "113,19,114,19,114,20,115,20,111,21,110,20,111,20,108,20,108,20,109,20,108,19,111,20,111,19,112,19,110,19,113,19",
- "zoneName": "CST"
-}, {
- "timezone": "America/Rankin_Inlet",
- "country": "CA",
- "pin": "122,38",
- "offset": -6,
- "points": "125,16,126,16,122,16,121,16,123,16,119,15,124,15,118,15,117,15,119,14,116,14,119,14,118,14,119,14,116,13,120,13,117,13,121,12,119,12,120,12,127,14,128,13,128,14,129,14,129,15,132,15,128,16,128,15,127,16,128,16,127,16,127,16,125,16",
- "zoneName": "CST"
-}, {
- "timezone": "America/Rankin_Inlet",
- "country": "CA",
- "pin": "122,38",
- "offset": -6,
- "points": "132,21,122,21,122,21,122,20,121,19,118,19,118,19,115,18,117,18,121,18,120,19,124,19,124,19,123,19,126,19,123,19,126,20,132,20,132,21",
- "zoneName": "CST"
-}, {
- "timezone": "America/Rankin_Inlet",
- "country": "CA",
- "pin": "122,38",
- "offset": -6,
- "points": "132,19,125,19,130,18,127,17,129,17,132,18,132,19",
- "zoneName": "CST"
-}, {
- "timezone": "America/Rankin_Inlet",
- "country": "CA",
- "pin": "122,38",
- "offset": -6,
- "points": "132,28,127,27,126,26,129,26,125,26,125,25,126,25,125,24,128,23,132,23,130,24,130,24,130,25,132,26,129,26,132,26,132,28",
- "zoneName": "CST"
-}, {
- "timezone": "America/Rankin_Inlet",
- "country": "CA",
- "pin": "122,38",
- "offset": -6,
- "points": "125,36,124,37,119,36,123,37,124,37,122,38,122,38,120,39,120,39,119,40,120,40,118,42,108,42,108,32,126,32,126,29,128,30,128,30,127,31,129,32,130,31,131,30,132,30,132,33,130,33,131,33,129,34,123,33,129,35,128,36,125,36",
- "zoneName": "CST"
-}, {
- "timezone": "America/Rankin_Inlet",
- "country": "CA",
- "pin": "122,38",
- "offset": -6,
- "points": "118,22,120,22,125,22,122,24,119,24,120,24,120,25,117,24,117,23,119,23,118,22",
- "zoneName": "CST"
-}, {
- "timezone": "America/Recife",
- "country": "BR",
- "pin": "202,136",
- "offset": -3,
- "points": "196,136,197,136,198,135,199,137,201,135,202,136,201,137,199,138,198,137,197,138,195,137,194,138,193,137,194,136,194,135,196,136",
- "zoneName": "BRT"
-}, {
- "timezone": "America/Regina",
- "country": "CA",
- "pin": "105,55",
- "offset": -6,
- "points": "104,57,97,57,97,52,99,51,97,51,97,42,108,42,108,48,108,49,109,50,109,57,104,57",
- "zoneName": "CST"
-}, {
- "timezone": "America/Resolute",
- "country": "CA",
- "pin": "118,21",
- "offset": -6,
- "points": "118,20,120,20,120,21,116,21,118,20",
- "zoneName": "CST"
-}, {
- "timezone": "America/Rio_Branco",
- "country": "BR",
- "pin": "156,139",
- "offset": -4,
- "points": "148,135,152,136,157,139,155,140,152,140,152,138,150,139,150,138,148,138,149,137,147,135,148,135",
- "zoneName": "ACT"
-}, {
- "timezone": "America/Santa_Isabel",
- "country": "MX",
- "pin": "90,83",
- "offset": -8,
- "points": "91,80,91,83,93,86,91,86,92,85,89,84,88,81,88,80,91,80",
- "zoneName": "PST"
-}, {
- "timezone": "America/Santarem",
- "country": "BR",
- "pin": "174,128",
- "offset": -3,
- "points": "176,125,177,126,178,127,177,127,178,129,177,130,177,132,178,134,177,136,178,138,177,138,171,138,170,137,169,134,172,128,168,126,168,123,170,122,172,122,172,121,174,121,174,123,176,123,176,125",
- "zoneName": "BRT"
-}, {
- "timezone": "America/Santiago",
- "country": "CL",
- "pin": "152,171",
- "offset": -3,
- "points": "152,199,154,198,155,198,155,201,150,201,153,201,152,200,154,201,154,201,154,201,153,200,154,199,152,199,152,199",
- "zoneName": "CLT"
-}, {
- "timezone": "America/Santiago",
- "country": "CL",
- "pin": "152,171",
- "offset": -3,
- "points": "148,193,148,195,148,196,150,195,149,197,150,197,155,198,152,198,151,200,149,199,150,199,151,198,151,198,149,198,149,199,148,199,149,198,148,198,148,197,149,198,149,197,149,198,149,198,149,198,149,197,148,196,148,197,149,197,148,197,149,197,148,197,148,197,148,197,147,197,148,196,147,196,148,195,148,195,147,196,147,195,146,195,147,195,147,194,148,194,147,193,147,194,147,193,147,193,147,193,147,192,146,192,148,192,148,191,146,191,147,191,147,191,147,191,147,190,145,190,146,189,147,189,147,190,148,188,148,189,148,188,149,188,148,188,149,187,148,186,149,184,149,184,149,184,149,183,149,183,150,183,148,183,147,182,148,180,148,177,148,177,151,172,151,165,152,162,152,157,153,155,152,150,154,149,155,152,155,153,156,157,157,157,156,158,155,159,155,162,153,164,153,167,152,168,153,173,152,174,152,175,151,176,152,179,150,180,150,183,150,184,151,186,150,187,151,187,150,187,151,188,150,188,150,190,149,191,149,193,148,193",
- "zoneName": "CLT"
-}, {
- "timezone": "America/Santo_Domingo",
- "country": "DO",
- "pin": "153,99",
- "offset": -4,
- "points": "151,100,150,100,150,99,150,97,153,98,154,98,153,98,155,99,155,100,151,100",
- "zoneName": "AST"
-}, {
- "timezone": "America/Scoresbysund",
- "country": "GL",
- "pin": "219,27",
- "offset": -1,
- "points": "216,25,219,25,218,26,220,25,219,26,220,26,220,26,219,26,220,26,219,26,220,27,217,27,216,26,216,25",
- "zoneName": "EGT"
-}, {
- "timezone": "America/Sao_Paulo",
- "country": "BR",
- "pin": "185,158",
- "offset": -2,
- "points": "181,166,179,168,178,170,180,167,179,167,179,168,176,172,176,171,176,170,175,170,173,168,172,168,171,167,170,167,173,164,175,162,175,161,174,161,175,159,176,157,178,155,179,152,177,151,176,149,179,146,180,142,181,143,182,142,182,143,184,143,186,143,186,146,189,145,195,147,194,149,195,150,195,152,193,155,193,156,192,157,188,157,183,160,182,160,183,161,182,161,183,161,182,164,181,166",
- "zoneName": "BRST"
-}, {
- "timezone": "America/Sitka",
- "country": "US",
- "pin": "62,46",
- "offset": -9,
- "points": "66,45,67,46,65,46,66,45,66,45",
- "zoneName": "AKST"
-}, {
- "timezone": "America/St_Barthelemy",
- "country": "BL",
- "pin": "163,100",
- "offset": -4,
- "points": "163,100,163,100,163,100",
- "zoneName": "AST"
-}, {
- "timezone": "America/St_Johns",
- "country": "CA",
- "pin": "177,59",
- "offset": -3.5,
- "points": "173,53,172,54,173,54,172,54,171,56,172,55,173,56,172,56,173,56,173,57,174,56,176,57,175,58,176,57,175,58,175,59,177,58,176,59,177,59,176,60,176,60,176,59,175,60,175,59,175,58,173,60,174,59,172,59,173,59,173,58,171,59,168,59,169,58,168,58,169,57,170,57,169,57,170,56,169,56,170,55,173,53",
- "zoneName": "NST"
-}, {
- "timezone": "America/Thule",
- "country": "GL",
- "pin": "154,19",
- "offset": -4,
- "points": "161,19,155,19,153,19,156,18,151,18,158,17,153,17,153,17,149,16,158,15,161,19",
- "zoneName": "AST"
-}, {
- "timezone": "America/St_Kitts",
- "country": "KN",
- "pin": "163,101",
- "offset": -4,
- "points": "163,101,163,101,163,101",
- "zoneName": "AST"
-}, {
- "timezone": "America/St_Lucia",
- "country": "LC",
- "pin": "165,106",
- "offset": -4,
- "points": "165,105,165,106,165,105",
- "zoneName": "AST"
-}, {
- "timezone": "America/St_Thomas",
- "country": "VI",
- "pin": "160,100",
- "offset": -4,
- "points": "160,99,160,99,160,99",
- "zoneName": "AST"
-}, {
- "timezone": "America/St_Vincent",
- "country": "VC",
- "pin": "165,107",
- "offset": -4,
- "points": "165,106,165,107,165,106",
- "zoneName": "AST"
-}, {
- "timezone": "America/Swift_Current",
- "country": "CA",
- "pin": "100,55",
- "offset": -6,
- "points": "100,55,100,55,100,55",
- "zoneName": "CST"
-}, {
- "timezone": "America/Tegucigalpa",
- "country": "HN",
- "pin": "129,105",
- "offset": -6,
- "points": "129,106,129,107,128,106,126,105,126,104,128,103,131,103,133,103,135,104,132,104,131,106,129,106",
- "zoneName": "CST"
-}, {
- "timezone": "America/Thunder_Bay",
- "country": "CA",
- "pin": "126,58",
- "offset": -5,
- "points": "126,58,126,58,126,58",
- "zoneName": "EST"
-}, {
- "timezone": "America/Tijuana",
- "country": "MX",
- "pin": "87,80",
- "offset": -8,
- "points": "87,80,87,80,87,80",
- "zoneName": "PST"
-}, {
- "timezone": "America/Toronto",
- "country": "CA",
- "pin": "140,64",
- "offset": -5,
- "points": "146,62,147,62,143,64,142,63,143,64,143,64,140,64,139,65,140,65,135,67,137,65,137,63,137,62,138,63,139,63,138,61,137,61,136,62,133,61,133,60,132,58,131,58,130,57,127,57,128,58,126,58,126,58,124,58,124,57,125,56,125,55,124,53,125,53,125,52,126,52,127,51,126,50,125,50,125,47,127,46,128,47,132,48,136,48,136,51,138,54,140,54,140,60,141,61,144,62,146,62",
- "zoneName": "EST"
-}, {
- "timezone": "America/Tortola",
- "country": "VG",
- "pin": "160,99",
- "offset": -4,
- "points": "160,99,160,99,160,99",
- "zoneName": "AST"
-}, {
- "timezone": "America/Vancouver",
- "country": "CA",
- "pin": "79,57",
- "offset": -8,
- "points": "72,54,76,55,79,58,76,57,77,57,76,57,75,56,74,56,75,56,72,55,73,55,72,54",
- "zoneName": "PST"
-}, {
- "timezone": "America/Vancouver",
- "country": "CA",
- "pin": "79,57",
- "offset": -8,
- "points": "63,43,62,42,59,43,57,42,83,42,83,45,78,46,79,48,86,52,86,52,85,53,88,55,88,57,79,57,81,56,81,57,80,56,81,57,80,57,80,56,79,57,79,56,79,56,79,55,79,56,78,56,78,56,78,56,78,55,77,56,77,55,77,55,76,55,77,54,76,54,76,55,75,55,76,54,75,55,74,54,75,54,73,54,74,54,73,54,74,53,73,53,72,53,73,52,74,53,74,52,75,52,73,52,73,52,73,52,72,53,72,52,72,52,72,52,71,51,73,51,71,51,71,50,70,51,69,50,70,50,69,49,69,50,69,49,70,48,69,49,70,48,70,48,69,49,69,47,67,46,65,44,63,43",
- "zoneName": "PST"
-}, {
- "timezone": "America/Whitehorse",
- "country": "CA",
- "pin": "62,41",
- "offset": -8,
- "points": "57,29,60,29,61,32,64,32,64,33,66,33,66,35,69,36,70,37,69,37,70,37,70,39,73,40,74,41,77,40,78,42,54,41,54,28,57,29",
- "zoneName": "PST"
-}, {
- "timezone": "America/Winnipeg",
- "country": "CA",
- "pin": "115,56",
- "offset": -6,
- "points": "122,58,119,57,118,56,118,57,109,57,109,50,108,49,108,48,108,42,118,42,118,43,121,43,122,45,121,46,124,45,126,46,125,47,125,50,126,50,127,51,126,52,125,52,125,53,124,53,125,55,125,56,123,57,122,58",
- "zoneName": "CST"
-}, {
- "timezone": "America/Yakutat",
- "country": "US",
- "pin": "56,42",
- "offset": -9,
- "points": "56,42,56,42,56,42",
- "zoneName": "AKST"
-}, {
- "timezone": "America/Yellowknife",
- "country": "CA",
- "pin": "91,38",
- "offset": -7,
- "points": "83,31,92,34,95,34,97,35,108,36,108,42,78,42,77,40,74,41,73,40,70,39,70,37,69,37,70,37,69,36,66,35,66,33,64,33,64,32,61,32,60,29,62,30,61,29,63,28,64,28,64,29,70,28,67,28,67,29,68,28,68,29,69,28,73,27,72,27,76,29,77,28,78,28,77,29,79,28,82,28,81,28,81,30,83,31",
- "zoneName": "MST"
-}, {
- "timezone": "America/Yellowknife",
- "country": "CA",
- "pin": "91,38",
- "offset": -7,
- "points": "88,17,90,18,88,18,89,18,87,19,86,19,86,18,83,20,79,19,84,18,88,17",
- "zoneName": "MST"
-}, {
- "timezone": "America/Yellowknife",
- "country": "CA",
- "pin": "91,38",
- "offset": -7,
- "points": "84,22,87,22,90,23,85,24,83,25,83,26,79,26,75,25,78,23,77,22,81,21,84,22",
- "zoneName": "MST"
-}, {
- "timezone": "America/Yellowknife",
- "country": "CA",
- "pin": "91,38",
- "offset": -7,
- "points": "91,19,97,20,97,21,93,22,91,21,96,20,87,20,90,20,87,20,91,20,88,20,91,19",
- "zoneName": "MST"
-}, {
- "timezone": "America/Yellowknife",
- "country": "CA",
- "pin": "91,38",
- "offset": -7,
- "points": "90,23,92,23,91,24,93,24,96,24,95,25,97,24,97,28,87,28,87,28,87,28,95,27,87,27,86,26,90,26,86,26,87,25,85,25,86,25,86,24,90,23",
- "zoneName": "MST"
-}, {
- "timezone": "Antarctica/Macquarie",
- "country": "AU",
- "pin": "471,201",
- "offset": 11,
- "points": "471,201,471,201,471,201",
- "zoneName": "MIST"
-}, {
- "timezone": "Arctic/Longyearbyen",
- "country": "SJ",
- "pin": "272,17",
- "offset": 1,
- "points": "275,14,275,14,275,15,275,14,280,16,276,16,276,17,274,18,274,19,273,19,272,18,273,18,269,17,273,17,270,17,274,17,269,17,269,17,274,16,273,16,273,16,271,16,271,15,270,16,271,16,268,16,267,16,268,16,266,15,267,15,266,15,267,15,266,15,265,15,269,14,267,14,269,15,269,15,270,14,273,15,272,14,275,14",
- "zoneName": "CET"
-}, {
- "timezone": "Arctic/Longyearbyen",
- "country": "SJ",
- "pin": "272,17",
- "offset": 1,
- "points": "285,14,288,14,283,15,275,14,277,14,276,13,278,14,277,13,281,14,282,13,282,13,282,14,285,14",
- "zoneName": "CET"
-}, {
- "timezone": "Asia/Aden",
- "country": "YE",
- "pin": "313,107",
- "offset": 3,
- "points": "313,107,310,107,309,104,310,101,314,102,314,103,318,100,322,99,324,102,323,102,322,103,313,107",
- "zoneName": "AST"
-}, {
- "timezone": "Asia/Almaty",
- "country": "KZ",
- "pin": "357,65",
- "offset": 6,
- "points": "348,66,345,68,343,68,342,66,344,65,345,64,344,63,343,61,337,60,339,58,339,58,340,57,342,57,345,55,344,54,344,52,342,52,342,51,342,51,342,51,342,49,346,48,348,48,349,50,352,50,352,51,357,49,356,50,358,51,361,55,362,54,363,55,366,54,368,56,371,56,371,57,369,58,369,60,365,59,364,62,365,62,363,62,361,63,362,63,362,65,361,66,359,65,355,66,353,65,352,65,352,66,350,66,348,66",
- "zoneName": "ALMT"
-}, {
- "timezone": "Asia/Amman",
- "country": "JO",
- "pin": "300,81",
- "offset": 2,
- "points": "302,82,303,83,302,83,300,84,299,84,299,80,301,80,304,79,305,80,301,81,302,82",
- "zoneName": "EET"
-}, {
- "timezone": "Asia/Anadyr",
- "country": "RU",
- "pin": "497,35",
- "offset": 12,
- "points": "10,32,14,33,13,34,12,34,12,34,10,34,11,34,11,35,9,35,11,36,10,36,6,35,6,34,2,34,2,33,2,33,0,33,1,34,0,35,0,29,7,31,8,33,9,33,7,32,10,32",
- "zoneName": "ANAT"
-}, {
- "timezone": "Asia/Anadyr",
- "country": "RU",
- "pin": "497,35",
- "offset": 12,
- "points": "497,35,493,35,498,36,499,38,499,39,496,38,492,39,491,38,487,39,484,37,486,37,484,36,473,35,471,34,471,33,470,33,471,32,469,31,470,30,476,30,476,29,475,28,476,28,483,28,486,30,488,29,486,28,487,28,495,28,500,29,500,35,498,35,497,35",
- "zoneName": "ANAT"
-}, {
- "timezone": "Asia/Aqtau",
- "country": "KZ",
- "pin": "320,63",
- "offset": 5,
- "points": "328,63,328,68,325,66,323,67,323,66,321,65,320,63,322,63,321,63,321,62,324,62,323,60,321,60,319,61,317,60,318,60,318,59,315,58,319,58,325,57,325,57,326,57,327,60,329,61,329,62,328,63",
- "zoneName": "AQTT"
-}, {
- "timezone": "Asia/Aqtobe",
- "country": "KZ",
- "pin": "329,55",
- "offset": 5,
- "points": "326,55,326,54,327,55,328,54,331,54,333,55,335,54,336,54,337,56,337,57,339,58,337,60,335,59,331,62,329,62,328,60,326,59,326,57,324,57,326,56,326,55",
- "zoneName": "AQTT"
-}, {
- "timezone": "Asia/Ashgabat",
- "country": "TM",
- "pin": "331,72",
- "offset": 5,
- "points": "340,74,340,75,337,76,335,75,335,74,334,74,332,73,329,72,325,73,325,71,324,71,324,70,325,70,323,69,324,68,323,67,325,66,327,68,329,68,329,67,331,66,331,66,331,66,331,66,333,66,334,68,336,68,337,70,343,72,342,73,341,73,340,74",
- "zoneName": "TMT"
-}, {
- "timezone": "Asia/Baghdad",
- "country": "IQ",
- "pin": "312,79",
- "offset": 3,
- "points": "315,83,315,85,312,84,308,82,304,80,304,79,307,77,307,74,309,73,312,73,313,75,314,75,313,78,314,79,316,80,316,81,316,82,317,83,315,83",
- "zoneName": "AST"
-}, {
- "timezone": "Asia/Bahrain",
- "country": "BH",
- "pin": "320,88",
- "offset": 3,
- "points": "320,89,320,89,320,89",
- "zoneName": "AST"
-}, {
- "timezone": "Asia/Bangkok",
- "country": "TH",
- "pin": "390,106",
- "offset": 7,
- "points": "391,116,392,117,390,117,390,116,389,116,389,116,386,113,387,110,388,109,388,106,386,104,387,102,385,99,386,99,386,97,387,98,389,97,390,97,390,98,391,98,390,101,392,100,393,100,393,99,394,100,397,103,396,105,394,105,392,106,393,109,391,107,390,107,390,106,389,107,388,112,389,112,390,115,391,116",
- "zoneName": "ICT"
-}, {
- "timezone": "Asia/Baku",
- "country": "AZ",
- "pin": "319,69",
- "offset": 4,
- "points": "314,67,316,68,317,67,320,69,319,69,318,72,317,71,317,70,317,70,315,71,315,70,313,69,314,69,313,68,315,68,314,67",
- "zoneName": "AZT"
-}, {
- "timezone": "Asia/Chongqing",
- "country": "",
- "pin": "250,125",
- "offset": 8,
- "points": "403,95,402,95,401,95,401,95,399,95,398,94,398,93,396,93,394,94,394,93,393,94,392,93,391,94,391,96,391,96,390,95,389,95,389,94,388,94,388,93,387,93,387,91,385,92,386,90,387,89,387,87,386,86,387,86,387,85,388,84,387,81,385,80,386,79,385,78,387,78,388,77,387,77,388,77,387,75,388,73,388,72,389,72,385,71,386,70,384,70,385,68,386,68,385,66,390,66,396,67,399,66,403,66,404,65,407,67,409,66,408,67,408,69,406,69,404,70,403,72,404,73,403,77,404,79,402,79,403,80,402,80,403,82,401,83,401,84,402,85,402,87,401,87,402,87,402,88,402,89,405,89,404,90,405,90,406,91,405,93,406,92,407,95,405,95,405,94,405,94,404,93,403,95",
- "zoneName": "CST"
-}, {
- "timezone": "Asia/Beirut",
- "country": "LB",
- "pin": "299,78",
- "offset": 2,
- "points": "300,79,299,79,300,77,301,77,301,77,300,79",
- "zoneName": "EET"
-}, {
- "timezone": "Asia/Bishkek",
- "country": "KG",
- "pin": "354,65",
- "offset": 6,
- "points": "354,69,353,69,353,70,350,71,346,70,352,68,350,67,349,68,347,67,349,66,348,66,349,66,352,66,352,65,353,65,355,66,359,65,361,66,359,68,357,68,356,69,354,69",
- "zoneName": "KGT"
-}, {
- "timezone": "Asia/Brunei",
- "country": "BN",
- "pin": "410,118",
- "offset": 8,
- "points": "410,118,410,119,410,118",
- "zoneName": "BNT"
-}, {
- "timezone": "Asia/Choibalsan",
- "country": "MN",
- "pin": "409,58",
- "offset": 8,
- "points": "412,61,411,62,409,62,408,63,406,62,405,60,405,59,407,59,406,56,409,55,412,56,410,58,411,59,415,58,416,59,416,61,415,60,412,61",
- "zoneName": "CHOT"
-}, {
- "timezone": "Asia/Colombo",
- "country": "LK",
- "pin": "361,115",
- "offset": 5.5,
- "points": "363,116,362,117,361,116,361,114,361,111,363,113,364,115,363,116",
- "zoneName": "IST"
-}, {
- "timezone": "Asia/Damascus",
- "country": "SY",
- "pin": "300,78",
- "offset": 2,
- "points": "302,80,301,80,299,80,299,79,301,77,300,76,301,75,301,74,304,74,309,73,307,75,307,77,302,80",
- "zoneName": "EET"
-}, {
- "timezone": "Asia/Dhaka",
- "country": "BD",
- "pin": "376,92",
- "offset": 6,
- "points": "375,94,375,94,375,95,374,95,373,91,372,91,374,90,372,89,373,88,374,89,375,89,375,90,378,90,377,92,377,93,378,92,379,95,378,95,378,96,378,94,378,94,377,94,377,93,376,93,376,92,375,92,376,93,374,92,375,92,376,94,375,94",
- "zoneName": "BDT"
-}, {
- "timezone": "Asia/Dili",
- "country": "TL",
- "pin": "424,137",
- "offset": 9,
- "points": "424,137,427,137,424,138,424,137",
- "zoneName": "TLT"
-}, {
- "timezone": "Asia/Dubai",
- "country": "AE",
- "pin": "327,90",
- "offset": 4,
- "points": "328,91,328,92,327,92,327,94,323,93,322,92,325,91,328,89,328,90,328,91",
- "zoneName": "GST"
-}, {
- "timezone": "Asia/Dushanbe",
- "country": "TJ",
- "pin": "346,71",
- "offset": 5,
- "points": "346,73,344,73,345,72,344,70,345,70,346,69,345,69,348,68,348,68,348,69,349,69,347,69,346,70,349,70,350,71,352,70,352,71,354,72,354,73,352,73,350,74,349,72,349,72,346,73",
- "zoneName": "TJT"
-}, {
- "timezone": "Asia/Gaza",
- "country": "PS",
- "pin": "298,81",
- "offset": 2,
- "points": "298,81,298,82,298,81",
- "zoneName": "EET"
-}, {
- "timezone": "Asia/Harbin",
- "country": "",
- "pin": "250,125",
- "offset": 8,
- "points": "424,68,423,65,423,66,421,65,421,63,420,64,420,62,419,61,420,61,421,60,422,60,420,59,423,58,423,58,425,54,424,53,421,54,420,53,423,51,425,52,427,56,431,57,432,59,437,58,437,59,435,62,433,62,432,63,432,65,431,66,431,66,430,65,430,66,428,67,428,68,426,67,424,68",
- "zoneName": "CST"
-}, {
- "timezone": "Asia/Hebron",
- "country": "PS",
- "pin": "299,81",
- "offset": 2,
- "points": "299,81,299,80,299,81,298,81,299,81",
- "zoneName": "EET"
-}, {
- "timezone": "Asia/Ho_Chi_Minh",
- "country": "VN",
- "pin": "398,110",
- "offset": 7,
- "points": "397,112,395,113,396,111,395,111,396,110,397,110,397,109,399,108,400,104,396,99,394,98,396,97,395,97,395,96,393,96,393,95,392,94,392,93,394,94,396,93,398,93,398,94,400,95,398,96,398,96,397,99,401,104,402,107,401,109,398,110,398,112,397,112",
- "zoneName": "ICT"
-}, {
- "timezone": "Asia/Hong_Kong",
- "country": "HK",
- "pin": "409,94",
- "offset": 8,
- "points": "409,94,408,94,409,94",
- "zoneName": "HKT"
-}, {
- "timezone": "Asia/Hovd",
- "country": "MN",
- "pin": "377,58",
- "offset": 7,
- "points": "387,63,386,64,386,66,384,66,383,63,376,62,376,60,375,59,372,58,372,57,378,54,381,55,381,56,385,56,385,56,386,57,388,57,388,58,386,58,387,59,385,60,387,61,387,63",
- "zoneName": "HOVT"
-}, {
- "timezone": "Asia/Irkutsk",
- "country": "RU",
- "pin": "395,52",
- "offset": 9,
- "points": "411,46,410,46,411,48,412,48,412,49,408,51,409,51,408,52,406,52,404,53,401,53,400,55,401,55,400,56,396,55,393,55,392,55,392,54,387,52,388,51,384,50,383,50,384,49,384,48,386,47,385,46,386,45,389,44,390,45,390,44,392,43,392,43,395,44,396,43,396,42,397,42,396,41,395,41,398,39,398,38,397,37,398,37,398,36,400,36,401,36,400,37,402,37,402,38,402,38,403,38,402,39,402,40,404,40,402,42,402,43,406,42,406,43,411,41,413,42,413,42,415,43,415,44,413,44,413,45,414,45,413,46,411,46",
- "zoneName": "IRKT"
-}, {
- "timezone": "Asia/Jakarta",
- "country": "ID",
- "pin": "398,134",
- "offset": 7,
- "points": "406,135,407,136,409,136,409,137,400,136,396,134,397,133,400,134,401,134,403,135,404,134,406,135",
- "zoneName": "WIB"
-}, {
- "timezone": "Asia/Jakarta",
- "country": "ID",
- "pin": "398,134",
- "offset": 7,
- "points": "397,131,397,133,396,133,396,133,395,133,395,133,392,131,389,125,388,125,387,123,383,119,382,117,385,118,386,119,393,124,393,125,394,125,394,126,395,126,395,129,397,128,397,129,397,131",
- "zoneName": "WIB"
-}, {
- "timezone": "Asia/Jayapura",
- "country": "ID",
- "pin": "445,129",
- "offset": 9,
- "points": "438,131,437,131,437,130,436,130,436,129,435,130,435,131,434,130,433,129,435,128,436,129,436,128,434,128,433,127,432,127,432,126,434,125,436,126,436,128,438,130,441,127,446,129,446,138,444,136,445,136,443,136,443,136,443,135,444,135,442,135,443,135,441,132,438,131",
- "zoneName": "WIT"
-}, {
- "timezone": "Asia/Kabul",
- "country": "AF",
- "pin": "346,77",
- "offset": 4.5,
- "points": "338,84,335,84,336,82,335,81,334,79,335,78,334,78,335,76,337,76,341,73,344,74,346,73,349,72,349,72,350,74,352,73,354,73,349,75,350,76,349,78,347,78,348,79,347,79,346,81,345,81,344,81,343,82,342,84,338,84",
- "zoneName": "AFT"
-}, {
- "timezone": "Asia/Jerusalem",
- "country": "IL",
- "pin": "299,81",
- "offset": 2,
- "points": "298,81,299,79,300,79,299,80,299,80,299,81,298,81,299,81,298,84,298,82,298,81",
- "zoneName": "IST"
-}, {
- "timezone": "Asia/Kamchatka",
- "country": "RU",
- "pin": "470,51",
- "offset": 12,
- "points": "476,45,477,47,475,47,475,48,475,49,472,50,472,51,470,51,470,52,468,54,466,47,468,45,468,45,471,44,475,41,477,41,477,40,478,40,478,39,480,38,477,38,476,39,477,39,476,39,475,39,476,38,475,37,476,37,476,36,477,36,477,35,484,36,486,37,484,37,486,38,491,38,492,39,489,40,487,42,484,41,481,42,481,41,479,42,477,42,477,43,475,44,477,45,476,45",
- "zoneName": "PETT"
-}, {
- "timezone": "Asia/Karachi",
- "country": "PK",
- "pin": "343,90",
- "offset": 5,
- "points": "348,86,347,88,348,89,349,91,348,91,346,91,344,92,344,91,343,91,342,89,336,90,336,89,338,88,338,87,337,87,337,86,336,85,335,84,339,84,342,84,343,82,346,81,347,79,348,79,347,78,349,78,349,77,350,76,349,75,350,74,354,74,355,74,356,75,358,76,355,77,353,77,353,79,355,80,354,81,354,82,350,86,348,86",
- "zoneName": "PKT"
-}, {
- "timezone": "Asia/Kashgar",
- "country": "",
- "pin": "250,125",
- "offset": 6,
- "points": "361,83,359,82,359,80,360,80,360,79,359,78,360,77,359,77,358,76,356,75,355,74,354,74,354,73,354,72,352,71,352,70,354,69,356,69,357,68,358,68,362,67,361,66,362,65,362,63,361,63,363,62,365,63,363,63,368,65,365,64,366,65,365,65,365,67,364,68,364,70,365,70,364,74,365,75,364,76,365,76,364,77,366,80,365,81,365,81,366,81,366,82,365,82,363,83,361,83",
- "zoneName": "XJT"
-}, {
- "timezone": "Asia/Kathmandu",
- "country": "NP",
- "pin": "368,87",
- "offset": 5.8,
- "points": "368,86,372,86,372,88,369,88,367,87,366,87,361,85,362,84,363,83,368,85,368,86",
- "zoneName": "NPT"
-}, {
- "timezone": "Asia/Kolkata",
- "country": "IN",
- "pin": "373,94",
- "offset": 5.5,
- "points": "362,106,361,109,361,111,360,111,360,112,360,112,359,112,358,113,357,114,356,113,352,103,351,97,351,96,351,95,352,95,351,95,351,94,351,94,350,96,348,96,346,94,347,94,348,93,346,93,345,92,346,92,345,92,346,91,349,91,347,87,348,86,350,86,354,82,354,81,355,80,353,79,353,77,355,77,358,76,359,77,360,77,359,78,360,79,360,80,359,80,359,82,363,83,361,85,369,88,372,88,372,86,373,86,374,88,378,88,378,87,377,86,379,86,381,84,384,84,384,85,384,85,384,86,385,86,385,87,385,87,384,87,382,88,381,92,380,92,379,95,378,92,377,93,377,92,378,90,375,90,375,89,374,89,373,88,372,89,374,90,372,91,373,91,374,95,373,94,373,95,372,94,371,95,371,96,370,97,368,98,364,101,364,102,362,103,362,106",
- "zoneName": "IST"
-}, {
- "timezone": "Asia/Krasnoyarsk",
- "country": "RU",
- "pin": "379,47",
- "offset": 8,
- "points": "396,16,388,17,392,15,393,15,392,16,394,15,396,16,396,16",
- "zoneName": "KRAT"
-}, {
- "timezone": "Asia/Krasnoyarsk",
- "country": "RU",
- "pin": "379,47",
- "offset": 8,
- "points": "385,14,386,14,384,14,389,14,389,15,388,15,389,15,382,15,380,14,379,14,385,14",
- "zoneName": "KRAT"
-}, {
- "timezone": "Asia/Krasnoyarsk",
- "country": "RU",
- "pin": "379,47",
- "offset": 8,
- "points": "383,12,386,13,384,13,385,14,380,14,377,14,383,12",
- "zoneName": "KRAT"
-}, {
- "timezone": "Asia/Krasnoyarsk",
- "country": "RU",
- "pin": "379,47",
- "offset": 8,
- "points": "384,51,388,51,386,54,386,55,385,56,381,56,381,55,378,54,374,56,374,55,375,55,374,54,372,53,374,52,373,51,374,50,373,49,373,49,373,48,374,47,373,46,374,45,372,44,373,43,373,43,371,42,367,42,368,41,367,40,369,40,367,39,369,37,368,37,369,36,369,35,367,35,367,34,366,34,366,32,364,32,364,31,364,31,365,30,365,29,360,28,362,27,360,26,362,25,359,24,366,25,364,26,364,27,364,27,364,27,364,28,367,28,365,27,366,27,366,26,366,26,362,24,362,24,362,23,362,23,362,23,371,22,371,22,369,22,371,22,369,21,371,21,372,21,371,21,374,20,381,20,379,19,380,19,388,19,387,19,390,19,391,18,395,17,398,18,395,18,399,18,398,19,404,18,406,19,405,19,408,20,408,20,406,20,408,20,407,21,400,23,397,23,399,23,396,24,404,23,404,23,403,23,404,24,404,24,406,25,406,26,407,26,403,27,402,28,397,29,398,29,398,31,397,32,397,32,398,34,399,34,397,35,400,36,398,36,398,37,397,37,398,38,398,39,396,40,395,41,397,41,397,42,396,42,396,43,396,43,393,43,390,45,390,45,389,44,386,45,385,46,386,47,384,48,384,49,383,50,384,51",
- "zoneName": "KRAT"
-}, {
- "timezone": "Asia/Kuala_Lumpur",
- "country": "MY",
- "pin": "391,121",
- "offset": 8,
- "points": "394,121,395,123,394,123,391,121,390,119,389,116,390,116,390,117,392,116,393,117,394,121",
- "zoneName": "MYT"
-}, {
- "timezone": "Asia/Kuching",
- "country": "MY",
- "pin": "403,123",
- "offset": 8,
- "points": "410,118,412,115,412,116,413,115,413,116,414,117,416,118,414,118,415,119,411,119,409,123,406,123,405,124,404,124,402,123,402,122,405,123,404,123,405,121,407,121,408,119,409,119,410,118,410,119,410,118",
- "zoneName": "MYT"
-}, {
- "timezone": "Asia/Kuwait",
- "country": "KW",
- "pin": "317,84",
- "offset": 3,
- "points": "317,83,317,83,317,83",
- "zoneName": "AST"
-}, {
- "timezone": "Asia/Macau",
- "country": "MO",
- "pin": "408,94",
- "offset": 8,
- "points": "408,94,408,94,408,94",
- "zoneName": "CST"
-}, {
- "timezone": "Asia/Magadan",
- "country": "RU",
- "pin": "459,42",
- "offset": 12,
- "points": "464,42,464,42,466,43,460,43,460,43,462,43,458,42,457,43,455,43,454,43,454,42,452,41,454,40,453,39,450,39,445,38,444,37,445,36,444,35,445,34,444,33,445,32,443,32,446,31,446,30,447,30,447,29,448,29,447,28,448,28,446,28,450,25,457,25,458,25,457,25,461,27,470,26,472,27,472,28,474,28,474,29,476,28,476,29,476,30,470,30,469,31,471,32,470,33,471,33,471,34,477,35,477,36,476,36,476,37,475,37,476,38,475,39,476,39,472,41,473,40,472,40,473,39,469,39,464,42",
- "zoneName": "MAGT"
-}, {
- "timezone": "Asia/Makassar",
- "country": "ID",
- "pin": "416,132",
- "offset": 8,
- "points": "412,128,411,130,409,131,409,129,411,127,410,125,410,125,410,124,408,124,410,122,411,119,413,119,414,120,413,120,413,120,413,120,414,122,414,122,415,124,414,123,413,126,411,127,412,128",
- "zoneName": "WITA"
-}, {
- "timezone": "Asia/Makassar",
- "country": "ID",
- "pin": "416,132",
- "offset": 8,
- "points": "420,129,420,130,421,131,419,132,418,130,418,129,417,129,417,133,416,133,416,131,416,130,415,130,415,129,416,127,416,126,417,124,418,123,422,124,424,123,423,124,417,124,417,125,417,126,418,127,419,126,421,126,421,126,418,128,420,129",
- "zoneName": "WITA"
-}, {
- "timezone": "Asia/Manila",
- "country": "PH",
- "pin": "418,105",
- "offset": 8,
- "points": "423,117,422,116,423,115,422,114,421,115,420,114,420,115,419,115,420,114,421,113,422,113,422,114,423,113,423,112,424,112,424,111,425,112,426,115,425,116,425,115,424,117,424,117,423,117",
- "zoneName": "PHT"
-}, {
- "timezone": "Asia/Manila",
- "country": "PH",
- "pin": "418,105",
- "offset": 8,
- "points": "421,105,421,106,421,105,422,106,422,106,422,107,422,108,420,106,420,107,419,106,418,106,418,105,417,104,417,105,417,104,416,102,417,103,418,99,420,99,420,102,419,104,419,106,421,105",
- "zoneName": "PHT"
-}, {
- "timezone": "Asia/Muscat",
- "country": "OM",
- "pin": "331,92",
- "offset": 4,
- "points": "328,100,327,100,326,101,324,102,322,99,326,97,327,94,327,93,327,92,328,92,328,90,329,92,332,92,333,94,331,97,330,97,330,99,329,99,328,100",
- "zoneName": "GST"
-}, {
- "timezone": "Asia/Nicosia",
- "country": "CY",
- "pin": "296,76",
- "offset": 2,
- "points": "296,77,295,76,298,75,297,76,297,76,296,77",
- "zoneName": "EET"
-}, {
- "timezone": "Asia/Novokuznetsk",
- "country": "RU",
- "pin": "371,50",
- "offset": 7,
- "points": "373,46,374,47,373,48,373,49,373,49,374,50,374,50,373,51,374,52,373,53,371,52,370,51,371,51,368,49,367,47,373,46",
- "zoneName": "KRAT"
-}, {
- "timezone": "Asia/Novosibirsk",
- "country": "RU",
- "pin": "365,49",
- "offset": 7,
- "points": "367,47,368,49,367,50,366,50,365,51,362,49,358,51,356,50,357,49,355,50,355,49,354,48,356,47,355,47,356,46,354,44,356,42,357,40,364,41,366,40,368,41,368,42,371,42,373,43,372,44,374,45,373,46,367,47",
- "zoneName": "NOVT"
-}, {
- "timezone": "Asia/Omsk",
- "country": "RU",
- "pin": "352,49",
- "offset": 7,
- "points": "354,44,356,46,355,47,356,47,354,48,355,49,355,50,352,51,352,50,349,50,349,48,348,48,348,47,350,46,348,45,348,44,349,44,351,44,354,44",
- "zoneName": "OMST"
-}, {
- "timezone": "Asia/Omsk",
- "country": "RU",
- "pin": "352,49",
- "offset": 7,
- "points": "373,53,372,53,374,54,375,55,374,55,375,56,371,57,371,56,368,56,366,54,363,55,362,54,361,55,358,51,362,49,365,51,366,50,368,49,371,51,370,51,371,52,373,53",
- "zoneName": "OMST"
-}, {
- "timezone": "Asia/Phnom_Penh",
- "country": "KH",
- "pin": "396,109",
- "offset": 7,
- "points": "397,109,397,110,394,110,394,109,393,110,392,106,394,105,397,106,397,105,399,105,399,108,397,109",
- "zoneName": "ICT"
-}, {
- "timezone": "Asia/Pontianak",
- "country": "ID",
- "pin": "402,125",
- "offset": 7,
- "points": "411,127,409,130,407,129,405,130,405,129,403,129,403,127,402,126,401,123,402,122,404,124,405,124,406,123,408,123,408,124,410,124,410,125,410,125,411,127",
- "zoneName": "WIB"
-}, {
- "timezone": "Asia/Pyongyang",
- "country": "KP",
- "pin": "425,71",
- "offset": 9,
- "points": "426,72,424,73,423,72,424,71,424,71,424,70,423,70,423,69,425,68,426,67,428,68,428,67,429,67,431,65,431,66,430,67,430,68,427,70,428,72,426,72",
- "zoneName": "KST"
-}, {
- "timezone": "Asia/Qatar",
- "country": "QA",
- "pin": "322,90",
- "offset": 3,
- "points": "322,90,321,91,321,90,321,89,322,90",
- "zoneName": "AST"
-}, {
- "timezone": "Asia/Qyzylorda",
- "country": "KZ",
- "pin": "341,63",
- "offset": 6,
- "points": "344,52,344,54,345,55,342,57,340,57,339,58,337,57,337,56,336,54,333,53,335,52,334,52,335,51,336,51,335,51,336,51,335,51,335,50,342,49,342,51,342,52,344,52",
- "zoneName": "QYZT"
-}, {
- "timezone": "Asia/Qyzylorda",
- "country": "KZ",
- "pin": "341,63",
- "offset": 6,
- "points": "342,65,340,64,336,65,334,63,334,61,335,60,334,60,333,61,334,61,333,61,333,61,331,61,335,59,341,61,343,61,344,63,345,64,344,65,342,66,342,65",
- "zoneName": "QYZT"
-}, {
- "timezone": "Asia/Rangoon",
- "country": "MM",
- "pin": "384,102",
- "offset": 6.5,
- "points": "386,104,388,106,388,109,387,111,387,107,386,106,386,102,385,102,384,101,384,102,383,102,383,103,382,102,382,103,382,102,381,103,382,102,381,103,381,101,381,98,380,99,380,98,381,98,380,98,381,98,380,97,379,96,379,97,378,96,379,94,380,92,381,92,382,88,384,87,385,87,385,87,386,85,387,87,387,88,387,89,385,91,385,92,387,91,387,93,388,93,388,94,389,94,389,95,391,95,389,97,386,97,386,99,385,99,387,102,386,104",
- "zoneName": "MMT"
-}, {
- "timezone": "Asia/Riyadh",
- "country": "SA",
- "pin": "315,91",
- "offset": 3,
- "points": "310,101,309,102,307,98,304,96,303,92,302,91,299,86,298,86,299,84,300,84,303,83,301,81,304,80,306,81,312,84,317,85,318,87,320,88,319,89,321,91,322,91,321,91,323,93,327,93,327,94,326,97,318,100,314,103,314,102,312,101,310,101,310,101",
- "zoneName": "AST"
-}, {
- "timezone": "Asia/Sakhalin",
- "country": "RU",
- "pin": "448,60",
- "offset": 11,
- "points": "450,56,451,57,450,57,449,57,448,59,449,61,449,61,448,60,447,61,447,57,448,54,447,52,447,51,448,50,448,50,449,50,449,52,449,53,450,56",
- "zoneName": "SAKT"
-}, {
- "timezone": "Asia/Samarkand",
- "country": "UZ",
- "pin": "343,70",
- "offset": 5,
- "points": "345,71,345,72,344,73,342,73,343,72,337,70,336,68,334,68,333,66,331,66
<TRUNCATED>
[8/8] ambari git commit: AMBARI-19878 Log Search Portal time zone
selection bug (mgergely)
Posted by mg...@apache.org.
AMBARI-19878 Log Search Portal time zone selection bug (mgergely)
Change-Id: I2da117a62e549695e094d3bee5eb91b55b0824c2
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/5c7997f5
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/5c7997f5
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/5c7997f5
Branch: refs/heads/trunk
Commit: 5c7997f59937040c6ed4d949e688bdf12a7219a3
Parents: e55a595
Author: Miklos Gergely <mg...@hortonworks.com>
Authored: Tue Feb 7 10:11:32 2017 +0100
Committer: Miklos Gergely <mg...@hortonworks.com>
Committed: Tue Feb 7 10:11:32 2017 +0100
----------------------------------------------------------------------
.../src/main/webapp/index.html | 211 +-
.../daterangepicker/css/daterangepicker.css | 415 +++
.../daterangepicker/js/daterangepicker.js | 1560 ++++++++
.../libs/custom/timezone/WorldMapGenerator.js | 3474 ++++++++++++++++++
.../libs/custom/timezone/jstz-1.0.4.min.js | 2 +
.../daterangepicker/css/daterangepicker.css | 415 ---
.../other/daterangepicker/js/daterangepicker.js | 1560 --------
.../libs/other/timezone/WorldMapGenerator.js | 3471 -----------------
.../libs/other/timezone/jstz-1.0.4.min.js | 2 -
.../webapp/libs/other/timezone/mapdata.json | 3158 ----------------
.../src/main/webapp/scripts/Init.js | 439 ++-
11 files changed, 5775 insertions(+), 8932 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c7997f5/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/index.html
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/index.html b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/index.html
index 2d9ae01..b86e038 100644
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/index.html
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/index.html
@@ -16,115 +16,114 @@
-->
<!DOCTYPE html>
<html lang="en">
- <head>
- <meta charset="utf-8">
- <title>LogSearch</title>
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
-
- <link href="libs/bower/bootstrap/bootstrap.css" rel="stylesheet">
- <link href="libs/other/font-awesome/css/font-awesome.css" rel="stylesheet">
- <!-- <link href="libs/other/jquery-ui/css/jquery-ui-1.11.4.min.css" rel="stylesheet"> -->
- <link rel="stylesheet" type="text/css" href="libs/other/jquery-ui/css/jquery-ui-bootstrap.css">
- <link rel="stylesheet" type="text/css" href="styles/custom/visualsearch.css">
- <link rel="stylesheet" type="text/css" href="libs/bower/backgrid/css/backgrid.css">
- <link rel="stylesheet" type="text/css" href="libs/bower/backgrid-columnmanager/Backgrid.ColumnManager.css">
- <link rel="stylesheet" type="text/css" href="libs/bower/backgrid-paginator/css/backgrid-paginator.css">
- <link rel="stylesheet" type="text/css" href="libs/bower/backgrid-sizeable/css/backgrid-sizeable-columns.css">
- <link rel="stylesheet" type="text/css" href="libs/bower/backgrid-sizeable/backgrid-orderable-columns.css">
- <link rel="stylesheet" type="text/css" href="libs/other/daterangepicker/css/daterangepicker.css">
- <link rel="stylesheet" type="text/css" href="styles/animate.css">
- <link rel="stylesheet" type="text/css" href="libs/bower/select2/select2.css">
- <link rel="stylesheet" type="text/css" href="libs/other/nvd3/css/nv.d3.min.css">
- <link rel="stylesheet" type="text/css" href="libs/other/gridster/css/jquery.gridster.css">
- <link rel="stylesheet" type="text/css" href="libs/other/bootstrap-tour-0.10.3/css/bootstrap-tour.min.css">
- <link href="styles/style_v2.css" rel="stylesheet">
- <link href="styles/style.css" rel="stylesheet">
-
-
- <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
- <!--[if lt IE 9]>
- <script src="http://getbootstrap.com/docs-assets/js/html5shiv.js"></script>
- <script src="http://getbootstrap.com/docs-assets/js/respond.min.js"></script>
- <![endif]-->
- </head>
-<body>
-<!--Start Header-->
-<!-- <div id="screensaver">
- <canvas id="canvas"></canvas>
- <i class="fa fa-lock" id="screen_unlock"></i>
-</div> -->
+ <head>
+ <meta charset="utf-8">
+ <title>LogSearch</title>
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+
+ <link href="libs/bower/bootstrap/bootstrap.css" rel="stylesheet">
+ <link href="libs/other/font-awesome/css/font-awesome.css" rel="stylesheet">
+ <!-- <link href="libs/other/jquery-ui/css/jquery-ui-1.11.4.min.css" rel="stylesheet"> -->
+ <link rel="stylesheet" type="text/css" href="libs/other/jquery-ui/css/jquery-ui-bootstrap.css">
+ <link rel="stylesheet" type="text/css" href="styles/custom/visualsearch.css">
+ <link rel="stylesheet" type="text/css" href="libs/bower/backgrid/css/backgrid.css">
+ <link rel="stylesheet" type="text/css" href="libs/bower/backgrid-columnmanager/Backgrid.ColumnManager.css">
+ <link rel="stylesheet" type="text/css" href="libs/bower/backgrid-paginator/css/backgrid-paginator.css">
+ <link rel="stylesheet" type="text/css" href="libs/bower/backgrid-sizeable/css/backgrid-sizeable-columns.css">
+ <link rel="stylesheet" type="text/css" href="libs/bower/backgrid-sizeable/backgrid-orderable-columns.css">
+ <link rel="stylesheet" type="text/css" href="libs/custom/daterangepicker/css/daterangepicker.css">
+ <link rel="stylesheet" type="text/css" href="styles/animate.css">
+ <link rel="stylesheet" type="text/css" href="libs/bower/select2/select2.css">
+ <link rel="stylesheet" type="text/css" href="libs/other/nvd3/css/nv.d3.min.css">
+ <link rel="stylesheet" type="text/css" href="libs/other/gridster/css/jquery.gridster.css">
+ <link rel="stylesheet" type="text/css" href="libs/other/bootstrap-tour-0.10.3/css/bootstrap-tour.min.css">
+ <link href="styles/style_v2.css" rel="stylesheet">
+ <link href="styles/style.css" rel="stylesheet">
+
+
+ <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
+ <!--[if lt IE 9]>
+ <script src="http://getbootstrap.com/docs-assets/js/html5shiv.js"></script>
+ <script src="http://getbootstrap.com/docs-assets/js/respond.min.js"></script>
+ <![endif]-->
+ </head>
+ <body>
+ <!--Start Header-->
+ <!-- <div id="screensaver">
+ <canvas id="canvas"></canvas>
+ <i class="fa fa-lock" id="screen_unlock"></i>
+ </div> -->
-<header class="navbar">
- <div class="container-fluid expanded-panel">
- <div class="row top-panel-right">
- <div id="logo" class="col-xs-12 col-sm-3">
- <div class="row">
- <div class="col-sm-2"><img title="Apache Ambari" alt="Apache Ambari" src="images/logo-white.png" height="32px"></div>
- <div class="col-sm-10"><a href="javascript:void(0);">Log Search</a></div>
+ <header class="navbar">
+ <div class="container-fluid expanded-panel">
+ <div class="row top-panel-right">
+ <div id="logo" class="col-xs-12 col-sm-3">
+ <div class="row">
+ <div class="col-sm-2"><img title="Apache Ambari" alt="Apache Ambari" src="images/logo-white.png" height="32px"></div>
+ <div class="col-sm-10"><a href="javascript:void(0);">Log Search</a></div>
+ </div>
+ </div>
+ <div id="r_header"></div>
+ </div>
+ </div>
+ </header>
+ <!--End Header-->
+ <!--Start Container-->
+ <div id="main" class="container-fluid">
+ <div class="row">
+ <!--div id="sidebar-left" class="col-xs-2 col-sm-2">
+ <ul class="nav main-menu">
+ <li>
+ <a href="javascript:void(0);" class="ajax-link">
+ <i class="fa fa-dashboard"></i>
+ <span class="hidden-xs">Dashboard</span>
+ </a>
+ </li>
+ </ul>
+ </div-->
+ <!--Start Content-->
+ <div id="content" class="col-xs-12 col-sm-12">
+ <div id="r_content" >
+ <i class="icon-spinner"></i>
+ </div>
+ <!-- <div class="preloader">
+ <img src="img/devoops_getdata.gif" class="devoops-getdata" alt="preloader"/>
+ </div> -->
+ </div>
+ <!--End Content-->
+ </div>
</div>
- </div>
- <div id="r_header"></div>
- </div>
- </div>
-</header>
-<!--End Header-->
-<!--Start Container-->
-<div id="main" class="container-fluid">
- <div class="row">
- <!--div id="sidebar-left" class="col-xs-2 col-sm-2">
- <ul class="nav main-menu">
- <li>
- <a href="javascript:void(0);" class="ajax-link">
- <i class="fa fa-dashboard"></i>
- <span class="hidden-xs">Dashboard</span>
- </a>
- </li>
- </ul>
- </div-->
- <!--Start Content-->
- <div id="content" class="col-xs-12 col-sm-12">
- <div id="r_content" >
- <i class="icon-spinner"></i>
- </div>
- <!-- <div class="preloader">
- <img src="img/devoops_getdata.gif" class="devoops-getdata" alt="preloader"/>
- </div> -->
- </div>
- <!--End Content-->
- </div>
-</div>
-<!--End Container-->
-<!-- build:js scripts/main.js -->
- <script data-main="scripts/Init.js?ver=build.version" src="libs/bower/requirejs/js/require.js"></script>
- <!-- endbuild -->
- <script type="text/javascript">
- require.config({
- waitSeconds : 0
- });
- if (!window.console) window.console = {};
+ <!--End Container-->
+ <!-- build:js scripts/main.js -->
+ <script data-main="scripts/Init.js?ver=build.version" src="libs/bower/requirejs/js/require.js"></script>
+ <!-- endbuild -->
+ <script type="text/javascript">
+ require.config({
+ waitSeconds : 0
+ });
+ if (!window.console) window.console = {};
if (!window.console.log) window.console.log = function () { };
- </script>
-<!-- <script type="text/javascript" src="libs/other/d3/d3.min.js"></script> -->
-<div class="btn-group contextMenuBody dropup" style="display:none;position:absolute;z-index:9999;">
- <button type="button" class="btn btn-info btn-circle btn-app-sm btn-context dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
- <i class="fa fa-info"></i>
- </button>
- <ul class="dropdown-menu">
- <li><a data-id="I" href="javascript:void(0);">Include</a></li>
- <li><a data-id="E" href="javascript:void(0);">Exclude</a></li>
- <li><a data-id="IA" href="javascript:void(0);">*Include*</a></li>
- <li><a data-id="EA" href="javascript:void(0);">*Exclude*</a></li>
- <li role="separator" class="divider"></li>
- <li><a data-id="F" href="javascript:void(0);">Find</a></li>
- </ul>
- </div>
- <div class="arrowDiv">
- <div class="bottomToTop" title="Scroll To Top"><i class="fa fa-arrow-circle-up"></i></div>
- <div class="topToBottom" title="Scroll To bottom"><i class="fa fa-arrow-circle-down"></i></div>
- </div>
-
+ </script>
+ <!-- <script type="text/javascript" src="libs/other/d3/d3.min.js"></script> -->
+ <div class="btn-group contextMenuBody dropup" style="display:none;position:absolute;z-index:9999;">
+ <button type="button" class="btn btn-info btn-circle btn-app-sm btn-context dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+ <i class="fa fa-info"></i>
+ </button>
+ <ul class="dropdown-menu">
+ <li><a data-id="I" href="javascript:void(0);">Include</a></li>
+ <li><a data-id="E" href="javascript:void(0);">Exclude</a></li>
+ <li><a data-id="IA" href="javascript:void(0);">*Include*</a></li>
+ <li><a data-id="EA" href="javascript:void(0);">*Exclude*</a></li>
+ <li role="separator" class="divider"></li>
+ <li><a data-id="F" href="javascript:void(0);">Find</a></li>
+ </ul>
+ </div>
+ <div class="arrowDiv">
+ <div class="bottomToTop" title="Scroll To Top"><i class="fa fa-arrow-circle-up"></i></div>
+ <div class="topToBottom" title="Scroll To bottom"><i class="fa fa-arrow-circle-down"></i></div>
+ </div>
-</body>
+ </body>
</html>
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c7997f5/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/custom/daterangepicker/css/daterangepicker.css
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/custom/daterangepicker/css/daterangepicker.css b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/custom/daterangepicker/css/daterangepicker.css
new file mode 100644
index 0000000..7f1ef54
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/custom/daterangepicker/css/daterangepicker.css
@@ -0,0 +1,415 @@
+.daterangepicker {
+ position: absolute;
+ color: inherit;
+ background: #fff;
+ border-radius: 4px;
+ width: 278px;
+ padding: 4px;
+ margin-top: 1px;
+ top: 100px;
+ left: 20px;
+ /* Calendars */
+}
+
+.daterangepicker:before,
+.daterangepicker:after {
+ position: absolute;
+ display: inline-block;
+ border-bottom-color: rgba(0, 0, 0, 0.2);
+ content: '';
+}
+
+.daterangepicker:before {
+ top: -7px;
+ border-right: 7px solid transparent;
+ border-left: 7px solid transparent;
+ border-bottom: 7px solid #ccc;
+}
+
+.daterangepicker:after {
+ top: -6px;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #fff;
+ border-left: 6px solid transparent;
+}
+
+.daterangepicker.opensleft:before {
+ right: 9px;
+}
+
+.daterangepicker.opensleft:after {
+ right: 10px;
+}
+
+.daterangepicker.openscenter:before {
+ left: 0;
+ right: 0;
+ width: 0;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.daterangepicker.openscenter:after {
+ left: 0;
+ right: 0;
+ width: 0;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.daterangepicker.opensright:before {
+ left: 9px;
+}
+
+.daterangepicker.opensright:after {
+ left: 10px;
+}
+
+.daterangepicker.dropup {
+ margin-top: -5px;
+}
+
+.daterangepicker.dropup:before {
+ top: initial;
+ bottom: -7px;
+ border-bottom: initial;
+ border-top: 7px solid #ccc;
+}
+
+.daterangepicker.dropup:after {
+ top: initial;
+ bottom: -6px;
+ border-bottom: initial;
+ border-top: 6px solid #fff;
+}
+
+.daterangepicker.dropdown-menu {
+ max-width: none;
+ z-index: 3001;
+}
+
+.daterangepicker.single .ranges,
+.daterangepicker.single .calendar {
+ float: none;
+}
+
+.daterangepicker.show-calendar .calendar {
+ display: block;
+}
+
+.daterangepicker .calendar {
+ display: none;
+ max-width: 270px;
+ margin: 4px;
+}
+
+.daterangepicker .calendar.single .calendar-table {
+ border: none;
+}
+
+.daterangepicker .calendar th,
+.daterangepicker .calendar td {
+ white-space: nowrap;
+ text-align: center;
+ min-width: 32px;
+}
+
+.daterangepicker .calendar-table {
+ border: 1px solid #fff;
+ padding: 4px;
+ border-radius: 4px;
+ background: #fff;
+}
+
+.daterangepicker table {
+ width: 100%;
+ margin: 0;
+}
+
+.daterangepicker td,
+.daterangepicker th {
+ text-align: center;
+ width: 20px;
+ height: 20px;
+ border-radius: 4px;
+ border: 1px solid transparent;
+ white-space: nowrap;
+ cursor: pointer;
+}
+
+.daterangepicker td.available:hover,
+.daterangepicker th.available:hover {
+ background-color: #eee;
+ border-color: transparent;
+ color: inherit;
+}
+
+.daterangepicker td.week,
+.daterangepicker th.week {
+ font-size: 80%;
+ color: #ccc;
+}
+
+.daterangepicker td.off,
+.daterangepicker td.off.in-range,
+.daterangepicker td.off.start-date,
+.daterangepicker td.off.end-date {
+ background-color: #fff;
+ border-color: transparent;
+ color: #999;
+}
+
+.daterangepicker td.in-range {
+ background-color: #ebf4f8;
+ border-color: transparent;
+ color: #000;
+ border-radius: 0;
+}
+
+.daterangepicker td.start-date {
+ border-radius: 4px 0 0 4px;
+}
+
+.daterangepicker td.end-date {
+ border-radius: 0 4px 4px 0;
+}
+
+.daterangepicker td.start-date.end-date {
+ border-radius: 4px;
+}
+
+.daterangepicker td.active,
+.daterangepicker td.active:hover {
+ background-color: #357ebd;
+ border-color: transparent;
+ color: #fff;
+}
+
+.daterangepicker th.month {
+ width: auto;
+}
+
+.daterangepicker td.disabled,
+.daterangepicker option.disabled {
+ color: #999;
+ cursor: not-allowed;
+ text-decoration: line-through;
+}
+
+.daterangepicker select.monthselect,
+.daterangepicker select.yearselect {
+ font-size: 12px;
+ padding: 1px;
+ height: auto;
+ margin: 0;
+ cursor: default;
+}
+
+.daterangepicker select.monthselect {
+ margin-right: 2%;
+ width: 56%;
+}
+
+.daterangepicker select.yearselect {
+ width: 40%;
+}
+
+.daterangepicker select.hourselect,
+.daterangepicker select.minuteselect,
+.daterangepicker select.secondselect,
+.daterangepicker select.ampmselect {
+ width: 50px;
+ margin-bottom: 0;
+}
+
+.daterangepicker .input-mini {
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ color: #555;
+ height: 30px;
+ line-height: 30px;
+ display: block;
+ vertical-align: middle;
+ margin: 0 0 5px 0;
+ padding: 0 6px 0 28px;
+ width: 100%;
+}
+
+.daterangepicker .input-mini.active {
+ border: 1px solid #08c;
+ border-radius: 4px;
+}
+
+.daterangepicker .daterangepicker_input {
+ position: relative;
+}
+
+.daterangepicker .daterangepicker_input i {
+ position: absolute;
+ left: 8px;
+ top: 8px;
+}
+
+.daterangepicker.rtl .input-mini {
+ padding-right: 28px;
+ padding-left: 6px;
+}
+
+.daterangepicker.rtl .daterangepicker_input i {
+ left: auto;
+ right: 8px;
+}
+
+.daterangepicker .calendar-time {
+ text-align: center;
+ margin: 5px auto;
+ line-height: 30px;
+ position: relative;
+ padding-left: 28px;
+}
+
+.daterangepicker .calendar-time select.disabled {
+ color: #ccc;
+ cursor: not-allowed;
+}
+
+.ranges {
+ font-size: 11px;
+ float: none;
+ margin: 4px;
+ text-align: left;
+}
+
+.ranges ul {
+ list-style: none;
+ margin: 0 auto;
+ padding: 0;
+ width: 100%;
+}
+
+.ranges li {
+ font-size: 13px;
+ background: #f5f5f5;
+ border: 1px solid #f5f5f5;
+ border-radius: 4px;
+ color: #08c;
+ padding: 3px 12px;
+ margin-bottom: 8px;
+ cursor: pointer;
+}
+
+.ranges li:hover {
+ background: #08c;
+ border: 1px solid #08c;
+ color: #fff;
+}
+
+.ranges li.active {
+ background: #08c;
+ border: 1px solid #08c;
+ color: #fff;
+}
+
+
+/* Larger Screen Styling */
+
+@media (min-width: 564px) {
+ .daterangepicker {
+ width: auto;
+ }
+ .daterangepicker .ranges ul {
+ width: 160px;
+ }
+ .daterangepicker.single .ranges ul {
+ width: 100%;
+ }
+ .daterangepicker.single .calendar.left {
+ clear: none;
+ }
+ .daterangepicker.single.ltr .ranges,
+ .daterangepicker.single.ltr .calendar {
+ float: left;
+ }
+ .daterangepicker.single.rtl .ranges,
+ .daterangepicker.single.rtl .calendar {
+ float: right;
+ }
+ .daterangepicker.ltr {
+ direction: ltr;
+ text-align: left;
+ }
+ .daterangepicker.ltr .calendar.left {
+ clear: left;
+ margin-right: 0;
+ }
+ .daterangepicker.ltr .calendar.left .calendar-table {
+ border-right: none;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ }
+ .daterangepicker.ltr .calendar.right {
+ margin-left: 0;
+ }
+ .daterangepicker.ltr .calendar.right .calendar-table {
+ border-left: none;
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ }
+ .daterangepicker.ltr .left .daterangepicker_input {
+ padding-right: 12px;
+ }
+ .daterangepicker.ltr .calendar.left .calendar-table {
+ padding-right: 12px;
+ }
+ .daterangepicker.ltr .ranges,
+ .daterangepicker.ltr .calendar {
+ float: left;
+ }
+ .daterangepicker.rtl {
+ direction: rtl;
+ text-align: right;
+ }
+ .daterangepicker.rtl .calendar.left {
+ clear: right;
+ margin-left: 0;
+ }
+ .daterangepicker.rtl .calendar.left .calendar-table {
+ border-left: none;
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ }
+ .daterangepicker.rtl .calendar.right {
+ margin-right: 0;
+ }
+ .daterangepicker.rtl .calendar.right .calendar-table {
+ border-right: none;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ }
+ .daterangepicker.rtl .left .daterangepicker_input {
+ padding-left: 12px;
+ }
+ .daterangepicker.rtl .calendar.left .calendar-table {
+ padding-left: 12px;
+ }
+ .daterangepicker.rtl .ranges,
+ .daterangepicker.rtl .calendar {
+ text-align: right;
+ float: right;
+ }
+}
+
+@media (min-width: 730px) {
+ .daterangepicker .ranges {
+ width: auto;
+ }
+ .daterangepicker.ltr .ranges {
+ float: left;
+ }
+ .daterangepicker.rtl .ranges {
+ float: right;
+ }
+ .daterangepicker .calendar.left {
+ clear: none !important;
+ }
+}
\ No newline at end of file
[5/8] ambari git commit: AMBARI-19878 Log Search Portal time zone
selection bug (mgergely)
Posted by mg...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c7997f5/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/custom/timezone/jstz-1.0.4.min.js
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/custom/timezone/jstz-1.0.4.min.js b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/custom/timezone/jstz-1.0.4.min.js
new file mode 100644
index 0000000..96e3dd8
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/custom/timezone/jstz-1.0.4.min.js
@@ -0,0 +1,2 @@
+/*! jstz - v1.0.4 - 2012-12-12 */
+(function(e){var t=function(){"use strict";var e="s",n=function(e){var t=-e.getTimezoneOffset();return t!==null?t:0},r=function(e,t,n){var r=new Date;return e!==undefined&&r.setFullYear(e),r.setDate(n),r.setMonth(t),r},i=function(e){return n(r(e,0,2))},s=function(e){return n(r(e,5,2))},o=function(e){var t=e.getMonth()>7?s(e.getFullYear()):i(e.getFullYear()),r=n(e);return t-r!==0},u=function(){var t=i(),n=s(),r=i()-s();return r<0?t+",1":r>0?n+",1,"+e:t+",0"},a=function(){var e=u();return new t.TimeZone(t.olson.timezones[e])};return{determine:a,date_is_dst:o}}();t.TimeZone=function(e){"use strict";var n=null,r=function(){return n},i=function(){var e=t.olson.ambiguity_list[n],r=e.length,i=0,s=e[0];for(;i<r;i+=1){s=e[i];if(t.date_is_dst(t.olson.dst_start_dates[s])){n=s;return}}},s=function(){return typeof t.olson.ambiguity_list[n]!="undefined"};return n=e,s()&&i(),{name:r}},t.olson={},t.olson.timezones={"-720,0":"Etc/GMT+12","-660,0":"Pacific/Pago_Pago","-600,1":"America/Adak","-600,0":
"Pacific/Honolulu","-570,0":"Pacific/Marquesas","-540,0":"Pacific/Gambier","-540,1":"America/Anchorage","-480,1":"America/Los_Angeles","-480,0":"Pacific/Pitcairn","-420,0":"America/Phoenix","-420,1":"America/Denver","-360,0":"America/Guatemala","-360,1":"America/Chicago","-360,1,s":"Pacific/Easter","-300,0":"America/Bogota","-300,1":"America/New_York","-270,0":"America/Caracas","-240,1":"America/Halifax","-240,0":"America/Santo_Domingo","-240,1,s":"America/Santiago","-210,1":"America/St_Johns","-180,1":"America/Godthab","-180,0":"America/Argentina/Buenos_Aires","-180,1,s":"America/Montevideo","-120,0":"Etc/GMT+2","-120,1":"Etc/GMT+2","-60,1":"Atlantic/Azores","-60,0":"Atlantic/Cape_Verde","0,0":"Etc/UTC","0,1":"Europe/London","60,1":"Europe/Berlin","60,0":"Africa/Lagos","60,1,s":"Africa/Windhoek","120,1":"Asia/Beirut","120,0":"Africa/Johannesburg","180,0":"Asia/Baghdad","180,1":"Europe/Moscow","210,1":"Asia/Tehran","240,0":"Asia/Dubai","240,1":"Asia/Baku","270,0":"Asia/Kabul","300,1
":"Asia/Yekaterinburg","300,0":"Asia/Karachi","330,0":"Asia/Kolkata","345,0":"Asia/Kathmandu","360,0":"Asia/Dhaka","360,1":"Asia/Omsk","390,0":"Asia/Rangoon","420,1":"Asia/Krasnoyarsk","420,0":"Asia/Jakarta","480,0":"Asia/Shanghai","480,1":"Asia/Irkutsk","525,0":"Australia/Eucla","525,1,s":"Australia/Eucla","540,1":"Asia/Yakutsk","540,0":"Asia/Tokyo","570,0":"Australia/Darwin","570,1,s":"Australia/Adelaide","600,0":"Australia/Brisbane","600,1":"Asia/Vladivostok","600,1,s":"Australia/Sydney","630,1,s":"Australia/Lord_Howe","660,1":"Asia/Kamchatka","660,0":"Pacific/Noumea","690,0":"Pacific/Norfolk","720,1,s":"Pacific/Auckland","720,0":"Pacific/Tarawa","765,1,s":"Pacific/Chatham","780,0":"Pacific/Tongatapu","780,1,s":"Pacific/Apia","840,0":"Pacific/Kiritimati"},t.olson.dst_start_dates=function(){"use strict";var e=new Date(2010,6,15,1,0,0,0);return{"America/Denver":new Date(2011,2,13,3,0,0,0),"America/Mazatlan":new Date(2011,3,3,3,0,0,0),"America/Chicago":new Date(2011,2,13,3,0,0,0),"A
merica/Mexico_City":new Date(2011,3,3,3,0,0,0),"America/Asuncion":new Date(2012,9,7,3,0,0,0),"America/Santiago":new Date(2012,9,3,3,0,0,0),"America/Campo_Grande":new Date(2012,9,21,5,0,0,0),"America/Montevideo":new Date(2011,9,2,3,0,0,0),"America/Sao_Paulo":new Date(2011,9,16,5,0,0,0),"America/Los_Angeles":new Date(2011,2,13,8,0,0,0),"America/Santa_Isabel":new Date(2011,3,5,8,0,0,0),"America/Havana":new Date(2012,2,10,2,0,0,0),"America/New_York":new Date(2012,2,10,7,0,0,0),"Asia/Beirut":new Date(2011,2,27,1,0,0,0),"Europe/Helsinki":new Date(2011,2,27,4,0,0,0),"Europe/Istanbul":new Date(2011,2,28,5,0,0,0),"Asia/Damascus":new Date(2011,3,1,2,0,0,0),"Asia/Jerusalem":new Date(2011,3,1,6,0,0,0),"Asia/Gaza":new Date(2009,2,28,0,30,0,0),"Africa/Cairo":new Date(2009,3,25,0,30,0,0),"Pacific/Auckland":new Date(2011,8,26,7,0,0,0),"Pacific/Fiji":new Date(2010,11,29,23,0,0,0),"America/Halifax":new Date(2011,2,13,6,0,0,0),"America/Goose_Bay":new Date(2011,2,13,2,1,0,0),"America/Miquelon":new Date
(2011,2,13,5,0,0,0),"America/Godthab":new Date(2011,2,27,1,0,0,0),"Europe/Moscow":e,"Asia/Yekaterinburg":e,"Asia/Omsk":e,"Asia/Krasnoyarsk":e,"Asia/Irkutsk":e,"Asia/Yakutsk":e,"Asia/Vladivostok":e,"Asia/Kamchatka":e,"Europe/Minsk":e,"Australia/Perth":new Date(2008,10,1,1,0,0,0)}}(),t.olson.ambiguity_list={"America/Denver":["America/Denver","America/Mazatlan"],"America/Chicago":["America/Chicago","America/Mexico_City"],"America/Santiago":["America/Santiago","America/Asuncion","America/Campo_Grande"],"America/Montevideo":["America/Montevideo","America/Sao_Paulo"],"Asia/Beirut":["Asia/Beirut","Europe/Helsinki","Europe/Istanbul","Asia/Damascus","Asia/Jerusalem","Asia/Gaza"],"Pacific/Auckland":["Pacific/Auckland","Pacific/Fiji"],"America/Los_Angeles":["America/Los_Angeles","America/Santa_Isabel"],"America/New_York":["America/Havana","America/New_York"],"America/Halifax":["America/Goose_Bay","America/Halifax"],"America/Godthab":["America/Miquelon","America/Godthab"],"Asia/Dubai":["Europe/
Moscow"],"Asia/Dhaka":["Asia/Yekaterinburg"],"Asia/Jakarta":["Asia/Omsk"],"Asia/Shanghai":["Asia/Krasnoyarsk","Australia/Perth"],"Asia/Tokyo":["Asia/Irkutsk"],"Australia/Brisbane":["Asia/Yakutsk"],"Pacific/Noumea":["Asia/Vladivostok"],"Pacific/Tarawa":["Asia/Kamchatka"],"Africa/Johannesburg":["Asia/Gaza","Africa/Cairo"],"Asia/Baghdad":["Europe/Minsk"]},typeof exports!="undefined"?exports.jstz=t:e.jstz=t})(this);
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c7997f5/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/other/daterangepicker/css/daterangepicker.css
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/other/daterangepicker/css/daterangepicker.css b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/other/daterangepicker/css/daterangepicker.css
deleted file mode 100644
index 7f1ef54..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/other/daterangepicker/css/daterangepicker.css
+++ /dev/null
@@ -1,415 +0,0 @@
-.daterangepicker {
- position: absolute;
- color: inherit;
- background: #fff;
- border-radius: 4px;
- width: 278px;
- padding: 4px;
- margin-top: 1px;
- top: 100px;
- left: 20px;
- /* Calendars */
-}
-
-.daterangepicker:before,
-.daterangepicker:after {
- position: absolute;
- display: inline-block;
- border-bottom-color: rgba(0, 0, 0, 0.2);
- content: '';
-}
-
-.daterangepicker:before {
- top: -7px;
- border-right: 7px solid transparent;
- border-left: 7px solid transparent;
- border-bottom: 7px solid #ccc;
-}
-
-.daterangepicker:after {
- top: -6px;
- border-right: 6px solid transparent;
- border-bottom: 6px solid #fff;
- border-left: 6px solid transparent;
-}
-
-.daterangepicker.opensleft:before {
- right: 9px;
-}
-
-.daterangepicker.opensleft:after {
- right: 10px;
-}
-
-.daterangepicker.openscenter:before {
- left: 0;
- right: 0;
- width: 0;
- margin-left: auto;
- margin-right: auto;
-}
-
-.daterangepicker.openscenter:after {
- left: 0;
- right: 0;
- width: 0;
- margin-left: auto;
- margin-right: auto;
-}
-
-.daterangepicker.opensright:before {
- left: 9px;
-}
-
-.daterangepicker.opensright:after {
- left: 10px;
-}
-
-.daterangepicker.dropup {
- margin-top: -5px;
-}
-
-.daterangepicker.dropup:before {
- top: initial;
- bottom: -7px;
- border-bottom: initial;
- border-top: 7px solid #ccc;
-}
-
-.daterangepicker.dropup:after {
- top: initial;
- bottom: -6px;
- border-bottom: initial;
- border-top: 6px solid #fff;
-}
-
-.daterangepicker.dropdown-menu {
- max-width: none;
- z-index: 3001;
-}
-
-.daterangepicker.single .ranges,
-.daterangepicker.single .calendar {
- float: none;
-}
-
-.daterangepicker.show-calendar .calendar {
- display: block;
-}
-
-.daterangepicker .calendar {
- display: none;
- max-width: 270px;
- margin: 4px;
-}
-
-.daterangepicker .calendar.single .calendar-table {
- border: none;
-}
-
-.daterangepicker .calendar th,
-.daterangepicker .calendar td {
- white-space: nowrap;
- text-align: center;
- min-width: 32px;
-}
-
-.daterangepicker .calendar-table {
- border: 1px solid #fff;
- padding: 4px;
- border-radius: 4px;
- background: #fff;
-}
-
-.daterangepicker table {
- width: 100%;
- margin: 0;
-}
-
-.daterangepicker td,
-.daterangepicker th {
- text-align: center;
- width: 20px;
- height: 20px;
- border-radius: 4px;
- border: 1px solid transparent;
- white-space: nowrap;
- cursor: pointer;
-}
-
-.daterangepicker td.available:hover,
-.daterangepicker th.available:hover {
- background-color: #eee;
- border-color: transparent;
- color: inherit;
-}
-
-.daterangepicker td.week,
-.daterangepicker th.week {
- font-size: 80%;
- color: #ccc;
-}
-
-.daterangepicker td.off,
-.daterangepicker td.off.in-range,
-.daterangepicker td.off.start-date,
-.daterangepicker td.off.end-date {
- background-color: #fff;
- border-color: transparent;
- color: #999;
-}
-
-.daterangepicker td.in-range {
- background-color: #ebf4f8;
- border-color: transparent;
- color: #000;
- border-radius: 0;
-}
-
-.daterangepicker td.start-date {
- border-radius: 4px 0 0 4px;
-}
-
-.daterangepicker td.end-date {
- border-radius: 0 4px 4px 0;
-}
-
-.daterangepicker td.start-date.end-date {
- border-radius: 4px;
-}
-
-.daterangepicker td.active,
-.daterangepicker td.active:hover {
- background-color: #357ebd;
- border-color: transparent;
- color: #fff;
-}
-
-.daterangepicker th.month {
- width: auto;
-}
-
-.daterangepicker td.disabled,
-.daterangepicker option.disabled {
- color: #999;
- cursor: not-allowed;
- text-decoration: line-through;
-}
-
-.daterangepicker select.monthselect,
-.daterangepicker select.yearselect {
- font-size: 12px;
- padding: 1px;
- height: auto;
- margin: 0;
- cursor: default;
-}
-
-.daterangepicker select.monthselect {
- margin-right: 2%;
- width: 56%;
-}
-
-.daterangepicker select.yearselect {
- width: 40%;
-}
-
-.daterangepicker select.hourselect,
-.daterangepicker select.minuteselect,
-.daterangepicker select.secondselect,
-.daterangepicker select.ampmselect {
- width: 50px;
- margin-bottom: 0;
-}
-
-.daterangepicker .input-mini {
- border: 1px solid #ccc;
- border-radius: 4px;
- color: #555;
- height: 30px;
- line-height: 30px;
- display: block;
- vertical-align: middle;
- margin: 0 0 5px 0;
- padding: 0 6px 0 28px;
- width: 100%;
-}
-
-.daterangepicker .input-mini.active {
- border: 1px solid #08c;
- border-radius: 4px;
-}
-
-.daterangepicker .daterangepicker_input {
- position: relative;
-}
-
-.daterangepicker .daterangepicker_input i {
- position: absolute;
- left: 8px;
- top: 8px;
-}
-
-.daterangepicker.rtl .input-mini {
- padding-right: 28px;
- padding-left: 6px;
-}
-
-.daterangepicker.rtl .daterangepicker_input i {
- left: auto;
- right: 8px;
-}
-
-.daterangepicker .calendar-time {
- text-align: center;
- margin: 5px auto;
- line-height: 30px;
- position: relative;
- padding-left: 28px;
-}
-
-.daterangepicker .calendar-time select.disabled {
- color: #ccc;
- cursor: not-allowed;
-}
-
-.ranges {
- font-size: 11px;
- float: none;
- margin: 4px;
- text-align: left;
-}
-
-.ranges ul {
- list-style: none;
- margin: 0 auto;
- padding: 0;
- width: 100%;
-}
-
-.ranges li {
- font-size: 13px;
- background: #f5f5f5;
- border: 1px solid #f5f5f5;
- border-radius: 4px;
- color: #08c;
- padding: 3px 12px;
- margin-bottom: 8px;
- cursor: pointer;
-}
-
-.ranges li:hover {
- background: #08c;
- border: 1px solid #08c;
- color: #fff;
-}
-
-.ranges li.active {
- background: #08c;
- border: 1px solid #08c;
- color: #fff;
-}
-
-
-/* Larger Screen Styling */
-
-@media (min-width: 564px) {
- .daterangepicker {
- width: auto;
- }
- .daterangepicker .ranges ul {
- width: 160px;
- }
- .daterangepicker.single .ranges ul {
- width: 100%;
- }
- .daterangepicker.single .calendar.left {
- clear: none;
- }
- .daterangepicker.single.ltr .ranges,
- .daterangepicker.single.ltr .calendar {
- float: left;
- }
- .daterangepicker.single.rtl .ranges,
- .daterangepicker.single.rtl .calendar {
- float: right;
- }
- .daterangepicker.ltr {
- direction: ltr;
- text-align: left;
- }
- .daterangepicker.ltr .calendar.left {
- clear: left;
- margin-right: 0;
- }
- .daterangepicker.ltr .calendar.left .calendar-table {
- border-right: none;
- border-top-right-radius: 0;
- border-bottom-right-radius: 0;
- }
- .daterangepicker.ltr .calendar.right {
- margin-left: 0;
- }
- .daterangepicker.ltr .calendar.right .calendar-table {
- border-left: none;
- border-top-left-radius: 0;
- border-bottom-left-radius: 0;
- }
- .daterangepicker.ltr .left .daterangepicker_input {
- padding-right: 12px;
- }
- .daterangepicker.ltr .calendar.left .calendar-table {
- padding-right: 12px;
- }
- .daterangepicker.ltr .ranges,
- .daterangepicker.ltr .calendar {
- float: left;
- }
- .daterangepicker.rtl {
- direction: rtl;
- text-align: right;
- }
- .daterangepicker.rtl .calendar.left {
- clear: right;
- margin-left: 0;
- }
- .daterangepicker.rtl .calendar.left .calendar-table {
- border-left: none;
- border-top-left-radius: 0;
- border-bottom-left-radius: 0;
- }
- .daterangepicker.rtl .calendar.right {
- margin-right: 0;
- }
- .daterangepicker.rtl .calendar.right .calendar-table {
- border-right: none;
- border-top-right-radius: 0;
- border-bottom-right-radius: 0;
- }
- .daterangepicker.rtl .left .daterangepicker_input {
- padding-left: 12px;
- }
- .daterangepicker.rtl .calendar.left .calendar-table {
- padding-left: 12px;
- }
- .daterangepicker.rtl .ranges,
- .daterangepicker.rtl .calendar {
- text-align: right;
- float: right;
- }
-}
-
-@media (min-width: 730px) {
- .daterangepicker .ranges {
- width: auto;
- }
- .daterangepicker.ltr .ranges {
- float: left;
- }
- .daterangepicker.rtl .ranges {
- float: right;
- }
- .daterangepicker .calendar.left {
- clear: none !important;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c7997f5/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/other/daterangepicker/js/daterangepicker.js
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/other/daterangepicker/js/daterangepicker.js b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/other/daterangepicker/js/daterangepicker.js
deleted file mode 100644
index e88b45f..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/other/daterangepicker/js/daterangepicker.js
+++ /dev/null
@@ -1,1560 +0,0 @@
-/**
-* @version: 2.1.24
-* @author: Dan Grossman http://www.dangrossman.info/
-* @copyright: Copyright (c) 2012-2016 Dan Grossman. All rights reserved.
-* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php
-* @website: https://www.improvely.com/
-*/
-// Follow the UMD template https://github.com/umdjs/umd/blob/master/templates/returnExportsGlobal.js
-(function (root, factory) {
- if (typeof define === 'function' && define.amd) {
- // AMD. Make globaly available as well
- define(['moment', 'jquery'], function (moment, jquery) {
- return (root.daterangepicker = factory(moment, jquery));
- });
- } else if (typeof module === 'object' && module.exports) {
- // Node / Browserify
- //isomorphic issue
- var jQuery = (typeof window != 'undefined') ? window.jQuery : undefined;
- if (!jQuery) {
- jQuery = require('jquery');
- if (!jQuery.fn) jQuery.fn = {};
- }
- module.exports = factory(require('moment'), jQuery);
- } else {
- // Browser globals
- root.daterangepicker = factory(root.moment, root.jQuery);
- }
-}(this, function(moment, $) {
- var DateRangePicker = function(element, options, cb) {
-
- //default settings for options
- this.parentEl = 'body';
- this.element = $(element);
- this.startDate = moment().startOf('day');
- this.endDate = moment().endOf('day');
- this.minDate = false;
- this.maxDate = false;
- this.dateLimit = false;
- this.autoApply = false;
- this.singleDatePicker = false;
- this.showDropdowns = false;
- this.showWeekNumbers = false;
- this.showISOWeekNumbers = false;
- this.showCustomRangeLabel = true;
- this.timePicker = false;
- this.timePicker24Hour = false;
- this.timePickerIncrement = 1;
- this.timePickerSeconds = false;
- this.linkedCalendars = true;
- this.autoUpdateInput = true;
- this.alwaysShowCalendars = false;
-
- this.opens = 'right';
- if (this.element.hasClass('pull-right'))
- this.opens = 'left';
-
- this.drops = 'down';
- if (this.element.hasClass('dropup'))
- this.drops = 'up';
-
- this.buttonClasses = 'btn btn-sm';
- this.applyClass = 'btn-success';
- this.cancelClass = 'btn-default';
-
- this.locale = {
- direction: 'ltr',
- format: 'MM/DD/YYYY',
- separator: ' - ',
- applyLabel: 'Apply',
- cancelLabel: 'Cancel',
- weekLabel: 'W',
- customRangeLabel: 'Custom Range',
- daysOfWeek: moment.weekdaysMin(),
- monthNames: moment.monthsShort(),
- firstDay: moment.localeData().firstDayOfWeek()
- };
-
- this.callback = function() { };
-
- //some state information
- this.isShowing = false;
- this.leftCalendar = {};
- this.rightCalendar = {};
-
- //custom options from user
- if (typeof options !== 'object' || options === null)
- options = {};
-
- //allow setting options with data attributes
- //data-api options will be overwritten with custom javascript options
- options = $.extend(this.element.data(), options);
-
- //html template for the picker UI
- if (typeof options.template !== 'string' && !(options.template instanceof $))
- options.template = '<div class="daterangepicker dropdown-menu">' +
- '<div class="calendar left">' +
- '<div class="daterangepicker_input">' +
- '<input class="input-mini form-control" type="text" name="daterangepicker_start" value="" />' +
- '<i class="fa fa-calendar glyphicon glyphicon-calendar"></i>' +
- '<div class="calendar-time">' +
- '<div></div>' +
- '<i class="fa fa-clock-o glyphicon glyphicon-time"></i>' +
- '</div>' +
- '</div>' +
- '<div class="calendar-table"></div>' +
- '</div>' +
- '<div class="calendar right">' +
- '<div class="daterangepicker_input">' +
- '<input class="input-mini form-control" type="text" name="daterangepicker_end" value="" />' +
- '<i class="fa fa-calendar glyphicon glyphicon-calendar"></i>' +
- '<div class="calendar-time">' +
- '<div></div>' +
- '<i class="fa fa-clock-o glyphicon glyphicon-time"></i>' +
- '</div>' +
- '</div>' +
- '<div class="calendar-table"></div>' +
- '</div>' +
- '<div class="ranges">' +
- '<div class="range_inputs">' +
- '<button class="applyBtn" disabled="disabled" type="button"></button> ' +
- '<button class="cancelBtn" type="button"></button>' +
- '</div>' +
- '</div>' +
- '</div>';
-
- this.parentEl = (options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl);
- this.container = $(options.template).appendTo(this.parentEl);
-
- //
- // handle all the possible options overriding defaults
- //
-
- if (typeof options.locale === 'object') {
-
- if (typeof options.locale.direction === 'string')
- this.locale.direction = options.locale.direction;
-
- if (typeof options.locale.format === 'string')
- this.locale.format = options.locale.format;
-
- if (typeof options.locale.separator === 'string')
- this.locale.separator = options.locale.separator;
-
- if (typeof options.locale.daysOfWeek === 'object')
- this.locale.daysOfWeek = options.locale.daysOfWeek.slice();
-
- if (typeof options.locale.monthNames === 'object')
- this.locale.monthNames = options.locale.monthNames.slice();
-
- if (typeof options.locale.firstDay === 'number')
- this.locale.firstDay = options.locale.firstDay;
-
- if (typeof options.locale.applyLabel === 'string')
- this.locale.applyLabel = options.locale.applyLabel;
-
- if (typeof options.locale.cancelLabel === 'string')
- this.locale.cancelLabel = options.locale.cancelLabel;
-
- if (typeof options.locale.weekLabel === 'string')
- this.locale.weekLabel = options.locale.weekLabel;
-
- if (typeof options.locale.customRangeLabel === 'string')
- this.locale.customRangeLabel = options.locale.customRangeLabel;
-
- }
- this.container.addClass(this.locale.direction);
-
- if (typeof options.startDate === 'string')
- this.startDate = moment(options.startDate, this.locale.format);
-
- if (typeof options.endDate === 'string')
- this.endDate = moment(options.endDate, this.locale.format);
-
- if (typeof options.minDate === 'string')
- this.minDate = moment(options.minDate, this.locale.format);
-
- if (typeof options.maxDate === 'string')
- this.maxDate = moment(options.maxDate, this.locale.format);
-
- if (typeof options.startDate === 'object')
- this.startDate = moment(options.startDate);
-
- if (typeof options.endDate === 'object')
- this.endDate = moment(options.endDate);
-
- if (typeof options.minDate === 'object')
- this.minDate = moment(options.minDate);
-
- if (typeof options.maxDate === 'object')
- this.maxDate = moment(options.maxDate);
-
- // sanity check for bad options
- if (this.minDate && this.startDate.isBefore(this.minDate))
- this.startDate = this.minDate.clone();
-
- // sanity check for bad options
- if (this.maxDate && this.endDate.isAfter(this.maxDate))
- this.endDate = this.maxDate.clone();
-
- if (typeof options.applyClass === 'string')
- this.applyClass = options.applyClass;
-
- if (typeof options.cancelClass === 'string')
- this.cancelClass = options.cancelClass;
-
- if (typeof options.dateLimit === 'object')
- this.dateLimit = options.dateLimit;
-
- if (typeof options.opens === 'string')
- this.opens = options.opens;
-
- if (typeof options.drops === 'string')
- this.drops = options.drops;
-
- if (typeof options.showWeekNumbers === 'boolean')
- this.showWeekNumbers = options.showWeekNumbers;
-
- if (typeof options.showISOWeekNumbers === 'boolean')
- this.showISOWeekNumbers = options.showISOWeekNumbers;
-
- if (typeof options.buttonClasses === 'string')
- this.buttonClasses = options.buttonClasses;
-
- if (typeof options.buttonClasses === 'object')
- this.buttonClasses = options.buttonClasses.join(' ');
-
- if (typeof options.showDropdowns === 'boolean')
- this.showDropdowns = options.showDropdowns;
-
- if (typeof options.showCustomRangeLabel === 'boolean')
- this.showCustomRangeLabel = options.showCustomRangeLabel;
-
- if (typeof options.singleDatePicker === 'boolean') {
- this.singleDatePicker = options.singleDatePicker;
- if (this.singleDatePicker)
- this.endDate = this.startDate.clone();
- }
-
- if (typeof options.timePicker === 'boolean')
- this.timePicker = options.timePicker;
-
- if (typeof options.timePickerSeconds === 'boolean')
- this.timePickerSeconds = options.timePickerSeconds;
-
- if (typeof options.timePickerIncrement === 'number')
- this.timePickerIncrement = options.timePickerIncrement;
-
- if (typeof options.timePicker24Hour === 'boolean')
- this.timePicker24Hour = options.timePicker24Hour;
-
- if (typeof options.autoApply === 'boolean')
- this.autoApply = options.autoApply;
-
- if (typeof options.autoUpdateInput === 'boolean')
- this.autoUpdateInput = options.autoUpdateInput;
-
- if (typeof options.linkedCalendars === 'boolean')
- this.linkedCalendars = options.linkedCalendars;
-
- if (typeof options.isInvalidDate === 'function')
- this.isInvalidDate = options.isInvalidDate;
-
- if (typeof options.isCustomDate === 'function')
- this.isCustomDate = options.isCustomDate;
-
- if (typeof options.alwaysShowCalendars === 'boolean')
- this.alwaysShowCalendars = options.alwaysShowCalendars;
-
- // update day names order to firstDay
- if (this.locale.firstDay != 0) {
- var iterator = this.locale.firstDay;
- while (iterator > 0) {
- this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift());
- iterator--;
- }
- }
-
- var start, end, range;
-
- //if no start/end dates set, check if an input element contains initial values
- if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') {
- if ($(this.element).is('input[type=text]')) {
- var val = $(this.element).val(),
- split = val.split(this.locale.separator);
-
- start = end = null;
-
- if (split.length == 2) {
- start = moment(split[0], this.locale.format);
- end = moment(split[1], this.locale.format);
- } else if (this.singleDatePicker && val !== "") {
- start = moment(val, this.locale.format);
- end = moment(val, this.locale.format);
- }
- if (start !== null && end !== null) {
- this.setStartDate(start);
- this.setEndDate(end);
- }
- }
- }
-
- if (typeof options.ranges === 'object') {
- var list = '<ul>';
- for (range of options.ranges) {
- list += '<li data-range-key="' + range + '">' + range + '</li>';
- }
- if (this.showCustomRangeLabel) {
- list += '<li data-range-key="' + this.locale.customRangeLabel + '">' + this.locale.customRangeLabel + '</li>';
- }
- list += '</ul>';
- this.container.find('.ranges').prepend(list);
- }
-
- if (typeof cb === 'function') {
- this.callback = cb;
- }
-
- if (!this.timePicker) {
- this.startDate = this.startDate.startOf('day');
- this.endDate = this.endDate.endOf('day');
- this.container.find('.calendar-time').hide();
- }
-
- //can't be used together for now
- if (this.timePicker && this.autoApply)
- this.autoApply = false;
-
- if (this.autoApply && typeof options.ranges !== 'object') {
- this.container.find('.ranges').hide();
- } else if (this.autoApply) {
- this.container.find('.applyBtn, .cancelBtn').addClass('hide');
- }
-
- if (this.singleDatePicker) {
- this.container.addClass('single');
- this.container.find('.calendar.left').addClass('single');
- this.container.find('.calendar.left').show();
- this.container.find('.calendar.right').hide();
- this.container.find('.daterangepicker_input input, .daterangepicker_input > i').hide();
- if (this.timePicker) {
- this.container.find('.ranges ul').hide();
- } else {
- this.container.find('.ranges').hide();
- }
- }
-
- if ((typeof options.ranges === 'undefined' && !this.singleDatePicker) || this.alwaysShowCalendars) {
- this.container.addClass('show-calendar');
- }
-
- this.container.addClass('opens' + this.opens);
-
- //swap the position of the predefined ranges if opens right
- if (typeof options.ranges !== 'undefined' && this.opens == 'right') {
- this.container.find('.ranges').prependTo( this.container.find('.calendar.left').parent() );
- }
-
- //apply CSS classes and labels to buttons
- this.container.find('.applyBtn, .cancelBtn').addClass(this.buttonClasses);
- if (this.applyClass.length)
- this.container.find('.applyBtn').addClass(this.applyClass);
- if (this.cancelClass.length)
- this.container.find('.cancelBtn').addClass(this.cancelClass);
- this.container.find('.applyBtn').html(this.locale.applyLabel);
- this.container.find('.cancelBtn').html(this.locale.cancelLabel);
-
- //
- // event listeners
- //
-
- this.container.find('.calendar')
- .on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this))
- .on('click.daterangepicker', '.next', $.proxy(this.clickNext, this))
- .on('mousedown.daterangepicker', 'td.available', $.proxy(this.clickDate, this))
- .on('mouseenter.daterangepicker', 'td.available', $.proxy(this.hoverDate, this))
- .on('mouseleave.daterangepicker', 'td.available', $.proxy(this.updateFormInputs, this))
- .on('change.daterangepicker', 'select.yearselect', $.proxy(this.monthOrYearChanged, this))
- .on('change.daterangepicker', 'select.monthselect', $.proxy(this.monthOrYearChanged, this))
- .on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect', $.proxy(this.timeChanged, this))
- .on('click.daterangepicker', '.daterangepicker_input input', $.proxy(this.showCalendars, this))
- .on('focus.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsFocused, this))
- .on('blur.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsBlurred, this))
- .on('change.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsChanged, this));
-
- this.container.find('.ranges')
- .on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this))
- .on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this))
- .on('click.daterangepicker', 'li', $.proxy(this.clickRange, this))
- .on('mouseenter.daterangepicker', 'li', $.proxy(this.hoverRange, this))
- .on('mouseleave.daterangepicker', 'li', $.proxy(this.updateFormInputs, this));
-
- if (this.element.is('input') || this.element.is('button')) {
- this.element.on({
- 'click.daterangepicker': $.proxy(this.show, this),
- 'focus.daterangepicker': $.proxy(this.show, this),
- 'keyup.daterangepicker': $.proxy(this.elementChanged, this),
- 'keydown.daterangepicker': $.proxy(this.keydown, this)
- });
- } else {
- this.element.on('click.daterangepicker', $.proxy(this.toggle, this));
- }
-
- //
- // if attached to a text input, set the initial value
- //
-
- if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) {
- this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));
- this.element.trigger('change');
- } else if (this.element.is('input') && this.autoUpdateInput) {
- this.element.val(this.startDate.format(this.locale.format));
- this.element.trigger('change');
- }
-
- };
-
- DateRangePicker.prototype = {
-
- constructor: DateRangePicker,
-
- setStartDate: function(startDate) {
- if (typeof startDate === 'string')
- this.startDate = moment(startDate, this.locale.format);
-
- if (typeof startDate === 'object')
- this.startDate = moment(startDate);
-
- if (!this.timePicker)
- this.startDate = this.startDate.startOf('day');
-
- if (this.timePicker && this.timePickerIncrement)
- this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);
-
- if (this.minDate && this.startDate.isBefore(this.minDate)) {
- this.startDate = this.minDate;
- if (this.timePicker && this.timePickerIncrement)
- this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);
- }
-
- if (this.maxDate && this.startDate.isAfter(this.maxDate)) {
- this.startDate = this.maxDate;
- if (this.timePicker && this.timePickerIncrement)
- this.startDate.minute(Math.floor(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);
- }
-
- if (!this.isShowing)
- this.updateElement();
-
- this.updateMonthsInView();
- },
-
- setEndDate: function(endDate) {
- if (typeof endDate === 'string')
- this.endDate = moment(endDate, this.locale.format);
-
- if (typeof endDate === 'object')
- this.endDate = moment(endDate);
-
- if (!this.timePicker)
- this.endDate = this.endDate.endOf('day');
-
- if (this.timePicker && this.timePickerIncrement)
- this.endDate.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);
-
- if (this.endDate.isBefore(this.startDate))
- this.endDate = this.startDate.clone();
-
- if (this.maxDate && this.endDate.isAfter(this.maxDate))
- this.endDate = this.maxDate;
-
- if (this.dateLimit && this.startDate.clone().add(this.dateLimit).isBefore(this.endDate))
- this.endDate = this.startDate.clone().add(this.dateLimit);
-
- this.previousRightTime = this.endDate.clone();
-
- if (!this.isShowing)
- this.updateElement();
-
- this.updateMonthsInView();
- },
-
- isInvalidDate: function() {
- return false;
- },
-
- isCustomDate: function() {
- return false;
- },
-
- updateView: function() {
- if (this.timePicker) {
- this.renderTimePicker('left');
- this.renderTimePicker('right');
- if (!this.endDate) {
- this.container.find('.right .calendar-time select').attr('disabled', 'disabled').addClass('disabled');
- } else {
- this.container.find('.right .calendar-time select').removeAttr('disabled').removeClass('disabled');
- }
- }
- if (this.endDate) {
- this.container.find('input[name="daterangepicker_end"]').removeClass('active');
- this.container.find('input[name="daterangepicker_start"]').addClass('active');
- } else {
- this.container.find('input[name="daterangepicker_end"]').addClass('active');
- this.container.find('input[name="daterangepicker_start"]').removeClass('active');
- }
- this.updateMonthsInView();
- this.updateCalendars();
- this.updateFormInputs();
- },
-
- updateMonthsInView: function() {
- if (this.endDate) {
-
- //if both dates are visible already, do nothing
- if (!this.singleDatePicker && this.leftCalendar.month && this.rightCalendar.month &&
- (this.startDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.startDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))
- &&
- (this.endDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.endDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))
- ) {
- return;
- }
-
- this.leftCalendar.month = this.startDate.clone().date(2);
- if (!this.linkedCalendars && (this.endDate.month() != this.startDate.month() || this.endDate.year() != this.startDate.year())) {
- this.rightCalendar.month = this.endDate.clone().date(2);
- } else {
- this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');
- }
-
- } else {
- if (this.leftCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM') && this.rightCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM')) {
- this.leftCalendar.month = this.startDate.clone().date(2);
- this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');
- }
- }
- if (this.maxDate && this.linkedCalendars && !this.singleDatePicker && this.rightCalendar.month > this.maxDate) {
- this.rightCalendar.month = this.maxDate.clone().date(2);
- this.leftCalendar.month = this.maxDate.clone().date(2).subtract(1, 'month');
- }
- },
-
- updateCalendars: function() {
-
- if (this.timePicker) {
- var hour, minute, second;
- if (this.endDate) {
- hour = parseInt(this.container.find('.left .hourselect').val(), 10);
- minute = parseInt(this.container.find('.left .minuteselect').val(), 10);
- second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;
- if (!this.timePicker24Hour) {
- var ampm = this.container.find('.left .ampmselect').val();
- if (ampm === 'PM' && hour < 12)
- hour += 12;
- if (ampm === 'AM' && hour === 12)
- hour = 0;
- }
- } else {
- hour = parseInt(this.container.find('.right .hourselect').val(), 10);
- minute = parseInt(this.container.find('.right .minuteselect').val(), 10);
- second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;
- if (!this.timePicker24Hour) {
- var ampm = this.container.find('.right .ampmselect').val();
- if (ampm === 'PM' && hour < 12)
- hour += 12;
- if (ampm === 'AM' && hour === 12)
- hour = 0;
- }
- }
- this.leftCalendar.month.hour(hour).minute(minute).second(second);
- this.rightCalendar.month.hour(hour).minute(minute).second(second);
- }
-
- this.renderCalendar('left');
- this.renderCalendar('right');
-
- //highlight any predefined range matching the current start and end dates
- this.container.find('.ranges li').removeClass('active');
- this.chosenLabel = this.container.find('.ranges li:last').addClass('active').html();
- if (this.endDate == null) return;
- this.showCalendars();
- },
-
- renderCalendar: function(side) {
-
- //
- // Build the matrix of dates that will populate the calendar
- //
-
- var calendar = side == 'left' ? this.leftCalendar : this.rightCalendar;
- var month = calendar.month.month();
- var year = calendar.month.year();
- var hour = calendar.month.hour();
- var minute = calendar.month.minute();
- var second = calendar.month.second();
- var daysInMonth = moment([year, month]).daysInMonth();
- var firstDay = moment([year, month, 1]);
- var lastDay = moment([year, month, daysInMonth]);
- var lastMonth = moment(firstDay).subtract(1, 'month').month();
- var lastYear = moment(firstDay).subtract(1, 'month').year();
- var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth();
- var dayOfWeek = firstDay.day();
-
- //initialize a 6 rows x 7 columns array for the calendar
- var calendar = [];
- calendar.firstDay = firstDay;
- calendar.lastDay = lastDay;
-
- for (var i = 0; i < 6; i++) {
- calendar[i] = [];
- }
-
- //populate the calendar with date objects
- var curDate;
- var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1;
- if (startDay == daysInLastMonth + 1)
- curDate = moment([year, month, 1, 12, minute, second]);
- else if (startDay > daysInLastMonth )
- curDate = moment([lastYear, lastMonth, startDay-7, 12, minute, second]);
- else
- curDate = moment([lastYear, lastMonth, startDay, 12, minute, second]);
-
- var col, row;
- for (var i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add(24, 'hour')) {
- if (i > 0 && col % 7 === 0) {
- col = 0;
- row++;
- if (curDate.month() != month)
- break
- }
- calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second);
- curDate.hour(12);
-
- if (this.minDate && calendar[row][col].format('YYYY-MM-DD') == this.minDate.format('YYYY-MM-DD') && calendar[row][col].isBefore(this.minDate) && side == 'left') {
- calendar[row][col] = this.minDate.clone();
- }
-
- if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') == this.maxDate.format('YYYY-MM-DD') && calendar[row][col].isAfter(this.maxDate) && side == 'right') {
- calendar[row][col] = this.maxDate.clone();
- }
-
- }
-
- //make the calendar object available to hoverDate/clickDate
- if (side == 'left') {
- this.leftCalendar.calendar = calendar;
- } else {
- this.rightCalendar.calendar = calendar;
- }
-
- //
- // Display the calendar
- //
-
- var minDate = side == 'left' ? this.minDate : this.startDate;
- var maxDate = this.maxDate;
- var selected = side == 'left' ? this.startDate : this.endDate;
- var arrow = this.locale.direction == 'ltr' ? {left: 'chevron-left', right: 'chevron-right'} : {left: 'chevron-right', right: 'chevron-left'};
-
- var html = '<table class="table-condensed">';
- html += '<thead>';
- html += '<tr>';
-
- // add empty cell for week number
- if (this.showWeekNumbers || this.showISOWeekNumbers)
- html += '<th></th>';
-
- if ((!minDate || minDate.isBefore(calendar.firstDay)) && (!this.linkedCalendars || side == 'left')) {
- html += '<th class="prev available"><i class="fa fa-' + arrow.left + ' glyphicon glyphicon-' + arrow.left + '"></i></th>';
- } else {
- html += '<th></th>';
- }
-
- var dateHtml = this.locale.monthNames[calendar[1][1].month()] + " " + calendar[1][1].year();
-
- if (this.showDropdowns) {
- var currentMonth = calendar[1][1].month();
- var currentYear = calendar[1][1].year();
- var maxYear = (maxDate && maxDate.year()) || (currentYear + 5);
- var minYear = (minDate && minDate.year()) || (currentYear - 50);
- var inMinYear = currentYear == minYear;
- var inMaxYear = currentYear == maxYear;
-
- var monthHtml = '<select class="monthselect">';
- for (var m = 0; m < 12; m++) {
- if ((!inMinYear || m >= minDate.month()) && (!inMaxYear || m <= maxDate.month())) {
- monthHtml += "<option value='" + m + "'" +
- (m === currentMonth ? " selected='selected'" : "") +
- ">" + this.locale.monthNames[m] + "</option>";
- } else {
- monthHtml += "<option value='" + m + "'" +
- (m === currentMonth ? " selected='selected'" : "") +
- " disabled='disabled'>" + this.locale.monthNames[m] + "</option>";
- }
- }
- monthHtml += "</select>";
-
- var yearHtml = '<select class="yearselect">';
- for (var y = minYear; y <= maxYear; y++) {
- yearHtml += '<option value="' + y + '"' +
- (y === currentYear ? ' selected="selected"' : '') +
- '>' + y + '</option>';
- }
- yearHtml += '</select>';
-
- dateHtml = monthHtml + yearHtml;
- }
-
- html += '<th colspan="5" class="month">' + dateHtml + '</th>';
- if ((!maxDate || maxDate.isAfter(calendar.lastDay)) && (!this.linkedCalendars || side == 'right' || this.singleDatePicker)) {
- html += '<th class="next available"><i class="fa fa-' + arrow.right + ' glyphicon glyphicon-' + arrow.right + '"></i></th>';
- } else {
- html += '<th></th>';
- }
-
- html += '</tr>';
- html += '<tr>';
-
- // add week number label
- if (this.showWeekNumbers || this.showISOWeekNumbers)
- html += '<th class="week">' + this.locale.weekLabel + '</th>';
-
- $.each(this.locale.daysOfWeek, function(index, dayOfWeek) {
- html += '<th>' + dayOfWeek + '</th>';
- });
-
- html += '</tr>';
- html += '</thead>';
- html += '<tbody>';
-
- //adjust maxDate to reflect the dateLimit setting in order to
- //grey out end dates beyond the dateLimit
- if (this.endDate == null && this.dateLimit) {
- var maxLimit = this.startDate.clone().add(this.dateLimit).endOf('day');
- if (!maxDate || maxLimit.isBefore(maxDate)) {
- maxDate = maxLimit;
- }
- }
-
- for (var row = 0; row < 6; row++) {
- if (calendar[row].length == 0)
- continue
-
- html += '<tr>';
-
- // add week number
- if (this.showWeekNumbers)
- html += '<td class="week">' + calendar[row][0].week() + '</td>';
- else if (this.showISOWeekNumbers)
- html += '<td class="week">' + calendar[row][0].isoWeek() + '</td>';
-
- for (var col = 0; col < 7; col++) {
-
- var classes = [];
-
- //highlight today's date
- if (calendar[row][col].isSame(new Date(), "day"))
- classes.push('today');
-
- //highlight weekends
- if (calendar[row][col].isoWeekday() > 5)
- classes.push('weekend');
-
- //grey out the dates in other months displayed at beginning and end of this calendar
- if (calendar[row][col].month() != calendar[1][1].month())
- classes.push('off');
-
- //don't allow selection of dates before the minimum date
- if (this.minDate && calendar[row][col].isBefore(this.minDate, 'day'))
- classes.push('off', 'disabled');
-
- //don't allow selection of dates after the maximum date
- if (maxDate && calendar[row][col].isAfter(maxDate, 'day'))
- classes.push('off', 'disabled');
-
- //don't allow selection of date if a custom function decides it's invalid
- if (this.isInvalidDate(calendar[row][col]))
- classes.push('off', 'disabled');
-
- //highlight the currently selected start date
- if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD'))
- classes.push('active', 'start-date');
-
- //highlight the currently selected end date
- if (this.endDate != null && calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD'))
- classes.push('active', 'end-date');
-
- //highlight dates in-between the selected dates
- if (this.endDate != null && calendar[row][col] > this.startDate && calendar[row][col] < this.endDate)
- classes.push('in-range');
-
- //apply custom classes for this date
- var isCustom = this.isCustomDate(calendar[row][col]);
- if (isCustom !== false) {
- if (typeof isCustom === 'string')
- classes.push(isCustom);
- else
- Array.prototype.push.apply(classes, isCustom);
- }
-
- var cname = '', disabled = false;
- for (var i = 0; i < classes.length; i++) {
- cname += classes[i] + ' ';
- if (classes[i] == 'disabled')
- disabled = true;
- }
- if (!disabled)
- cname += 'available';
-
- html += '<td class="' + cname.replace(/^\s+|\s+$/g, '') + '" data-title="' + 'r' + row + 'c' + col + '">' + calendar[row][col].date() + '</td>';
-
- }
- html += '</tr>';
- }
-
- html += '</tbody>';
- html += '</table>';
-
- this.container.find('.calendar.' + side + ' .calendar-table').html(html);
-
- },
-
- renderTimePicker: function(side) {
-
- // Don't bother updating the time picker if it's currently disabled
- // because an end date hasn't been clicked yet
- if (side == 'right' && !this.endDate) return;
-
- var html, selected, minDate, maxDate = this.maxDate;
-
- if (this.dateLimit && (!this.maxDate || this.startDate.clone().add(this.dateLimit).isAfter(this.maxDate)))
- maxDate = this.startDate.clone().add(this.dateLimit);
-
- if (side == 'left') {
- selected = this.startDate.clone();
- minDate = this.minDate;
- } else if (side == 'right') {
- selected = this.endDate.clone();
- minDate = this.startDate;
-
- //Preserve the time already selected
- var timeSelector = this.container.find('.calendar.right .calendar-time div');
- if (!this.endDate && timeSelector.html() != '') {
-
- selected.hour(timeSelector.find('.hourselect option:selected').val() || selected.hour());
- selected.minute(timeSelector.find('.minuteselect option:selected').val() || selected.minute());
- selected.second(timeSelector.find('.secondselect option:selected').val() || selected.second());
-
- if (!this.timePicker24Hour) {
- var ampm = timeSelector.find('.ampmselect option:selected').val();
- if (ampm === 'PM' && selected.hour() < 12)
- selected.hour(selected.hour() + 12);
- if (ampm === 'AM' && selected.hour() === 12)
- selected.hour(0);
- }
-
- }
-
- if (selected.isBefore(this.startDate))
- selected = this.startDate.clone();
-
- if (maxDate && selected.isAfter(maxDate))
- selected = maxDate.clone();
-
- }
-
- //
- // hours
- //
-
- html = '<select class="hourselect">';
-
- var start = this.timePicker24Hour ? 0 : 1;
- var end = this.timePicker24Hour ? 23 : 12;
-
- for (var i = start; i <= end; i++) {
- var i_in_24 = i;
- if (!this.timePicker24Hour)
- i_in_24 = selected.hour() >= 12 ? (i == 12 ? 12 : i + 12) : (i == 12 ? 0 : i);
-
- var time = selected.clone().hour(i_in_24);
- var disabled = false;
- if (minDate && time.minute(59).isBefore(minDate))
- disabled = true;
- if (maxDate && time.minute(0).isAfter(maxDate))
- disabled = true;
-
- if (i_in_24 == selected.hour() && !disabled) {
- html += '<option value="' + i + '" selected="selected">' + i + '</option>';
- } else if (disabled) {
- html += '<option value="' + i + '" disabled="disabled" class="disabled">' + i + '</option>';
- } else {
- html += '<option value="' + i + '">' + i + '</option>';
- }
- }
-
- html += '</select> ';
-
- //
- // minutes
- //
-
- html += ': <select class="minuteselect">';
-
- for (var i = 0; i < 60; i += this.timePickerIncrement) {
- var padded = i < 10 ? '0' + i : i;
- var time = selected.clone().minute(i);
-
- var disabled = false;
- if (minDate && time.second(59).isBefore(minDate))
- disabled = true;
- if (maxDate && time.second(0).isAfter(maxDate))
- disabled = true;
-
- if (selected.minute() == i && !disabled) {
- html += '<option value="' + i + '" selected="selected">' + padded + '</option>';
- } else if (disabled) {
- html += '<option value="' + i + '" disabled="disabled" class="disabled">' + padded + '</option>';
- } else {
- html += '<option value="' + i + '">' + padded + '</option>';
- }
- }
-
- html += '</select> ';
-
- //
- // seconds
- //
-
- if (this.timePickerSeconds) {
- html += ': <select class="secondselect">';
-
- for (var i = 0; i < 60; i++) {
- var padded = i < 10 ? '0' + i : i;
- var time = selected.clone().second(i);
-
- var disabled = false;
- if (minDate && time.isBefore(minDate))
- disabled = true;
- if (maxDate && time.isAfter(maxDate))
- disabled = true;
-
- if (selected.second() == i && !disabled) {
- html += '<option value="' + i + '" selected="selected">' + padded + '</option>';
- } else if (disabled) {
- html += '<option value="' + i + '" disabled="disabled" class="disabled">' + padded + '</option>';
- } else {
- html += '<option value="' + i + '">' + padded + '</option>';
- }
- }
-
- html += '</select> ';
- }
-
- //
- // AM/PM
- //
-
- if (!this.timePicker24Hour) {
- html += '<select class="ampmselect">';
-
- var am_html = '';
- var pm_html = '';
-
- if (minDate && selected.clone().hour(12).minute(0).second(0).isBefore(minDate))
- am_html = ' disabled="disabled" class="disabled"';
-
- if (maxDate && selected.clone().hour(0).minute(0).second(0).isAfter(maxDate))
- pm_html = ' disabled="disabled" class="disabled"';
-
- if (selected.hour() >= 12) {
- html += '<option value="AM"' + am_html + '>AM</option><option value="PM" selected="selected"' + pm_html + '>PM</option>';
- } else {
- html += '<option value="AM" selected="selected"' + am_html + '>AM</option><option value="PM"' + pm_html + '>PM</option>';
- }
-
- html += '</select>';
- }
-
- this.container.find('.calendar.' + side + ' .calendar-time div').html(html);
-
- },
-
- updateFormInputs: function() {
-
- //ignore mouse movements while an above-calendar text input has focus
- if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus"))
- return;
-
- this.container.find('input[name=daterangepicker_start]').val(this.startDate.format(this.locale.format));
- if (this.endDate)
- this.container.find('input[name=daterangepicker_end]').val(this.endDate.format(this.locale.format));
-
- if (this.singleDatePicker || (this.endDate && (this.startDate.isBefore(this.endDate) || this.startDate.isSame(this.endDate)))) {
- this.container.find('button.applyBtn').removeAttr('disabled');
- } else {
- this.container.find('button.applyBtn').attr('disabled', 'disabled');
- }
-
- },
-
- move: function() {
- var parentOffset = { top: 0, left: 0 },
- containerTop;
- var parentRightEdge = $(window).width();
- if (!this.parentEl.is('body')) {
- parentOffset = {
- top: this.parentEl.offset().top - this.parentEl.scrollTop(),
- left: this.parentEl.offset().left - this.parentEl.scrollLeft()
- };
- parentRightEdge = this.parentEl[0].clientWidth + this.parentEl.offset().left;
- }
-
- if (this.drops == 'up')
- containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top;
- else
- containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top;
- this.container[this.drops == 'up' ? 'addClass' : 'removeClass']('dropup');
-
- if (this.opens == 'left') {
- this.container.css({
- top: containerTop,
- right: parentRightEdge - this.element.offset().left - this.element.outerWidth(),
- left: 'auto'
- });
- if (this.container.offset().left < 0) {
- this.container.css({
- right: 'auto',
- left: 9
- });
- }
- } else if (this.opens == 'center') {
- this.container.css({
- top: containerTop,
- left: this.element.offset().left - parentOffset.left + this.element.outerWidth() / 2
- - this.container.outerWidth() / 2,
- right: 'auto'
- });
- if (this.container.offset().left < 0) {
- this.container.css({
- right: 'auto',
- left: 9
- });
- }
- } else {
- this.container.css({
- top: containerTop,
- left: this.element.offset().left - parentOffset.left,
- right: 'auto'
- });
- if (this.container.offset().left + this.container.outerWidth() > $(window).width()) {
- this.container.css({
- left: 'auto',
- right: 0
- });
- }
- }
- },
-
- show: function(e) {
- if (this.isShowing) return;
-
- // Create a click proxy that is private to this instance of datepicker, for unbinding
- this._outsideClickProxy = $.proxy(function(e) { this.outsideClick(e); }, this);
-
- // Bind global datepicker mousedown for hiding and
- $(document)
- .on('mousedown.daterangepicker', this._outsideClickProxy)
- // also support mobile devices
- .on('touchend.daterangepicker', this._outsideClickProxy)
- // also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them
- .on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy)
- // and also close when focus changes to outside the picker (eg. tabbing between controls)
- .on('focusin.daterangepicker', this._outsideClickProxy);
-
- // Reposition the picker if the window is resized while it's open
- $(window).on('resize.daterangepicker', $.proxy(function(e) { this.move(e); }, this));
-
- this.oldStartDate = this.startDate.clone();
- this.oldEndDate = this.endDate.clone();
- this.previousRightTime = this.endDate.clone();
-
- this.updateView();
- this.container.show();
- this.move();
- this.element.trigger('show.daterangepicker', this);
- this.isShowing = true;
- },
-
- hide: function(e) {
- if (!this.isShowing) return;
-
- //incomplete date selection, revert to last values
- if (!this.endDate) {
- this.startDate = this.oldStartDate.clone();
- this.endDate = this.oldEndDate.clone();
- }
-
- //if a new date range was selected, invoke the user callback function
- if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate))
- this.callback(this.startDate, this.endDate, this.chosenLabel);
-
- //if picker is attached to a text input, update it
- this.updateElement();
-
- $(document).off('.daterangepicker');
- $(window).off('.daterangepicker');
- this.container.hide();
- this.element.trigger('hide.daterangepicker', this);
- this.isShowing = false;
- },
-
- toggle: function(e) {
- if (this.isShowing) {
- this.hide();
- } else {
- this.show();
- }
- },
-
- outsideClick: function(e) {
- var target = $(e.target);
- // if the page is clicked anywhere except within the daterangerpicker/button
- // itself then call this.hide()
- if (
- // ie modal dialog fix
- e.type == "focusin" ||
- target.closest(this.element).length ||
- target.closest(this.container).length ||
- target.closest('.calendar-table').length
- ) return;
- this.hide();
- this.element.trigger('outsideClick.daterangepicker', this);
- },
-
- showCalendars: function() {
- this.container.addClass('show-calendar');
- this.move();
- this.element.trigger('showCalendar.daterangepicker', this);
- },
-
- hideCalendars: function() {
- this.container.removeClass('show-calendar');
- this.element.trigger('hideCalendar.daterangepicker', this);
- },
-
- hoverRange: function(e) {
- //ignore mouse movements while an above-calendar text input has focus
- if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus"))
- return;
-
- var label = e.target.getAttribute('data-range-key');
-
- if (label == this.locale.customRangeLabel) {
- this.updateView();
- } else {
- var Utils = require('utils/Utils');
- var dates = Utils.dateUtil.getRelativeDateFromString(label);
- this.container.find('input[name=daterangepicker_start]').val(dates[0].format(this.locale.format));
- this.container.find('input[name=daterangepicker_end]').val(dates[1].format(this.locale.format));
- }
-
- },
-
- clickRange: function(e) {
- var label = e.target.getAttribute('data-range-key');
- this.chosenLabel = label;
- if (label == this.locale.customRangeLabel) {
- this.showCalendars();
- } else {
- var Utils = require('utils/Utils');
- var dates = Utils.dateUtil.getRelativeDateFromString(label);
- this.startDate = dates[0];
- this.endDate = dates[1];
-
- if (!this.timePicker) {
- this.startDate.startOf('day');
- this.endDate.endOf('day');
- }
-
- if (!this.alwaysShowCalendars)
- this.hideCalendars();
- this.clickApply();
- }
- },
-
- clickPrev: function(e) {
- var cal = $(e.target).parents('.calendar');
- if (cal.hasClass('left')) {
- this.leftCalendar.month.subtract(1, 'month');
- if (this.linkedCalendars)
- this.rightCalendar.month.subtract(1, 'month');
- } else {
- this.rightCalendar.month.subtract(1, 'month');
- }
- this.updateCalendars();
- },
-
- clickNext: function(e) {
- var cal = $(e.target).parents('.calendar');
- if (cal.hasClass('left')) {
- this.leftCalendar.month.add(1, 'month');
- } else {
- this.rightCalendar.month.add(1, 'month');
- if (this.linkedCalendars)
- this.leftCalendar.month.add(1, 'month');
- }
- this.updateCalendars();
- },
-
- hoverDate: function(e) {
-
- //ignore mouse movements while an above-calendar text input has focus
- //if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus"))
- // return;
-
- //ignore dates that can't be selected
- if (!$(e.target).hasClass('available')) return;
-
- //have the text inputs above calendars reflect the date being hovered over
- var title = $(e.target).attr('data-title');
- var row = title.substr(1, 1);
- var col = title.substr(3, 1);
- var cal = $(e.target).parents('.calendar');
- var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];
-
- if (this.endDate && !this.container.find('input[name=daterangepicker_start]').is(":focus")) {
- this.container.find('input[name=daterangepicker_start]').val(date.format(this.locale.format));
- } else if (!this.endDate && !this.container.find('input[name=daterangepicker_end]').is(":focus")) {
- this.container.find('input[name=daterangepicker_end]').val(date.format(this.locale.format));
- }
-
- //highlight the dates between the start date and the date being hovered as a potential end date
- var leftCalendar = this.leftCalendar;
- var rightCalendar = this.rightCalendar;
- var startDate = this.startDate;
- if (!this.endDate) {
- this.container.find('.calendar td').each(function(index, el) {
-
- //skip week numbers, only look at dates
- if ($(el).hasClass('week')) return;
-
- var title = $(el).attr('data-title');
- var row = title.substr(1, 1);
- var col = title.substr(3, 1);
- var cal = $(el).parents('.calendar');
- var dt = cal.hasClass('left') ? leftCalendar.calendar[row][col] : rightCalendar.calendar[row][col];
-
- if ((dt.isAfter(startDate) && dt.isBefore(date)) || dt.isSame(date, 'day')) {
- $(el).addClass('in-range');
- } else {
- $(el).removeClass('in-range');
- }
-
- });
- }
-
- },
-
- clickDate: function(e) {
-
- if (!$(e.target).hasClass('available')) return;
-
- var title = $(e.target).attr('data-title');
- var row = title.substr(1, 1);
- var col = title.substr(3, 1);
- var cal = $(e.target).parents('.calendar');
- var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];
-
- //
- // this function needs to do a few things:
- // * alternate between selecting a start and end date for the range,
- // * if the time picker is enabled, apply the hour/minute/second from the select boxes to the clicked date
- // * if autoapply is enabled, and an end date was chosen, apply the selection
- // * if single date picker mode, and time picker isn't enabled, apply the selection immediately
- // * if one of the inputs above the calendars was focused, cancel that manual input
- //
-
- if (this.endDate || date.isBefore(this.startDate, 'day')) { //picking start
- if (this.timePicker) {
- var hour = parseInt(this.container.find('.left .hourselect').val(), 10);
- if (!this.timePicker24Hour) {
- var ampm = this.container.find('.left .ampmselect').val();
- if (ampm === 'PM' && hour < 12)
- hour += 12;
- if (ampm === 'AM' && hour === 12)
- hour = 0;
- }
- var minute = parseInt(this.container.find('.left .minuteselect').val(), 10);
- var second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;
- date = date.clone().hour(hour).minute(minute).second(second);
- }
- this.endDate = null;
- this.setStartDate(date.clone());
- } else if (!this.endDate && date.isBefore(this.startDate)) {
- //special case: clicking the same date for start/end,
- //but the time of the end date is before the start date
- this.setEndDate(this.startDate.clone());
- } else { // picking end
- if (this.timePicker) {
- var hour = parseInt(this.container.find('.right .hourselect').val(), 10);
- if (!this.timePicker24Hour) {
- var ampm = this.container.find('.right .ampmselect').val();
- if (ampm === 'PM' && hour < 12)
- hour += 12;
- if (ampm === 'AM' && hour === 12)
- hour = 0;
- }
- var minute = parseInt(this.container.find('.right .minuteselect').val(), 10);
- var second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;
- date = date.clone().hour(hour).minute(minute).second(second);
- }
- this.setEndDate(date.clone());
- if (this.autoApply) {
- this.showCalendars();
- this.clickApply();
- }
- }
-
- if (this.singleDatePicker) {
- this.setEndDate(this.startDate);
- if (!this.timePicker)
- this.clickApply();
- }
-
- this.updateView();
-
- //This is to cancel the blur event handler if the mouse was in one of the inputs
- e.stopPropagation();
-
- },
-
- clickApply: function(e) {
- this.hide();
- this.element.trigger('apply.daterangepicker', this);
- },
-
- clickCancel: function(e) {
- this.startDate = this.oldStartDate;
- this.endDate = this.oldEndDate;
- this.hide();
- this.element.trigger('cancel.daterangepicker', this);
- },
-
- monthOrYearChanged: function(e) {
- var isLeft = $(e.target).closest('.calendar').hasClass('left'),
- leftOrRight = isLeft ? 'left' : 'right',
- cal = this.container.find('.calendar.'+leftOrRight);
-
- // Month must be Number for new moment versions
- var month = parseInt(cal.find('.monthselect').val(), 10);
- var year = cal.find('.yearselect').val();
-
- if (!isLeft) {
- if (year < this.startDate.year() || (year == this.startDate.year() && month < this.startDate.month())) {
- month = this.startDate.month();
- year = this.startDate.year();
- }
- }
-
- if (this.minDate) {
- if (year < this.minDate.year() || (year == this.minDate.year() && month < this.minDate.month())) {
- month = this.minDate.month();
- year = this.minDate.year();
- }
- }
-
- if (this.maxDate) {
- if (year > this.maxDate.year() || (year == this.maxDate.year() && month > this.maxDate.month())) {
- month = this.maxDate.month();
- year = this.maxDate.year();
- }
- }
-
- if (isLeft) {
- this.leftCalendar.month.month(month).year(year);
- if (this.linkedCalendars)
- this.rightCalendar.month = this.leftCalendar.month.clone().add(1, 'month');
- } else {
- this.rightCalendar.month.month(month).year(year);
- if (this.linkedCalendars)
- this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, 'month');
- }
- this.updateCalendars();
- },
-
- timeChanged: function(e) {
-
- var cal = $(e.target).closest('.calendar'),
- isLeft = cal.hasClass('left');
-
- var hour = parseInt(cal.find('.hourselect').val(), 10);
- var minute = parseInt(cal.find('.minuteselect').val(), 10);
- var second = this.timePickerSeconds ? parseInt(cal.find('.secondselect').val(), 10) : 0;
-
- if (!this.timePicker24Hour) {
- var ampm = cal.find('.ampmselect').val();
- if (ampm === 'PM' && hour < 12)
- hour += 12;
- if (ampm === 'AM' && hour === 12)
- hour = 0;
- }
-
- if (isLeft) {
- var start = this.startDate.clone();
- start.hour(hour);
- start.minute(minute);
- start.second(second);
- this.setStartDate(start);
- if (this.singleDatePicker) {
- this.endDate = this.startDate.clone();
- } else if (this.endDate && this.endDate.format('YYYY-MM-DD') == start.format('YYYY-MM-DD') && this.endDate.isBefore(start)) {
- this.setEndDate(start.clone());
- }
- } else if (this.endDate) {
- var end = this.endDate.clone();
- end.hour(hour);
- end.minute(minute);
- end.second(second);
- this.setEndDate(end);
- }
-
- //update the calendars so all clickable dates reflect the new time component
- this.updateCalendars();
-
- //update the form inputs above the calendars with the new time
- this.updateFormInputs();
-
- //re-render the time pickers because changing one selection can affect what's enabled in another
- this.renderTimePicker('left');
- this.renderTimePicker('right');
-
- },
-
- formInputsChanged: function(e) {
- var isRight = $(e.target).closest('.calendar').hasClass('right');
- var start = moment(this.container.find('input[name="daterangepicker_start"]').val(), this.locale.format);
- var end = moment(this.container.find('input[name="daterangepicker_end"]').val(), this.locale.format);
-
- if (start.isValid() && end.isValid()) {
-
- if (isRight && end.isBefore(start))
- start = end.clone();
-
- this.setStartDate(start);
- this.setEndDate(end);
-
- if (isRight) {
- this.container.find('input[name="daterangepicker_start"]').val(this.startDate.format(this.locale.format));
- } else {
- this.container.find('input[name="daterangepicker_end"]').val(this.endDate.format(this.locale.format));
- }
-
- }
-
- this.updateView();
- },
-
- formInputsFocused: function(e) {
-
- // Highlight the focused input
- this.container.find('input[name="daterangepicker_start"], input[name="daterangepicker_end"]').removeClass('active');
- $(e.target).addClass('active');
-
- // Set the state such that if the user goes back to using a mouse,
- // the calendars are aware we're selecting the end of the range, not
- // the start. This allows someone to edit the end of a date range without
- // re-selecting the beginning, by clicking on the end date input then
- // using the calendar.
- var isRight = $(e.target).closest('.calendar').hasClass('right');
- if (isRight) {
- this.endDate = null;
- this.setStartDate(this.startDate.clone());
- this.updateView();
- }
-
- },
-
- formInputsBlurred: function(e) {
-
- // this function has one purpose right now: if you tab from the first
- // text input to the second in the UI, the endDate is nulled so that
- // you can click another, but if you tab out without clicking anything
- // or changing the input value, the old endDate should be retained
-
- if (!this.endDate) {
- var val = this.container.find('input[name="daterangepicker_end"]').val();
- var end = moment(val, this.locale.format);
- if (end.isValid()) {
- this.setEndDate(end);
- this.updateView();
- }
- }
-
- },
-
- elementChanged: function() {
- if (!this.element.is('input')) return;
- if (!this.element.val().length) return;
- if (this.element.val().length < this.locale.format.length) return;
-
- var dateString = this.element.val().split(this.locale.separator),
- start = null,
- end = null;
-
- if (dateString.length === 2) {
- start = moment(dateString[0], this.locale.format);
- end = moment(dateString[1], this.locale.format);
- }
-
- if (this.singleDatePicker || start === null || end === null) {
- start = moment(this.element.val(), this.locale.format);
- end = start;
- }
-
- if (!start.isValid() || !end.isValid()) return;
-
- this.setStartDate(start);
- this.setEndDate(end);
- this.updateView();
- },
-
- keydown: function(e) {
- //hide on tab or enter
- if ((e.keyCode === 9) || (e.keyCode === 13)) {
- this.hide();
- }
- },
-
- updateElement: function() {
- if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) {
- this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));
- this.element.trigger('change');
- } else if (this.element.is('input') && this.autoUpdateInput) {
- this.element.val(this.startDate.format(this.locale.format));
- this.element.trigger('change');
- }
- },
-
- remove: function() {
- this.container.remove();
- this.element.off('.daterangepicker');
- this.element.removeData();
- }
-
- };
-
- $.fn.daterangepicker = function(options, callback) {
- this.each(function() {
- var el = $(this);
- if (el.data('daterangepicker'))
- el.data('daterangepicker').remove();
- el.data('daterangepicker', new DateRangePicker(el, options, callback));
- });
- return this;
- };
-
- return DateRangePicker;
-
-}));
[4/8] ambari git commit: AMBARI-19878 Log Search Portal time zone
selection bug (mgergely)
Posted by mg...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c7997f5/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/other/timezone/WorldMapGenerator.js
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/other/timezone/WorldMapGenerator.js b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/other/timezone/WorldMapGenerator.js
deleted file mode 100644
index 3462ce8..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/other/timezone/WorldMapGenerator.js
+++ /dev/null
@@ -1,3471 +0,0 @@
-/**
- * @version: 1.0.1
- * @author: Keval Bhatt
- * @copyright: Copyright (c) 2015 Keval Bhatt. All rights reserved.
- * @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php
- * @website: http://kevalbhatt.github.io/WorldMapGenerator/
- */
-'use strict';
-(function(root, factory) {
-
- if (typeof define === 'function' && define.amd) {
- define(['moment', 'jquery'], function(momentjs, $) {
- root.worldMapTime = {};
- factory(momentjs, $, root.worldMapTime);
- });
-
- } else {
- if ((typeof root.moment == "undefined")) {
- var moment = false;
- console.log('Day light feature requires moment.js')
- } else {
- if (!(root.moment.tz)) {
- throw new Error('moment-timezone dependency not found');
- }
- }
- if ((root.jQuery != "undefined" || root.Zepto != "undefined" || root.ender != "undefined" || root.$ != "undefined")) {
- var c = root.worldMapTime = {};
- factory(root.moment || moment, (root.jQuery || root.Zepto || root.ender || root.$), c);
- } else {
- throw new Error('jQuery dependnecy not found');
- }
-
- }
-
-}(this, function(moment, $, getTimeZoneObjct) {
- var findValue = function(key, value) {
- var referObj = [];
- var obj = WorldMapGenerator.timeZoneValue.filter(function(object) {
- if (object[key] === value) {
- referObj.push($.extend(true, {},object));
- return object;
- }
- });
- for(var i=0;i<referObj.length;i++){
- delete referObj[i].points;
- delete referObj[i].pin;
- }
- return referObj;
- }
- getTimeZoneObjct['getSystemTimezone'] = function() {
- /* var d = new Date()
- var n = d.getTimezoneOffset();
- var offset = (-(n))/60*/
- var zoneAbr = new Date().toString().split('(')[1].slice(0, -1)
- return findValue('zoneName', zoneAbr)
- }
- getTimeZoneObjct['getZoneName'] = function(zoneAbr) {
- return findValue('zoneName', zoneAbr).zoneName
- }
- getTimeZoneObjct['getTimeZoneString'] = function(zoneAbr) {
- return findValue('zoneName', zoneAbr).timezone
- }
- getTimeZoneObjct['getTimeZoneObject'] = function(zoneAbr) {
- return findValue('zoneName', zoneAbr)
- }
-
-
- var WorldMapGenerator = function(element, options) {
- this.$el = element;
- this.generateMap(options);
- }
-
- WorldMapGenerator.VERSION = '1.0.1';
-
- WorldMapGenerator.DEFAULTS = {
- width: 500,
- height: 250,
- hoverColor: '#5A5A5A',
- selectedColor: '#496A84',
- mapColor: '#BBB',
- defaultCss: true,
- localStore: true,
- quickLink: [{
- "IST": "IST",
- "EAT": "EAT"
- }],
- selectBox: true,
- showHoverText: true,
- dayLightSaving: ((typeof moment == "function") ? (true) : (false))
- };
-
- WorldMapGenerator.prototype = {
-
- constructor: WorldMapGenerator,
-
- /**
- * [setValue set value in map]
- * @param {[type]} value [attribute value]
- * @param {[type]} attribute [attribute name]
- */
- setValue: function(value, attribute) {
-
- this.$el.find('svg polygon').attr('data-selected', 'false');
- var elements = this.$el.find('svg polygon[data-' + ((attribute) ? (attribute) : ("timezone")) + '="' + value + '"]');
-
- if (elements && elements.length) {
- elements.attr('data-selected', 'true');
- this.$el.find('select option[value="' + ((attribute) ? (elements.attr('data-timeZone')) : (value)) + '"]').prop('selected', true);
- this.$el.find('.quickLink span').removeClass('active');
- var findQuickLink = this.$el.find('.quickLink span[data-select="' + value + '"]');
- this.$el.find('.quickLink span[data-select="' + value + '"]').addClass('active');
- this.$el.find('.quickLink span[data-select="' + elements.attr('data-zonename') + '"]').addClass('active');
-
- }
- },
- /**
- * [getValue get selected value array]
- * @return {[type]} [description]
- */
- getValue: function() {
- var value = [];
- this.$el.find('svg polygon[data-selected="true"]').map(function(index, el) {
- value.push($(el).data());
- });
- return value;
- },
- /**
- * [generateMap create element dynamically]
- * @param {[type]} options [depanding on option it will create e]
- * @return {[type]} [description]
- */
- generateMap: function(options) {
-
- var polygon = [],
- option = [],
- quickLink = [],
- containerArr = [],
- timezone = WorldMapGenerator.timeZoneValue;
- for (var index in timezone) {
- polygon.push(this.genrateElement('polygon', {
- 'data-timezone': timezone[index].timezone,
- 'data-country': timezone[index].country,
- 'data-pin': timezone[index].pin,
- 'data-offset': timezone[index].offset,
- 'points': timezone[index].points,
- 'data-zonename': ((options.dayLightSaving) ? (moment().tz(timezone[index].timezone).zoneName()) : (timezone[index].zoneName))
- }, false, true));
- option.push(this.genrateElement('option', {
- 'value': timezone[index].timezone
- }, timezone[index].timezone + " (" + ((options.dayLightSaving) ? (moment().tz(timezone[index].timezone).zoneName()) : (timezone[index].zoneName)) + ")"));
- }
- if (options.selectBox) {
- var select = this.genrateElement('select', {
- 'class': 'mapDropDown dropdown-toggle',
- }, option);
- containerArr.push(select);
- }
-
-
- if (options.quickLink.length > 0) {
- for (var index in options.quickLink[0]) {
- quickLink.push(this.genrateElement('span', {
- 'data-select': options.quickLink[0][index]
- }, index));
- }
- var qickLinkDiv = this.genrateElement('div', {
- 'class': 'quickLink'
- }, quickLink);
- containerArr.push(qickLinkDiv);
- }
-
-
-
- var svg = this.genrateElement('svg', {
- 'class': 'timezone-map',
- 'viewBox': '0 0 ' + options.width + ' ' + options.height
- }, polygon, true);
-
- if (containerArr.length > 0) {
- var container = this.genrateElement('div', {
- 'class': 'Cbox'
- }, containerArr);
- this.$el.append(container);
-
- }
- this.$el.append(svg);
-
- if (options.showHoverText) {
- var hoverZone = this.genrateElement('span', {
- 'class': 'hoverZone',
- });
- this.$el.append(hoverZone);
- }
-
-
-
- if (options.defaultCss) {
- this.createCss(options);
- }
- this.bindEvent(options);
-
- },
- /**
- * [bindEvent bind all event i.e click,mouseenter,mouseleave,change(select)]
- * @return {[type]} [description]
- */
- bindEvent: function() {
- var that = this;
- this.$el.on('mouseenter', 'svg polygon', function(e) {
- var d = $(this).data();
- $('.timezone-map polygon[data-zonename="' + d.zonename + '"]').attr('class', 'active');
- that.$el.find('.hoverZone').text(d.timezone + " (" + d.zonename + ")");
- });
- this.$el.on('mouseleave', 'svg polygon', function(e) {
- $('.timezone-map polygon').attr('class', '');
- that.$el.find('.hoverZone').text('');
- });
- this.$el.on('click', 'svg polygon', function() {
-
- that.setValue($(this).attr('data-timezone'));
- that.$el.trigger("map:clicked");
-
- });
- this.$el.on('change', 'select', function() {
- that.setValue($(this).val());
- that.$el.trigger("map:clicked");
- });
- this.$el.on('click', '.quickLink span', function() {
- var selectValue = $(this).data().select
- if (selectValue.search('/') > 0) {
- that.setValue(selectValue, 'timezone');
- } else {
- that.setValue(selectValue, 'zonename');
- }
- that.$el.trigger("map:clicked");
- });
- },
- /**
- * [genrateElement description]
- * @param {[Jquery Object]} element [selector]
- * @param {[type]} elementAttr [description]
- * @param {[javascript Object or text]} chilled [If we pass javascript object or array it will append all chilled and if you pass string it will add string(value) inside element ]
- * @param {Boolean} isSvg [If it is svg then it will create svg element]
- * @return {[type]} [description]
- */
- genrateElement: function(element, elementAttr, chilled, isSvg) {
-
-
- if (isSvg) {
- var elementObject = document.createElementNS('http://www.w3.org/2000/svg', element);
- } else {
- var elementObject = document.createElement(element);
- }
- if (elementAttr) {
- for (var key in elementAttr) {
- elementObject.setAttribute(key, elementAttr[key]);
- }
- }
- if (chilled) {
- if (chilled instanceof Array) {
- for (var chilleds in chilled) {
- elementObject.appendChild(chilled[chilleds]);
- }
- } else if (typeof chilled == 'string') {
- elementObject.innerHTML = chilled;
- } else {
- elementObject.appendChild(chilled);
- }
-
- }
-
- return elementObject;
-
- },
- /**
- * [createCss function will create css dynamically it is insert style attribute in in head ]
- * @param {[type]} options [options has mapColor,selectedColor,hoverColor ]
- * @return {[type]} [description]
- */
- createCss: function(options) {
- var style = document.createElement('style');
- style.type = 'text/css';
- style.innerHTML = '.timezone-map polygon[data-selected="true"] {fill: ' + options.selectedColor + '}' +
- '.timezone-map polygon { fill: ' + options.mapColor + ';}' +
- '.timezone-map polygon.active {fill: ' + options.hoverColor + ';}' +
- '.timezone-map polygon:hover { cursor: pointer;}' +
- '.Cbox .quickLink{width: 52%;float: right;padding-bottom: 11px;overflow-x: auto; white-space: nowrap;overflow-y: hidden;}' +
- '.Cbox .quickLink span:hover {color:#FFF;background-color: #496A84; cursor: pointer;}' +
- '.Cbox select{width: 45%;float: left;height: 27px; padding: 0px 0px 0px 10px;}' +
- '.Cbox .quickLink span.active {color: #FFF; background-color: #496A84;}' +
- '.Cbox .quickLink span{ font-weight: 300; border-radius: 3px; color: #000; background-color: #FFF; border: solid 1px #CCC;margin-left: 10px;' +
- 'font-size: 9px;padding: 4px 6px 4px 6px;}';
- document.getElementsByTagName('head')[0].appendChild(style);
-
- }
- };
- /**
- * [Plugin Staring point for plugin]
- * @param {[type]} option [user options which can be override the default options]
- */
- function Plugin(option) {
-
- return this.each(function() {
- var $el = $(this)
- var options = $.extend({}, WorldMapGenerator.DEFAULTS, $el.data(), typeof option == 'object' && option);
- $el.data('WorldMapGenerator', new WorldMapGenerator($el, options));
- $el.trigger("map:loaded");
- });
- };
-
- $.fn.WorldMapGenerator = Plugin;
-
- WorldMapGenerator.timeZoneValue = [{
- "timezone": "Africa/Abidjan",
- "country": "CI",
- "pin": "244,118",
- "offset": 0,
- "points": "241,118,240,119,240,117,238,116,238,115,239,114,239,113,239,113,239,111,241,110,241,111,243,111,244,112,246,111,247,113,245,116,246,118,241,118",
- "zoneName": "GMT"
- }, {
- "timezone": "Africa/Accra",
- "country": "GH",
- "pin": "250,117",
- "offset": 0,
- "points": "251,117,247,118,246,118,246,118,246,116,247,114,246,110,250,110,251,113,251,116,252,116,251,117",
- "zoneName": "GMT"
- }, {
- "timezone": "Africa/Addis_Ababa",
- "country": "ET",
- "pin": "304,112",
- "offset": 3,
- "points": "313,118,311,118,308,120,307,119,305,120,300,119,299,116,296,114,296,113,297,113,298,110,299,110,300,107,300,107,301,105,302,105,303,104,303,105,307,105,309,108,308,110,310,110,309,110,310,112,317,114,313,118",
- "zoneName": "EAT"
- }, {
- "timezone": "Africa/Algiers",
- "country": "DZ",
- "pin": "254,74",
- "offset": 1,
- "points": "263,83,264,86,264,88,263,89,264,91,266,91,267,92,258,98,255,99,254,97,252,97,250,95,238,87,238,85,239,85,243,83,243,82,245,82,245,81,246,81,246,80,248,80,249,80,248,79,248,77,247,76,254,74,262,74,261,74,262,77,260,78,263,81,263,83",
- "zoneName": "CET"
- }, {
- "timezone": "Africa/Asmara",
- "country": "ER",
- "pin": "304,104",
- "offset": 3,
- "points": "306,104,310,107,309,108,306,105,303,105,303,104,302,105,301,105,301,101,304,100,305,104,305,103,306,104",
- "zoneName": "EAT"
- }, {
- "timezone": "Africa/Bamako",
- "country": "ML",
- "pin": "239,107",
- "offset": 0,
- "points": "244,107,244,108,242,109,242,111,241,111,241,110,240,111,239,110,239,111,238,110,238,110,238,109,237,108,235,108,234,108,234,107,233,105,234,103,235,104,237,103,242,103,241,90,243,90,252,96,252,97,254,97,255,99,256,98,256,101,255,104,249,104,246,105,245,107,244,106,244,107",
- "zoneName": "GMT"
- }, {
- "timezone": "Africa/Bangui",
- "country": "CF",
- "pin": "276,119",
- "offset": 1,
- "points": "284,118,283,119,282,118,281,119,277,118,276,119,276,120,273,120,272,122,270,119,270,117,272,115,276,114,276,113,278,112,280,110,281,110,283,111,283,113,284,113,284,113,285,114,288,118,285,118,285,118,284,118",
- "zoneName": "WAT"
- }, {
- "timezone": "Africa/Banjul",
- "country": "GM",
- "pin": "227,106",
- "offset": 0,
- "points": "231,106,227,106,229,106,231,106",
- "zoneName": "GMT"
- }, {
- "timezone": "Africa/Bissau",
- "country": "GW",
- "pin": "228,109",
- "offset": 0,
- "points": "228,109,228,109,228,109",
- "zoneName": "GMT"
- }, {
- "timezone": "Africa/Blantyre",
- "country": "MW",
- "pin": "299,147",
- "offset": 2,
- "points": "298,144,300,146,299,149,298,147,298,145,297,145,295,144,297,142,296,140,297,140,296,138,298,139,299,141,298,142,298,144",
- "zoneName": "CAT"
- }, {
- "timezone": "Africa/Brazzaville",
- "country": "CG",
- "pin": "271,131",
- "offset": 1,
- "points": "266,131,267,130,266,128,267,128,268,128,270,128,270,128,270,126,269,125,270,124,269,123,268,123,268,122,272,123,273,120,276,120,275,126,273,128,272,130,270,132,270,131,269,132,268,131,267,132,266,131",
- "zoneName": "WAT"
- }, {
- "timezone": "Africa/Bujumbura",
- "country": "BI",
- "pin": "291,130",
- "offset": 2,
- "points": "292,131,291,131,290,129,291,129,292,128,292,128,293,130,292,131",
- "zoneName": "CAT"
- }, {
- "timezone": "Asia/Oral",
- "country": "KZ",
- "pin": "321,54",
- "offset": 5,
- "points": "316,55,317,56,318,56,317,55,319,54,320,53,323,53,326,54,326,56,323,58,321,57,319,58,315,58,316,55",
- "zoneName": "ORAT"
- }, {
- "timezone": "Africa/Cairo",
- "country": "EG",
- "pin": "293,83",
- "offset": 2,
- "points": "294,94,285,94,284,83,285,81,290,82,293,81,294,81,295,82,298,82,298,84,298,86,296,85,295,83,295,84,300,92,299,92,299,93,297,95,294,94",
- "zoneName": "EET"
- }, {
- "timezone": "Africa/Casablanca",
- "country": "MA",
- "pin": "239,78",
- "offset": 0,
- "points": "242,84,240,84,238,85,238,87,232,87,236,84,237,83,236,81,237,80,241,78,242,75,243,75,244,76,246,76,248,77,248,80,246,80,246,81,245,81,245,82,243,82,242,84",
- "zoneName": "WET"
- }, {
- "timezone": "Africa/Ceuta",
- "country": "ES",
- "pin": "243,75",
- "offset": 1,
- "points": "243,75,243,75,243,75",
- "zoneName": "CET"
- }, {
- "timezone": "Africa/Conakry",
- "country": "GN",
- "pin": "231,112",
- "offset": 0,
- "points": "238,114,237,115,236,113,235,114,235,113,234,111,233,111,232,112,231,111,230,110,229,109,231,109,231,107,234,108,235,108,237,108,238,109,238,110,238,110,239,111,239,112,239,113,239,113,239,114,238,114",
- "zoneName": "GMT"
- }, {
- "timezone": "Africa/Dakar",
- "country": "SN",
- "pin": "226,105",
- "offset": 0,
- "points": "227,107,229,106,231,106,229,106,227,106,226,105,227,102,230,102,233,105,234,108,229,107,227,108,227,108,227,108,227,107",
- "zoneName": "GMT"
- }, {
- "timezone": "Africa/Dar_es_Salaam",
- "country": "TZ",
- "pin": "305,134",
- "offset": 3,
- "points": "306,139,306,139,306,140,302,141,299,141,297,138,293,137,291,134,291,132,293,130,292,129,293,128,292,126,297,126,302,129,302,130,304,131,304,134,305,135,305,137,306,139",
- "zoneName": "EAT"
- }, {
- "timezone": "Asia/Yekaterinburg",
- "country": "RU",
- "pin": "334,46",
- "offset": 6,
- "points": "333,53,335,54,335,54,333,55,331,54,329,54,327,55,326,54,326,55,324,53,321,53,322,51,322,50,324,50,325,49,324,48,325,48,324,47,326,47,325,46,326,46,325,44,325,43,324,43,325,42,323,41,322,40,326,40,329,40,332,39,333,35,342,31,341,31,342,31,341,31,341,30,340,29,342,29,342,29,341,29,345,30,346,29,345,28,343,28,344,28,344,27,343,27,345,25,346,24,351,24,350,26,351,27,351,27,351,29,352,30,350,32,346,32,346,33,350,33,354,31,353,30,356,29,357,30,357,31,358,31,361,32,358,31,359,30,358,29,353,29,352,28,353,27,351,26,354,25,354,24,355,25,354,26,355,26,359,27,356,25,358,25,357,25,358,25,362,25,360,26,362,26,362,27,360,28,365,29,365,30,364,31,364,31,364,32,366,32,366,34,367,34,367,35,369,35,369,36,368,37,369,37,367,39,369,40,369,40,364,41,357,40,356,42,353,44,349,44,348,44,348,45,350,46,348,47,348,48,346,48,341,50,335,50,335,51,336,51,335,51,334,52,335,52,333,53",
- "zoneName": "YEKT"
- }, {
- "timezone": "Africa/Djibouti",
- "country": "DJ",
- "pin": "310,109",
- "offset": 3,
- "points": "310,109,310,109,310,109",
- "zoneName": "EAT"
- }, {
- "timezone": "Africa/Douala",
- "country": "CM",
- "pin": "263,119",
- "offset": 1,
- "points": "270,117,270,119,272,121,272,123,270,122,264,122,263,119,263,120,262,119,262,117,264,116,265,115,266,116,266,115,269,110,270,109,270,107,271,107,271,110,272,111,269,112,272,114,270,117",
- "zoneName": "WAT"
- }, {
- "timezone": "Africa/Freetown",
- "country": "SL",
- "pin": "232,113",
- "offset": 0,
- "points": "235,115,234,115,232,114,232,112,233,111,234,111,235,112,235,114,236,114,235,115",
- "zoneName": "GMT"
- }, {
- "timezone": "Africa/Gaborone",
- "country": "BW",
- "pin": "286,159",
- "offset": 2,
- "points": "287,158,285,161,282,160,281,162,279,162,279,161,278,159,278,156,279,156,279,150,282,150,283,151,285,150,286,152,289,153,289,155,291,156,287,158",
- "zoneName": "CAT"
- }, {
- "timezone": "Africa/Harare",
- "country": "ZW",
- "pin": "293,150",
- "offset": 2,
- "points": "293,156,289,155,289,153,286,152,285,150,288,150,291,147,296,148,295,151,296,153,295,155,293,156",
- "zoneName": "CAT"
- }, {
- "timezone": "Africa/El_Aaiun",
- "country": "EH",
- "pin": "232,87",
- "offset": 0,
- "points": "233,89,233,92,232,93,232,95,227,95,226,96,226,95,228,92,228,92,229,91,230,89,231,88,232,87,238,87,238,89,233,89",
- "zoneName": "WET"
- }, {
- "timezone": "Africa/Johannesburg",
- "country": "ZA",
- "pin": "289,161",
- "offset": 2,
- "points": "283,172,278,173,276,172,276,173,275,171,275,170,275,169,273,165,274,164,274,165,275,165,278,164,278,159,279,161,279,162,280,162,282,160,285,161,288,158,290,156,293,156,294,159,294,161,294,161,293,162,294,163,294,163,294,162,296,162,295,165,289,171,286,172,283,172",
- "zoneName": "SAST"
- }, {
- "timezone": "Africa/Juba",
- "country": "SS",
- "pin": "294,118",
- "offset": 3,
- "points": "299,117,299,118,300,118,300,119,298,119,297,120,293,120,291,119,289,119,289,119,287,116,284,113,285,111,286,111,287,112,290,112,292,111,293,111,295,110,295,108,296,108,296,110,297,111,297,113,296,113,296,114,297,115,299,117",
- "zoneName": "EAT"
- }, {
- "timezone": "Africa/Kampala",
- "country": "UG",
- "pin": "295,125",
- "offset": 3,
- "points": "293,126,291,127,292,124,293,122,293,122,293,120,297,120,297,119,299,122,297,125,297,126,293,126",
- "zoneName": "EAT"
- }, {
- "timezone": "Africa/Khartoum",
- "country": "SD",
- "pin": "295,103",
- "offset": 3,
- "points": "300,107,299,110,298,110,297,112,296,110,296,108,295,108,295,108,295,110,293,111,292,111,290,112,287,112,286,111,285,111,284,113,283,113,283,111,282,110,281,107,280,107,282,103,283,103,283,97,285,97,285,94,294,94,297,95,299,93,301,94,302,96,302,99,304,100,301,101,301,106,300,107,300,107",
- "zoneName": "EAT"
- }, {
- "timezone": "Africa/Kinshasa",
- "country": "CD",
- "pin": "271,131",
- "offset": 1,
- "points": "271,131,272,130,273,128,275,126,276,119,277,118,277,118,279,119,283,120,281,120,283,122,281,122,281,123,283,125,282,126,283,126,282,126,284,127,281,128,281,128,281,128,279,128,279,131,278,131,278,135,277,135,277,136,274,136,273,133,267,133,268,131,269,132,270,131,270,132,271,131",
- "zoneName": "WAT"
- }, {
- "timezone": "Africa/Lagos",
- "country": "NG",
- "pin": "255,116",
- "offset": 1,
- "points": "261,119,258,119,256,116,254,116,254,112,255,110,255,109,256,106,258,106,260,107,261,106,263,107,265,106,267,107,269,106,270,108,270,109,269,110,266,115,266,116,264,115,262,117,262,118,261,119",
- "zoneName": "WAT"
- }, {
- "timezone": "Africa/Libreville",
- "country": "GA",
- "pin": "263,124",
- "offset": 1,
- "points": "269,125,270,126,270,128,267,128,267,128,266,128,267,130,266,131,263,128,262,126,263,126,263,125,264,125,263,124,263,124,266,124,266,122,268,122,268,123,270,123,270,124,269,125",
- "zoneName": "WAT"
- }, {
- "timezone": "Africa/Lome",
- "country": "TG",
- "pin": "252,116",
- "offset": 0,
- "points": "252,116,251,116,251,113,250,110,251,110,251,111,252,111,253,116,252,116",
- "zoneName": "GMT"
- }, {
- "timezone": "Africa/Kigali",
- "country": "RW",
- "pin": "292,128",
- "offset": 2,
- "points": "292,128,291,129,290,129,291,127,292,126,293,128,292,128",
- "zoneName": "CAT"
- }, {
- "timezone": "Africa/Luanda",
- "country": "AO",
- "pin": "268,137",
- "offset": 1,
- "points": "281,140,281,141,283,140,283,143,281,143,281,148,283,149,279,150,276,149,269,149,268,149,266,149,267,144,269,142,269,140,268,138,269,137,267,133,273,133,274,136,277,136,277,135,280,135,280,138,281,140",
- "zoneName": "WAT"
- }, {
- "timezone": "Africa/Lubumbashi",
- "country": "CD",
- "pin": "288,141",
- "offset": 2,
- "points": "291,132,291,134,293,136,290,137,289,138,290,139,289,141,290,142,291,142,291,144,290,144,288,141,287,142,286,142,285,141,284,141,283,140,281,141,280,135,278,135,277,134,278,133,278,131,279,131,279,128,281,128,281,128,281,128,284,127,282,126,283,126,282,126,283,125,281,123,281,122,283,122,281,120,283,120,281,119,282,118,285,118,285,118,288,118,289,119,291,119,293,120,293,122,293,122,292,124,291,127,290,128,291,132",
- "zoneName": "CAT"
- }, {
- "timezone": "Africa/Lusaka",
- "country": "ZM",
- "pin": "289,146",
- "offset": 2,
- "points": "290,147,290,148,287,150,284,149,283,149,281,148,281,143,283,143,283,140,284,141,285,141,286,142,287,142,288,141,290,144,291,144,291,142,290,142,289,141,290,139,289,138,290,137,293,136,296,138,297,140,296,140,297,142,295,144,296,144,292,146,292,147,290,147",
- "zoneName": "CAT"
- }, {
- "timezone": "Africa/Malabo",
- "country": "GQ",
- "pin": "262,120",
- "offset": 1,
- "points": "266,123,266,124,263,123,264,122,266,122,266,123",
- "zoneName": "WAT"
- }, {
- "timezone": "Africa/Maputo",
- "country": "MZ",
- "pin": "295,161",
- "offset": 2,
- "points": "296,160,295,161,295,162,296,161,296,162,295,162,294,159,293,156,295,155,296,153,295,151,296,148,292,147,292,146,296,144,297,145,298,145,298,146,298,147,299,149,300,146,298,144,298,141,302,141,306,140,306,146,305,148,303,149,300,151,298,152,298,154,299,156,299,158,296,160",
- "zoneName": "CAT"
- }, {
- "timezone": "Africa/Mbabane",
- "country": "SZ",
- "pin": "293,162",
- "offset": 2,
- "points": "294,161,295,162,294,163,293,162,294,161,294,161",
- "zoneName": "SAST"
- }, {
- "timezone": "Africa/Mogadishu",
- "country": "SO",
- "pin": "313,122",
- "offset": 3,
- "points": "310,125,308,127,307,126,307,121,308,119,312,118,317,114,311,113,309,110,310,109,312,111,321,109,321,111,321,111,321,111,321,112,317,119,310,125",
- "zoneName": "EAT"
- }, {
- "timezone": "Africa/Monrovia",
- "country": "LR",
- "pin": "235,116",
- "offset": 0,
- "points": "239,118,240,119,238,119,234,116,236,113,237,113,237,115,238,115,238,114,239,115,238,116,240,117,239,118",
- "zoneName": "GMT"
- }, {
- "timezone": "Africa/Nairobi",
- "country": "KE",
- "pin": "301,127",
- "offset": 3,
- "points": "308,127,306,129,304,131,302,130,302,129,297,126,297,125,299,122,297,119,298,119,300,119,305,120,307,119,308,119,307,121,307,126,308,127",
- "zoneName": "EAT"
- }, {
- "timezone": "Africa/Maseru",
- "country": "LS",
- "pin": "288,166",
- "offset": 2,
- "points": "289,167,289,167,288,166,290,165,291,166,289,167",
- "zoneName": "SAST"
- }, {
- "timezone": "Africa/Ndjamena",
- "country": "TD",
- "pin": "271,108",
- "offset": 1,
- "points": "278,112,276,113,276,114,272,115,269,112,270,111,272,111,271,110,271,107,270,107,269,105,272,102,272,97,271,95,271,93,272,92,283,98,283,103,282,103,280,107,281,107,282,110,280,110,279,112,278,112",
- "zoneName": "WAT"
- }, {
- "timezone": "Africa/Niamey",
- "country": "NE",
- "pin": "253,106",
- "offset": 1,
- "points": "256,106,255,108,255,109,254,108,253,108,253,107,251,107,252,106,251,106,250,104,255,104,256,101,256,98,258,98,267,92,270,94,271,93,271,95,272,97,272,102,269,105,269,106,267,107,265,106,263,107,261,106,260,107,258,106,256,106",
- "zoneName": "WAT"
- }, {
- "timezone": "Africa/Nouakchott",
- "country": "MR",
- "pin": "228,100",
- "offset": 0,
- "points": "234,103,233,105,230,102,227,102,227,103,228,100,227,98,228,97,227,95,226,96,232,95,232,93,233,92,233,89,238,89,238,87,243,90,241,90,242,103,237,103,235,104,234,103",
- "zoneName": "GMT"
- }, {
- "timezone": "Africa/Ouagadougou",
- "country": "BF",
- "pin": "248,108",
- "offset": 0,
- "points": "249,110,246,110,246,112,246,111,243,112,242,111,242,109,244,108,244,106,245,107,247,105,250,104,250,104,251,106,252,106,251,107,253,107,253,109,252,110,249,110",
- "zoneName": "GMT"
- }, {
- "timezone": "Africa/Porto-Novo",
- "country": "BJ",
- "pin": "254,116",
- "offset": 1,
- "points": "254,114,254,116,252,116,252,112,251,111,252,109,253,109,254,108,255,109,255,110,254,112,254,114",
- "zoneName": "WAT"
- }, {
- "timezone": "Africa/Tunis",
- "country": "TN",
- "pin": "264,74",
- "offset": 1,
- "points": "266,80,264,81,264,82,263,83,263,80,261,79,260,78,262,76,261,74,263,73,264,73,264,74,265,74,265,75,266,76,264,78,266,79,266,80",
- "zoneName": "CET"
- }, {
- "timezone": "Africa/Sao_Tome",
- "country": "ST",
- "pin": "259,125",
- "offset": 0,
- "points": "260,123,260,123,260,123",
- "zoneName": "GMT"
- }, {
- "timezone": "Africa/Tripoli",
- "country": "LY",
- "pin": "268,79",
- "offset": 2,
- "points": "285,88,285,97,283,97,283,98,272,92,270,94,264,91,263,89,264,88,264,86,263,83,264,82,264,81,266,80,266,79,271,80,272,81,276,83,278,82,278,80,281,79,282,80,285,81,284,83,285,88",
- "zoneName": "EET"
- }, {
- "timezone": "Africa/Windhoek",
- "country": "NA",
- "pin": "274,156",
- "offset": 2,
- "points": "278,163,278,164,277,165,274,165,274,164,273,165,272,164,271,162,270,156,267,151,266,149,268,149,269,149,276,149,279,150,284,149,285,150,283,151,282,150,279,150,279,156,278,156,278,163",
- "zoneName": "WAST"
- }, {
- "timezone": "America/Adak",
- "country": "US",
- "pin": "5,53",
- "offset": -10,
- "points": "7,53,6,53,8,52,7,53",
- "zoneName": "HST"
- }, {
- "timezone": "America/Argentina/Salta",
- "country": "AR",
- "pin": "159,159",
- "offset": -3,
- "points": "162,180,162,182,163,182,160,182,160,183,150,183,150,180,152,179,151,176,152,175,153,177,155,177,155,175,160,175,160,174,162,174,162,180",
- "zoneName": "ART"
- }, {
- "timezone": "America/Argentina/Salta",
- "country": "AR",
- "pin": "159,159",
- "offset": -3,
- "points": "159,156,161,157,161,156,163,156,163,156,163,159,162,161,158,162,157,161,158,160,155,160,155,159,157,158,158,159,158,157,159,159,161,159,161,158,160,158,159,156",
- "zoneName": "ART"
- }, {
- "timezone": "America/Anchorage",
- "country": "US",
- "pin": "42,40",
- "offset": -9,
- "points": "42,42,40,43,39,43,40,42,39,42,40,41,43,41,42,40,42,40,40,40,36,43,37,43,36,44,30,47,30,47,25,48,25,48,27,48,27,47,31,45,31,44,32,43,30,44,30,43,29,44,27,43,25,44,25,37,27,36,26,36,27,35,25,35,25,33,26,33,25,33,25,32,26,33,25,32,25,27,33,26,34,26,33,27,35,26,39,27,39,27,38,27,39,27,51,28,54,28,54,42,54,41,50,42,46,41,47,40,44,40,45,40,43,41,44,41,44,41,44,41,42,42",
- "zoneName": "AKST"
- }, {
- "timezone": "America/Anguilla",
- "country": "AI",
- "pin": "162,100",
- "offset": -4,
- "points": "162,100,162,100,162,100",
- "zoneName": "AST"
- }, {
- "timezone": "America/Antigua",
- "country": "AG",
- "pin": "164,101",
- "offset": -4,
- "points": "164,101,164,101,164,101",
- "zoneName": "AST"
- }, {
- "timezone": "America/Araguaina",
- "country": "BR",
- "pin": "183,135",
- "offset": -3,
- "points": "185,136,185,136,185,138,186,139,185,141,186,141,186,143,184,143,182,143,182,142,181,143,180,143,180,142,180,143,180,140,182,137,182,135,183,134,183,133,183,132,184,133,184,135,185,136",
- "zoneName": "BRT"
- }, {
- "timezone": "America/Argentina/Buenos_Aires",
- "country": "AR",
- "pin": "169,173",
- "offset": -3,
- "points": "167,171,169,172,169,173,171,174,170,175,171,176,169,178,165,179,163,179,164,180,163,180,163,181,164,181,163,182,162,182,162,173,164,173,165,172,167,171",
- "zoneName": "ART"
- }, {
- "timezone": "America/Argentina/Catamarca",
- "country": "AR",
- "pin": "159,165",
- "offset": -3,
- "points": "159,188,157,188,156,189,151,189,151,188,150,187,151,187,150,187,151,186,150,184,160,183,161,184,161,183,162,184,160,184,161,185,159,186,159,188",
- "zoneName": "ART"
- }, {
- "timezone": "America/Argentina/Catamarca",
- "country": "AR",
- "pin": "159,165",
- "offset": -3,
- "points": "160,167,158,164,154,164,155,162,155,160,158,160,157,161,159,162,158,163,159,164,159,164,160,167",
- "zoneName": "ART"
- }, {
- "timezone": "America/Argentina/Cordoba",
- "country": "AR",
- "pin": "161,169",
- "offset": -3,
- "points": "163,173,162,173,162,174,160,174,160,170,159,169,159,168,160,166,159,164,161,161,162,161,163,159,163,156,165,158,170,160,169,163,173,163,174,162,174,161,175,161,175,163,173,164,170,167,169,172,166,171,164,173,163,173",
- "zoneName": "ART"
- }, {
- "timezone": "America/Argentina/Jujuy",
- "country": "AR",
- "pin": "159,159",
- "offset": -3,
- "points": "157,157,158,155,159,156,159,157,160,158,161,158,161,159,160,159,159,159,158,157,158,159,157,158,157,157",
- "zoneName": "ART"
- }, {
- "timezone": "America/Argentina/La_Rioja",
- "country": "AR",
- "pin": "157,166",
- "offset": -3,
- "points": "156,167,154,166,154,165,153,164,154,164,158,164,160,167,159,169,157,169,156,167",
- "zoneName": "ART"
- }, {
- "timezone": "America/Argentina/Mendoza",
- "country": "AR",
- "pin": "154,171",
- "offset": -3,
- "points": "152,170,156,170,157,171,157,175,155,175,155,177,153,177,152,175,152,174,153,171,152,170",
- "zoneName": "ART"
- }, {
- "timezone": "America/Argentina/Rio_Gallegos",
- "country": "AR",
- "pin": "154,197",
- "offset": -3,
- "points": "151,189,156,189,157,190,159,191,158,192,154,195,154,197,155,198,150,197,149,197,150,195,148,196,148,195,148,193,150,192,149,191,150,191,151,189",
- "zoneName": "ART"
- }, {
- "timezone": "America/Argentina/San_Juan",
- "country": "AR",
- "pin": "155,169",
- "offset": -3,
- "points": "153,167,154,164,154,165,154,166,156,167,157,169,156,169,156,170,154,169,152,170,152,168,153,167",
- "zoneName": "ART"
- }, {
- "timezone": "America/Argentina/San_Luis",
- "country": "AR",
- "pin": "158,171",
- "offset": -3,
- "points": "159,169,160,170,160,175,157,175,156,169,159,169",
- "zoneName": "ART"
- }, {
- "timezone": "America/Argentina/Tucuman",
- "country": "AR",
- "pin": "159,162",
- "offset": -3,
- "points": "158,161,160,161,160,164,159,164,158,163,159,162,158,161",
- "zoneName": "ART"
- }, {
- "timezone": "America/Aruba",
- "country": "AW",
- "pin": "153,108",
- "offset": -4,
- "points": "153,108,153,108,153,108",
- "zoneName": "AST"
- }, {
- "timezone": "America/Argentina/Ushuaia",
- "country": "AR",
- "pin": "155,201",
- "offset": -3,
- "points": "155,201,155,198,155,199,155,199,156,200,160,201,158,201,155,201",
- "zoneName": "ART"
- }, {
- "timezone": "America/Asuncion",
- "country": "PY",
- "pin": "170,160",
- "offset": -3,
- "points": "174,161,173,163,169,163,170,160,165,158,163,156,164,152,167,152,169,152,169,156,172,156,173,158,175,158,174,161",
- "zoneName": "PYST"
- }, {
- "timezone": "America/Bahia_Banderas",
- "country": "MX",
- "pin": "104,96",
- "offset": -6,
- "points": "104,96,103,96,104,96",
- "zoneName": "CST"
- }, {
- "timezone": "America/Atikokan",
- "country": "CA",
- "pin": "123,57",
- "offset": -5,
- "points": "125,58,122,58,123,57,124,57,124,58,125,58",
- "zoneName": "EST"
- }, {
- "timezone": "America/Bahia",
- "country": "BR",
- "pin": "197,143",
- "offset": -2,
- "points": "187,146,186,146,186,141,185,141,186,140,187,139,188,140,189,140,189,138,191,138,193,137,194,138,195,137,197,137,198,139,197,140,198,141,196,143,196,147,195,150,194,149,195,147,194,147,193,147,192,146,189,145,189,145,187,146",
- "zoneName": "BRT"
- }, {
- "timezone": "America/Barbados",
- "country": "BB",
- "pin": "167,107",
- "offset": -4,
- "points": "167,106,167,107,167,106",
- "zoneName": "AST"
- }, {
- "timezone": "America/Belem",
- "country": "BR",
- "pin": "183,127",
- "offset": -3,
- "points": "179,126,180,125,179,126,180,125,183,125,182,127,180,128,182,127,181,128,183,127,183,126,186,127,185,130,182,132,183,133,182,135,182,137,180,139,177,138,178,138,177,136,178,134,177,132,177,130,178,129,177,127,178,127,177,126,176,123,174,122,174,122,177,122,178,119,180,122,181,123,179,126",
- "zoneName": "BRT"
- }, {
- "timezone": "America/Belize",
- "country": "BZ",
- "pin": "128,101",
- "offset": -6,
- "points": "128,101,128,101,128,101",
- "zoneName": "CST"
- }, {
- "timezone": "America/Blanc-Sablon",
- "country": "CA",
- "pin": "171,54",
- "offset": -4,
- "points": "169,54,167,55,169,54",
- "zoneName": "AST"
- }, {
- "timezone": "America/Boa_Vista",
- "country": "BR",
- "pin": "166,121",
- "offset": -4,
- "points": "167,118,166,119,167,120,167,121,167,122,168,123,168,125,167,125,166,126,165,126,164,127,163,126,163,122,161,122,160,119,163,120,163,119,165,119,166,118,167,118",
- "zoneName": "AMT"
- }, {
- "timezone": "America/Bogota",
- "country": "CO",
- "pin": "147,119",
- "offset": -5,
- "points": "154,126,153,131,152,130,153,129,152,128,150,128,149,128,146,125,142,124,140,123,143,120,142,119,143,117,142,115,143,114,143,113,143,114,143,113,145,112,145,110,148,109,150,108,151,108,149,110,148,112,149,113,149,115,150,115,153,115,154,117,156,117,156,119,157,120,156,121,157,122,157,123,156,122,153,123,153,124,154,124,153,124,154,126",
- "zoneName": "COT"
- }, {
- "timezone": "America/Boise",
- "country": "US",
- "pin": "89,64",
- "offset": -7,
- "points": "96,66,96,67,87,67,87,66,86,66,86,64,87,63,88,62,88,61,89,62,92,62,93,63,96,63,96,66",
- "zoneName": "MST"
- }, {
- "timezone": "America/Cambridge_Bay",
- "country": "CA",
- "pin": "104,29",
- "offset": -7,
- "points": "99,18,100,19,99,19,101,19,100,20,102,19,104,20,103,21,97,21,97,20,99,20,97,20,98,19,97,19,99,18",
- "zoneName": "MST"
- }, {
- "timezone": "America/Cambridge_Bay",
- "country": "CA",
- "pin": "104,29",
- "offset": -7,
- "points": "108,36,97,35,95,34,92,34,81,30,81,28,89,29,92,30,89,31,90,31,97,31,100,32,99,32,101,33,100,32,101,32,101,32,101,32,100,31,103,30,99,30,100,30,103,29,105,31,106,30,109,31,113,31,113,30,115,30,116,30,116,31,117,30,116,31,118,32,117,30,120,30,120,30,120,29,119,30,120,28,116,28,117,27,116,27,116,26,119,25,118,25,120,25,121,26,121,27,123,28,122,27,121,28,122,28,121,28,125,29,123,29,124,29,124,30,125,30,126,29,126,32,108,32,108,36",
- "zoneName": "MST"
- }, {
- "timezone": "America/Cambridge_Bay",
- "country": "CA",
- "pin": "104,29",
- "offset": -7,
- "points": "115,24,116,24,116,25,116,25,114,25,114,26,113,26,107,24,111,24,110,23,115,24",
- "zoneName": "MST"
- }, {
- "timezone": "America/Cambridge_Bay",
- "country": "CA",
- "pin": "104,29",
- "offset": -7,
- "points": "100,23,103,24,105,26,105,26,110,27,110,28,106,28,107,28,107,29,108,28,109,29,107,29,104,29,104,29,102,28,99,30,93,30,92,29,93,29,88,29,87,28,97,28,97,24,99,24,100,26,101,25,100,23,100,23",
- "zoneName": "MST"
- }, {
- "timezone": "America/Campo_Grande",
- "country": "BR",
- "pin": "174,153",
- "offset": -3,
- "points": "176,150,177,151,179,152,179,153,175,158,173,158,172,156,169,156,170,150,172,149,173,150,175,149,175,150,176,150",
- "zoneName": "AMST"
- }, {
- "timezone": "America/Cancun",
- "country": "MX",
- "pin": "129,96",
- "offset": -6,
- "points": "128,95,130,96,128,98,129,98,128,100,128,99,127,100,126,100,126,98,128,96,128,95",
- "zoneName": "EST"
- }, {
- "timezone": "America/Caracas",
- "country": "VE",
- "pin": "157,110",
- "offset": -4.5,
- "points": "163,111,165,112,165,113,167,113,166,115,166,115,165,116,165,117,166,118,163,119,163,120,160,119,161,122,162,122,159,124,159,124,158,124,157,123,157,122,156,121,157,120,156,119,156,116,154,117,153,115,150,115,149,112,148,112,149,110,151,109,150,109,151,110,150,111,150,112,151,112,151,112,151,110,153,109,153,108,153,109,155,109,155,110,158,110,160,111,162,110,161,110,164,110,163,110,163,111",
- "zoneName": "VET"
- }, {
- "timezone": "America/Cayenne",
- "country": "GF",
- "pin": "177,118",
- "offset": -3,
- "points": "176,117,178,119,177,122,175,122,175,120,174,118,175,117,176,117",
- "zoneName": "GFT"
- }, {
- "timezone": "America/Cayman",
- "country": "KY",
- "pin": "137,98",
- "offset": -5,
- "points": "139,98,139,98,139,98",
- "zoneName": "EST"
- }, {
- "timezone": "America/Chicago",
- "country": "US",
- "pin": "128,67",
- "offset": -6,
- "points": "128,72,132,74,132,75,131,76,132,80,132,84,130,83,130,83,129,83,129,82,128,83,128,82,128,83,124,83,126,83,125,84,126,84,126,85,125,84,125,85,120,83,118,84,118,84,118,85,116,86,117,85,116,85,116,86,115,86,115,87,114,87,115,87,115,89,112,88,112,87,109,84,107,84,107,85,105,84,104,82,104,81,107,81,107,74,108,74,108,73,109,73,109,70,108,70,108,69,109,69,109,67,110,67,109,64,111,63,110,63,111,62,111,61,109,61,110,60,110,59,106,59,105,57,118,57,118,56,119,57,126,58,122,60,124,60,124,60,128,61,128,62,128,63,129,63,128,66,129,67,130,67,128,68,128,72",
- "zoneName": "CST"
- }, {
- "timezone": "America/Chihuahua",
- "country": "MX",
- "pin": "103,85",
- "offset": -7,
- "points": "106,85,106,86,106,88,105,88,103,88,101,89,98,86,99,86,99,82,100,82,100,81,102,81,104,83,105,84,106,85",
- "zoneName": "MST"
- }, {
- "timezone": "America/Coral_Harbour",
- "country": "",
- "pin": "250,125",
- "offset": -5,
- "points": "131,33,132,34,133,34,136,35,137,36,136,36,139,36,137,37,135,36,131,37,131,36,129,37,130,36,130,34,131,33",
- "zoneName": "EST"
- }, {
- "timezone": "America/Costa_Rica",
- "country": "CR",
- "pin": "133,111",
- "offset": -6,
- "points": "132,112,131,111,131,109,134,110,135,112,135,112,135,114,131,111,132,112",
- "zoneName": "CST"
- }, {
- "timezone": "America/Creston",
- "country": "CA",
- "pin": "88,57",
- "offset": -7,
- "points": "89,57,87,57,88,56,89,57",
- "zoneName": "MST"
- }, {
- "timezone": "America/Cuiaba",
- "country": "BR",
- "pin": "172,147",
- "offset": -3,
- "points": "179,146,176,148,176,150,175,150,175,149,173,150,172,149,170,150,169,149,169,148,166,148,166,144,167,142,167,141,165,140,164,137,169,137,169,135,170,137,171,138,180,139,180,141,180,143,179,146",
- "zoneName": "AMST"
- }, {
- "timezone": "America/Curacao",
- "country": "CW",
- "pin": "154,108",
- "offset": -4,
- "points": "154,108,154,108,154,108",
- "zoneName": "AST"
- }, {
- "timezone": "America/Danmarkshavn",
- "country": "GL",
- "pin": "224,18",
- "offset": 0,
- "points": "223,15,223,15,224,15,221,16,221,16,220,17,221,17,223,17,224,17,221,17,224,18,225,18,218,18,223,19,220,19,223,20,218,20,219,14,223,15",
- "zoneName": "GMT"
- }, {
- "timezone": "America/Dawson",
- "country": "CA",
- "pin": "56,36",
- "offset": -8,
- "points": "56,36,56,36,56,36",
- "zoneName": "PST"
- }, {
- "timezone": "America/Dawson_Creek",
- "country": "CA",
- "pin": "83,42",
- "offset": -7,
- "points": "83,45,83,50,79,48,78,46,83,45",
- "zoneName": "MST"
- }, {
- "timezone": "America/Denver",
- "country": "US",
- "pin": "104,70",
- "offset": -7,
- "points": "93,63,92,62,91,62,91,60,89,59,89,57,105,57,106,59,108,59,108,60,110,61,109,61,111,61,111,62,110,63,111,63,109,64,110,67,109,67,109,69,108,69,108,70,109,70,109,73,108,73,108,74,107,74,107,81,104,81,104,82,102,81,99,81,99,76,96,76,95,74,95,74,92,74,92,67,96,67,96,63,93,63",
- "zoneName": "MST"
- }, {
- "timezone": "America/Detroit",
- "country": "US",
- "pin": "135,66",
- "offset": -5,
- "points": "132,67,129,67,130,66,130,64,130,63,131,62,132,63,132,61,134,62,134,62,134,63,133,65,135,64,136,65,134,67,132,67",
- "zoneName": "EST"
- }, {
- "timezone": "America/Detroit",
- "country": "US",
- "pin": "135,66",
- "offset": -5,
- "points": "125,60,127,59,127,60,130,61,132,60,134,61,131,61,130,62,129,61,128,62,129,62,128,61,126,61,125,60",
- "zoneName": "EST"
- }, {
- "timezone": "America/Dominica",
- "country": "DM",
- "pin": "165,104",
- "offset": -4,
- "points": "165,103,165,104,165,103",
- "zoneName": "AST"
- }, {
- "timezone": "America/Edmonton",
- "country": "CA",
- "pin": "92,51",
- "offset": -7,
- "points": "92,57,88,56,88,55,85,53,86,52,86,52,83,51,83,42,97,42,97,51,99,51,97,52,97,57,92,57",
- "zoneName": "MST"
- }, {
- "timezone": "America/Eirunepe",
- "country": "BR",
- "pin": "153,134",
- "offset": -4,
- "points": "156,138,148,135,148,134,149,132,150,131,153,131,156,138",
- "zoneName": "ACT"
- }, {
- "timezone": "America/El_Salvador",
- "country": "SV",
- "pin": "126,106",
- "offset": -6,
- "points": "126,106,125,106,126,105,128,106,128,107,126,106",
- "zoneName": "CST"
- }, {
- "timezone": "America/Fortaleza",
- "country": "BR",
- "pin": "197,130",
- "offset": -3,
- "points": "201,134,202,135,201,135,199,137,198,136,198,135,197,136,194,135,194,136,192,138,189,138,189,140,187,140,186,139,185,138,185,136,184,135,184,133,182,132,185,130,186,126,187,127,187,127,188,127,188,128,188,130,188,128,189,129,190,128,191,129,194,129,198,132,201,132,201,134",
- "zoneName": "BRT"
- }, {
- "timezone": "America/Glace_Bay",
- "country": "CA",
- "pin": "167,61",
- "offset": -4,
- "points": "167,61,166,61,166,61,167,61",
- "zoneName": "AST"
- }, {
- "timezone": "America/Godthab",
- "country": "GL",
- "pin": "178,36",
- "offset": -3,
- "points": "188,42,187,42,188,41,187,41,188,41,187,41,187,41,186,41,187,40,186,41,187,40,183,41,184,40,183,40,183,40,182,40,183,39,182,39,182,39,181,39,182,39,181,39,182,39,180,38,181,37,180,38,180,38,180,37,180,37,179,37,180,37,179,37,180,37,179,37,179,36,178,36,180,36,178,36,180,35,179,35,180,35,181,36,179,34,180,35,178,36,178,35,179,35,177,35,178,34,177,34,180,34,177,34,177,34,176,34,178,33,176,33,180,32,175,33,176,33,175,33,177,33,176,32,177,32,175,32,180,32,175,31,181,31,177,31,178,31,175,31,176,30,178,31,176,30,180,31,179,30,179,30,176,30,179,30,180,29,179,30,179,29,180,29,180,29,180,29,180,29,179,29,180,28,179,28,180,28,174,27,180,27,179,27,179,27,178,26,179,26,177,26,178,26,177,26,179,26,176,26,178,25,176,25,175,25,175,26,173,26,172,25,174,25,173,25,174,25,173,24,174,24,173,23,174,23,172,23,173,22,172,22,172,22,170,22,172,21,168,20,169,20,169,20,161,19,158,15,160,15,160,14,162,14,156,13,162,12,163,13,162,12,165,12,165,12,166,12,165,11,166,11,172,12,167,11,169,11,174,1
1,176,11,175,12,176,11,181,12,179,11,181,11,179,10,180,10,188,11,189,11,188,11,188,11,188,11,191,11,186,10,195,10,187,10,196,10,196,10,199,10,196,9,202,9,214,9,201,10,215,9,216,10,214,10,220,10,204,11,216,11,213,12,213,12,221,11,220,12,217,13,224,12,223,12,228,11,234,12,229,13,221,13,228,13,221,14,222,14,226,14,225,14,219,14,218,20,223,20,223,21,219,20,220,20,219,20,222,21,219,21,224,22,219,22,219,22,219,22,220,23,220,22,222,22,221,23,219,23,217,23,219,23,214,22,216,23,212,23,213,23,212,23,212,24,215,24,212,24,216,24,213,24,215,24,215,25,216,25,216,26,210,25,212,25,210,26,215,26,211,26,212,26,209,27,213,27,210,28,212,28,215,27,219,28,213,30,208,30,206,30,205,30,206,31,204,31,202,33,198,33,198,34,197,33,198,33,197,33,197,33,197,33,197,34,195,34,194,34,195,34,194,35,193,35,194,36,192,36,194,36,194,37,192,36,193,37,192,37,192,37,191,37,192,38,190,38,191,38,190,38,192,39,190,39,191,39,190,40,191,40,189,40,191,40,190,41,190,41,189,41,190,42,189,41,188,42",
- "zoneName": "WGT"
- }, {
- "timezone": "America/Goose_Bay",
- "country": "CA",
- "pin": "166,51",
- "offset": -4,
- "points": "171,53,161,53,161,52,162,52,162,52,161,52,160,53,158,53,158,51,156,52,157,51,156,50,157,49,156,49,157,49,157,48,159,49,161,49,162,48,161,48,161,47,162,47,161,47,162,45,160,44,162,43,160,43,161,43,161,42,160,42,160,41,162,43,161,43,163,43,162,44,163,44,162,44,164,45,163,45,165,46,163,46,164,46,164,47,166,48,166,48,166,49,167,48,167,48,168,48,167,49,168,48,168,49,170,49,167,50,169,50,166,51,170,50,171,50,170,51,171,53",
- "zoneName": "AST"
- }, {
- "timezone": "America/Grand_Turk",
- "country": "TC",
- "pin": "151,95",
- "offset": -5,
- "points": "151,95,151,95,151,95",
- "zoneName": "AST"
- }, {
- "timezone": "America/Grenada",
- "country": "GD",
- "pin": "164,108",
- "offset": -4,
- "points": "165,108,165,108,165,108",
- "zoneName": "AST"
- }, {
- "timezone": "America/Guadeloupe",
- "country": "GP",
- "pin": "165,102",
- "offset": -4,
- "points": "165,102,165,102,165,102",
- "zoneName": "AST"
- }, {
- "timezone": "America/Guatemala",
- "country": "GT",
- "pin": "124,105",
- "offset": -6,
- "points": "125,106,123,105,122,104,123,103,124,103,123,101,124,101,124,100,126,100,126,103,127,103,125,106",
- "zoneName": "CST"
- }, {
- "timezone": "America/Guayaquil",
- "country": "EC",
- "pin": "139,128",
- "offset": -5,
- "points": "141,130,140,132,139,131,138,131,139,128,139,129,137,128,139,124,141,123,142,124,144,124,145,125,145,125,146,126,141,130",
- "zoneName": "ECT"
- }, {
- "timezone": "America/Guyana",
- "country": "GY",
- "pin": "169,116",
- "offset": -4,
- "points": "170,116,171,118,170,118,169,119,172,122,170,122,168,123,167,122,167,121,167,120,166,119,167,118,165,117,165,116,166,115,166,115,167,114,167,113,169,115,169,116,169,115,170,116",
- "zoneName": "GYT"
- }, {
- "timezone": "America/Halifax",
- "country": "CA",
- "pin": "162,63",
- "offset": -4,
- "points": "161,63,162,62,160,62,161,61,163,62,164,61,165,62,161,63,159,65,158,64,158,63,160,62,161,63",
- "zoneName": "AST"
- }, {
- "timezone": "America/Havana",
- "country": "CU",
- "pin": "136,93",
- "offset": -5,
- "points": "146,96,147,97,142,97,143,96,141,96,141,95,136,94,136,94,137,94,136,93,132,95,134,93,138,93,146,96",
- "zoneName": "CST"
- }, {
- "timezone": "America/Hermosillo",
- "country": "MX",
- "pin": "96,85",
- "offset": -7,
- "points": "90,81,91,80,96,81,99,81,99,86,98,86,99,88,98,88,96,87,97,86,94,85,93,82,90,81",
- "zoneName": "MST"
- }, {
- "timezone": "America/Indiana/Petersburg",
- "country": "US",
- "pin": "129,72",
- "offset": -5,
- "points": "129,72,129,72,129,72",
- "zoneName": "EST"
- }, {
- "timezone": "America/Indiana/Tell_City",
- "country": "US",
- "pin": "129,72",
- "offset": -6,
- "points": "130,72,130,72,130,72",
- "zoneName": "CST"
- }, {
- "timezone": "America/Indiana/Vevay",
- "country": "US",
- "pin": "132,71",
- "offset": -5,
- "points": "132,71,132,71,132,71",
- "zoneName": "EST"
- }, {
- "timezone": "America/Indiana/Indianapolis",
- "country": "US",
- "pin": "130,70",
- "offset": -5,
- "points": "132,71,130,72,130,71,128,71,128,68,130,68,130,67,132,67,132,70,132,71",
- "zoneName": "EST"
- }, {
- "timezone": "America/Indiana/Knox",
- "country": "US",
- "pin": "130,68",
- "offset": -6,
- "points": "130,67,129,68,130,67",
- "zoneName": "CST"
- }, {
- "timezone": "America/Indiana/Marengo",
- "country": "US",
- "pin": "130,72",
- "offset": -5,
- "points": "130,72,130,72,130,72,130,72",
- "zoneName": "EST"
- }, {
- "timezone": "America/Indiana/Vincennes",
- "country": "US",
- "pin": "128,71",
- "offset": -5,
- "points": "128,72,128,71,130,71,130,72,128,72",
- "zoneName": "EST"
- }, {
- "timezone": "America/Indiana/Winamac",
- "country": "US",
- "pin": "130,68",
- "offset": -5,
- "points": "130,68,129,68,130,68",
- "zoneName": "EST"
- }, {
- "timezone": "America/Inuvik",
- "country": "CA",
- "pin": "64,30",
- "offset": -7,
- "points": "65,30,64,30,65,30",
- "zoneName": "MST"
- }, {
- "timezone": "America/Iqaluit",
- "country": "CA",
- "pin": "155,36",
- "offset": -5,
- "points": "139,20,138,20,140,20,138,21,140,21,132,21,132,20,139,20",
- "zoneName": "EST"
- }, {
- "timezone": "America/Iqaluit",
- "country": "CA",
- "pin": "155,36",
- "offset": -5,
- "points": "139,10,145,10,144,11,145,10,142,10,156,10,155,10,156,10,156,12,154,12,156,12,152,12,156,12,156,13,152,13,153,14,149,14,152,14,151,14,147,14,146,14,148,15,142,15,147,15,142,15,146,16,143,16,145,16,145,17,141,17,142,17,141,18,136,18,142,18,141,19,137,19,138,19,135,18,136,19,132,19,132,18,134,18,134,17,136,17,132,17,132,15,136,16,134,16,137,15,132,15,134,15,132,15,132,14,138,14,139,14,134,13,144,13,140,13,143,12,140,12,140,12,139,13,132,13,132,12,136,12,132,12,132,11,133,11,132,10,140,11,135,11,138,10,137,10,141,10,138,10,139,10",
- "zoneName": "EST"
- }, {
- "timezone": "America/Iqaluit",
- "country": "CA",
- "pin": "155,36",
- "offset": -5,
- "points": "132,30,133,29,132,29,132,28,136,28,134,28,137,29,136,29,137,30,135,30,137,31,134,33,133,32,132,32,132,30",
- "zoneName": "EST"
- }, {
- "timezone": "America/Iqaluit",
- "country": "CA",
- "pin": "155,36",
- "offset": -5,
- "points": "144,24,140,24,138,23,142,23,144,24",
- "zoneName": "EST"
- }, {
- "timezone": "America/Iqaluit",
- "country": "CA",
- "pin": "155,36",
- "offset": -5,
- "points": "133,23,137,23,139,24,138,24,138,24,138,25,139,24,142,25,140,25,142,25,141,24,142,24,146,24,146,25,144,25,147,25,145,26,146,25,146,26,148,25,147,26,148,26,147,26,149,26,148,26,149,25,151,26,149,27,150,27,149,27,152,26,150,27,151,27,151,28,153,27,152,27,155,27,152,28,155,28,153,28,156,27,155,28,153,28,156,29,154,29,155,29,154,29,155,29,155,29,156,29,154,29,156,30,156,33,155,33,156,34,156,37,154,36,156,37,156,39,151,37,150,37,151,37,149,36,148,36,148,35,148,36,148,35,147,36,147,35,146,35,146,35,147,36,142,36,141,35,142,34,148,34,147,33,150,32,148,30,148,30,147,30,148,30,145,29,144,30,145,29,143,28,143,28,143,28,143,28,142,28,142,27,140,27,139,27,140,27,141,28,136,28,138,28,135,27,137,28,132,28,132,26,133,25,132,25,132,25,133,25,132,25,132,24,133,24,132,23,133,24,132,23,133,23",
- "zoneName": "EST"
- }, {
- "timezone": "America/La_Paz",
- "country": "BO",
- "pin": "155,148",
- "offset": -4,
- "points": "164,154,163,156,161,156,161,157,160,156,158,155,157,157,156,157,155,153,155,152,153,149,154,148,154,147,155,142,153,140,155,140,157,139,159,138,160,142,166,144,166,148,169,148,169,149,170,150,170,153,168,152,164,152,164,154",
- "zoneName": "BOT"
- }, {
- "timezone": "America/Jamaica",
- "country": "JM",
- "pin": "143,100",
- "offset": -5,
- "points": "144,100,143,100,141,100,143,99,144,100",
- "zoneName": "EST"
- }, {
- "timezone": "America/Juneau",
- "country": "US",
- "pin": "63,44",
- "offset": -9,
- "points": "59,43,62,42,66,45,65,46,65,45,64,45,65,45,64,45,65,45,64,44,64,44,63,44,62,42,62,42,62,44,61,44,61,43,61,43,61,43,60,43,61,44,60,44,58,43,59,43",
- "zoneName": "AKST"
- }, {
- "timezone": "America/Kentucky/Louisville",
- "country": "US",
- "pin": "131,72",
- "offset": -5,
- "points": "130,72,130,72,131,71,130,72",
- "zoneName": "EST"
- }, {
- "timezone": "America/Kentucky/Monticello",
- "country": "US",
- "pin": "132,74",
- "offset": -5,
- "points": "132,74,133,74,132,74,132,74",
- "zoneName": "EST"
- }, {
- "timezone": "America/Kralendijk",
- "country": "BQ",
- "pin": "155,108",
- "offset": -4,
- "points": "162,101,162,100,162,101",
- "zoneName": "AST"
- }, {
- "timezone": "America/Lima",
- "country": "PE",
- "pin": "143,142",
- "offset": -5,
- "points": "153,149,153,150,152,150,151,149,146,146,144,145,144,144,139,135,137,133,138,133,137,131,138,130,139,130,138,131,140,132,141,130,145,127,146,126,145,125,146,125,149,128,150,128,153,129,152,130,153,131,152,131,149,132,148,134,147,135,149,137,148,138,150,138,150,139,152,138,152,140,153,140,155,142,154,147,154,148,153,149",
- "zoneName": "PET"
- }, {
- "timezone": "America/Managua",
- "country": "NI",
- "pin": "130,108",
- "offset": -6,
- "points": "132,110,131,110,128,107,129,107,129,106,131,106,132,104,135,104,134,110,132,110",
- "zoneName": "CST"
- }, {
- "timezone": "America/Manaus",
- "country": "BR",
- "pin": "167,129",
- "offset": -4,
- "points": "167,125,168,125,169,127,172,128,169,134,169,135,169,137,164,137,163,136,162,136,161,137,160,138,158,138,157,139,156,138,153,131,154,127,153,124,154,124,153,124,153,123,156,122,157,123,158,124,159,124,159,124,161,122,162,122,163,124,163,126,164,127,165,126,166,126,167,125",
- "zoneName": "AMT"
- }, {
- "timezone": "America/Los_Angeles",
- "country": "US",
- "pin": "86,78",
- "offset": -8,
- "points": "91,62,88,62,88,61,88,62,87,63,86,64,86,66,87,66,87,67,92,67,92,75,91,75,91,77,91,79,91,79,87,80,85,78,82,77,82,76,80,73,80,72,79,72,78,71,77,69,78,67,77,66,78,61,78,61,78,61,78,60,78,60,78,60,78,60,77,58,80,58,79,59,80,58,80,59,79,60,80,59,80,57,89,57,89,59,91,60,91,62",
- "zoneName": "PST"
- }, {
- "timezone": "America/Lower_Princes",
- "country": "SX",
- "pin": "162,100",
- "offset": -4,
- "points": "162,100,162,100,162,100",
- "zoneName": "AST"
- }, {
- "timezone": "America/Maceio",
- "country": "BR",
- "pin": "200,138",
- "offset": -3,
- "points": "199,140,198,141,197,140,198,139,197,138,198,137,199,138,201,137,199,140",
- "zoneName": "BRT"
- }, {
- "timezone": "America/Marigot",
- "country": "MF",
- "pin": "162,100",
- "offset": -4,
- "points": "162,100,162,100,162,100",
- "zoneName": "AST"
- }, {
- "timezone": "America/Martinique",
- "country": "MQ",
- "pin": "165,105",
- "offset": -4,
- "points": "165,104,165,104,165,104",
- "zoneName": "AST"
- }, {
- "timezone": "America/Matamoros",
- "country": "MX",
- "pin": "115,89",
- "offset": -6,
- "points": "113,89,112,89,109,84,108,84,107,85,107,85,107,84,109,84,112,87,112,88,115,89,115,90,113,89",
- "zoneName": "CST"
- }, {
- "timezone": "America/Mazatlan",
- "country": "MX",
- "pin": "102,93",
- "offset": -7,
- "points": "104,93,106,95,105,96,104,96,104,95,103,94,100,90,98,89,98,88,100,88,101,90,104,93",
- "zoneName": "MST"
- }, {
- "timezone": "America/Mazatlan",
- "country": "MX",
- "pin": "102,93",
- "offset": -7,
- "points": "91,86,93,86,98,93,97,93,94,91,94,89,93,88,92,88,90,86,92,87,91,86",
- "zoneName": "MST"
- }, {
- "timezone": "America/Menominee",
- "country": "US",
- "pin": "128,62",
- "offset": -6,
- "points": "128,62,128,61,124,60,128,61,129,62,128,62",
- "zoneName": "CST"
- }, {
- "timezone": "America/Mexico_City",
- "country": "MX",
- "pin": "112,98",
- "offset": -6,
- "points": "119,103,118,102,116,103,114,103,104,98,103,97,104,96,105,96,106,95,105,94,106,92,108,91,107,90,110,91,111,93,114,94,117,99,119,100,122,99,122,100,124,100,124,101,123,101,124,102,123,103,122,105,119,102,119,103",
- "zoneName": "CST"
- }, {
- "timezone": "America/Merida",
- "country": "MX",
- "pin": "126,96",
- "offset": -6,
- "points": "124,96,125,95,128,95,128,96,126,98,126,100,122,100,122,99,123,99,124,96",
- "zoneName": "CST"
- }, {
- "timezone": "America/Metlakatla",
- "country": "US",
- "pin": "67,48",
- "offset": -8,
- "points": "67,48,67,48,67,48",
- "zoneName": "PST"
- }, {
- "timezone": "America/Miquelon",
- "country": "PM",
- "pin": "172,60",
- "offset": -3,
- "points": "172,60,172,60,172,60",
- "zoneName": "PMST"
- }, {
- "timezone": "America/Moncton",
- "country": "CA",
- "pin": "160,61",
- "offset": -4,
- "points": "157,58,160,59,159,60,160,60,160,61,161,61,158,62,156,62,156,62,156,60,154,59,155,58,157,58",
- "zoneName": "AST"
- }, {
- "timezone": "America/Monterrey",
- "country": "MX",
- "pin": "111,89",
- "offset": -6,
- "points": "107,90,108,91,106,92,105,94,104,94,101,90,103,88,105,88,106,88,106,86,106,85,108,84,109,84,112,89,115,89,115,90,115,90,114,90,114,94,111,93,110,91,107,90",
- "zoneName": "CST"
- }, {
- "timezone": "America/Montevideo",
- "country": "UY",
- "pin": "172,173",
- "offset": -2,
- "points": "172,173,170,173,169,172,170,167,171,167,172,168,173,168,176,170,175,173,172,173",
- "zoneName": "UYT"
- }, {
- "timezone": "America/Montreal",
- "country": "",
- "pin": "250,125",
- "offset": -5,
- "points": "146,63,147,62,144,62,141,61,139,59,140,53,140,54,140,53,141,52,140,51,140,50,139,49,142,48,144,47,143,44,141,44,143,42,142,41,143,41,142,41,142,40,141,41,142,40,142,39,142,38,146,39,148,38,150,39,150,39,151,39,150,40,151,40,153,40,153,42,151,42,153,42,153,43,154,43,152,44,154,43,155,44,154,45,156,44,155,44,156,44,156,45,158,43,158,44,158,43,159,43,159,43,160,43,159,42,160,41,160,42,161,42,161,43,160,43,162,43,160,44,162,45,161,47,162,47,161,47,161,48,162,48,161,49,159,49,157,48,157,49,156,49,157,49,156,50,157,51,156,52,158,51,158,53,160,53,161,52,162,52,162,52,161,52,161,53,171,53,171,53,168,54,167,55,164,55,158,55,158,55,156,57,155,57,152,60,149,61,157,57,160,57,161,58,159,58,155,58,153,60,152,62,151,63,146,63",
- "zoneName": "EST"
- }, {
- "timezone": "America/Montserrat",
- "country": "MS",
- "pin": "164,102",
- "offset": -4,
- "points": "164,102,164,102,164,102",
- "zoneName": "AST"
- }, {
- "timezone": "America/Nassau",
- "country": "BS",
- "pin": "143,90",
- "offset": -5,
- "points": "143,90,143,90,143,90",
- "zoneName": "EST"
- }, {
- "timezone": "America/New_York",
- "country": "US",
- "pin": "147,68",
- "offset": -5,
- "points": "132,82,131,76,132,75,133,74,130,72,132,71,132,71,132,67,136,67,140,66,140,65,144,65,144,64,146,63,152,62,154,59,156,60,156,62,157,63,155,64,154,63,154,64,152,64,151,66,152,67,153,67,153,67,151,67,151,67,151,68,148,68,146,71,145,70,146,72,145,73,145,72,144,71,145,70,144,70,144,72,143,72,144,72,143,72,144,74,143,73,144,74,145,75,144,74,145,75,143,75,145,76,143,76,144,76,143,76,144,76,144,77,138,80,137,82,139,88,138,90,137,90,136,88,136,88,136,88,135,87,136,86,135,86,135,84,133,83,131,84,132,82",
- "zoneName": "EST"
- }, {
- "timezone": "America/Nipigon",
- "country": "CA",
- "pin": "127,57",
- "offset": -5,
- "points": "127,57,127,57,127,57",
- "zoneName": "EST"
- }, {
- "timezone": "America/Nome",
- "country": "US",
- "pin": "20,35",
- "offset": -9,
- "points": "25,32,23,32,22,31,18,30,19,29,23,29,25,27,25,32",
- "zoneName": "AKST"
- }, {
- "timezone": "America/Nome",
- "country": "US",
- "pin": "20,35",
- "offset": -9,
- "points": "25,35,24,36,19,35,18,35,19,34,16,34,23,33,22,33,25,33,25,35",
- "zoneName": "AKST"
- }, {
- "timezone": "America/Nome",
- "country": "US",
- "pin": "20,35",
- "offset": -9,
- "points": "25,42,22,42,20,41,21,40,19,39,22,37,23,37,25,37,25,42",
- "zoneName": "AKST"
- }, {
- "timezone": "America/Noronha",
- "country": "BR",
- "pin": "205,130",
- "offset": -2,
- "points": "205,130,205,130,205,130",
- "zoneName": "FNT"
- }, {
- "timezone": "America/North_Dakota/Beulah",
- "country": "US",
- "pin": "109,59",
- "offset": -6,
- "points": "109,59,108,60,108,59,109,59",
- "zoneName": "CST"
- }, {
- "timezone": "America/North_Dakota/Center",
- "country": "US",
- "pin": "109,60",
- "offset": -6,
- "points": "110,60,109,60,110,60",
- "zoneName": "CST"
- }, {
- "timezone": "America/North_Dakota/New_Salem",
- "country": "US",
- "pin": "109,60",
- "offset": -6,
- "points": "110,60,110,60,110,61,108,60,110,60",
- "zoneName": "CST"
- }, {
- "timezone": "America/Ojinaga",
- "country": "MX",
- "pin": "105,84",
- "offset": -7,
- "points": "102,81,106,85,105,84,104,83,102,81,99,82,100,81,100,81,102,81",
- "zoneName": "MST"
- }, {
- "timezone": "America/Panama",
- "country": "PA",
- "pin": "140,113",
- "offset": -5,
- "points": "142,113,143,114,142,115,141,114,141,113,142,114,140,112,138,114,139,115,138,115,138,115,137,114,137,114,136,113,135,114,135,113,135,112,137,113,140,112,142,113",
- "zoneName": "EST"
- }, {
- "timezone": "America/Pangnirtung",
- "country": "CA",
- "pin": "159,33",
- "offset": -5,
- "points": "156,10,160,10,165,11,156,12,156,10",
- "zoneName": "EST"
- }, {
- "timezone": "America/Pangnirtung",
- "country": "CA",
- "pin": "159,33",
- "offset": -5,
- "points": "156,34,157,34,157,35,157,35,160,35,159,36,160,36,160,36,160,37,159,36,160,38,159,37,159,38,158,37,158,37,156,37,156,34",
- "zoneName": "EST"
- }, {
- "timezone": "America/Pangnirtung",
- "country": "CA",
- "pin": "159,33",
- "offset": -5,
- "points": "156,30,157,30,156,30,158,30,157,31,158,31,158,31,158,31,160,31,159,31,160,31,161,31,160,31,161,32,160,32,162,31,161,32,163,32,163,32,164,32,165,32,163,33,164,33,162,33,163,33,163,33,163,34,162,33,162,35,159,34,161,33,159,33,159,33,158,33,156,32,157,33,156,33,157,33,156,33,156,30",
- "zoneName": "EST"
- }, {
- "timezone": "America/Paramaribo",
- "country": "SR",
- "pin": "173,117",
- "offset": -3,
- "points": "175,118,175,120,174,122,172,121,172,122,171,122,169,119,170,118,171,118,171,117,175,117,175,118",
- "zoneName": "SRT"
- }, {
- "timezone": "America/Phoenix",
- "country": "US",
- "pin": "94,79",
- "offset": -7,
- "points": "99,80,99,81,96,81,91,80,91,77,91,75,91,75,92,74,95,74,95,74,96,76,99,76,99,80",
- "zoneName": "MST"
- }, {
- "timezone": "America/Port-au-Prince",
- "country": "HT",
- "pin": "150,99",
- "offset": -5,
- "points": "148,99,149,99,148,99",
- "zoneName": "EST"
- }, {
- "timezone": "America/Port_of_Spain",
- "country": "TT",
- "pin": "165,110",
- "offset": -4,
- "points": "164,110,164,110,164,110",
- "zoneName": "AST"
- }, {
- "timezone": "America/Porto_Velho",
- "country": "BR",
- "pin": "161,137",
- "offset": -4,
- "points": "167,142,166,144,164,144,160,142,159,138,157,139,158,138,160,138,161,137,162,136,163,136,165,137,165,140,167,140,167,142",
- "zoneName": "AMT"
- }, {
- "timezone": "America/Puerto_Rico",
- "country": "PR",
- "pin": "158,99",
- "offset": -4,
- "points": "158,99,158,99,158,99",
- "zoneName": "AST"
- }, {
- "timezone": "America/Rainy_River",
- "country": "CA",
- "pin": "119,57",
- "offset": -6,
- "points": "119,57,119,57,119,57",
- "zoneName": "CST"
- }, {
- "timezone": "America/Rankin_Inlet",
- "country": "CA",
- "pin": "122,38",
- "offset": -6,
- "points": "132,12,125,12,125,12,129,12,122,12,132,11,132,12",
- "zoneName": "CST"
- }, {
- "timezone": "America/Rankin_Inlet",
- "country": "CA",
- "pin": "122,38",
- "offset": -6,
- "points": "113,19,114,19,114,20,115,20,111,21,110,20,111,20,108,20,108,20,109,20,108,19,111,20,111,19,112,19,110,19,113,19",
- "zoneName": "CST"
- }, {
- "timezone": "America/Rankin_Inlet",
- "country": "CA",
- "pin": "122,38",
- "offset": -6,
- "points": "125,16,126,16,122,16,121,16,123,16,119,15,124,15,118,15,117,15,119,14,116,14,119,14,118,14,119,14,116,13,120,13,117,13,121,12,119,12,120,12,127,14,128,13,128,14,129,14,129,15,132,15,128,16,128,15,127,16,128,16,127,16,127,16,125,16",
- "zoneName": "CST"
- }, {
- "timezone": "America/Rankin_Inlet",
- "country": "CA",
- "pin": "122,38",
- "offset": -6,
- "points": "132,21,122,21,122,21,122,20,121,19,118,19,118,19,115,18,117,18,121,18,120,19,124,19,124,19,123,19,126,19,123,19,126,20,132,20,132,21",
- "zoneName": "CST"
- }, {
- "timezone": "America/Rankin_Inlet",
- "country": "CA",
- "pin": "122,38",
- "offset": -6,
- "points": "132,19,125,19,130,18,127,17,129,17,132,18,132,19",
- "zoneName": "CST"
- }, {
- "timezone": "America/Rankin_Inlet",
- "country": "CA",
- "pin": "122,38",
- "offset": -6,
- "points": "132,28,127,27,126,26,129,26,125,26,125,25,126,25,125,24,128,23,132,23,130,24,130,24,130,25,132,26,129,26,132,26,132,28",
- "zoneName": "CST"
- }, {
- "timezone": "America/Rankin_Inlet",
- "country": "CA",
- "pin": "122,38",
- "offset": -6,
- "points": "125,36,124,37,119,36,123,37,124,37,122,38,122,38,120,39,120,39,119,40,120,40,118,42,108,42,108,32,126,32,126,29,128,30,128,30,127,31,129,32,130,31,131,30,132,30,132,33,130,33,131,33,129,34,123,33,129,35,128,36,125,36",
- "zoneName": "CST"
- }, {
- "timezone": "America/Rankin_Inlet",
- "country": "CA",
- "pin": "122,38",
- "offset": -6,
- "points": "118,22,120,22,125,22,122,24,119,24,120,24,120,25,117,24,117,23,119,23,118,22",
- "zoneName": "CST"
- }, {
- "timezone": "America/Recife",
- "country": "BR",
- "pin": "202,136",
- "offset": -3,
- "points": "196,136,197,136,198,135,199,137,201,135,202,136,201,137,199,138,198,137,197,138,195,137,194,138,193,137,194,136,194,135,196,136",
- "zoneName": "BRT"
- }, {
- "timezone": "America/Regina",
- "country": "CA",
- "pin": "105,55",
- "offset": -6,
- "points": "104,57,97,57,97,52,99,51,97,51,97,42,108,42,108,48,108,49,109,50,109,57,104,57",
- "zoneName": "CST"
- }, {
- "timezone": "America/Resolute",
- "country": "CA",
- "pin": "118,21",
- "offset": -6,
- "points": "118,20,120,20,120,21,116,21,118,20",
- "zoneName": "CST"
- }, {
- "timezone": "America/Rio_Branco",
- "country": "BR",
- "pin": "156,139",
- "offset": -4,
- "points": "148,135,152,136,157,139,155,140,152,140,152,138,150,139,150,138,148,138,149,137,147,135,148,135",
- "zoneName": "ACT"
- }, {
- "timezone": "America/Santa_Isabel",
- "country": "MX",
- "pin": "90,83",
- "offset": -8,
- "points": "91,80,91,83,93,86,91,86,92,85,89,84,88,81,88,80,91,80",
- "zoneName": "PST"
- }, {
- "timezone": "America/Santarem",
- "country": "BR",
- "pin": "174,128",
- "offset": -3,
- "points": "176,125,177,126,178,127,177,127,178,129,177,130,177,132,178,134,177,136,178,138,177,138,171,138,170,137,169,134,172,128,168,126,168,123,170,122,172,122,172,121,174,121,174,123,176,123,176,125",
- "zoneName": "BRT"
- }, {
- "timezone": "America/Santiago",
- "country": "CL",
- "pin": "152,171",
- "offset": -3,
- "points": "152,199,154,198,155,198,155,201,150,201,153,201,152,200,154,201,154,201,154,201,153,200,154,199,152,199,152,199",
- "zoneName": "CLT"
- }, {
- "timezone": "America/Santiago",
- "country": "CL",
- "pin": "152,171",
- "offset": -3,
- "points": "148,193,148,195,148,196,150,195,149,197,150,197,155,198,152,198,151,200,149,199,150,199,151,198,151,198,149,198,149,199,148,199,149,198,148,198,148,197,149,198,149,197,149,198,149,198,149,198,149,197,148,196,148,197,149,197,148,197,149,197,148,197,148,197,148,197,147,197,148,196,147,196,148,195,148,195,147,196,147,195,146,195,147,195,147,194,148,194,147,193,147,194,147,193,147,193,147,193,147,192,146,192,148,192,148,191,146,191,147,191,147,191,147,191,147,190,145,190,146,189,147,189,147,190,148,188,148,189,148,188,149,188,148,188,149,187,148,186,149,184,149,184,149,184,149,183,149,183,150,183,148,183,147,182,148,180,148,177,148,177,151,172,151,165,152,162,152,157,153,155,152,150,154,149,155,152,155,153,156,157,157,157,156,158,155,159,155,162,153,164,153,167,152,168,153,173,152,174,152,175,151,176,152,179,150,180,150,183,150,184,151,186,150,187,151,187,150,187,151,188,150,188,150,190,149,191,149,193,148,193",
- "zoneName": "CLT"
- }, {
- "timezone": "America/Santo_Domingo",
- "country": "DO",
- "pin": "153,99",
- "offset": -4,
- "points": "151,100,150,100,150,99,150,97,153,98,154,98,153,98,155,99,155,100,151,100",
- "zoneName": "AST"
- }, {
- "timezone": "America/Scoresbysund",
- "country": "GL",
- "pin": "219,27",
- "offset": -1,
- "points": "216,25,219,25,218,26,220,25,219,26,220,26,220,26,219,26,220,26,219,26,220,27,217,27,216,26,216,25",
- "zoneName": "EGT"
- }, {
- "timezone": "America/Sao_Paulo",
- "country": "BR",
- "pin": "185,158",
- "offset": -2,
- "points": "181,166,179,168,178,170,180,167,179,167,179,168,176,172,176,171,176,170,175,170,173,168,172,168,171,167,170,167,173,164,175,162,175,161,174,161,175,159,176,157,178,155,179,152,177,151,176,149,179,146,180,142,181,143,182,142,182,143,184,143,186,143,186,146,189,145,195,147,194,149,195,150,195,152,193,155,193,156,192,157,188,157,183,160,182,160,183,161,182,161,183,161,182,164,181,166",
- "zoneName": "BRST"
- }, {
- "timezone": "America/Sitka",
- "country": "US",
- "pin": "62,46",
- "offset": -9,
- "points": "66,45,67,46,65,46,66,45,66,45",
- "zoneName": "AKST"
- }, {
- "timezone": "America/St_Barthelemy",
- "country": "BL",
- "pin": "163,100",
- "offset": -4,
- "points": "163,100,163,100,163,100",
- "zoneName": "AST"
- }, {
- "timezone": "America/St_Johns",
- "country": "CA",
- "pin": "177,59",
- "offset": -3.5,
- "points": "173,53,172,54,173,54,172,54,171,56,172,55,173,56,172,56,173,56,173,57,174,56,176,57,175,58,176,57,175,58,175,59,177,58,176,59,177,59,176,60,176,60,176,59,175,60,175,59,175,58,173,60,174,59,172,59,173,59,173,58,171,59,168,59,169,58,168,58,169,57,170,57,169,57,170,56,169,56,170,55,173,53",
- "zoneName": "NST"
- }, {
- "timezone": "America/Thule",
- "country": "GL",
- "pin": "154,19",
- "offset": -4,
- "points": "161,19,155,19,153,19,156,18,151,18,158,17,153,17,153,17,149,16,158,15,161,19",
- "zoneName": "AST"
- }, {
- "timezone": "America/St_Kitts",
- "country": "KN",
- "pin": "163,101",
- "offset": -4,
- "points": "163,101,163,101,163,101",
- "zoneName": "AST"
- }, {
- "timezone": "America/St_Lucia",
- "country": "LC",
- "pin": "165,106",
- "offset": -4,
- "points": "165,105,165,106,165,105",
- "zoneName": "AST"
- }, {
- "timezone": "America/St_Thomas",
- "country": "VI",
- "pin": "160,100",
- "offset": -4,
- "points": "160,99,160,99,160,99",
- "zoneName": "AST"
- }, {
- "timezone": "America/St_Vincent",
- "country": "VC",
- "pin": "165,107",
- "offset": -4,
- "points": "165,106,165,107,165,106",
- "zoneName": "AST"
- }, {
- "timezone": "America/Swift_Current",
- "country": "CA",
- "pin": "100,55",
- "offset": -6,
- "points": "100,55,100,55,100,55",
- "zoneName": "CST"
- }, {
- "timezone": "America/Tegucigalpa",
- "country": "HN",
- "pin": "129,105",
- "offset": -6,
- "points": "129,106,129,107,128,106,126,105,126,104,128,103,131,103,133,103,135,104,132,104,131,106,129,106",
- "zoneName": "CST"
- }, {
- "timezone": "America/Thunder_Bay",
- "country": "CA",
- "pin": "126,58",
- "offset": -5,
- "points": "126,58,126,58,126,58",
- "zoneName": "EST"
- }, {
- "timezone": "America/Tijuana",
- "country": "MX",
- "pin": "87,80",
- "offset": -8,
- "points": "87,80,87,80,87,80",
- "zoneName": "PST"
- }, {
- "timezone": "America/Toronto",
- "country": "CA",
- "pin": "140,64",
- "offset": -5,
- "points": "146,62,147,62,143,64,142,63,143,64,143,64,140,64,139,65,140,65,135,67,137,65,137,63,137,62,138,63,139,63,138,61,137,61,136,62,133,61,133,60,132,58,131,58,130,57,127,57,128,58,126,58,126,58,124,58,124,57,125,56,125,55,124,53,125,53,125,52,126,52,127,51,126,50,125,50,125,47,127,46,128,47,132,48,136,48,136,51,138,54,140,54,140,60,141,61,144,62,146,62",
- "zoneName": "EST"
- }, {
- "timezone": "America/Tortola",
- "country": "VG",
- "pin": "160,99",
- "offset": -4,
- "points": "160,99,160,99,160,99",
- "zoneName": "AST"
- }, {
- "timezone": "America/Vancouver",
- "country": "CA",
- "pin": "79,57",
- "offset": -8,
- "points": "72,54,76,55,79,58,76,57,77,57,76,57,75,56,74,56,75,56,72,55,73,55,72,54",
- "zoneName": "PST"
- }, {
- "timezone": "America/Vancouver",
- "country": "CA",
- "pin": "79,57",
- "offset": -8,
- "points": "63,43,62,42,59,43,57,42,83,42,83,45,78,46,79,48,86,52,86,52,85,53,88,55,88,57,79,57,81,56,81,57,80,56,81,57,80,57,80,56,79,57,79,56,79,56,79,55,79,56,78,56,78,56,78,56,78,55,77,56,77,55,77,55,76,55,77,54,76,54,76,55,75,55,76,54,75,55,74,54,75,54,73,54,74,54,73,54,74,53,73,53,72,53,73,52,74,53,74,52,75,52,73,52,73,52,73,52,72,53,72,52,72,52,72,52,71,51,73,51,71,51,71,50,70,51,69,50,70,50,69,49,69,50,69,49,70,48,69,49,70,48,70,48,69,49,69,47,67,46,65,44,63,43",
- "zoneName": "PST"
- }, {
- "timezone": "America/Whitehorse",
- "country": "CA",
- "pin": "62,41",
- "offset": -8,
- "points": "57,29,60,29,61,32,64,32,64,33,66,33,66,35,69,36,70,37,69,37,70,37,70,39,73,40,74,41,77,40,78,42,54,41,54,28,57,29",
- "zoneName": "PST"
- }, {
- "timezone": "America/Winnipeg",
- "country": "CA",
- "pin": "115,56",
- "offset": -6,
- "points": "122,58,119,57,118,56,118,57,109,57,109,50,108,49,108,48,108,42,118,42,118,43,121,43,122,45,121,46,124,45,126,46,125,47,125,50,126,50,127,51,126,52,125,52,125,53,124,53,125,55,125,56,123,57,122,58",
- "zoneName": "CST"
- }, {
- "timezone": "America/Yakutat",
- "country": "US",
- "pin": "56,42",
- "offset": -9,
- "points": "56,42,56,42,56,42",
- "zoneName": "AKST"
- }, {
- "timezone": "America/Yellowknife",
- "country": "CA",
- "pin": "91,38",
- "offset": -7,
- "points": "83,31,92,34,95,34,97,35,108,36,108,42,78,42,77,40,74,41,73,40,70,39,70,37,69,37,70,37,69,36,66,35,66,33,64,33,64,32,61,32,60,29,62,30,61,29,63,28,64,28,64,29,70,28,67,28,67,29,68,28,68,29,69,28,73,27,72,27,76,29,77,28,78,28,77,29,79,28,82,28,81,28,81,30,83,31",
- "zoneName": "MST"
- }, {
- "timezone": "America/Yellowknife",
- "country": "CA",
- "pin": "91,38",
- "offset": -7,
- "points": "88,17,90,18,88,18,89,18,87,19,86,19,86,18,83,20,79,19,84,18,88,17",
- "zoneName": "MST"
- }, {
- "timezone": "America/Yellowknife",
- "country": "CA",
- "pin": "91,38",
- "offset": -7,
- "points": "84,22,87,22,90,23,85,24,83,25,83,26,79,26,75,25,78,23,77,22,81,21,84,22",
- "zoneName": "MST"
- }, {
- "timezone": "America/Yellowknife",
- "country": "CA",
- "pin": "91,38",
- "offset": -7,
- "points": "91,19,97,20,97,21,93,22,91,21,96,20,87,20,90,20,87,20,91,20,88,20,91,19",
- "zoneName": "MST"
- }, {
- "timezone": "America/Yellowknife",
- "country": "CA",
- "pin": "91,38",
- "offset": -7,
- "points": "90,23,92,23,91,24,93,24,96,24,95,25,97,24,97,28,87,28,87,28,87,28,95,27,87,27,86,26,90,26,86,26,87,25,85,25,86,25,86,24,90,23",
- "zoneName": "MST"
- }, {
- "timezone": "Antarctica/Macquarie",
- "country": "AU",
- "pin": "471,201",
- "offset": 11,
- "points": "471,201,471,201,471,201",
- "zoneName": "MIST"
- }, {
- "timezone": "Arctic/Longyearbyen",
- "country": "SJ",
- "pin": "272,17",
- "offset": 1,
- "points": "275,14,275,14,275,15,275,14,280,16,276,16,276,17,274,18,274,19,273,19,272,18,273,18,269,17,273,17,270,17,274,17,269,17,269,17,274,16,273,16,273,16,271,16,271,15,270,16,271,16,268,16,267,16,268,16,266,15,267,15,266,15,267,15,266,15,265,15,269,14,267,14,269,15,269,15,270,14,273,15,272,14,275,14",
- "zoneName": "CET"
- }, {
- "timezone": "Arctic/Longyearbyen",
- "country": "SJ",
- "pin": "272,17",
- "offset": 1,
- "points": "285,14,288,14,283,15,275,14,277,14,276,13,278,14,277,13,281,14,282,13,282,13,282,14,285,14",
- "zoneName": "CET"
- }, {
- "timezone": "Asia/Aden",
- "country": "YE",
- "pin": "313,107",
- "offset": 3,
- "points": "313,107,310,107,309,104,310,101,314,102,314,103,318,100,322,99,324,102,323,102,322,103,313,107",
- "zoneName": "AST"
- }, {
- "timezone": "Asia/Almaty",
- "country": "KZ",
- "pin": "357,65",
- "offset": 6,
- "points": "348,66,345,68,343,68,342,66,344,65,345,64,344,63,343,61,337,60,339,58,339,58,340,57,342,57,345,55,344,54,344,52,342,52,342,51,342,51,342,51,342,49,346,48,348,48,349,50,352,50,352,51,357,49,356,50,358,51,361,55,362,54,363,55,366,54,368,56,371,56,371,57,369,58,369,60,365,59,364,62,365,62,363,62,361,63,362,63,362,65,361,66,359,65,355,66,353,65,352,65,352,66,350,66,348,66",
- "zoneName": "ALMT"
- }, {
- "timezone": "Asia/Amman",
- "country": "JO",
- "pin": "300,81",
- "offset": 2,
- "points": "302,82,303,83,302,83,300,84,299,84,299,80,301,80,304,79,305,80,301,81,302,82",
- "zoneName": "EET"
- }, {
- "timezone": "Asia/Anadyr",
- "country": "RU",
- "pin": "497,35",
- "offset": 12,
- "points": "10,32,14,33,13,34,12,34,12,34,10,34,11,34,11,35,9,35,11,36,10,36,6,35,6,34,2,34,2,33,2,33,0,33,1,34,0,35,0,29,7,31,8,33,9,33,7,32,10,32",
- "zoneName": "ANAT"
- }, {
- "timezone": "Asia/Anadyr",
- "country": "RU",
- "pin": "497,35",
- "offset": 12,
- "points": "497,35,493,35,498,36,499,38,499,39,496,38,492,39,491,38,487,39,484,37,486,37,484,36,473,35,471,34,471,33,470,33,471,32,469,31,470,30,476,30,476,29,475,28,476,28,483,28,486,30,488,29,486,28,487,28,495,28,500,29,500,35,498,35,497,35",
- "zoneName": "ANAT"
- }, {
- "timezone": "Asia/Aqtau",
- "country": "KZ",
- "pin": "320,63",
- "offset": 5,
- "points": "328,63,328,68,325,66,323,67,323,66,321,65,320,63,322,63,321,63,321,62,324,62,323,60,321,60,319,61,317,60,318,60,318,59,315,58,319,58,325,57,325,57,326,57,327,60,329,61,329,62,328,63",
- "zoneName": "AQTT"
- }, {
- "timezone": "Asia/Aqtobe",
- "country": "KZ",
- "pin": "329,55",
- "offset": 5,
- "points": "326,55,326,54,327,55,328,54,331,54,333,55,335,54,336,54,337,56,337,57,339,58,337,60,335,59,331,62,329,62,328,60,326,59,326,57,324,57,326,56,326,55",
- "zoneName": "AQTT"
- }, {
- "timezone": "Asia/Ashgabat",
- "country": "TM",
- "pin": "331,72",
- "offset": 5,
- "points": "340,74,340,75,337,76,335,75,335,74,334,74,332,73,329,72,325,73,325,71,324,71,324,70,325,70,323,69,324,68,323,67,325,66,327,68,329,68,329,67,331,66,331,66,331,66,331,66,333,66,334,68,336,68,337,70,343,72,342,73,341,73,340,74",
- "zoneName": "TMT"
- }, {
- "timezone": "Asia/Baghdad",
- "country": "IQ",
- "pin": "312,79",
- "offset": 3,
- "points": "315,83
<TRUNCATED>
[3/8] ambari git commit: AMBARI-19878 Log Search Portal time zone
selection bug (mgergely)
Posted by mg...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c7997f5/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/other/timezone/jstz-1.0.4.min.js
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/other/timezone/jstz-1.0.4.min.js b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/other/timezone/jstz-1.0.4.min.js
deleted file mode 100644
index 96e3dd8..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/other/timezone/jstz-1.0.4.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! jstz - v1.0.4 - 2012-12-12 */
-(function(e){var t=function(){"use strict";var e="s",n=function(e){var t=-e.getTimezoneOffset();return t!==null?t:0},r=function(e,t,n){var r=new Date;return e!==undefined&&r.setFullYear(e),r.setDate(n),r.setMonth(t),r},i=function(e){return n(r(e,0,2))},s=function(e){return n(r(e,5,2))},o=function(e){var t=e.getMonth()>7?s(e.getFullYear()):i(e.getFullYear()),r=n(e);return t-r!==0},u=function(){var t=i(),n=s(),r=i()-s();return r<0?t+",1":r>0?n+",1,"+e:t+",0"},a=function(){var e=u();return new t.TimeZone(t.olson.timezones[e])};return{determine:a,date_is_dst:o}}();t.TimeZone=function(e){"use strict";var n=null,r=function(){return n},i=function(){var e=t.olson.ambiguity_list[n],r=e.length,i=0,s=e[0];for(;i<r;i+=1){s=e[i];if(t.date_is_dst(t.olson.dst_start_dates[s])){n=s;return}}},s=function(){return typeof t.olson.ambiguity_list[n]!="undefined"};return n=e,s()&&i(),{name:r}},t.olson={},t.olson.timezones={"-720,0":"Etc/GMT+12","-660,0":"Pacific/Pago_Pago","-600,1":"America/Adak","-600,0":
"Pacific/Honolulu","-570,0":"Pacific/Marquesas","-540,0":"Pacific/Gambier","-540,1":"America/Anchorage","-480,1":"America/Los_Angeles","-480,0":"Pacific/Pitcairn","-420,0":"America/Phoenix","-420,1":"America/Denver","-360,0":"America/Guatemala","-360,1":"America/Chicago","-360,1,s":"Pacific/Easter","-300,0":"America/Bogota","-300,1":"America/New_York","-270,0":"America/Caracas","-240,1":"America/Halifax","-240,0":"America/Santo_Domingo","-240,1,s":"America/Santiago","-210,1":"America/St_Johns","-180,1":"America/Godthab","-180,0":"America/Argentina/Buenos_Aires","-180,1,s":"America/Montevideo","-120,0":"Etc/GMT+2","-120,1":"Etc/GMT+2","-60,1":"Atlantic/Azores","-60,0":"Atlantic/Cape_Verde","0,0":"Etc/UTC","0,1":"Europe/London","60,1":"Europe/Berlin","60,0":"Africa/Lagos","60,1,s":"Africa/Windhoek","120,1":"Asia/Beirut","120,0":"Africa/Johannesburg","180,0":"Asia/Baghdad","180,1":"Europe/Moscow","210,1":"Asia/Tehran","240,0":"Asia/Dubai","240,1":"Asia/Baku","270,0":"Asia/Kabul","300,1
":"Asia/Yekaterinburg","300,0":"Asia/Karachi","330,0":"Asia/Kolkata","345,0":"Asia/Kathmandu","360,0":"Asia/Dhaka","360,1":"Asia/Omsk","390,0":"Asia/Rangoon","420,1":"Asia/Krasnoyarsk","420,0":"Asia/Jakarta","480,0":"Asia/Shanghai","480,1":"Asia/Irkutsk","525,0":"Australia/Eucla","525,1,s":"Australia/Eucla","540,1":"Asia/Yakutsk","540,0":"Asia/Tokyo","570,0":"Australia/Darwin","570,1,s":"Australia/Adelaide","600,0":"Australia/Brisbane","600,1":"Asia/Vladivostok","600,1,s":"Australia/Sydney","630,1,s":"Australia/Lord_Howe","660,1":"Asia/Kamchatka","660,0":"Pacific/Noumea","690,0":"Pacific/Norfolk","720,1,s":"Pacific/Auckland","720,0":"Pacific/Tarawa","765,1,s":"Pacific/Chatham","780,0":"Pacific/Tongatapu","780,1,s":"Pacific/Apia","840,0":"Pacific/Kiritimati"},t.olson.dst_start_dates=function(){"use strict";var e=new Date(2010,6,15,1,0,0,0);return{"America/Denver":new Date(2011,2,13,3,0,0,0),"America/Mazatlan":new Date(2011,3,3,3,0,0,0),"America/Chicago":new Date(2011,2,13,3,0,0,0),"A
merica/Mexico_City":new Date(2011,3,3,3,0,0,0),"America/Asuncion":new Date(2012,9,7,3,0,0,0),"America/Santiago":new Date(2012,9,3,3,0,0,0),"America/Campo_Grande":new Date(2012,9,21,5,0,0,0),"America/Montevideo":new Date(2011,9,2,3,0,0,0),"America/Sao_Paulo":new Date(2011,9,16,5,0,0,0),"America/Los_Angeles":new Date(2011,2,13,8,0,0,0),"America/Santa_Isabel":new Date(2011,3,5,8,0,0,0),"America/Havana":new Date(2012,2,10,2,0,0,0),"America/New_York":new Date(2012,2,10,7,0,0,0),"Asia/Beirut":new Date(2011,2,27,1,0,0,0),"Europe/Helsinki":new Date(2011,2,27,4,0,0,0),"Europe/Istanbul":new Date(2011,2,28,5,0,0,0),"Asia/Damascus":new Date(2011,3,1,2,0,0,0),"Asia/Jerusalem":new Date(2011,3,1,6,0,0,0),"Asia/Gaza":new Date(2009,2,28,0,30,0,0),"Africa/Cairo":new Date(2009,3,25,0,30,0,0),"Pacific/Auckland":new Date(2011,8,26,7,0,0,0),"Pacific/Fiji":new Date(2010,11,29,23,0,0,0),"America/Halifax":new Date(2011,2,13,6,0,0,0),"America/Goose_Bay":new Date(2011,2,13,2,1,0,0),"America/Miquelon":new Date
(2011,2,13,5,0,0,0),"America/Godthab":new Date(2011,2,27,1,0,0,0),"Europe/Moscow":e,"Asia/Yekaterinburg":e,"Asia/Omsk":e,"Asia/Krasnoyarsk":e,"Asia/Irkutsk":e,"Asia/Yakutsk":e,"Asia/Vladivostok":e,"Asia/Kamchatka":e,"Europe/Minsk":e,"Australia/Perth":new Date(2008,10,1,1,0,0,0)}}(),t.olson.ambiguity_list={"America/Denver":["America/Denver","America/Mazatlan"],"America/Chicago":["America/Chicago","America/Mexico_City"],"America/Santiago":["America/Santiago","America/Asuncion","America/Campo_Grande"],"America/Montevideo":["America/Montevideo","America/Sao_Paulo"],"Asia/Beirut":["Asia/Beirut","Europe/Helsinki","Europe/Istanbul","Asia/Damascus","Asia/Jerusalem","Asia/Gaza"],"Pacific/Auckland":["Pacific/Auckland","Pacific/Fiji"],"America/Los_Angeles":["America/Los_Angeles","America/Santa_Isabel"],"America/New_York":["America/Havana","America/New_York"],"America/Halifax":["America/Goose_Bay","America/Halifax"],"America/Godthab":["America/Miquelon","America/Godthab"],"Asia/Dubai":["Europe/
Moscow"],"Asia/Dhaka":["Asia/Yekaterinburg"],"Asia/Jakarta":["Asia/Omsk"],"Asia/Shanghai":["Asia/Krasnoyarsk","Australia/Perth"],"Asia/Tokyo":["Asia/Irkutsk"],"Australia/Brisbane":["Asia/Yakutsk"],"Pacific/Noumea":["Asia/Vladivostok"],"Pacific/Tarawa":["Asia/Kamchatka"],"Africa/Johannesburg":["Asia/Gaza","Africa/Cairo"],"Asia/Baghdad":["Europe/Minsk"]},typeof exports!="undefined"?exports.jstz=t:e.jstz=t})(this);
\ No newline at end of file