Created
February 27, 2013 04:18
-
-
Save jwoertink/5045031 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| var timezones = function() { | |
| zones = [ | |
| { value: "Abu Dhabi", label: "Abu Dhabi" }, | |
| { value: "Adelaide", label: "Adelaide" }, | |
| { value: "Alaska", label: "Alaska" }, | |
| { value: "Almaty", label: "Almaty" }, | |
| { value: "America/Los_Angeles", label: "America/Los_Angeles" }, | |
| { value: "American Samoa", label: "American Samoa" }, | |
| { value: "Amsterdam", label: "Amsterdam" }, | |
| { value: "Arizona", label: "Arizona" }, | |
| { value: "Astana", label: "Astana" }, | |
| { value: "Athens", label: "Athens" }, | |
| { value: "Atlantic Time (Canada)", label: "Atlantic Time (Canada)" }, | |
| { value: "Auckland", label: "Auckland" }, | |
| { value: "Azores", label: "Azores" }, | |
| { value: "Baghdad", label: "Baghdad" }, | |
| { value: "Baku", label: "Baku" }, | |
| { value: "Bangkok", label: "Bangkok" }, | |
| { value: "Beijing", label: "Beijing" }, | |
| { value: "Belgrade", label: "Belgrade" }, | |
| { value: "Berlin", label: "Berlin" }, | |
| { value: "Bern", label: "Bern" }, | |
| { value: "Bogota", label: "Bogota" }, | |
| { value: "Brasilia", label: "Brasilia" }, | |
| { value: "Bratislava", label: "Bratislava" }, | |
| { value: "Brisbane", label: "Brisbane" }, | |
| { value: "Brussels", label: "Brussels" }, | |
| { value: "Bucharest", label: "Bucharest" }, | |
| { value: "Budapest", label: "Budapest" }, | |
| { value: "Buenos Aires", label: "Buenos Aires" }, | |
| { value: "Cairo", label: "Cairo" }, | |
| { value: "Canberra", label: "Canberra" }, | |
| { value: "Cape Verde Is.", label: "Cape Verde Is." }, | |
| { value: "Caracas", label: "Caracas" }, | |
| { value: "Casablanca", label: "Casablanca" }, | |
| { value: "Central America", label: "Central America" }, | |
| { value: "Central Time (US & Canada)", label: "Central Time (US & Canada)" }, | |
| { value: "Chennai", label: "Chennai" }, | |
| { value: "Chihuahua", label: "Chihuahua" }, | |
| { value: "Chongqing", label: "Chongqing" }, | |
| { value: "Copenhagen", label: "Copenhagen" }, | |
| { value: "Darwin", label: "Darwin" }, | |
| { value: "Dhaka", label: "Dhaka" }, | |
| { value: "Dublin", label: "Dublin" }, | |
| { value: "Eastern Time (US & Canada)", label: "Eastern Time (US & Canada)" }, | |
| { value: "Edinburgh", label: "Edinburgh" }, | |
| { value: "Ekaterinburg", label: "Ekaterinburg" }, | |
| { value: "Fiji", label: "Fiji" }, | |
| { value: "Georgetown", label: "Georgetown" }, | |
| { value: "Greenland", label: "Greenland" }, | |
| { value: "Guadalajara", label: "Guadalajara" }, | |
| { value: "Guam", label: "Guam" }, | |
| { value: "Hanoi", label: "Hanoi" }, | |
| { value: "Harare", label: "Harare" }, | |
| { value: "Hawaii", label: "Hawaii" }, | |
| { value: "Helsinki", label: "Helsinki" }, | |
| { value: "Hobart", label: "Hobart" }, | |
| { value: "Hong Kong", label: "Hong Kong" }, | |
| { value: "Indiana (East)", label: "Indiana (East)" }, | |
| { value: "International Date Line West", label: "International Date Line West" }, | |
| { value: "Irkutsk", label: "Irkutsk" }, | |
| { value: "Islamabad", label: "Islamabad" }, | |
| { value: "Istanbul", label: "Istanbul" }, | |
| { value: "Jakarta", label: "Jakarta" }, | |
| { value: "Jerusalem", label: "Jerusalem" }, | |
| { value: "Kabul", label: "Kabul" }, | |
| { value: "Kamchatka", label: "Kamchatka" }, | |
| { value: "Karachi", label: "Karachi" }, | |
| { value: "Kathmandu", label: "Kathmandu" }, | |
| { value: "Kolkata", label: "Kolkata" }, | |
| { value: "Krasnoyarsk", label: "Krasnoyarsk" }, | |
| { value: "Kuala Lumpur", label: "Kuala Lumpur" }, | |
| { value: "Kuwait", label: "Kuwait" }, | |
| { value: "Kyiv", label: "Kyiv" }, | |
| { value: "La Paz", label: "La Paz" }, | |
| { value: "Lima", label: "Lima" }, | |
| { value: "Lisbon", label: "Lisbon" }, | |
| { value: "Ljubljana", label: "Ljubljana" }, | |
| { value: "London", label: "London" }, | |
| { value: "Madrid", label: "Madrid" }, | |
| { value: "Magadan", label: "Magadan" }, | |
| { value: "Marshall Is.", label: "Marshall Is." }, | |
| { value: "Mazatlan", label: "Mazatlan" }, | |
| { value: "Melbourne", label: "Melbourne" }, | |
| { value: "Mexico City", label: "Mexico City" }, | |
| { value: "Mid-Atlantic", label: "Mid-Atlantic" }, | |
| { value: "Midway Island", label: "Midway Island" }, | |
| { value: "Minsk", label: "Minsk" }, | |
| { value: "Monrovia", label: "Monrovia" }, | |
| { value: "Monterrey", label: "Monterrey" }, | |
| { value: "Moscow", label: "Moscow" }, | |
| { value: "Mountain Time (US & Canada)", label: "Mountain Time (US & Canada)" }, | |
| { value: "Mumbai", label: "Mumbai" }, | |
| { value: "Muscat", label: "Muscat" }, | |
| { value: "Nairobi", label: "Nairobi" }, | |
| { value: "New Caledonia", label: "New Caledonia" }, | |
| { value: "New Delhi", label: "New Delhi" }, | |
| { value: "Newfoundland", label: "Newfoundland" }, | |
| { value: "Novosibirsk", label: "Novosibirsk" }, | |
| { value: "Nuku'alofa", label: "Nuku'alofa" }, | |
| { value: "Osaka", label: "Osaka" }, | |
| { value: "Pacific Time (US & Canada)", label: "Pacific Time (US & Canada)" }, | |
| { value: "Paris", label: "Paris" }, | |
| { value: "Perth", label: "Perth" }, | |
| { value: "Port Moresby", label: "Port Moresby" }, | |
| { value: "Prague", label: "Prague" }, | |
| { value: "Pretoria", label: "Pretoria" }, | |
| { value: "Quito", label: "Quito" }, | |
| { value: "Rangoon", label: "Rangoon" }, | |
| { value: "Riga", label: "Riga" }, | |
| { value: "Riyadh", label: "Riyadh" }, | |
| { value: "Rome", label: "Rome" }, | |
| { value: "Samoa", label: "Samoa" }, | |
| { value: "Santiago", label: "Santiago" }, | |
| { value: "Sapporo", label: "Sapporo" }, | |
| { value: "Sarajevo", label: "Sarajevo" }, | |
| { value: "Saskatchewan", label: "Saskatchewan" }, | |
| { value: "Seoul", label: "Seoul" }, | |
| { value: "Singapore", label: "Singapore" }, | |
| { value: "Skopje", label: "Skopje" }, | |
| { value: "Sofia", label: "Sofia" }, | |
| { value: "Solomon Is.", label: "Solomon Is." }, | |
| { value: "Sri Jayawardenepura", label: "Sri Jayawardenepura" }, | |
| { value: "St. Petersburg", label: "St. Petersburg" }, | |
| { value: "Stockholm", label: "Stockholm" }, | |
| { value: "Sydney", label: "Sydney" }, | |
| { value: "Taipei", label: "Taipei" }, | |
| { value: "Tallinn", label: "Tallinn" }, | |
| { value: "Tashkent", label: "Tashkent" }, | |
| { value: "Tbilisi", label: "Tbilisi" }, | |
| { value: "Tehran", label: "Tehran" }, | |
| { value: "Tijuana", label: "Tijuana" }, | |
| { value: "Tokelau Is.", label: "Tokelau Is." }, | |
| { value: "Tokyo", label: "Tokyo" }, | |
| { value: "UTC", label: "UTC" }, | |
| { value: "Ulaan Bataar", label: "Ulaan Bataar" }, | |
| { value: "Urumqi", label: "Urumqi" }, | |
| { value: "Vienna", label: "Vienna" }, | |
| { value: "Vilnius", label: "Vilnius" }, | |
| { value: "Vladivostok", label: "Vladivostok" }, | |
| { value: "Volgograd", label: "Volgograd" }, | |
| { value: "Warsaw", label: "Warsaw" }, | |
| { value: "Wellington", label: "Wellington" }, | |
| { value: "West Central Africa", label: "West Central Africa" }, | |
| { value: "Yakutsk", label: "Yakutsk" }, | |
| { value: "Yerevan", label: "Yerevan" }, | |
| { value: "Zagreb", label: "Zagreb" } | |
| ]; | |
| return zones; | |
| }; | |
| var currentTimeZone = function() { | |
| var date = new Date(); | |
| var offset = (date.getTimezoneOffset() / 60); | |
| numbers = offset.toString().split('.') | |
| hh = parseInt(numbers[0], 10); | |
| hh = Math.abs(hh) * (hh < 0 ? 1 : -1).toString(); | |
| mm = numbers.length > 1 ? (parseInt(numbers[1], 10) * 6 / 10).toString() : '00'; | |
| zone = { value: [hh, mm].join(''), label: getTimezoneName()}; | |
| return zone; | |
| }; | |
| var getTimezoneName = function() { | |
| tmSummer = new Date(Date.UTC(2005, 6, 30, 0, 0, 0, 0)); | |
| so = -1 * tmSummer.getTimezoneOffset(); | |
| tmWinter = new Date(Date.UTC(2005, 12, 30, 0, 0, 0, 0)); | |
| wo = -1 * tmWinter.getTimezoneOffset(); | |
| if (-660 == so && -660 == wo) return 'Pacific/Midway'; | |
| if (-600 == so && -600 == wo) return 'Pacific/Tahiti'; | |
| if (-570 == so && -570 == wo) return 'Pacific/Marquesas'; | |
| if (-540 == so && -600 == wo) return 'America/Adak'; | |
| if (-540 == so && -540 == wo) return 'Pacific/Gambier'; | |
| if (-480 == so && -540 == wo) return 'US/Alaska'; | |
| if (-480 == so && -480 == wo) return 'Pacific/Pitcairn'; | |
| if (-420 == so && -480 == wo) return 'US/Pacific'; | |
| if (-420 == so && -420 == wo) return 'US/Arizona'; | |
| if (-360 == so && -420 == wo) return 'US/Mountain'; | |
| if (-360 == so && -360 == wo) return 'America/Guatemala'; | |
| if (-360 == so && -300 == wo) return 'Pacific/Easter'; | |
| if (-300 == so && -360 == wo) return 'US/Central'; | |
| if (-300 == so && -300 == wo) return 'America/Bogota'; | |
| if (-240 == so && -300 == wo) return 'US/Eastern'; | |
| if (-240 == so && -240 == wo) return 'America/Caracas'; | |
| if (-240 == so && -180 == wo) return 'America/Santiago'; | |
| if (-180 == so && -240 == wo) return 'Canada/Atlantic'; | |
| if (-180 == so && -180 == wo) return 'America/Montevideo'; | |
| if (-180 == so && -120 == wo) return 'America/Sao_Paulo'; | |
| if (-150 == so && -210 == wo) return 'America/St_Johns'; | |
| if (-120 == so && -180 == wo) return 'America/Godthab'; | |
| if (-120 == so && -120 == wo) return 'America/Noronha'; | |
| if (-60 == so && -60 == wo) return 'Atlantic/Cape_Verde'; | |
| if (0 == so && -60 == wo) return 'Atlantic/Azores'; | |
| if (0 == so && 0 == wo) return 'Africa/Casablanca'; | |
| if (60 == so && 0 == wo) return 'Europe/London'; | |
| if (60 == so && 60 == wo) return 'Africa/Algiers'; | |
| if (60 == so && 120 == wo) return 'Africa/Windhoek'; | |
| if (120 == so && 60 == wo) return 'Europe/Amsterdam'; | |
| if (120 == so && 120 == wo) return 'Africa/Harare'; | |
| if (180 == so && 120 == wo) return 'Europe/Athens'; | |
| if (180 == so && 180 == wo) return 'Africa/Nairobi'; | |
| if (240 == so && 180 == wo) return 'Europe/Moscow'; | |
| if (240 == so && 240 == wo) return 'Asia/Dubai'; | |
| if (270 == so && 210 == wo) return 'Asia/Tehran'; | |
| if (270 == so && 270 == wo) return 'Asia/Kabul'; | |
| if (300 == so && 240 == wo) return 'Asia/Baku'; | |
| if (300 == so && 300 == wo) return 'Asia/Karachi'; | |
| if (330 == so && 330 == wo) return 'Asia/Calcutta'; | |
| if (345 == so && 345 == wo) return 'Asia/Katmandu'; | |
| if (360 == so && 300 == wo) return 'Asia/Yekaterinburg'; | |
| if (360 == so && 360 == wo) return 'Asia/Colombo'; | |
| if (390 == so && 390 == wo) return 'Asia/Rangoon'; | |
| if (420 == so && 360 == wo) return 'Asia/Almaty'; | |
| if (420 == so && 420 == wo) return 'Asia/Bangkok'; | |
| if (480 == so && 420 == wo) return 'Asia/Krasnoyarsk'; | |
| if (480 == so && 480 == wo) return 'Australia/Perth'; | |
| if (540 == so && 480 == wo) return 'Asia/Irkutsk'; | |
| if (540 == so && 540 == wo) return 'Asia/Tokyo'; | |
| if (570 == so && 570 == wo) return 'Australia/Darwin'; | |
| if (570 == so && 630 == wo) return 'Australia/Adelaide'; | |
| if (600 == so && 540 == wo) return 'Asia/Yakutsk'; | |
| if (600 == so && 600 == wo) return 'Australia/Brisbane'; | |
| if (600 == so && 660 == wo) return 'Australia/Sydney'; | |
| if (630 == so && 660 == wo) return 'Australia/Lord_Howe'; | |
| if (660 == so && 600 == wo) return 'Asia/Vladivostok'; | |
| if (660 == so && 660 == wo) return 'Pacific/Guadalcanal'; | |
| if (690 == so && 690 == wo) return 'Pacific/Norfolk'; | |
| if (720 == so && 660 == wo) return 'Asia/Magadan'; | |
| if (720 == so && 720 == wo) return 'Pacific/Fiji'; | |
| if (720 == so && 780 == wo) return 'Pacific/Auckland'; | |
| if (765 == so && 825 == wo) return 'Pacific/Chatham'; | |
| if (780 == so && 780 == wo) return 'Pacific/Enderbury' | |
| if (840 == so && 840 == wo) return 'Pacific/Kiritimati'; | |
| return 'US/Pacific'; | |
| }; | |
| var offsetByDate = function(date) { | |
| if(typeof date == 'undefined' || date == '') { | |
| offset = "+0000"; | |
| } else { | |
| var d = Date.parse(date); | |
| var offset = d.getUTCOffset(); | |
| } | |
| return offset; | |
| }; | |
| var tzMap = function() { | |
| hash = { | |
| "+0400": "Abu Dhabi", | |
| "+0930": "Adelaide", | |
| "-0900": "Alaska", | |
| "+0600": "Almaty", | |
| "-0800": "America/Los_Angeles", | |
| "-1100": "American Samoa", | |
| "+0100": "Amsterdam", | |
| "-0700": "Arizona", | |
| "+0600": "Astana", | |
| "+0200": "Athens", | |
| "-0400": "Atlantic Time (Canada)", | |
| "+1200": "Auckland", | |
| "-0100": "Azores", | |
| "+0300": "Baghdad", | |
| "+0400": "Baku", | |
| "+0700": "Bangkok", | |
| "+0800": "Beijing", | |
| "+0100": "Belgrade", | |
| "+0100": "Berlin", | |
| "+0100": "Bern", | |
| "-0500": "Bogota", | |
| "-0300": "Brasilia", | |
| "+0100": "Bratislava", | |
| "+1000": "Brisbane", | |
| "+0100": "Brussels", | |
| "+0200": "Bucharest", | |
| "+0100": "Budapest", | |
| "-0300": "Buenos Aires", | |
| "+0200": "Cairo", | |
| "+1000": "Canberra", | |
| "-0100": "Cape Verde Is.", | |
| "-0430": "Caracas", | |
| "+0000": "Casablanca", | |
| "-0600": "Central America", | |
| "-0600": "Central Time (US & Canada)", | |
| "+0530": "Chennai", | |
| "-0700": "Chihuahua", | |
| "+0800": "Chongqing", | |
| "+0100": "Copenhagen", | |
| "+0930": "Darwin", | |
| "+0600": "Dhaka", | |
| "+0000": "Dublin", | |
| "-0500": "Eastern Time (US & Canada)", | |
| "+0000": "Edinburgh", | |
| "+0600": "Ekaterinburg", | |
| "+1200": "Fiji", | |
| "-0400": "Georgetown", | |
| "-0300": "Greenland", | |
| "-0600": "Guadalajara", | |
| "+1000": "Guam", | |
| "+0700": "Hanoi", | |
| "+0200": "Harare", | |
| "-1000": "Hawaii", | |
| "+0200": "Helsinki", | |
| "+1000": "Hobart", | |
| "+0800": "Hong Kong", | |
| "-0500": "Indiana (East)", | |
| "-1100": "International Date Line West", | |
| "+0900": "Irkutsk", | |
| "+0500": "Islamabad", | |
| "+0200": "Istanbul", | |
| "+0700": "Jakarta", | |
| "+0200": "Jerusalem", | |
| "+0430": "Kabul", | |
| "+1200": "Kamchatka", | |
| "+0500": "Karachi", | |
| "+0545": "Kathmandu", | |
| "+0530": "Kolkata", | |
| "+0800": "Krasnoyarsk", | |
| "+0800": "Kuala Lumpur", | |
| "+0300": "Kuwait", | |
| "+0200": "Kyiv", | |
| "-0400": "La Paz", | |
| "-0500": "Lima", | |
| "+0000": "Lisbon", | |
| "+0100": "Ljubljana", | |
| "+0000": "London", | |
| "+0100": "Madrid", | |
| "+1200": "Magadan", | |
| "+1200": "Marshall Is.", | |
| "-0700": "Mazatlan", | |
| "+1000": "Melbourne", | |
| "-0600": "Mexico City", | |
| "-0200": "Mid-Atlantic", | |
| "-1100": "Midway Island", | |
| "+0300": "Minsk", | |
| "+0000": "Monrovia", | |
| "-0600": "Monterrey", | |
| "+0400": "Moscow", | |
| "-0700": "Mountain Time (US & Canada)", | |
| "+0530": "Mumbai", | |
| "+0400": "Muscat", | |
| "+0300": "Nairobi", | |
| "+1100": "New Caledonia", | |
| "+0530": "New Delhi", | |
| "-0330": "Newfoundland", | |
| "+0700": "Novosibirsk", | |
| "+1300": "Nuku'alofa", | |
| "+0900": "Osaka", | |
| "-0800": "Pacific Time (US & Canada)", | |
| "+0100": "Paris", | |
| "+0800": "Perth", | |
| "+1000": "Port Moresby", | |
| "+0100": "Prague", | |
| "+0200": "Pretoria", | |
| "-0500": "Quito", | |
| "+0630": "Rangoon", | |
| "+0200": "Riga", | |
| "+0300": "Riyadh", | |
| "+0100": "Rome", | |
| "+1300": "Samoa", | |
| "-0400": "Santiago", | |
| "+0900": "Sapporo", | |
| "+0100": "Sarajevo", | |
| "-0600": "Saskatchewan", | |
| "+0900": "Seoul", | |
| "+0800": "Singapore", | |
| "+0100": "Skopje", | |
| "+0200": "Sofia", | |
| "+1200": "Solomon Is.", | |
| "+0530": "Sri Jayawardenepura", | |
| "+0400": "St. Petersburg", | |
| "+0100": "Stockholm", | |
| "+1000": "Sydney", | |
| "+0800": "Taipei", | |
| "+0200": "Tallinn", | |
| "+0500": "Tashkent", | |
| "+0400": "Tbilisi", | |
| "+0330": "Tehran", | |
| "-0800": "Tijuana", | |
| "+1300": "Tokelau Is.", | |
| "+0900": "Tokyo", | |
| "+0000": "UTC", | |
| "+0800": "Ulaan Bataar", | |
| "+0800": "Urumqi", | |
| "+0100": "Vienna", | |
| "+0200": "Vilnius", | |
| "+1100": "Vladivostok", | |
| "+0400": "Volgograd", | |
| "+0100": "Warsaw", | |
| "+1200": "Wellington", | |
| "+0100": "West Central Africa", | |
| "+1000": "Yakutsk", | |
| "+0400": "Yerevan", | |
| "+0100": "Zagreb", | |
| }; | |
| return hash; | |
| }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| (function() { | |
| var datetimePicker; | |
| $(function() { | |
| return datetimePicker(); | |
| }); | |
| datetimePicker = function() { | |
| var end_zone, ends, start_zone, starts; | |
| starts = $('.datetime.starts_at'); | |
| start_zone = tzMap()[offsetByDate(starts.val())]; | |
| ends = $('.datetime.ends_at'); | |
| end_zone = tzMap()[offsetByDate(ends.val())]; | |
| starts.datetimepicker({ | |
| timeFormat: 'HH:mm z', | |
| dateFormat: 'yy-mm-dd', | |
| showTimezone: true, | |
| timezone: start_zone, | |
| timezoneList: timezones(), | |
| stepMinute: 15, | |
| onClose: function(dateText, inst) { | |
| var end_date, start_date; | |
| if (ends.val() !== '') { | |
| start_date = starts.datetimepicker('getDate'); | |
| end_date = ends.datetimepicker('getDate'); | |
| if (start_date > end_date) { | |
| return ends.datetimepicker('setDate', start_date); | |
| } | |
| } else { | |
| } | |
| }, | |
| onSelect: function(selectedDateTime) { | |
| return ends.datetimepicker('option', 'minDate', starts.datetimepicker('getDate')); | |
| } | |
| }); | |
| return ends.datetimepicker({ | |
| timeFormat: 'HH:mm z', | |
| dateFormat: 'yy-mm-dd', | |
| showTimezone: true, | |
| timezone: end_zone, | |
| timezoneList: timezones(), | |
| stepMinute: 15, | |
| onClose: function(dateText, inst) { | |
| var end_date, start_date; | |
| if (starts.val() !== '') { | |
| start_date = starts.datetimepicker('getDate'); | |
| end_date = ends.datetimepicker('getDate'); | |
| if (start_date > end_date) { | |
| return starts.datetimepicker('setDate', end_date); | |
| } | |
| } else { | |
| return starts.val(dateText); | |
| } | |
| }, | |
| onSelect: function(selectedDateTime) { | |
| return starts.datetimepicker('option', 'maxDate', ends.datetimepicker('getDate')); | |
| } | |
| }); | |
| }; | |
| }).call(this); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment