1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /**
- * JavaScript behaviors for the front-end display of webforms.
- */
- (function ($) {
- Drupal.behaviors.webform = Drupal.behaviors.webform || {};
- Drupal.behaviors.webform.attach = function(context) {
- // Calendar datepicker behavior.
- Drupal.webform.datepicker(context);
- };
- Drupal.webform = Drupal.webform || {};
- Drupal.webform.datepicker = function(context) {
- $('div.webform-datepicker').each(function() {
- var $webformDatepicker = $(this);
- var $calendar = $webformDatepicker.find('input.webform-calendar');
- var startDate = $calendar[0].className.replace(/.*webform-calendar-start-(\d{4}-\d{2}-\d{2}).*/, '$1').split('-');
- var endDate = $calendar[0].className.replace(/.*webform-calendar-end-(\d{4}-\d{2}-\d{2}).*/, '$1').split('-');
- var firstDay = $calendar[0].className.replace(/.*webform-calendar-day-(\d).*/, '$1');
- // Convert date strings into actual Date objects.
- startDate = new Date(startDate[0], startDate[1] - 1, startDate[2]);
- endDate = new Date(endDate[0], endDate[1] - 1, endDate[2]);
- // Ensure that start comes before end for datepicker.
- if (startDate > endDate) {
- var laterDate = startDate;
- startDate = endDate;
- endDate = laterDate;
- }
- var startYear = startDate.getFullYear();
- var endYear = endDate.getFullYear();
- // Set up the jQuery datepicker element.
- $calendar.datepicker({
- dateFormat: 'yy-mm-dd',
- yearRange: startYear + ':' + endYear,
- firstDay: parseInt(firstDay),
- minDate: startDate,
- maxDate: endDate,
- onSelect: function(dateText, inst) {
- var date = dateText.split('-');
- $webformDatepicker.find('select.year, input.year').val(+date[0]);
- $webformDatepicker.find('select.month').val(+date[1]);
- $webformDatepicker.find('select.day').val(+date[2]);
- },
- beforeShow: function(input, inst) {
- // Get the select list values.
- var year = $webformDatepicker.find('select.year, input.year').val();
- var month = $webformDatepicker.find('select.month').val();
- var day = $webformDatepicker.find('select.day').val();
- // If empty, default to the current year/month/day in the popup.
- var today = new Date();
- year = year ? year : today.getFullYear();
- month = month ? month : today.getMonth() + 1;
- day = day ? day : today.getDate();
- // Make sure that the default year fits in the available options.
- year = (year < startYear || year > endYear) ? startYear : year;
- // jQuery UI Datepicker will read the input field and base its date off
- // of that, even though in our case the input field is a button.
- $(input).val(year + '-' + month + '-' + day);
- }
- });
- // Prevent the calendar button from submitting the form.
- $calendar.click(function(event) {
- $(this).focus();
- event.preventDefault();
- });
- });
- }
- })(jQuery);
|