k911a
3/17/2017 - 10:16 AM

Скрипт для виджета Calendar 0.9

Скрипт для виджета Calendar 0.9

function cal_codeWidget(){console.log(cal_settings),"readonly"==cal_settings.readonlyField&&$(cal_settings.selector).attr("readonly","readonly"),$(cal_settings.selector).css("cursor",cal_settings.cursorField),$(".cal_clear").on("click",function(){$(cal_settings.selector).val("")}),$(cal_settings.selector).datepicker({dateFormat:cal_settings.dateFormat,position:cal_settings.position,offset:cal_settings.offset}),$(".datepickers-container").css("z-index","999999999")}!function(e,t,i){!function(){var r,h,u,s="2.2.3",a="datepicker",n=".datepicker-here",o=!1,c='<div class="datepicker"><i class="datepicker--pointer"></i><nav class="datepicker--nav"></nav><div class="datepicker--content"></div></div>',l={classes:"",inline:!1,language:"ru",startDate:new Date,firstDay:"",weekends:[6,0],dateFormat:"",altField:"",altFieldDateFormat:"@",toggleSelected:!0,keyboardNav:!0,position:"bottom left",offset:12,view:"days",minView:"days",showOtherMonths:!0,selectOtherMonths:!0,moveToOtherMonthsOnSelect:!0,showOtherYears:!0,selectOtherYears:!0,moveToOtherYearsOnSelect:!0,minDate:"",maxDate:"",disableNavWhenOutOfRange:!0,multipleDates:!1,multipleDatesSeparator:",",range:!1,todayButton:!1,clearButton:!1,showEvent:"focus",autoClose:!1,monthsField:"monthsShort",prevHtml:'<svg><path d="M 17,12 l -5,5 l 5,5"></path></svg>',nextHtml:'<svg><path d="M 14,12 l 5,5 l -5,5"></path></svg>',navTitles:{days:"MM, <i>yyyy</i>",months:"yyyy",years:"yyyy1 - yyyy2"},timepicker:!1,onlyTimepicker:!1,dateTimeSeparator:" ",timeFormat:"",minHours:0,maxHours:24,minMinutes:0,maxMinutes:59,hoursStep:1,minutesStep:1,onSelect:"",onShow:"",onHide:"",onChangeMonth:"",onChangeYear:"",onChangeDecade:"",onChangeView:"",onRenderCell:""},d={ctrlRight:[17,39],ctrlUp:[17,38],ctrlLeft:[17,37],ctrlDown:[17,40],shiftRight:[16,39],shiftUp:[16,38],shiftLeft:[16,37],shiftDown:[16,40],altUp:[18,38],altRight:[18,39],altLeft:[18,37],altDown:[18,40],ctrlShiftUp:[16,17,38]},m=function(e,s){this.el=e,this.$el=t(e),this.opts=t.extend(!0,{},l,s,this.$el.data()),r==i&&(r=t("body")),this.opts.startDate||(this.opts.startDate=new Date),"INPUT"==this.el.nodeName&&(this.elIsInput=!0),this.opts.altField&&(this.$altField="string"==typeof this.opts.altField?t(this.opts.altField):this.opts.altField),this.inited=!1,this.visible=!1,this.silent=!1,this.currentDate=this.opts.startDate,this.currentView=this.opts.view,this._createShortCuts(),this.selectedDates=[],this.views={},this.keys=[],this.minRange="",this.maxRange="",this._prevOnSelectValue="",this.init()};u=m,u.prototype={VERSION:s,viewIndexes:["days","months","years"],init:function(){o||this.opts.inline||!this.elIsInput||this._buildDatepickersContainer(),this._buildBaseHtml(),this._defineLocale(this.opts.language),this._syncWithMinMaxDates(),this.elIsInput&&(this.opts.inline||(this._setPositionClasses(this.opts.position),this._bindEvents()),this.opts.keyboardNav&&!this.opts.onlyTimepicker&&this._bindKeyboardEvents(),this.$datepicker.on("mousedown",this._onMouseDownDatepicker.bind(this)),this.$datepicker.on("mouseup",this._onMouseUpDatepicker.bind(this))),this.opts.classes&&this.$datepicker.addClass(this.opts.classes),this.opts.timepicker&&(this.timepicker=new t.fn.datepicker.Timepicker(this,this.opts),this._bindTimepickerEvents()),this.opts.onlyTimepicker&&this.$datepicker.addClass("-only-timepicker-"),this.views[this.currentView]=new t.fn.datepicker.Body(this,this.currentView,this.opts),this.views[this.currentView].show(),this.nav=new t.fn.datepicker.Navigation(this,this.opts),this.view=this.currentView,this.$el.on("clickCell.adp",this._onClickCell.bind(this)),this.$datepicker.on("mouseenter",".datepicker--cell",this._onMouseEnterCell.bind(this)),this.$datepicker.on("mouseleave",".datepicker--cell",this._onMouseLeaveCell.bind(this)),this.inited=!0},_createShortCuts:function(){this.minDate=this.opts.minDate?this.opts.minDate:new Date(-86399999136e5),this.maxDate=this.opts.maxDate?this.opts.maxDate:new Date(86399999136e5)},_bindEvents:function(){this.$el.on(this.opts.showEvent+".adp",this._onShowEvent.bind(this)),this.$el.on("mouseup.adp",this._onMouseUpEl.bind(this)),this.$el.on("blur.adp",this._onBlur.bind(this)),this.$el.on("keyup.adp",this._onKeyUpGeneral.bind(this)),t(e).on("resize.adp",this._onResize.bind(this)),t("body").on("mouseup.adp",this._onMouseUpBody.bind(this))},_bindKeyboardEvents:function(){this.$el.on("keydown.adp",this._onKeyDown.bind(this)),this.$el.on("keyup.adp",this._onKeyUp.bind(this)),this.$el.on("hotKey.adp",this._onHotKey.bind(this))},_bindTimepickerEvents:function(){this.$el.on("timeChange.adp",this._onTimeChange.bind(this))},isWeekend:function(e){return-1!==this.opts.weekends.indexOf(e)},_defineLocale:function(e){"string"==typeof e?(this.loc=t.fn.datepicker.language[e],this.loc||(console.warn("Can't find language \""+e+'" in Datepicker.language, will use "ru" instead'),this.loc=t.extend(!0,{},t.fn.datepicker.language.ru)),this.loc=t.extend(!0,{},t.fn.datepicker.language.ru,t.fn.datepicker.language[e])):this.loc=t.extend(!0,{},t.fn.datepicker.language.ru,e),this.opts.dateFormat&&(this.loc.dateFormat=this.opts.dateFormat),this.opts.timeFormat&&(this.loc.timeFormat=this.opts.timeFormat),""!==this.opts.firstDay&&(this.loc.firstDay=this.opts.firstDay),this.opts.timepicker&&(this.loc.dateFormat=[this.loc.dateFormat,this.loc.timeFormat].join(this.opts.dateTimeSeparator)),this.opts.onlyTimepicker&&(this.loc.dateFormat=this.loc.timeFormat);var i=this._getWordBoundaryRegExp;(this.loc.timeFormat.match(i("aa"))||this.loc.timeFormat.match(i("AA")))&&(this.ampm=!0)},_buildDatepickersContainer:function(){o=!0,r.append('<div class="datepickers-container" id="datepickers-container"></div>'),h=t("#datepickers-container")},_buildBaseHtml:function(){var e,i=t('<div class="datepicker-inline">');e="INPUT"==this.el.nodeName?this.opts.inline?i.insertAfter(this.$el):h:i.appendTo(this.$el),this.$datepicker=t(c).appendTo(e),this.$content=t(".datepicker--content",this.$datepicker),this.$nav=t(".datepicker--nav",this.$datepicker)},_triggerOnChange:function(){if(!this.selectedDates.length){if(""===this._prevOnSelectValue)return;return this._prevOnSelectValue="",this.opts.onSelect("","",this)}var i,e=this.selectedDates,t=u.getParsedDate(e[0]),s=this,a=new Date(t.year,t.month,t.date,t.hours,t.minutes);i=e.map(function(e){return s.formatDate(s.loc.dateFormat,e)}).join(this.opts.multipleDatesSeparator),(this.opts.multipleDates||this.opts.range)&&(a=e.map(function(e){var t=u.getParsedDate(e);return new Date(t.year,t.month,t.date,t.hours,t.minutes)})),this._prevOnSelectValue=i,this.opts.onSelect(i,a,this)},next:function(){var e=this.parsedDate,t=this.opts;switch(this.view){case"days":this.date=new Date(e.year,e.month+1,1),t.onChangeMonth&&t.onChangeMonth(this.parsedDate.month,this.parsedDate.year);break;case"months":this.date=new Date(e.year+1,e.month,1),t.onChangeYear&&t.onChangeYear(this.parsedDate.year);break;case"years":this.date=new Date(e.year+10,0,1),t.onChangeDecade&&t.onChangeDecade(this.curDecade)}},prev:function(){var e=this.parsedDate,t=this.opts;switch(this.view){case"days":this.date=new Date(e.year,e.month-1,1),t.onChangeMonth&&t.onChangeMonth(this.parsedDate.month,this.parsedDate.year);break;case"months":this.date=new Date(e.year-1,e.month,1),t.onChangeYear&&t.onChangeYear(this.parsedDate.year);break;case"years":this.date=new Date(e.year-10,0,1),t.onChangeDecade&&t.onChangeDecade(this.curDecade)}},formatDate:function(e,t){t=t||this.date;var f,i=e,s=this._getWordBoundaryRegExp,a=this.loc,n=u.getLeadingZeroNum,r=u.getDecade(t),h=u.getParsedDate(t),o=h.fullHours,c=h.hours,l=e.match(s("aa"))||e.match(s("AA")),d="am",m=this._replacer;switch(this.opts.timepicker&&this.timepicker&&l&&(f=this.timepicker._getValidHoursFromDate(t,l),o=n(f.hours),c=f.hours,d=f.dayPeriod),!0){case/@/.test(i):i=i.replace(/@/,t.getTime());case/aa/.test(i):i=m(i,s("aa"),d);case/AA/.test(i):i=m(i,s("AA"),d.toUpperCase());case/dd/.test(i):i=m(i,s("dd"),h.fullDate);case/d/.test(i):i=m(i,s("d"),h.date);case/DD/.test(i):i=m(i,s("DD"),a.days[h.day]);case/D/.test(i):i=m(i,s("D"),a.daysShort[h.day]);case/mm/.test(i):i=m(i,s("mm"),h.fullMonth);case/m/.test(i):i=m(i,s("m"),h.month+1);case/MM/.test(i):i=m(i,s("MM"),this.loc.months[h.month]);case/M/.test(i):i=m(i,s("M"),a.monthsShort[h.month]);case/ii/.test(i):i=m(i,s("ii"),h.fullMinutes);case/i/.test(i):i=m(i,s("i"),h.minutes);case/hh/.test(i):i=m(i,s("hh"),o);case/h/.test(i):i=m(i,s("h"),c);case/yyyy/.test(i):i=m(i,s("yyyy"),h.year);case/yyyy1/.test(i):i=m(i,s("yyyy1"),r[0]);case/yyyy2/.test(i):i=m(i,s("yyyy2"),r[1]);case/yy/.test(i):i=m(i,s("yy"),h.year.toString().slice(-2))}return i},_replacer:function(e,t,i){return e.replace(t,function(e,t,s,a){return t+i+a})},_getWordBoundaryRegExp:function(e){var t="\\s|\\.|-|/|\\\\|,|\\$|\\!|\\?|:|;";return new RegExp("(^|>|"+t+")("+e+")($|<|"+t+")","g")},selectDate:function(e){var t=this,i=t.opts,s=t.parsedDate,a=t.selectedDates,n=a.length,r="";if(Array.isArray(e))return void e.forEach(function(e){t.selectDate(e)});if(e instanceof Date){if(this.lastSelectedDate=e,this.timepicker&&this.timepicker._setTime(e),t._trigger("selectDate",e),this.timepicker&&(e.setHours(this.timepicker.hours),e.setMinutes(this.timepicker.minutes)),"days"==t.view&&e.getMonth()!=s.month&&i.moveToOtherMonthsOnSelect&&(r=new Date(e.getFullYear(),e.getMonth(),1)),"years"==t.view&&e.getFullYear()!=s.year&&i.moveToOtherYearsOnSelect&&(r=new Date(e.getFullYear(),0,1)),r&&(t.silent=!0,t.date=r,t.silent=!1,t.nav._render()),i.multipleDates&&!i.range){if(n===i.multipleDates)return;t._isSelected(e)||t.selectedDates.push(e)}else i.range?2==n?(t.selectedDates=[e],t.minRange=e,t.maxRange=""):1==n?(t.selectedDates.push(e),t.maxRange?t.minRange=e:t.maxRange=e,u.bigger(t.maxRange,t.minRange)&&(t.maxRange=t.minRange,t.minRange=e),t.selectedDates=[t.minRange,t.maxRange]):(t.selectedDates=[e],t.minRange=e):t.selectedDates=[e];t._setInputValue(),i.onSelect&&t._triggerOnChange(),i.autoClose&&!this.timepickerIsActive&&(i.multipleDates||i.range?i.range&&2==t.selectedDates.length&&t.hide():t.hide()),t.views[this.currentView]._render()}},removeDate:function(e){var t=this.selectedDates,i=this;if(e instanceof Date)return t.some(function(s,a){return u.isSame(s,e)?(t.splice(a,1),i.selectedDates.length?i.lastSelectedDate=i.selectedDates[i.selectedDates.length-1]:(i.minRange="",i.maxRange="",i.lastSelectedDate=""),i.views[i.currentView]._render(),i._setInputValue(),i.opts.onSelect&&i._triggerOnChange(),!0):void 0})},today:function(){this.silent=!0,this.view=this.opts.minView,this.silent=!1,this.date=new Date,this.opts.todayButton instanceof Date&&this.selectDate(this.opts.todayButton)},clear:function(){this.selectedDates=[],this.minRange="",this.maxRange="",this.views[this.currentView]._render(),this._setInputValue(),this.opts.onSelect&&this._triggerOnChange()},update:function(e,i){var s=arguments.length,a=this.lastSelectedDate;return 2==s?this.opts[e]=i:1==s&&"object"==typeof e&&(this.opts=t.extend(!0,this.opts,e)),this._createShortCuts(),this._syncWithMinMaxDates(),this._defineLocale(this.opts.language),this.nav._addButtonsIfNeed(),this.opts.onlyTimepicker||this.nav._render(),this.views[this.currentView]._render(),this.elIsInput&&!this.opts.inline&&(this._setPositionClasses(this.opts.position),this.visible&&this.setPosition(this.opts.position)),this.opts.classes&&this.$datepicker.addClass(this.opts.classes),this.opts.onlyTimepicker&&this.$datepicker.addClass("-only-timepicker-"),this.opts.timepicker&&(a&&this.timepicker._handleDate(a),this.timepicker._updateRanges(),this.timepicker._updateCurrentTime(),a&&(a.setHours(this.timepicker.hours),a.setMinutes(this.timepicker.minutes))),this._setInputValue(),this},_syncWithMinMaxDates:function(){var e=this.date.getTime();this.silent=!0,this.minTime>e&&(this.date=this.minDate),this.maxTime<e&&(this.date=this.maxDate),this.silent=!1},_isSelected:function(e,t){var i=!1;return this.selectedDates.some(function(s){return u.isSame(s,e,t)?(i=s,!0):void 0}),i},_setInputValue:function(){var n,e=this,t=e.opts,i=e.loc.dateFormat,s=t.altFieldDateFormat,a=e.selectedDates.map(function(t){return e.formatDate(i,t)});t.altField&&e.$altField.length&&(n=this.selectedDates.map(function(t){return e.formatDate(s,t)}),n=n.join(this.opts.multipleDatesSeparator),this.$altField.val(n)),a=a.join(this.opts.multipleDatesSeparator),this.$el.val(a)},_isInRange:function(e,t){var i=e.getTime(),s=u.getParsedDate(e),a=u.getParsedDate(this.minDate),n=u.getParsedDate(this.maxDate),r=new Date(s.year,s.month,a.date).getTime(),h=new Date(s.year,s.month,n.date).getTime(),o={day:i>=this.minTime&&i<=this.maxTime,month:r>=this.minTime&&h<=this.maxTime,year:s.year>=a.year&&s.year<=n.year};return t?o[t]:o.day},_getDimensions:function(e){var t=e.offset();return{width:e.outerWidth(),height:e.outerHeight(),left:t.left,top:t.top}},_getDateFromCell:function(e){var t=this.parsedDate,s=e.data("year")||t.year,a=e.data("month")==i?t.month:e.data("month"),n=e.data("date")||1;return new Date(s,a,n)},_setPositionClasses:function(e){e=e.split(" ");var t=e[0],i=e[1],s="datepicker -"+t+"-"+i+"- -from-"+t+"-";this.visible&&(s+=" active"),this.$datepicker.removeAttr("class").addClass(s)},setPosition:function(e){e=e||this.opts.position;var a,n,t=this._getDimensions(this.$el),i=this._getDimensions(this.$datepicker),s=e.split(" "),r=this.opts.offset,h=s[0],o=s[1];switch(h){case"top":a=t.top-i.height-r;break;case"right":n=t.left+t.width+r;break;case"bottom":a=t.top+t.height+r;break;case"left":n=t.left-i.width-r}switch(o){case"top":a=t.top;break;case"right":n=t.left+t.width-i.width;break;case"bottom":a=t.top+t.height-i.height;break;case"left":n=t.left;break;case"center":/left|right/.test(h)?a=t.top+t.height/2-i.height/2:n=t.left+t.width/2-i.width/2}this.$datepicker.css({left:n,top:a})},show:function(){var e=this.opts.onShow;this.setPosition(this.opts.position),this.$datepicker.addClass("active"),this.visible=!0,e&&this._bindVisionEvents(e)},hide:function(){var e=this.opts.onHide;this.$datepicker.removeClass("active").css({left:"-100000px"}),this.focused="",this.keys=[],this.inFocus=!1,this.visible=!1,this.$el.blur(),e&&this._bindVisionEvents(e)},down:function(e){this._changeView(e,"down")},up:function(e){this._changeView(e,"up")},_bindVisionEvents:function(e){this.$datepicker.off("transitionend.dp"),e(this,!1),this.$datepicker.one("transitionend.dp",e.bind(this,this,!0))},_changeView:function(e,t){e=e||this.focused||this.date;var i="up"==t?this.viewIndex+1:this.viewIndex-1;i>2&&(i=2),0>i&&(i=0),this.silent=!0,this.date=new Date(e.getFullYear(),e.getMonth(),1),this.silent=!1,this.view=this.viewIndexes[i]},_handleHotKey:function(e){var i,a,n,t=u.getParsedDate(this._getFocusedDate()),s=this.opts,r=!1,h=!1,o=!1,c=t.year,l=t.month,d=t.date;switch(e){case"ctrlRight":case"ctrlUp":l+=1,r=!0;break;case"ctrlLeft":case"ctrlDown":l-=1,r=!0;break;case"shiftRight":case"shiftUp":h=!0,c+=1;break;case"shiftLeft":case"shiftDown":h=!0,c-=1;break;case"altRight":case"altUp":o=!0,c+=10;break;case"altLeft":case"altDown":o=!0,c-=10;break;case"ctrlShiftUp":this.up()}n=u.getDaysCount(new Date(c,l)),a=new Date(c,l,d),d>n&&(d=n),a.getTime()<this.minTime?a=this.minDate:a.getTime()>this.maxTime&&(a=this.maxDate),this.focused=a,i=u.getParsedDate(a),r&&s.onChangeMonth&&s.onChangeMonth(i.month,i.year),h&&s.onChangeYear&&s.onChangeYear(i.year),o&&s.onChangeDecade&&s.onChangeDecade(this.curDecade)},_registerKey:function(e){var t=this.keys.some(function(t){return t==e});t||this.keys.push(e)},_unRegisterKey:function(e){var t=this.keys.indexOf(e);this.keys.splice(t,1)},_isHotKeyPressed:function(){var e,t=!1,i=this,s=this.keys.sort();for(var a in d)e=d[a],s.length==e.length&&e.every(function(e,t){return e==s[t]})&&(i._trigger("hotKey",a),t=!0);return t},_trigger:function(e,t){this.$el.trigger(e,t)},_focusNextCell:function(e,t){t=t||this.cellType;var i=u.getParsedDate(this._getFocusedDate()),s=i.year,a=i.month,n=i.date;if(!this._isHotKeyPressed()){switch(e){case 37:"day"==t?n-=1:"","month"==t?a-=1:"","year"==t?s-=1:"";break;case 38:"day"==t?n-=7:"","month"==t?a-=3:"","year"==t?s-=4:"";break;case 39:"day"==t?n+=1:"","month"==t?a+=1:"","year"==t?s+=1:"";break;case 40:"day"==t?n+=7:"","month"==t?a+=3:"","year"==t?s+=4:""}var r=new Date(s,a,n);r.getTime()<this.minTime?r=this.minDate:r.getTime()>this.maxTime&&(r=this.maxDate),this.focused=r}},_getFocusedDate:function(){var e=this.focused||this.selectedDates[this.selectedDates.length-1],t=this.parsedDate;if(!e)switch(this.view){case"days":e=new Date(t.year,t.month,(new Date).getDate());break;case"months":e=new Date(t.year,t.month,1);break;case"years":e=new Date(t.year,0,1)}return e},_getCell:function(e,i){i=i||this.cellType;var n,s=u.getParsedDate(e),a='.datepicker--cell[data-year="'+s.year+'"]';switch(i){case"month":a='[data-month="'+s.month+'"]';break;case"day":a+='[data-month="'+s.month+'"][data-date="'+s.date+'"]'}return n=this.views[this.currentView].$el.find(a),n.length?n:t("")},destroy:function(){var e=this;e.$el.off(".adp").data("datepicker",""),e.selectedDates=[],e.focused="",e.views={},e.keys=[],e.minRange="",e.maxRange="",e.opts.inline||!e.elIsInput?e.$datepicker.closest(".datepicker-inline").remove():e.$datepicker.remove()},_handleAlreadySelectedDates:function(e,t){this.opts.range?this.opts.toggleSelected?this.removeDate(t):2!=this.selectedDates.length&&this._trigger("clickCell",t):this.opts.toggleSelected&&this.removeDate(t),this.opts.toggleSelected||(this.lastSelectedDate=e,this.opts.timepicker&&(this.timepicker._setTime(e),this.timepicker.update()))},_onShowEvent:function(e){this.visible||this.show()},_onBlur:function(){!this.inFocus&&this.visible&&this.hide()},_onMouseDownDatepicker:function(e){this.inFocus=!0},_onMouseUpDatepicker:function(e){this.inFocus=!1,e.originalEvent.inFocus=!0,e.originalEvent.timepickerFocus||this.$el.focus()},_onKeyUpGeneral:function(e){var t=this.$el.val();t||this.clear()},_onResize:function(){this.visible&&this.setPosition()},_onMouseUpBody:function(e){e.originalEvent.inFocus||this.visible&&!this.inFocus&&this.hide()},_onMouseUpEl:function(e){e.originalEvent.inFocus=!0,setTimeout(this._onKeyUpGeneral.bind(this),4)},_onKeyDown:function(e){var t=e.which;if(this._registerKey(t),t>=37&&40>=t&&(e.preventDefault(),this._focusNextCell(t)),13==t&&this.focused){if(this._getCell(this.focused).hasClass("-disabled-"))return;if(this.view!=this.opts.minView)this.down();else{var i=this._isSelected(this.focused,this.cellType);if(!i)return this.timepicker&&(this.focused.setHours(this.timepicker.hours),this.focused.setMinutes(this.timepicker.minutes)),void this.selectDate(this.focused);this._handleAlreadySelectedDates(i,this.focused)}}27==t&&this.hide()},_onKeyUp:function(e){var t=e.which;this._unRegisterKey(t)},_onHotKey:function(e,t){this._handleHotKey(t)},_onMouseEnterCell:function(e){var i=t(e.target).closest(".datepicker--cell"),s=this._getDateFromCell(i);this.silent=!0,this.focused&&(this.focused=""),i.addClass("-focus-"),this.focused=s,this.silent=!1,this.opts.range&&1==this.selectedDates.length&&(this.minRange=this.selectedDates[0],this.maxRange="",u.less(this.minRange,this.focused)&&(this.maxRange=this.minRange,this.minRange=""),this.views[this.currentView]._update())},_onMouseLeaveCell:function(e){var i=t(e.target).closest(".datepicker--cell");i.removeClass("-focus-"),this.silent=!0,this.focused="",this.silent=!1},_onTimeChange:function(e,t,i){var s=new Date,a=this.selectedDates,n=!1;a.length&&(n=!0,s=this.lastSelectedDate),s.setHours(t),s.setMinutes(i),n||this._getCell(s).hasClass("-disabled-")?(this._setInputValue(),this.opts.onSelect&&this._triggerOnChange()):this.selectDate(s)},_onClickCell:function(e,t){this.timepicker&&(t.setHours(this.timepicker.hours),t.setMinutes(this.timepicker.minutes)),this.selectDate(t)},set focused(e){if(!e&&this.focused){var t=this._getCell(this.focused);t.length&&t.removeClass("-focus-")}this._focused=e,this.opts.range&&1==this.selectedDates.length&&(this.minRange=this.selectedDates[0],this.maxRange="",u.less(this.minRange,this._focused)&&(this.maxRange=this.minRange,this.minRange="")),this.silent||(this.date=e)},get focused(){return this._focused},get parsedDate(){return u.getParsedDate(this.date)},set date(e){return e instanceof Date?(this.currentDate=e,this.inited&&!this.silent&&(this.views[this.view]._render(),this.nav._render(),this.visible&&this.elIsInput&&this.setPosition()),e):void 0},get date(){return this.currentDate},set view(e){return this.viewIndex=this.viewIndexes.indexOf(e),this.viewIndex<0?void 0:(this.prevView=this.currentView,this.currentView=e,this.inited&&(this.views[e]?this.views[e]._render():this.views[e]=new t.fn.datepicker.Body(this,e,this.opts),this.views[this.prevView].hide(),this.views[e].show(),this.nav._render(),this.opts.onChangeView&&this.opts.onChangeView(e),this.elIsInput&&this.visible&&this.setPosition()),e)},get view(){return this.currentView},get cellType(){return this.view.substring(0,this.view.length-1)},get minTime(){var e=u.getParsedDate(this.minDate);return new Date(e.year,e.month,e.date).getTime()},get maxTime(){var e=u.getParsedDate(this.maxDate);return new Date(e.year,e.month,e.date).getTime()},get curDecade(){return u.getDecade(this.date)}},u.getDaysCount=function(e){return new Date(e.getFullYear(),e.getMonth()+1,0).getDate()},u.getParsedDate=function(e){return{year:e.getFullYear(),month:e.getMonth(),fullMonth:e.getMonth()+1<10?"0"+(e.getMonth()+1):e.getMonth()+1,date:e.getDate(),fullDate:e.getDate()<10?"0"+e.getDate():e.getDate(),day:e.getDay(),hours:e.getHours(),fullHours:e.getHours()<10?"0"+e.getHours():e.getHours(),minutes:e.getMinutes(),fullMinutes:e.getMinutes()<10?"0"+e.getMinutes():e.getMinutes()}},u.getDecade=function(e){var t=10*Math.floor(e.getFullYear()/10);return[t,t+9]},u.template=function(e,t){return e.replace(/#\{([\w]+)\}/g,function(e,i){return t[i]||0===t[i]?t[i]:void 0})},u.isSame=function(e,t,i){if(!e||!t)return!1;var s=u.getParsedDate(e),a=u.getParsedDate(t),n=i?i:"day",r={day:s.date==a.date&&s.month==a.month&&s.year==a.year,month:s.month==a.month&&s.year==a.year,year:s.year==a.year};return r[n]},u.less=function(e,t,i){return e&&t?t.getTime()<e.getTime():!1},u.bigger=function(e,t,i){return e&&t?t.getTime()>e.getTime():!1},u.getLeadingZeroNum=function(e){return parseInt(e)<10?"0"+e:e},u.resetTime=function(e){return"object"==typeof e?(e=u.getParsedDate(e),new Date(e.year,e.month,e.date)):void 0},t.fn.datepicker=function(e){return this.each(function(){if(t.data(this,a)){var i=t.data(this,a);i.opts=t.extend(!0,i.opts,e),i.update()}else t.data(this,a,new m(this,e))})},t.fn.datepicker.Constructor=m,t.fn.datepicker.language={ru:{days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],daysShort:["Вос","Пон","Вто","Сре","Чет","Пят","Суб"],daysMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Сегодня",clear:"Очистить",dateFormat:"dd.mm.yyyy",timeFormat:"hh:ii",firstDay:1}},t(function(){t(n).datepicker()})}(),function(){var e={days:'<div class="datepicker--days datepicker--body"><div class="datepicker--days-names"></div><div class="datepicker--cells datepicker--cells-days"></div></div>',months:'<div class="datepicker--months datepicker--body"><div class="datepicker--cells datepicker--cells-months"></div></div>',years:'<div class="datepicker--years datepicker--body"><div class="datepicker--cells datepicker--cells-years"></div></div>'},s=t.fn.datepicker,a=s.Constructor;s.Body=function(e,i,s){this.d=e,this.type=i,this.opts=s,this.$el=t(""),this.opts.onlyTimepicker||this.init()},s.Body.prototype={init:function(){this._buildBaseHtml(),this._render(),this._bindEvents()},_bindEvents:function(){this.$el.on("click",".datepicker--cell",t.proxy(this._onClickCell,this))},_buildBaseHtml:function(){this.$el=t(e[this.type]).appendTo(this.d.$content),this.$names=t(".datepicker--days-names",this.$el),this.$cells=t(".datepicker--cells",this.$el)},_getDayNamesHtml:function(e,t,s,a){return t=t!=i?t:e,s=s?s:"",a=a!=i?a:0,a>7?s:7==t?this._getDayNamesHtml(e,0,s,++a):(s+='<div class="datepicker--day-name'+(this.d.isWeekend(t)?" -weekend-":"")+'">'+this.d.loc.daysMin[t]+"</div>",this._getDayNamesHtml(e,++t,s,++a))},_getCellContents:function(e,t){var i="datepicker--cell datepicker--cell-"+t,s=new Date,n=this.d,r=a.resetTime(n.minRange),h=a.resetTime(n.maxRange),o=n.opts,c=a.getParsedDate(e),l={},d=c.date;switch(t){case"day":n.isWeekend(c.day)&&(i+=" -weekend-"),c.month!=this.d.parsedDate.month&&(i+=" -other-month-",o.selectOtherMonths||(i+=" -disabled-"),o.showOtherMonths||(d=""));break;case"month":d=n.loc[n.opts.monthsField][c.month];break;case"year":var u=n.curDecade;d=c.year,(c.year<u[0]||c.year>u[1])&&(i+=" -other-decade-",o.selectOtherYears||(i+=" -disabled-"),o.showOtherYears||(d=""))}return o.onRenderCell&&(l=o.onRenderCell(e,t)||{},d=l.html?l.html:d,i+=l.classes?" "+l.classes:""),o.range&&(a.isSame(r,e,t)&&(i+=" -range-from-"),a.isSame(h,e,t)&&(i+=" -range-to-"),1==n.selectedDates.length&&n.focused?((a.bigger(r,e)&&a.less(n.focused,e)||a.less(h,e)&&a.bigger(n.focused,e))&&(i+=" -in-range-"),a.less(h,e)&&a.isSame(n.focused,e)&&(i+=" -range-from-"),a.bigger(r,e)&&a.isSame(n.focused,e)&&(i+=" -range-to-")):2==n.selectedDates.length&&a.bigger(r,e)&&a.less(h,e)&&(i+=" -in-range-")),a.isSame(s,e,t)&&(i+=" -current-"),n.focused&&a.isSame(e,n.focused,t)&&(i+=" -focus-"),n._isSelected(e,t)&&(i+=" -selected-"),(!n._isInRange(e,t)||l.disabled)&&(i+=" -disabled-"),{html:d,classes:i}},_getDaysHtml:function(e){var t=a.getDaysCount(e),i=new Date(e.getFullYear(),e.getMonth(),1).getDay(),s=new Date(e.getFullYear(),e.getMonth(),t).getDay(),n=i-this.d.loc.firstDay,r=6-s+this.d.loc.firstDay;n=0>n?n+7:n,r=r>6?r-7:r;for(var o,c,h=-n+1,l="",d=h,u=t+r;u>=d;d++)c=e.getFullYear(),o=e.getMonth(),l+=this._getDayHtml(new Date(c,o,d));return l},_getDayHtml:function(e){var t=this._getCellContents(e,"day");return'<div class="'+t.classes+'" data-date="'+e.getDate()+'" data-month="'+e.getMonth()+'" data-year="'+e.getFullYear()+'">'+t.html+"</div>"},_getMonthsHtml:function(e){for(var t="",i=a.getParsedDate(e),s=0;12>s;)t+=this._getMonthHtml(new Date(i.year,s)),s++;return t},_getMonthHtml:function(e){var t=this._getCellContents(e,"month");return'<div class="'+t.classes+'" data-month="'+e.getMonth()+'">'+t.html+"</div>"},_getYearsHtml:function(e){var i=(a.getParsedDate(e),a.getDecade(e)),s=i[0]-1,n="",r=s;for(r;r<=i[1]+1;r++)n+=this._getYearHtml(new Date(r,0));return n},_getYearHtml:function(e){var t=this._getCellContents(e,"year");return'<div class="'+t.classes+'" data-year="'+e.getFullYear()+'">'+t.html+"</div>"},_renderTypes:{days:function(){var e=this._getDayNamesHtml(this.d.loc.firstDay),t=this._getDaysHtml(this.d.currentDate);this.$cells.html(t),this.$names.html(e)},months:function(){var e=this._getMonthsHtml(this.d.currentDate);this.$cells.html(e)},years:function(){var e=this._getYearsHtml(this.d.currentDate);this.$cells.html(e)}},_render:function(){this.opts.onlyTimepicker||this._renderTypes[this.type].bind(this)()},_update:function(){var s,a,n,e=t(".datepicker--cell",this.$cells),i=this;e.each(function(e,r){a=t(this),n=i.d._getDateFromCell(t(this)),s=i._getCellContents(n,i.d.cellType),a.attr("class",s.classes)})},show:function(){this.opts.onlyTimepicker||(this.$el.addClass("active"),this.acitve=!0)},hide:function(){this.$el.removeClass("active"),this.active=!1},_handleClick:function(e){var t=e.data("date")||1,i=e.data("month")||0,s=e.data("year")||this.d.parsedDate.year,a=this.d;if(a.view!=this.opts.minView)return void a.down(new Date(s,i,t));var n=new Date(s,i,t),r=this.d._isSelected(n,this.d.cellType);return r?void a._handleAlreadySelectedDates.bind(a,r,n)():void a._trigger("clickCell",n)},_onClickCell:function(e){var i=t(e.target).closest(".datepicker--cell");i.hasClass("-disabled-")||this._handleClick.bind(this)(i)}}}(),function(){var e='<div class="datepicker--nav-action" data-action="prev">#{prevHtml}</div><div class="datepicker--nav-title">#{title}</div><div class="datepicker--nav-action" data-action="next">#{nextHtml}</div>',i='<div class="datepicker--buttons"></div>',s='<span class="datepicker--button" data-action="#{action}">#{label}</span>',a=t.fn.datepicker,n=a.Constructor;a.Navigation=function(e,t){this.d=e,this.opts=t,this.$buttonsContainer="",this.init()},a.Navigation.prototype={init:function(){this._buildBaseHtml(),this._bindEvents()},_bindEvents:function(){this.d.$nav.on("click",".datepicker--nav-action",t.proxy(this._onClickNavButton,this)),this.d.$nav.on("click",".datepicker--nav-title",t.proxy(this._onClickNavTitle,this)),this.d.$datepicker.on("click",".datepicker--button",t.proxy(this._onClickNavButton,this))},_buildBaseHtml:function(){this.opts.onlyTimepicker||this._render(),this._addButtonsIfNeed()},_addButtonsIfNeed:function(){this.opts.todayButton&&this._addButton("today"),this.opts.clearButton&&this._addButton("clear")},_render:function(){var i=this._getTitle(this.d.currentDate),s=n.template(e,t.extend({title:i},this.opts));this.d.$nav.html(s),"years"==this.d.view&&t(".datepicker--nav-title",this.d.$nav).addClass("-disabled-"),this.setNavStatus()},_getTitle:function(e){return this.d.formatDate(this.opts.navTitles[this.d.view],e)},_addButton:function(e){this.$buttonsContainer.length||this._addButtonsContainer();var i={action:e,label:this.d.loc[e]},a=n.template(s,i);t("[data-action="+e+"]",this.$buttonsContainer).length||this.$buttonsContainer.append(a)},_addButtonsContainer:function(){this.d.$datepicker.append(i),this.$buttonsContainer=t(".datepicker--buttons",this.d.$datepicker)},setNavStatus:function(){if((this.opts.minDate||this.opts.maxDate)&&this.opts.disableNavWhenOutOfRange){var e=this.d.parsedDate,t=e.month,i=e.year,s=e.date;switch(this.d.view){case"days":this.d._isInRange(new Date(i,t-1,1),"month")||this._disableNav("prev"),this.d._isInRange(new Date(i,t+1,1),"month")||this._disableNav("next");break;case"months":this.d._isInRange(new Date(i-1,t,s),"year")||this._disableNav("prev"),this.d._isInRange(new Date(i+1,t,s),"year")||this._disableNav("next");break;case"years":var a=n.getDecade(this.d.date);this.d._isInRange(new Date(a[0]-1,0,1),"year")||this._disableNav("prev"),this.d._isInRange(new Date(a[1]+1,0,1),"year")||this._disableNav("next")}}},_disableNav:function(e){t('[data-action="'+e+'"]',this.d.$nav).addClass("-disabled-")},_activateNav:function(e){t('[data-action="'+e+'"]',this.d.$nav).removeClass("-disabled-")},_onClickNavButton:function(e){var i=t(e.target).closest("[data-action]"),s=i.data("action");this.d[s]()},_onClickNavTitle:function(e){return t(e.target).hasClass("-disabled-")?void 0:"days"==this.d.view?this.d.view="months":void(this.d.view="years")}}}(),function(){var e='<div class="datepicker--time"><div class="datepicker--time-current">   <span class="datepicker--time-current-hours">#{hourVisible}</span>   <span class="datepicker--time-current-colon">:</span>   <span class="datepicker--time-current-minutes">#{minValue}</span></div><div class="datepicker--time-sliders">   <div class="datepicker--time-row">      <input type="range" name="hours" value="#{hourValue}" min="#{hourMin}" max="#{hourMax}" step="#{hourStep}"/>   </div>   <div class="datepicker--time-row">      <input type="range" name="minutes" value="#{minValue}" min="#{minMin}" max="#{minMax}" step="#{minStep}"/>   </div></div></div>',i=t.fn.datepicker,s=i.Constructor;i.Timepicker=function(e,t){this.d=e,this.opts=t,this.init()},i.Timepicker.prototype={init:function(){var e="input";this._setTime(this.d.date),this._buildHTML(),navigator.userAgent.match(/trident/gi)&&(e="change"),this.d.$el.on("selectDate",this._onSelectDate.bind(this)),this.$ranges.on(e,this._onChangeRange.bind(this)),this.$ranges.on("mouseup",this._onMouseUpRange.bind(this)),this.$ranges.on("mousemove focus ",this._onMouseEnterRange.bind(this)),this.$ranges.on("mouseout blur",this._onMouseOutRange.bind(this));
},_setTime:function(e){var t=s.getParsedDate(e);this._handleDate(e),this.hours=t.hours<this.minHours?this.minHours:t.hours,this.minutes=t.minutes<this.minMinutes?this.minMinutes:t.minutes},_setMinTimeFromDate:function(e){this.minHours=e.getHours(),this.minMinutes=e.getMinutes(),this.d.lastSelectedDate&&this.d.lastSelectedDate.getHours()>e.getHours()&&(this.minMinutes=this.opts.minMinutes)},_setMaxTimeFromDate:function(e){this.maxHours=e.getHours(),this.maxMinutes=e.getMinutes(),this.d.lastSelectedDate&&this.d.lastSelectedDate.getHours()<e.getHours()&&(this.maxMinutes=this.opts.maxMinutes)},_setDefaultMinMaxTime:function(){var e=23,t=59,i=this.opts;this.minHours=i.minHours<0||i.minHours>e?0:i.minHours,this.minMinutes=i.minMinutes<0||i.minMinutes>t?0:i.minMinutes,this.maxHours=i.maxHours<0||i.maxHours>e?e:i.maxHours,this.maxMinutes=i.maxMinutes<0||i.maxMinutes>t?t:i.maxMinutes},_validateHoursMinutes:function(e){this.hours<this.minHours?this.hours=this.minHours:this.hours>this.maxHours&&(this.hours=this.maxHours),this.minutes<this.minMinutes?this.minutes=this.minMinutes:this.minutes>this.maxMinutes&&(this.minutes=this.maxMinutes)},_buildHTML:function(){var i=s.getLeadingZeroNum,a={hourMin:this.minHours,hourMax:i(this.maxHours),hourStep:this.opts.hoursStep,hourValue:this.hours,hourVisible:i(this.displayHours),minMin:this.minMinutes,minMax:i(this.maxMinutes),minStep:this.opts.minutesStep,minValue:i(this.minutes)},n=s.template(e,a);this.$timepicker=t(n).appendTo(this.d.$datepicker),this.$ranges=t('[type="range"]',this.$timepicker),this.$hours=t('[name="hours"]',this.$timepicker),this.$minutes=t('[name="minutes"]',this.$timepicker),this.$hoursText=t(".datepicker--time-current-hours",this.$timepicker),this.$minutesText=t(".datepicker--time-current-minutes",this.$timepicker),this.d.ampm&&(this.$ampm=t('<span class="datepicker--time-current-ampm">').appendTo(t(".datepicker--time-current",this.$timepicker)).html(this.dayPeriod),this.$timepicker.addClass("-am-pm-"))},_updateCurrentTime:function(){var e=s.getLeadingZeroNum(this.displayHours),t=s.getLeadingZeroNum(this.minutes);this.$hoursText.html(e),this.$minutesText.html(t),this.d.ampm&&this.$ampm.html(this.dayPeriod)},_updateRanges:function(){this.$hours.attr({min:this.minHours,max:this.maxHours}).val(this.hours),this.$minutes.attr({min:this.minMinutes,max:this.maxMinutes}).val(this.minutes)},_handleDate:function(e){this._setDefaultMinMaxTime(),e&&(s.isSame(e,this.d.opts.minDate)?this._setMinTimeFromDate(this.d.opts.minDate):s.isSame(e,this.d.opts.maxDate)&&this._setMaxTimeFromDate(this.d.opts.maxDate)),this._validateHoursMinutes(e)},update:function(){this._updateRanges(),this._updateCurrentTime()},_getValidHoursFromDate:function(e,t){var i=e,a=e;e instanceof Date&&(i=s.getParsedDate(e),a=i.hours);var n=t||this.d.ampm,r="am";if(n)switch(!0){case 0==a:a=12;break;case 12==a:r="pm";break;case a>11:a-=12,r="pm"}return{hours:a,dayPeriod:r}},set hours(e){this._hours=e;var t=this._getValidHoursFromDate(e);this.displayHours=t.hours,this.dayPeriod=t.dayPeriod},get hours(){return this._hours},_onChangeRange:function(e){var i=t(e.target),s=i.attr("name");this.d.timepickerIsActive=!0,this[s]=i.val(),this._updateCurrentTime(),this.d._trigger("timeChange",[this.hours,this.minutes]),this._handleDate(this.d.lastSelectedDate),this.update()},_onSelectDate:function(e,t){this._handleDate(t),this.update()},_onMouseEnterRange:function(e){var i=t(e.target).attr("name");t(".datepicker--time-current-"+i,this.$timepicker).addClass("-focus-")},_onMouseOutRange:function(e){var i=t(e.target).attr("name");this.d.inFocus||t(".datepicker--time-current-"+i,this.$timepicker).removeClass("-focus-")},_onMouseUpRange:function(e){this.d.timepickerIsActive=!1}}}()}(window,jQuery);