/** * Attaches the calendar behavior to all required fields */ (function($) { function makeFocusHandler(e) { if (!$(this).hasClass('date-popup-init')) { var datePopup = e.data; // Explicitely filter the methods we accept. switch (datePopup.func) { case 'datepicker': $(this) .datepicker(datePopup.settings) .addClass('date-popup-init'); $(this).click(function(){ $(this).focus(); }); if (datePopup.settings.syncEndDate) { $('.start-date-wrapper').each(function(){ var start_date_wrapper = this; $(this).find('input:eq(0)').change(function(){ $(start_date_wrapper).next('.end-date-wrapper').find('input:eq(0)').val($(this).val()); }); }); } break; case 'timeEntry': $(this) .timeEntry(datePopup.settings) .addClass('date-popup-init'); $(this).click(function(){ $(this).focus(); }); break; case 'timepicker': // Translate the PHP date format into the style the timepicker uses. datePopup.settings.timeFormat = datePopup.settings.timeFormat // 12-hour, leading zero, .replace('h', 'hh') // 12-hour, no leading zero. .replace('g', 'h') // 24-hour, leading zero. .replace('H', 'HH') // 24-hour, no leading zero. .replace('G', 'H') // AM/PM. .replace('A', 'p') // Minutes with leading zero. .replace('i', 'mm') // Seconds with leading zero. .replace('s', 'ss'); datePopup.settings.startTime = new Date(datePopup.settings.startTime); $(this) .timepicker(datePopup.settings) .addClass('date-popup-init'); $(this).click(function(){ $(this).focus(); }); break; } } } Drupal.behaviors.date_popup = { attach: function (context) { for (var id in Drupal.settings.datePopup) { $('#'+ id).bind('focus', Drupal.settings.datePopup[id], makeFocusHandler); } } }; })(jQuery);