1/* 2 * jQuery Datepicker plugin 3 */ 4; (function ($, $win) { 5 'use strict'; 6 7 var DateMatcher = { 8 getMatch: function (source, date) { 9 var result = [true, '']; 10 var self = this; 11 12 $.each(source, function (key, value) { 13 var parsedDate = self.parseDate(key); 14 15 if (parsedDate.valueOf() === date.valueOf()) { 16 result = [!value.disabled, value.class || 'active']; 17 } 18 }); 19 20 return result; 21 }, 22 23 parseDate: function (dateStr) { 24 var dateArr = dateStr.split('/'); 25 return new Date(parseInt(dateArr[2], 10), parseInt(dateArr[1], 10) - 1, parseInt(dateArr[0], 10)); 26 } 27 }; 28 29 var Datepicker = { 30 initSimple: function ($el, options) { 31 $.Deferred(function (defer) { 32 if (options.source) { 33 $.getJSON(options.source) 34 .done(defer.resolve) 35 .fail(defer.reject); 36 } else defer.resolve(); 37 }).then(function (source) { 38 if (source) { 39 options.beforeShowDay = function (date) { 40 return DateMatcher.getMatch(source, date); 41 }; 42 } 43 44 $el.datepicker($.extend({ 45 dateFormat: 'd/mm/yy' 46 }, options)); 47 }); 48 }, 49 initRange: function ($el, options) { 50 var $inputFrom = $el.find('[data-datepicker-from]'); 51 var $inputTo = $el.find('[data-datepicker-to]'); 52 53 this.initSimple($inputFrom, $.extend({}, options, $inputFrom.data('datepickerFrom'), { 54 defaultDate: 0, 55 onClose: function (selectedDate) { 56 $inputTo.datepicker('option', 'minDate', selectedDate); 57 } 58 })); 59 60 this.initSimple($inputTo, $.extend({}, options, $inputTo.data('datepickerTo'), { 61 defaultDate: 1, 62 onClose: function (selectedDate) { 63 $inputFrom.datepicker('option', 'maxDate', selectedDate); 64 } 65 })); 66 } 67 }; 68 69 $.fn.uiDatepicker = function (opt) { 70 return this.each(function () { 71 var $el = $(this); 72 var data = $.extend(true, opt || {}, $el.data('datepicker') || {}); 73 var method = 'init' + (data.rangepicker ? 'Range' : 'Simple'); 74 75 Datepicker[method]($el, data); 76 }); 77 }; 78}(jQuery, jQuery(window)));
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.