diff --git a/javascript/DateField.js b/javascript/DateField.js index 0fe799b6c..3861ca1b9 100644 --- a/javascript/DateField.js +++ b/javascript/DateField.js @@ -1,28 +1,33 @@ (function($) { - /** - * Initialize and open a datepicker - * live() doesn't have "onmatch", and jQuery.entwine is a bit too - * heavyweight for this, so we need to do this onclick. - */ - var fields = $('.field.date input.text'); - fields.siblings("button").addClass("ui-icon ui-icon-calendar"); + $.fn.extend({ + ssDatepicker: function(opts) { + return $(this).each(function() { + if($(this).data('datepicker')) return; // already applied + + this.siblings("button").addClass("ui-icon ui-icon-calendar"); + + var holder = $(this).parents('.field.date:first'), + config = $.extend(opts || {}, $(this).metadata({type: 'class'}), {}); + if(!config.showcalendar) return; - fields.live('click', function() { - var holder = $(this).parents('.field.date:first'), config = $(this).metadata({type: 'class'}); - if(!config.showcalendar) return; - - if(config.locale && $.datepicker.regional[config.locale]) { - config = $.extend(config, $.datepicker.regional[config.locale], {}); + if(config.locale && $.datepicker.regional[config.locale]) { + config = $.extend(config, $.datepicker.regional[config.locale], {}); + } + + if(config.min) config.minDate = $.datepicker.parseDate('yy-mm-dd', config.min); + if(config.max) config.maxDate = $.datepicker.parseDate('yy-mm-dd', config.max); + + // Initialize and open a datepicker + // live() doesn't have "onmatch", and jQuery.entwine is a bit too heavyweight for this, so we need to do this onclick. + config.dateFormat = config.jqueryDateformat; + $(this).datepicker(config); + }); } - - if(config.min) config.minDate = $.datepicker.parseDate('yy-mm-dd', config.min); - if(config.max) config.maxDate = $.datepicker.parseDate('yy-mm-dd', config.max); - - // Initialize and open a datepicker - // live() doesn't have "onmatch", and jQuery.entwine is a bit too heavyweight for this, so we need to do this onclick. - config.dateFormat = config.jqueryDateformat; - $(this).datepicker(config); + }); + + $('.field.date input.text').live('click', function() { + $(this).ssDatepicker(); $(this).datepicker('show'); }); }(jQuery)); \ No newline at end of file