home | career | drupal | java | mac | mysql | perl | php | scala | uml | unix

Drupal example source code file (timezone.js)

This example Drupal source code file (timezone.js) is included in the DevDaily.com "Drupal Source Code Warehouse" project. The intent of this project is to help you "Learn Drupal by Example".

PHP - Drupal tags/keywords

12, 60, data, date, datestring, function, if, isdaylightsavingtime, matches, new, offsetjul, offsetnow, php, var

The timezone.js Drupal example source code

// $Id: timezone.js,v 1.7 2009/08/31 05:51:08 dries Exp $
(function ($) {

/**
 * Set the client's system time zone as default values of form fields.
 */
Drupal.behaviors.setTimezone = {
  attach: function (context, settings) {
    $('select.timezone-detect', context).once('timezone', function () {
      var dateString = Date();
      // In some client environments, date strings include a time zone
      // abbreviation, between 3 and 5 letters enclosed in parentheses,
      // which can be interpreted by PHP.
      var matches = dateString.match(/\(([A-Z]{3,5})\)/);
      var abbreviation = matches ? matches[1] : 0;

      // For all other client environments, the abbreviation is set to "0"
      // and the current offset from UTC and daylight saving time status are
      // used to guess the time zone.
      var dateNow = new Date();
      var offsetNow = dateNow.getTimezoneOffset() * -60;

      // Use January 1 and July 1 as test dates for determining daylight
      // saving time status by comparing their offsets.
      var dateJan = new Date(dateNow.getFullYear(), 0, 1, 12, 0, 0, 0);
      var dateJul = new Date(dateNow.getFullYear(), 6, 1, 12, 0, 0, 0);
      var offsetJan = dateJan.getTimezoneOffset() * -60;
      var offsetJul = dateJul.getTimezoneOffset() * -60;

      var isDaylightSavingTime;
      // If the offset from UTC is identical on January 1 and July 1,
      // assume daylight saving time is not used in this time zone.
      if (offsetJan == offsetJul) {
        isDaylightSavingTime = '';
      }
      // If the maximum annual offset is equivalent to the current offset,
      // assume daylight saving time is in effect.
      else if (Math.max(offsetJan, offsetJul) == offsetNow) {
        isDaylightSavingTime = 1;
      }
      // Otherwise, assume daylight saving time is not in effect.
      else {
        isDaylightSavingTime = 0;
      }

      // Submit request to the system/timezone callback and set the form field
      // to the response time zone. The client date is passed to the callback
      // for debugging purposes. Submit a synchronous request to avoid database
      // errors associated with concurrent requests during install.
      var path = 'system/timezone/' + abbreviation + '/' + offsetNow + '/' + isDaylightSavingTime;
      var element = this;
      $.ajax({
        async: false,
        url: settings.basePath,
        data: { q: path, date: dateString },
        dataType: 'json',
        success: function (data) {
          if (data) {
            $(element).val(data);
          }
        }
      });
    });
  }
};

})(jQuery);

Other Drupal examples (source code examples)

Here is a short list of links related to this Drupal timezone.js source code file:

new blog posts

"Drupal" is a registered trademark of Dries Buytaert.

my drupal tutorials and examples  

Copyright 1998-2016 Alvin Alexander, alvinalexander.com
All Rights Reserved.

Beginning in 2016, a portion of the proceeds from pages under the '/drupal-code-examples/' URI will be donated to charity.