annotate misc/timezone.js @ 13:134d4b2e75f6

updated quicktabs and google analytics modules
author danieleb <danielebarchiesi@me.com>
date Tue, 29 Oct 2013 13:48:59 +0000
parents ff03f76ab3fe
children
rev   line source
danielebarchiesi@0 1 (function ($) {
danielebarchiesi@0 2
danielebarchiesi@0 3 /**
danielebarchiesi@0 4 * Set the client's system time zone as default values of form fields.
danielebarchiesi@0 5 */
danielebarchiesi@0 6 Drupal.behaviors.setTimezone = {
danielebarchiesi@0 7 attach: function (context, settings) {
danielebarchiesi@0 8 $('select.timezone-detect', context).once('timezone', function () {
danielebarchiesi@0 9 var dateString = Date();
danielebarchiesi@0 10 // In some client environments, date strings include a time zone
danielebarchiesi@0 11 // abbreviation, between 3 and 5 letters enclosed in parentheses,
danielebarchiesi@0 12 // which can be interpreted by PHP.
danielebarchiesi@0 13 var matches = dateString.match(/\(([A-Z]{3,5})\)/);
danielebarchiesi@0 14 var abbreviation = matches ? matches[1] : 0;
danielebarchiesi@0 15
danielebarchiesi@0 16 // For all other client environments, the abbreviation is set to "0"
danielebarchiesi@0 17 // and the current offset from UTC and daylight saving time status are
danielebarchiesi@0 18 // used to guess the time zone.
danielebarchiesi@0 19 var dateNow = new Date();
danielebarchiesi@0 20 var offsetNow = dateNow.getTimezoneOffset() * -60;
danielebarchiesi@0 21
danielebarchiesi@0 22 // Use January 1 and July 1 as test dates for determining daylight
danielebarchiesi@0 23 // saving time status by comparing their offsets.
danielebarchiesi@0 24 var dateJan = new Date(dateNow.getFullYear(), 0, 1, 12, 0, 0, 0);
danielebarchiesi@0 25 var dateJul = new Date(dateNow.getFullYear(), 6, 1, 12, 0, 0, 0);
danielebarchiesi@0 26 var offsetJan = dateJan.getTimezoneOffset() * -60;
danielebarchiesi@0 27 var offsetJul = dateJul.getTimezoneOffset() * -60;
danielebarchiesi@0 28
danielebarchiesi@0 29 var isDaylightSavingTime;
danielebarchiesi@0 30 // If the offset from UTC is identical on January 1 and July 1,
danielebarchiesi@0 31 // assume daylight saving time is not used in this time zone.
danielebarchiesi@0 32 if (offsetJan == offsetJul) {
danielebarchiesi@0 33 isDaylightSavingTime = '';
danielebarchiesi@0 34 }
danielebarchiesi@0 35 // If the maximum annual offset is equivalent to the current offset,
danielebarchiesi@0 36 // assume daylight saving time is in effect.
danielebarchiesi@0 37 else if (Math.max(offsetJan, offsetJul) == offsetNow) {
danielebarchiesi@0 38 isDaylightSavingTime = 1;
danielebarchiesi@0 39 }
danielebarchiesi@0 40 // Otherwise, assume daylight saving time is not in effect.
danielebarchiesi@0 41 else {
danielebarchiesi@0 42 isDaylightSavingTime = 0;
danielebarchiesi@0 43 }
danielebarchiesi@0 44
danielebarchiesi@0 45 // Submit request to the system/timezone callback and set the form field
danielebarchiesi@0 46 // to the response time zone. The client date is passed to the callback
danielebarchiesi@0 47 // for debugging purposes. Submit a synchronous request to avoid database
danielebarchiesi@0 48 // errors associated with concurrent requests during install.
danielebarchiesi@0 49 var path = 'system/timezone/' + abbreviation + '/' + offsetNow + '/' + isDaylightSavingTime;
danielebarchiesi@0 50 var element = this;
danielebarchiesi@0 51 $.ajax({
danielebarchiesi@0 52 async: false,
danielebarchiesi@0 53 url: settings.basePath,
danielebarchiesi@0 54 data: { q: path, date: dateString },
danielebarchiesi@0 55 dataType: 'json',
danielebarchiesi@0 56 success: function (data) {
danielebarchiesi@0 57 if (data) {
danielebarchiesi@0 58 $(element).val(data);
danielebarchiesi@0 59 }
danielebarchiesi@0 60 }
danielebarchiesi@0 61 });
danielebarchiesi@0 62 });
danielebarchiesi@0 63 }
danielebarchiesi@0 64 };
danielebarchiesi@0 65
danielebarchiesi@0 66 })(jQuery);