PLUGIN_D7DATEPICKER — плагин календаря

/*
* d7datepicker — plugin based on jQuery for platform SCAD7
*
* Copyright (c) 2019 Dobrynin P. Yu.
*
* Version: 1.0.0
*
* home page link:
* http://platforma.scad7.ru
*
* Добавить виджет календаря
* $(‘#dt_from’).d7datepicker({dt_to: ‘dt_to’});
* $(‘#dt_from’).d7datepicker();
*
* Уничтожить виджет
* $(‘#dt_from’).d7datepicker(‘destroy’);
*/

(function( $ ){
var methods = {
init : function( options ) {
var settings = $.extend({
‘dt_from’ : »
,’dt_to’ : »
}, options);
return this.each(function(index){
var $this = $(this), data = $this.data(‘d7datepicker’);

if ( ! data) {
$(this).data(‘d7datepicker’, {
target : $this
, dt_from : settings.dt_from
, dt_to : settings.dt_to
, from : »
, to : »
});
}
data = $this.data(‘d7datepicker’);
// — создание виджета ————————-
$.datepicker.setDefaults(
{
closeText: ‘Закрыть’,
prevText: »,
currentText: ‘Сегодня’,
monthNames: [‘Январь’,’Февраль’,’Март’,’Апрель’,’Май’,’Июнь’,’Июль’,’Август’,’Сентябрь’,’Октябрь’,’Ноябрь’,’Декабрь’],
monthNamesShort: [‘Янв’,’Фев’,’Мар’,’Апр’,’Май’,’Июн’,’Июл’,’Авг’,’Сен’,’Окт’,’Ноя’,’Дек’],
dayNames: [‘воскресенье’,’понедельник’,’вторник’,’среда’,’четверг’,’пятница’,’суббота’],
dayNamesShort: [‘вск’,’пнд’,’втр’,’срд’,’чтв’,’птн’,’сбт’],
dayNamesMin: [‘Вс’,’Пн’,’Вт’,’Ср’,’Чт’,’Пт’,’Сб’],
weekHeader: ‘Не’,
dateFormat: ‘dd.mm.yy’,
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: »,
changeYear: false,
buttonImage: «/img/calendar.jpg»,
buttonImageOnly: true,
buttonText: «Календарь»,
showOn: «both»
});

var dateFormat = «dd.mm.yy»;
data.from = $( $this ).attr(«autocomplete», «off»).datepicker({
defaultDate: «+1w»,
dateFormat: dateFormat,
changeMonth: true,
numberOfMonths: 1
})
.on( «change», function() {
data.to.datepicker( «option», «minDate», getDate( this ) );
});
if (data.dt_to != ») {
data.to = $( ‘#’+data.dt_to ).attr(«autocomplete», «off»).datepicker({
defaultDate: «+1w»,
dateFormat: dateFormat,
changeMonth: true,
numberOfMonths: 1
})
.on( «change», function() {
data.from.datepicker( «option», «maxDate», getDate( this ) );
});
}

function getDate( element ) {
var date;
try {
date = $.datepicker.parseDate( dateFormat, element.value );
} catch( error ) {
date = null;
}
return date;
};
// ———————————————
}); //return
}//init
, destroy : function() {
return this.each(function(){
var $this = $(this), data = $this.data(‘d7datepicker’);
$(window).unbind(‘.d7datepicker’);
$this.removeData(‘d7datepicker’);
}); //return
}//destroy
, run : function run() {
return this.each(function() {
return this;
}); //return
}//run
};

$.fn.d7datepicker= function( method ) {
if ( methods[method] ) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if ( typeof method === ‘object’ || ! method) {
return methods.init.apply( this, arguments );
} else {
$.error( ‘Метод с именем ‘ + method + ‘ не существует для jQuery.d7datepicker’ );
}
};
})( jQuery )