Plugin Directory

Changeset 2199348


Ignore:
Timestamp:
11/23/2019 09:15:22 AM (6 years ago)
Author:
liedekef
Message:

new datapicker version

Location:
events-made-easy/trunk/js/fdatepicker/js
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • events-made-easy/trunk/js/fdatepicker/js/fdatepicker.js

    r2193221 r2199348  
    545545
    546546            if (!(date instanceof Date)) {
    547                 if ((typeof date === 'string' || date instanceof String) && date !== '') {
    548                      // in case the date is actually a string but mentions the microseconds, we convert it to int
    549                      if (isNaN(date)) {
    550                              date = new Date(date);
    551                      } else {
    552                              date = new Date(parseInt(date));
    553                      }
    554                 } else if (typeof date === 'number' && date !== '') {
    555                      date = new Date(date);
    556                 } else {
    557                      date = new Date();
    558                 }
     547        date = fdatepicker.convertStringToDate(date);
    559548            }
    560549
     
    14851474    };
    14861475
     1476    fdatepicker.getTimeOffSetString = function () {
     1477        var timezone_offset_min = new Date().getTimezoneOffset(),
     1478            offset_hrs = parseInt(Math.abs(timezone_offset_min/60)),
     1479            offset_min = Math.abs(timezone_offset_min%60),
     1480            timezone_standard;
     1481
     1482        if(offset_hrs < 10)
     1483            offset_hrs = '0' + offset_hrs;
     1484
     1485        if(offset_min < 10)
     1486            offset_min = '0' + offset_min;
     1487
     1488        // Add an opposite sign to the offset
     1489        // If offset is 0, it means timezone is UTC
     1490        if(timezone_offset_min < 0)
     1491            timezone_standard = '+' + offset_hrs + ':' + offset_min;
     1492        else if(timezone_offset_min > 0)
     1493            timezone_standard = '-' + offset_hrs + ':' + offset_min;
     1494        else if(timezone_offset_min == 0)
     1495            timezone_standard = 'Z';
     1496        return timezone_standard;
     1497    };
     1498
     1499    fdatepicker.convertStringToDate = function (datestring) {
     1500        if ((typeof datestring === 'string' || datestring instanceof String) && datestring !== '') {
     1501            if (isNaN(datestring)) {
     1502                // if it is full ecmascript datetime, but without timezone: we add the local timezone to it
     1503                var matches = datestring.match(/^(\d{4})\-(\d{2})\-(\d{2}).(\d{2}):(\d{2})(:(\d{2})?)$/);
     1504                if (matches) {
     1505                    var tz_string=fdatepicker.getTimeOffSetString();
     1506                    datestring = datestring + tz_string;
     1507                }
     1508                date = new Date(datestring);
     1509            } else {
     1510                // in case the date is a string but mentions the microseconds, we convert it to int
     1511                date = new Date(parseInt(datestring));
     1512            }
     1513        } else if (typeof datestring === 'number' && datestring !== '') {
     1514            date = new Date(datestring);
     1515        } else {
     1516            date = new Date();
     1517        }
     1518        return date;
     1519    };
     1520
    14871521    fdatepicker.getParsedDate = function (date) {
    1488     if (typeof date == 'string') {
    1489         date = new Date(date);
    1490     }
     1522        if (!(date instanceof Date)) {
     1523        date = fdatepicker.convertStringToDate(date);
     1524        }
    14911525        return {
    14921526            year: date.getFullYear(),
  • events-made-easy/trunk/js/fdatepicker/js/fdatepicker.min.js

    r2193221 r2199348  
    1 !function(t,e,c){var s,a,n,r;s=function(n){n.escapeSelector||(n.escapeSelector=function(e){return(e+"").replace(/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e})});function s(e,t){this.el=e,this.$el=n(e),this.opts=n.extend(!0,{},o,t,this.$el.data()),a==c&&(a=n("body")),this.opts.startDate||(this.opts.startDate=new Date),"INPUT"==this.el.nodeName&&(this.elIsInput=!0),this.opts.altField&&("string"==typeof this.opts.altField?(this.opts.altField.match("^#")&&(this.opts.altField=this.opts.altField.substring(1)),this.$altField=n("#"+n.escapeSelector(this.opts.altField))):this.$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()}var a,r,f,h="fdatepicker",e=!1,o={classes:"",inline:!1,language:"en",startDate:new Date,firstDay:"",weekends:[6,0],dateFormat:"",altField:"",altFieldDateFormat:"u",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:",",altFieldMultipleDatesSeparator:",",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:"M, <i>Y</i>",months:"Y",years:"Y1 - Y2"},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]};(f=s).prototype={VERSION:"2.2.3",viewIndexes:["days","months","years"],init:function(){e||this.opts.inline||!this.elIsInput||this._buildfDatepickersContainer(),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.$fdatepicker.on("mousedown",this._onMouseDownfDatepicker.bind(this)),this.$fdatepicker.on("mouseup",this._onMouseUpfDatepicker.bind(this))),this.opts.classes&&this.$fdatepicker.addClass(this.opts.classes),this.opts.timepicker&&(this.timepicker=new n.fn.fdatepicker.Timepicker(this,this.opts),this._bindTimepickerEvents()),this.opts.onlyTimepicker&&this.$fdatepicker.addClass("-only-timepicker-"),this.views[this.currentView]=new n.fn.fdatepicker.Body(this,this.currentView,this.opts),this.views[this.currentView].show(),this.nav=new n.fn.fdatepicker.Navigation(this,this.opts),this.view=this.currentView,this.$el.on("clickCell.adp",this._onClickCell.bind(this)),this.$fdatepicker.on("mouseenter",".fdatepicker--cell",this._onMouseEnterCell.bind(this)),this.$fdatepicker.on("mouseleave",".fdatepicker--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)),n(t).on("resize.adp",this._onResize.bind(this)),n("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=n.fn.fdatepicker.language[e],this.loc||(console.warn("Can't find language \""+e+'" in fDatepicker.language, will use "en" instead'),this.loc=n.extend(!0,{},n.fn.fdatepicker.language.en)),this.loc=n.extend(!0,{},n.fn.fdatepicker.language.en,n.fn.fdatepicker.language[e])):this.loc=n.extend(!0,{},n.fn.fdatepicker.language.en,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),this.loc.timeFormat.match(/a/i)&&(this.ampm=!0)},_buildfDatepickersContainer:function(){e=!0,a.append('<div class="fdatepickers-container" id="fdatepickers-container"></div>'),r=n("#fdatepickers-container")},_buildBaseHtml:function(){var e,t=n('<div class="fdatepicker-inline">');e="INPUT"==this.el.nodeName?this.opts.inline?t.insertAfter(this.$el):r:t.appendTo(this.$el),this.$fdatepicker=n('<div class="fdatepicker"><i class="fdatepicker--pointer"></i><nav class="fdatepicker--nav"></nav><div class="fdatepicker--content"></div></div>').appendTo(e),this.$content=n(".fdatepicker--content",this.$fdatepicker),this.$nav=n(".fdatepicker--nav",this.$fdatepicker)},_triggerOnChange:function(){if(!this.selectedDates.length){if(""===this._prevOnSelectValue)return;return this._prevOnSelectValue="",this.opts.onSelect("","",this)}var e,t=this.selectedDates,i=f.getParsedDate(t[0]),s=this,a=new Date(i.year,i.month,i.date,i.hours,i.minutes);e=t.map(function(e){return s.formatDate(s.loc.dateFormat,e)}).join(this.opts.multipleDatesSeparator),(this.opts.multipleDates||this.opts.range)&&(a=t.map(function(e){var t=f.getParsedDate(e);return new Date(t.year,t.month,t.date,t.hours,t.minutes)})),this._prevOnSelectValue=e,this.opts.onSelect(e,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 s,a="",n=this.loc,r=f.getLeadingZeroNum,h=f.getDecade(t),o=f.getParsedDate(t),d=o.fullHours,c=o.hours,l=e.match(/a/i),u="",m=!1,p=!1;for(this.opts.timepicker&&this.timepicker&&l&&(d=r((s=this.timepicker._getValidHoursFromDate(t,l)).hours),c=s.hours,u=s.dayPeriod),e=(e=e.replace("Y1",h[0])).replace("Y2",h[1]),i=0;i<e.length;i++)if(chr=e.charAt(i),m)a+=chr,m=!1;else if(p)a+=chr,">"==chr&&(p=!1);else switch(chr){case"\\":m=!0;break;case"<":a+=chr,p=!0;break;case"y":a+=o.year.toString().slice(-2);break;case"Y":a+=o.year;break;case"m":a+=o.fullMonth;break;case"n":a+=o.month+1;break;case"M":a+=n.monthsShort[o.month];break;case"F":a+=this.loc.months[o.month];break;case"d":a+=o.fullDate;break;case"j":a+=o.date;break;case"D":a+=n.daysShort[o.day];break;case"l":a+=n.days[o.day];break;case"N":a+=o.day+1;break;case"w":a+=o.day;break;case"S":o.date%10==1&&11!==o.date?a+="st":o.date%10==2&&12!==o.date?a+="nd":o.date%10==3&&13!==o.date?a+="rd":a+="th";break;case"g":a+=c;break;case"h":a+=d;break;case"G":a+=c;break;case"H":a+=o.fullHours;break;case"i":a+=o.fullMinutes;break;case"s":a+=o.fullSeconds;break;case"a":a+=u;break;case"A":a+=u.toUpperCase();break;default:a+=chr}return a},selectDate:function(e){var t=this,i=t.opts,s=t.parsedDate,a=t.selectedDates.length,n="";if(("string"==typeof e||e instanceof String)&&-1!==e.indexOf(",")){e.split(",").forEach(function(e){t.selectDate(e)})}else{if(e instanceof Date||(e=("string"==typeof e||e instanceof String)&&""!==e?isNaN(e)?new Date(e):new Date(parseInt(e)):"number"==typeof e&&""!==e?new Date(e):new Date),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&&e.getFullYear()==s.year||!i.moveToOtherMonthsOnSelect||(n=new Date(e.getFullYear(),e.getMonth(),1))),"years"==t.view&&e.getFullYear()!=s.year&&i.moveToOtherYearsOnSelect&&(n=new Date(e.getFullYear(),0,1)),n&&(t.silent=!0,t.date=n,t.silent=!1,t.nav._render()),i.multipleDates&&!i.range){if(a===i.multipleDates)return;t._isSelected(e)||t.selectedDates.push(e)}else i.range?2==a?(t.selectedDates=[e],t.minRange=e,t.maxRange=""):1==a?(t.selectedDates.push(e),t.maxRange?t.minRange=e:t.maxRange=e,f.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(i){var s=this.selectedDates,a=this;if(i instanceof Date)return s.some(function(e,t){if(f.isSame(e,i))return s.splice(t,1),a.selectedDates.length?a.lastSelectedDate=a.selectedDates[a.selectedDates.length-1]:(a.minRange="",a.maxRange="",a.lastSelectedDate=""),a.views[a.currentView]._render(),a._setInputValue(),a.opts.onSelect&&a._triggerOnChange(),!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,t){var i=arguments.length,s=this.lastSelectedDate;return 2==i?this.opts[e]=t:1==i&&"object"==typeof e&&(this.opts=n.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.$fdatepicker.addClass(this.opts.classes),this.opts.onlyTimepicker&&this.$fdatepicker.addClass("-only-timepicker-"),this.opts.timepicker&&(s&&this.timepicker._handleDate(s),this.timepicker._updateRanges(),this.timepicker._updateCurrentTime(),s&&(s.setHours(this.timepicker.hours),s.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(t,i){var s=!1;return this.selectedDates.some(function(e){if(f.isSame(e,t,i))return s=e,!0}),s},_setInputValue:function(){var e,t=this,i=t.opts,s=t.loc.dateFormat,a=i.altFieldDateFormat,n=t.selectedDates.map(function(e){return t.formatDate(s,e)});i.altField&&t.$altField.length&&(e=(e=this.selectedDates.map(function(e){return t.formatDate(a,e)})).join(this.opts.altFieldMultipleDatesSeparator),this.$altField.val(e)),n=n.join(this.opts.multipleDatesSeparator),this.$el.val(n)},_isInRange:function(e,t){var i=e.getTime(),s=f.getParsedDate(e),a=f.getParsedDate(this.minDate),n=f.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,i=e.data("year")||t.year,s=e.data("month")==c?t.month:e.data("month"),a=e.data("date")||1;return new Date(i,s,a)},_setPositionClasses:function(e){var t=(e=e.split(" "))[0],i="fdatepicker -"+t+"-"+e[1]+"- -from-"+t+"-";this.visible&&(i+=" active"),this.$fdatepicker.removeAttr("class").addClass(i)},setPosition:function(e){e=e||this.opts.position;var t,i,s=this._getDimensions(this.$el),a=this._getDimensions(this.$fdatepicker),n=e.split(" "),r=this.opts.offset,h=n[0],o=n[1];switch(h){case"top":t=s.top-a.height-r;break;case"right":i=s.left+s.width+r;break;case"bottom":t=s.top+s.height+r;break;case"left":i=s.left-a.width-r}switch(o){case"top":t=s.top;break;case"right":i=s.left+s.width-a.width;break;case"bottom":t=s.top+s.height-a.height;break;case"left":i=s.left;break;case"center":/left|right/.test(h)?t=s.top+s.height/2-a.height/2:i=s.left+s.width/2-a.width/2}this.$fdatepicker.css({left:i,top:t})},show:function(){var e=this.opts.onShow;this.setPosition(this.opts.position),this.$fdatepicker.addClass("active"),this.visible=!0,e&&this._bindVisionEvents(e)},hide:function(){var e=this.opts.onHide;this.$fdatepicker.removeClass("active").css({left:"-100000px"}),this.focused="",this.keys=[],this.inFocus=!1,this.visible=!1,this.$el.trigger("blur"),e&&this._bindVisionEvents(e)},down:function(e){this._changeView(e,"down")},up:function(e){this._changeView(e,"up")},_bindVisionEvents:function(e){this.$fdatepicker.off("transitionend.dp"),e(this,!1),this.$fdatepicker.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;2<i&&(i=2),i<0&&(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 t,i,s,a=f.getParsedDate(this._getFocusedDate()),n=this.opts,r=!1,h=!1,o=!1,d=a.year,c=a.month,l=a.date;switch(e){case"ctrlRight":case"ctrlUp":c+=1,r=!0;break;case"ctrlLeft":case"ctrlDown":c-=1,r=!0;break;case"shiftRight":case"shiftUp":h=!0,d+=1;break;case"shiftLeft":case"shiftDown":h=!0,d-=1;break;case"altRight":case"altUp":o=!0,d+=10;break;case"altLeft":case"altDown":o=!0,d-=10;break;case"ctrlShiftUp":this.up()}s=f.getDaysCount(new Date(d,c)),i=new Date(d,c,l),s<l&&(l=s),i.getTime()<this.minTime?i=this.minDate:i.getTime()>this.maxTime&&(i=this.maxDate),this.focused=i,t=f.getParsedDate(i),r&&n.onChangeMonth&&n.onChangeMonth(t.month,t.year),h&&n.onChangeYear&&n.onChangeYear(t.year),o&&n.onChangeDecade&&n.onChangeDecade(this.curDecade)},_registerKey:function(t){this.keys.some(function(e){return e==t})||this.keys.push(t)},_unRegisterKey:function(e){var t=this.keys.indexOf(e);this.keys.splice(t,1)},_isHotKeyPressed:function(){var e,t=!1,i=this.keys.sort();for(var s in d)e=d[s],i.length==e.length&&e.every(function(e,t){return e==i[t]})&&(this._trigger("hotKey",s),t=!0);return t},_trigger:function(e,t){this.$el.trigger(e,t)},_focusNextCell:function(e,t){t=t||this.cellType;var i=f.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,t){t=t||this.cellType;var i,s=f.getParsedDate(e),a='.fdatepicker--cell[data-year="'+s.year+'"]';switch(t){case"month":a='[data-month="'+s.month+'"]';break;case"day":a+='[data-month="'+s.month+'"][data-date="'+s.date+'"]'}return(i=this.views[this.currentView].$el.find(a)).length?i:n("")},destroy:function(){var e=this;e.$el.off(".adp").data("fdatepicker",""),e.selectedDates=[],e.focused="",e.views={},e.keys=[],e.minRange="",e.maxRange="",e.opts.inline||!e.elIsInput?e.$fdatepicker.closest(".fdatepicker-inline").remove():e.$fdatepicker.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()},_onMouseDownfDatepicker:function(e){this.inFocus=!0},_onMouseUpfDatepicker:function(e){this.inFocus=!1,e.originalEvent.inFocus=!0,e.originalEvent.timepickerFocus||this.$el.trigger("focus")},_onKeyUpGeneral:function(e){this.$el.val()||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),37<=t&&t<=40&&(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 t=n(e.target).closest(".fdatepicker--cell"),i=this._getDateFromCell(t);this.silent=!0,this.focused&&(this.focused=""),t.addClass("-focus-"),this.focused=i,this.silent=!1,this.opts.range&&1==this.selectedDates.length&&(this.minRange=this.selectedDates[0],this.maxRange="",f.less(this.minRange,this.focused)&&(this.maxRange=this.minRange,this.minRange=""),this.views[this.currentView]._update())},_onMouseLeaveCell:function(e){n(e.target).closest(".fdatepicker--cell").removeClass("-focus-"),this.silent=!0,this.focused="",this.silent=!1},_onTimeChange:function(e,t,i){var s=new Date,a=!1;this.selectedDates.length&&(a=!0,s=this.lastSelectedDate),s.setHours(t),s.setMinutes(i),a||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="",f.less(this.minRange,this._focused)&&(this.maxRange=this.minRange,this.minRange="")),this.silent||(this.date=e)},get focused(){return this._focused},get parsedDate(){return f.getParsedDate(this.date)},set date(e){if(e instanceof Date)return this.currentDate=e,this.inited&&!this.silent&&(this.views[this.view]._render(),this.nav._render(),this.visible&&this.elIsInput&&this.setPosition()),e},get date(){return this.currentDate},set view(e){if(this.viewIndex=this.viewIndexes.indexOf(e),!(this.viewIndex<0))return this.prevView=this.currentView,this.currentView=e,this.inited&&(this.views[e]?this.views[e]._render():this.views[e]=new n.fn.fdatepicker.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=f.getParsedDate(this.minDate);return new Date(e.year,e.month,e.date).getTime()},get maxTime(){var e=f.getParsedDate(this.maxDate);return new Date(e.year,e.month,e.date).getTime()},get curDecade(){return f.getDecade(this.date)}},f.getDaysCount=function(e){return new Date(e.getFullYear(),e.getMonth()+1,0).getDate()},f.getParsedDate=function(e){return"string"==typeof e&&(e=new Date(e)),{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(),seconds:e.getSeconds(),fullSeconds:e.getSeconds()<10?"0"+e.getSeconds():e.getSeconds()}},f.getDecade=function(e){var t=10*Math.floor(e.getFullYear()/10);return[t,9+t]},f.template=function(e,i){return e.replace(/#\{([\w]+)\}/g,function(e,t){if(i[t]||0===i[t])return i[t]})},f.isSame=function(e,t,i){if(!e||!t)return!1;var s=f.getParsedDate(e),a=f.getParsedDate(t),n=i||"day";return{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}[n]},f.less=function(e,t,i){return!(!e||!t)&&t.getTime()<e.getTime()},f.bigger=function(e,t,i){return!(!e||!t)&&t.getTime()>e.getTime()},f.getLeadingZeroNum=function(e){return parseInt(e)<10?"0"+e:e},f.resetTime=function(e){if("object"==typeof e)return e=f.getParsedDate(e),new Date(e.year,e.month,e.date)},n.fn.fdatepicker=function(t){return this.each(function(){if(n.data(this,h)){var e=n.data(this,h);e.opts=n.extend(!0,e.opts,t),e.update()}else n.data(this,h,new s(this,t))})},n.fn.fdatepicker.Constructor=s,n.fn.fdatepicker.language={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",dateFormat:"m/d/Y",timeFormat:"h:i a",firstDay:0}},n(function(){n(".fdatepicker-here").fdatepicker()})},"function"==typeof define&&define.amd?define(["jquery"],s):s(jQuery),a=function(r){var e={days:'<div class="fdatepicker--days fdatepicker--body"><div class="fdatepicker--days-names"></div><div class="fdatepicker--cells fdatepicker--cells-days"></div></div>',months:'<div class="fdatepicker--months fdatepicker--body"><div class="fdatepicker--cells fdatepicker--cells-months"></div></div>',years:'<div class="fdatepicker--years fdatepicker--body"><div class="fdatepicker--cells fdatepicker--cells-years"></div></div>'},t=r.fn.fdatepicker,u=t.Constructor;t.Body=function(e,t,i){this.d=e,this.type=t,this.opts=i,this.$el=r(""),this.opts.onlyTimepicker||this.init()},t.Body.prototype={init:function(){this._buildBaseHtml(),this._render(),this._bindEvents()},_bindEvents:function(){this.$el.on("click",".fdatepicker--cell",r.proxy(this._onClickCell,this))},_buildBaseHtml:function(){this.$el=r(e[this.type]).appendTo(this.d.$content),this.$names=r(".fdatepicker--days-names",this.$el),this.$cells=r(".fdatepicker--cells",this.$el)},_getDayNamesHtml:function(e,t,i,s){return i=i||"",7<(s=s!=c?s:0)?i:7==(t=t!=c?t:e)?this._getDayNamesHtml(e,0,i,++s):(i+='<div class="fdatepicker--day-name'+(this.d.isWeekend(t)?" -weekend-":"")+'">'+this.d.loc.daysMin[t]+"</div>",this._getDayNamesHtml(e,++t,i,++s))},_getCellContents:function(e,t){var i="fdatepicker--cell fdatepicker--cell-"+t,s=new Date,a=this.d,n=u.resetTime(a.minRange),r=u.resetTime(a.maxRange),h=a.opts,o=u.getParsedDate(e),d={},c=o.date;switch(t){case"day":a.isWeekend(o.day)&&(i+=" -weekend-"),o.month!=this.d.parsedDate.month&&(i+=" -other-month-",h.selectOtherMonths||(i+=" -disabled-"),h.showOtherMonths||(c=""));break;case"month":c=a.loc[a.opts.monthsField][o.month];break;case"year":var l=a.curDecade;c=o.year,(o.year<l[0]||o.year>l[1])&&(i+=" -other-decade-",h.selectOtherYears||(i+=" -disabled-"),h.showOtherYears||(c=""))}return h.onRenderCell&&(c=(d=h.onRenderCell(e,t)||{}).html?d.html:c,i+=d.classes?" "+d.classes:""),h.range&&(u.isSame(n,e,t)&&(i+=" -range-from-"),u.isSame(r,e,t)&&(i+=" -range-to-"),1==a.selectedDates.length&&a.focused?((u.bigger(n,e)&&u.less(a.focused,e)||u.less(r,e)&&u.bigger(a.focused,e))&&(i+=" -in-range-"),u.less(r,e)&&u.isSame(a.focused,e)&&(i+=" -range-from-"),u.bigger(n,e)&&u.isSame(a.focused,e)&&(i+=" -range-to-")):2==a.selectedDates.length&&u.bigger(n,e)&&u.less(r,e)&&(i+=" -in-range-")),u.isSame(s,e,t)&&(i+=" -current-"),a.focused&&u.isSame(e,a.focused,t)&&(i+=" -focus-"),a._isSelected(e,t)&&(i+=" -selected-"),a._isInRange(e,t)&&!d.disabled||(i+=" -disabled-"),{html:c,classes:i}},_getDaysHtml:function(e){for(var t,i,s=u.getDaysCount(e),a=new Date(e.getFullYear(),e.getMonth(),1).getDay(),n=new Date(e.getFullYear(),e.getMonth(),s).getDay(),r=a-this.d.loc.firstDay,h=6-n+this.d.loc.firstDay,o="",d=1-(r=r<0?r+7:r),c=s+(h=6<h?h-7:h);d<=c;d++)i=e.getFullYear(),t=e.getMonth(),o+=this._getDayHtml(new Date(i,t,d));return o},_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=u.getParsedDate(e),s=0;s<12;)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){u.getParsedDate(e);for(var t=u.getDecade(e),i="",s=t[0]-1;s<=t[1]+1;s++)i+=this._getYearHtml(new Date(s,0));return i},_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 i,s,a,e=r(".fdatepicker--cell",this.$cells),n=this;e.each(function(e,t){s=r(this),a=n.d._getDateFromCell(r(this)),i=n._getCellContents(a,n.d.cellType),s.attr("class",i.classes)})},show:function(){this.opts.onlyTimepicker||(this.$el.addClass("active"),this.active=!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){var n=new Date(s,i,t),r=this.d._isSelected(n,this.d.cellType);r?a._handleAlreadySelectedDates.bind(a,r,n)():a._trigger("clickCell",n)}else a.down(new Date(s,i,t))},_onClickCell:function(e){var t=r(e.target).closest(".fdatepicker--cell");t.hasClass("-disabled-")||this._handleClick.bind(this)(t)}}},"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery),n=function(s){var e=s.fn.fdatepicker,n=e.Constructor;e.Navigation=function(e,t){this.d=e,this.opts=t,this.$buttonsContainer="",this.init()},e.Navigation.prototype={init:function(){this._buildBaseHtml(),this._bindEvents()},_bindEvents:function(){this.d.$nav.on("click",".fdatepicker--nav-action",s.proxy(this._onClickNavButton,this)),this.d.$nav.on("click",".fdatepicker--nav-title",s.proxy(this._onClickNavTitle,this)),this.d.$fdatepicker.on("click",".fdatepicker--button",s.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 e=this._getTitle(this.d.currentDate),t=n.template('<div class="fdatepicker--nav-action" data-fpicker-action="prev">#{prevHtml}</div><div class="fdatepicker--nav-title">#{title}</div><div class="fdatepicker--nav-action" data-fpicker-action="next">#{nextHtml}</div>',s.extend({title:e},this.opts));this.d.$nav.html(t),"years"==this.d.view&&s(".fdatepicker--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 t={action:e,label:this.d.loc[e]},i=n.template('<span class="fdatepicker--button" data-fpicker-action="#{action}">#{label}</span>',t);s("[data-fpicker-action="+e+"]",this.$buttonsContainer).length||this.$buttonsContainer.append(i)},_addButtonsContainer:function(){this.d.$fdatepicker.append('<div class="fdatepicker--buttons"></div>'),this.$buttonsContainer=s(".fdatepicker--buttons",this.d.$fdatepicker)},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){s('[data-fpicker-action="'+e+'"]',this.d.$nav).addClass("-disabled-")},_activateNav:function(e){s('[data-fpicker-action="'+e+'"]',this.d.$nav).removeClass("-disabled-")},_onClickNavButton:function(e){var t=s(e.target).closest("[data-fpicker-action]").data("fpicker-action");this.d[t]()},_onClickNavTitle:function(e){if(!s(e.target).hasClass("-disabled-"))return"days"==this.d.view?this.d.view="months":void(this.d.view="years")}}},"function"==typeof define&&define.amd?define(["jquery"],n):n(jQuery),r=function(s){var e=s.fn.fdatepicker,a=e.Constructor;e.Timepicker=function(e,t){this.d=e,this.opts=t,this.init()},e.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=a.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=this.opts;this.minHours=e.minHours<0||23<e.minHours?0:e.minHours,this.minMinutes=e.minMinutes<0||59<e.minMinutes?0:e.minMinutes,this.maxHours=e.maxHours<0||23<e.maxHours?23:e.maxHours,this.maxMinutes=e.maxMinutes<0||59<e.maxMinutes?59:e.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 e=a.getLeadingZeroNum,t={hourMin:this.minHours,hourMax:e(this.maxHours),hourStep:this.opts.hoursStep,hourValue:this.hours,hourVisible:e(this.displayHours),minMin:this.minMinutes,minMax:e(this.maxMinutes),minStep:this.opts.minutesStep,minValue:e(this.minutes)},i=a.template('<div class="fdatepicker--time"><div class="fdatepicker--time-current">   <span class="fdatepicker--time-current-hours">#{hourVisible}</span>   <span class="fdatepicker--time-current-colon">:</span>   <span class="fdatepicker--time-current-minutes">#{minValue}</span></div><div class="fdatepicker--time-sliders">   <div class="fdatepicker--time-row">      <input type="range" name="hours" value="#{hourValue}" min="#{hourMin}" max="#{hourMax}" step="#{hourStep}"/>   </div>   <div class="fdatepicker--time-row">      <input type="range" name="minutes" value="#{minValue}" min="#{minMin}" max="#{minMax}" step="#{minStep}"/>   </div></div></div>',t);this.$timepicker=s(i).appendTo(this.d.$fdatepicker),this.$ranges=s('[type="range"]',this.$timepicker),this.$hours=s('[name="hours"]',this.$timepicker),this.$minutes=s('[name="minutes"]',this.$timepicker),this.$hoursText=s(".fdatepicker--time-current-hours",this.$timepicker),this.$minutesText=s(".fdatepicker--time-current-minutes",this.$timepicker),this.d.ampm&&(this.$ampm=s('<span class="fdatepicker--time-current-ampm">').appendTo(s(".fdatepicker--time-current",this.$timepicker)).html(this.dayPeriod),this.$timepicker.addClass("-am-pm-"))},_updateCurrentTime:function(){var e=a.getLeadingZeroNum(this.displayHours),t=a.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&&(a.isSame(e,this.d.opts.minDate)?this._setMinTimeFromDate(this.d.opts.minDate):a.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;e instanceof Date&&(i=a.getParsedDate(e).hours);var s="am";if(t||this.d.ampm)switch(!0){case 0==i:i=12;break;case 12==i:s="pm";break;case 11<i:i-=12,s="pm"}return{hours:i,dayPeriod:s}},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 t=s(e.target),i=t.attr("name");this.d.timepickerIsActive=!0,this[i]=t.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 t=s(e.target).attr("name");s(".fdatepicker--time-current-"+t,this.$timepicker).addClass("-focus-")},_onMouseOutRange:function(e){var t=s(e.target).attr("name");this.d.inFocus||s(".fdatepicker--time-current-"+t,this.$timepicker).removeClass("-focus-")},_onMouseUpRange:function(e){this.d.timepickerIsActive=!1}}},"function"==typeof define&&define.amd?define(["jquery"],r):r(jQuery)}(window,jQuery);
     1!function(t,e,c){var s,a,n,r;s=function(n){n.escapeSelector||(n.escapeSelector=function(e){return(e+"").replace(/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e})});function s(e,t){this.el=e,this.$el=n(e),this.opts=n.extend(!0,{},o,t,this.$el.data()),a==c&&(a=n("body")),this.opts.startDate||(this.opts.startDate=new Date),"INPUT"==this.el.nodeName&&(this.elIsInput=!0),this.opts.altField&&("string"==typeof this.opts.altField?(this.opts.altField.match("^#")&&(this.opts.altField=this.opts.altField.substring(1)),this.$altField=n("#"+n.escapeSelector(this.opts.altField))):this.$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()}var a,r,f,h="fdatepicker",e=!1,o={classes:"",inline:!1,language:"en",startDate:new Date,firstDay:"",weekends:[6,0],dateFormat:"",altField:"",altFieldDateFormat:"u",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:",",altFieldMultipleDatesSeparator:",",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:"M, <i>Y</i>",months:"Y",years:"Y1 - Y2"},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]};(f=s).prototype={VERSION:"2.2.3",viewIndexes:["days","months","years"],init:function(){e||this.opts.inline||!this.elIsInput||this._buildfDatepickersContainer(),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.$fdatepicker.on("mousedown",this._onMouseDownfDatepicker.bind(this)),this.$fdatepicker.on("mouseup",this._onMouseUpfDatepicker.bind(this))),this.opts.classes&&this.$fdatepicker.addClass(this.opts.classes),this.opts.timepicker&&(this.timepicker=new n.fn.fdatepicker.Timepicker(this,this.opts),this._bindTimepickerEvents()),this.opts.onlyTimepicker&&this.$fdatepicker.addClass("-only-timepicker-"),this.views[this.currentView]=new n.fn.fdatepicker.Body(this,this.currentView,this.opts),this.views[this.currentView].show(),this.nav=new n.fn.fdatepicker.Navigation(this,this.opts),this.view=this.currentView,this.$el.on("clickCell.adp",this._onClickCell.bind(this)),this.$fdatepicker.on("mouseenter",".fdatepicker--cell",this._onMouseEnterCell.bind(this)),this.$fdatepicker.on("mouseleave",".fdatepicker--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)),n(t).on("resize.adp",this._onResize.bind(this)),n("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=n.fn.fdatepicker.language[e],this.loc||(console.warn("Can't find language \""+e+'" in fDatepicker.language, will use "en" instead'),this.loc=n.extend(!0,{},n.fn.fdatepicker.language.en)),this.loc=n.extend(!0,{},n.fn.fdatepicker.language.en,n.fn.fdatepicker.language[e])):this.loc=n.extend(!0,{},n.fn.fdatepicker.language.en,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),this.loc.timeFormat.match(/a/i)&&(this.ampm=!0)},_buildfDatepickersContainer:function(){e=!0,a.append('<div class="fdatepickers-container" id="fdatepickers-container"></div>'),r=n("#fdatepickers-container")},_buildBaseHtml:function(){var e,t=n('<div class="fdatepicker-inline">');e="INPUT"==this.el.nodeName?this.opts.inline?t.insertAfter(this.$el):r:t.appendTo(this.$el),this.$fdatepicker=n('<div class="fdatepicker"><i class="fdatepicker--pointer"></i><nav class="fdatepicker--nav"></nav><div class="fdatepicker--content"></div></div>').appendTo(e),this.$content=n(".fdatepicker--content",this.$fdatepicker),this.$nav=n(".fdatepicker--nav",this.$fdatepicker)},_triggerOnChange:function(){if(!this.selectedDates.length){if(""===this._prevOnSelectValue)return;return this._prevOnSelectValue="",this.opts.onSelect("","",this)}var e,t=this.selectedDates,i=f.getParsedDate(t[0]),s=this,a=new Date(i.year,i.month,i.date,i.hours,i.minutes);e=t.map(function(e){return s.formatDate(s.loc.dateFormat,e)}).join(this.opts.multipleDatesSeparator),(this.opts.multipleDates||this.opts.range)&&(a=t.map(function(e){var t=f.getParsedDate(e);return new Date(t.year,t.month,t.date,t.hours,t.minutes)})),this._prevOnSelectValue=e,this.opts.onSelect(e,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 s,a="",n=this.loc,r=f.getLeadingZeroNum,h=f.getDecade(t),o=f.getParsedDate(t),d=o.fullHours,c=o.hours,l=e.match(/a/i),u="",m=!1,p=!1;for(this.opts.timepicker&&this.timepicker&&l&&(d=r((s=this.timepicker._getValidHoursFromDate(t,l)).hours),c=s.hours,u=s.dayPeriod),e=(e=e.replace("Y1",h[0])).replace("Y2",h[1]),i=0;i<e.length;i++)if(chr=e.charAt(i),m)a+=chr,m=!1;else if(p)a+=chr,">"==chr&&(p=!1);else switch(chr){case"\\":m=!0;break;case"<":a+=chr,p=!0;break;case"y":a+=o.year.toString().slice(-2);break;case"Y":a+=o.year;break;case"m":a+=o.fullMonth;break;case"n":a+=o.month+1;break;case"M":a+=n.monthsShort[o.month];break;case"F":a+=this.loc.months[o.month];break;case"d":a+=o.fullDate;break;case"j":a+=o.date;break;case"D":a+=n.daysShort[o.day];break;case"l":a+=n.days[o.day];break;case"N":a+=o.day+1;break;case"w":a+=o.day;break;case"S":o.date%10==1&&11!==o.date?a+="st":o.date%10==2&&12!==o.date?a+="nd":o.date%10==3&&13!==o.date?a+="rd":a+="th";break;case"g":a+=c;break;case"h":a+=d;break;case"G":a+=c;break;case"H":a+=o.fullHours;break;case"i":a+=o.fullMinutes;break;case"s":a+=o.fullSeconds;break;case"a":a+=u;break;case"A":a+=u.toUpperCase();break;default:a+=chr}return a},selectDate:function(e){var t=this,i=t.opts,s=t.parsedDate,a=t.selectedDates.length,n="";if(("string"==typeof e||e instanceof String)&&-1!==e.indexOf(",")){e.split(",").forEach(function(e){t.selectDate(e)})}else{if(e instanceof Date||(e=f.convertStringToDate(e)),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&&e.getFullYear()==s.year||!i.moveToOtherMonthsOnSelect||(n=new Date(e.getFullYear(),e.getMonth(),1))),"years"==t.view&&e.getFullYear()!=s.year&&i.moveToOtherYearsOnSelect&&(n=new Date(e.getFullYear(),0,1)),n&&(t.silent=!0,t.date=n,t.silent=!1,t.nav._render()),i.multipleDates&&!i.range){if(a===i.multipleDates)return;t._isSelected(e)||t.selectedDates.push(e)}else i.range?2==a?(t.selectedDates=[e],t.minRange=e,t.maxRange=""):1==a?(t.selectedDates.push(e),t.maxRange?t.minRange=e:t.maxRange=e,f.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(i){var s=this.selectedDates,a=this;if(i instanceof Date)return s.some(function(e,t){if(f.isSame(e,i))return s.splice(t,1),a.selectedDates.length?a.lastSelectedDate=a.selectedDates[a.selectedDates.length-1]:(a.minRange="",a.maxRange="",a.lastSelectedDate=""),a.views[a.currentView]._render(),a._setInputValue(),a.opts.onSelect&&a._triggerOnChange(),!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,t){var i=arguments.length,s=this.lastSelectedDate;return 2==i?this.opts[e]=t:1==i&&"object"==typeof e&&(this.opts=n.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.$fdatepicker.addClass(this.opts.classes),this.opts.onlyTimepicker&&this.$fdatepicker.addClass("-only-timepicker-"),this.opts.timepicker&&(s&&this.timepicker._handleDate(s),this.timepicker._updateRanges(),this.timepicker._updateCurrentTime(),s&&(s.setHours(this.timepicker.hours),s.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(t,i){var s=!1;return this.selectedDates.some(function(e){if(f.isSame(e,t,i))return s=e,!0}),s},_setInputValue:function(){var e,t=this,i=t.opts,s=t.loc.dateFormat,a=i.altFieldDateFormat,n=t.selectedDates.map(function(e){return t.formatDate(s,e)});i.altField&&t.$altField.length&&(e=(e=this.selectedDates.map(function(e){return t.formatDate(a,e)})).join(this.opts.altFieldMultipleDatesSeparator),this.$altField.val(e)),n=n.join(this.opts.multipleDatesSeparator),this.$el.val(n)},_isInRange:function(e,t){var i=e.getTime(),s=f.getParsedDate(e),a=f.getParsedDate(this.minDate),n=f.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,i=e.data("year")||t.year,s=e.data("month")==c?t.month:e.data("month"),a=e.data("date")||1;return new Date(i,s,a)},_setPositionClasses:function(e){var t=(e=e.split(" "))[0],i="fdatepicker -"+t+"-"+e[1]+"- -from-"+t+"-";this.visible&&(i+=" active"),this.$fdatepicker.removeAttr("class").addClass(i)},setPosition:function(e){e=e||this.opts.position;var t,i,s=this._getDimensions(this.$el),a=this._getDimensions(this.$fdatepicker),n=e.split(" "),r=this.opts.offset,h=n[0],o=n[1];switch(h){case"top":t=s.top-a.height-r;break;case"right":i=s.left+s.width+r;break;case"bottom":t=s.top+s.height+r;break;case"left":i=s.left-a.width-r}switch(o){case"top":t=s.top;break;case"right":i=s.left+s.width-a.width;break;case"bottom":t=s.top+s.height-a.height;break;case"left":i=s.left;break;case"center":/left|right/.test(h)?t=s.top+s.height/2-a.height/2:i=s.left+s.width/2-a.width/2}this.$fdatepicker.css({left:i,top:t})},show:function(){var e=this.opts.onShow;this.setPosition(this.opts.position),this.$fdatepicker.addClass("active"),this.visible=!0,e&&this._bindVisionEvents(e)},hide:function(){var e=this.opts.onHide;this.$fdatepicker.removeClass("active").css({left:"-100000px"}),this.focused="",this.keys=[],this.inFocus=!1,this.visible=!1,this.$el.trigger("blur"),e&&this._bindVisionEvents(e)},down:function(e){this._changeView(e,"down")},up:function(e){this._changeView(e,"up")},_bindVisionEvents:function(e){this.$fdatepicker.off("transitionend.dp"),e(this,!1),this.$fdatepicker.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;2<i&&(i=2),i<0&&(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 t,i,s,a=f.getParsedDate(this._getFocusedDate()),n=this.opts,r=!1,h=!1,o=!1,d=a.year,c=a.month,l=a.date;switch(e){case"ctrlRight":case"ctrlUp":c+=1,r=!0;break;case"ctrlLeft":case"ctrlDown":c-=1,r=!0;break;case"shiftRight":case"shiftUp":h=!0,d+=1;break;case"shiftLeft":case"shiftDown":h=!0,d-=1;break;case"altRight":case"altUp":o=!0,d+=10;break;case"altLeft":case"altDown":o=!0,d-=10;break;case"ctrlShiftUp":this.up()}s=f.getDaysCount(new Date(d,c)),i=new Date(d,c,l),s<l&&(l=s),i.getTime()<this.minTime?i=this.minDate:i.getTime()>this.maxTime&&(i=this.maxDate),this.focused=i,t=f.getParsedDate(i),r&&n.onChangeMonth&&n.onChangeMonth(t.month,t.year),h&&n.onChangeYear&&n.onChangeYear(t.year),o&&n.onChangeDecade&&n.onChangeDecade(this.curDecade)},_registerKey:function(t){this.keys.some(function(e){return e==t})||this.keys.push(t)},_unRegisterKey:function(e){var t=this.keys.indexOf(e);this.keys.splice(t,1)},_isHotKeyPressed:function(){var e,t=!1,i=this.keys.sort();for(var s in d)e=d[s],i.length==e.length&&e.every(function(e,t){return e==i[t]})&&(this._trigger("hotKey",s),t=!0);return t},_trigger:function(e,t){this.$el.trigger(e,t)},_focusNextCell:function(e,t){t=t||this.cellType;var i=f.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,t){t=t||this.cellType;var i,s=f.getParsedDate(e),a='.fdatepicker--cell[data-year="'+s.year+'"]';switch(t){case"month":a='[data-month="'+s.month+'"]';break;case"day":a+='[data-month="'+s.month+'"][data-date="'+s.date+'"]'}return(i=this.views[this.currentView].$el.find(a)).length?i:n("")},destroy:function(){var e=this;e.$el.off(".adp").data("fdatepicker",""),e.selectedDates=[],e.focused="",e.views={},e.keys=[],e.minRange="",e.maxRange="",e.opts.inline||!e.elIsInput?e.$fdatepicker.closest(".fdatepicker-inline").remove():e.$fdatepicker.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()},_onMouseDownfDatepicker:function(e){this.inFocus=!0},_onMouseUpfDatepicker:function(e){this.inFocus=!1,e.originalEvent.inFocus=!0,e.originalEvent.timepickerFocus||this.$el.trigger("focus")},_onKeyUpGeneral:function(e){this.$el.val()||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),37<=t&&t<=40&&(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 t=n(e.target).closest(".fdatepicker--cell"),i=this._getDateFromCell(t);this.silent=!0,this.focused&&(this.focused=""),t.addClass("-focus-"),this.focused=i,this.silent=!1,this.opts.range&&1==this.selectedDates.length&&(this.minRange=this.selectedDates[0],this.maxRange="",f.less(this.minRange,this.focused)&&(this.maxRange=this.minRange,this.minRange=""),this.views[this.currentView]._update())},_onMouseLeaveCell:function(e){n(e.target).closest(".fdatepicker--cell").removeClass("-focus-"),this.silent=!0,this.focused="",this.silent=!1},_onTimeChange:function(e,t,i){var s=new Date,a=!1;this.selectedDates.length&&(a=!0,s=this.lastSelectedDate),s.setHours(t),s.setMinutes(i),a||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="",f.less(this.minRange,this._focused)&&(this.maxRange=this.minRange,this.minRange="")),this.silent||(this.date=e)},get focused(){return this._focused},get parsedDate(){return f.getParsedDate(this.date)},set date(e){if(e instanceof Date)return this.currentDate=e,this.inited&&!this.silent&&(this.views[this.view]._render(),this.nav._render(),this.visible&&this.elIsInput&&this.setPosition()),e},get date(){return this.currentDate},set view(e){if(this.viewIndex=this.viewIndexes.indexOf(e),!(this.viewIndex<0))return this.prevView=this.currentView,this.currentView=e,this.inited&&(this.views[e]?this.views[e]._render():this.views[e]=new n.fn.fdatepicker.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=f.getParsedDate(this.minDate);return new Date(e.year,e.month,e.date).getTime()},get maxTime(){var e=f.getParsedDate(this.maxDate);return new Date(e.year,e.month,e.date).getTime()},get curDecade(){return f.getDecade(this.date)}},f.getDaysCount=function(e){return new Date(e.getFullYear(),e.getMonth()+1,0).getDate()},f.getTimeOffSetString=function(){var e,t=(new Date).getTimezoneOffset(),i=parseInt(Math.abs(t/60)),s=Math.abs(t%60);return i<10&&(i="0"+i),s<10&&(s="0"+s),t<0?e="+"+i+":"+s:0<t?e="-"+i+":"+s:0==t&&(e="Z"),e},f.convertStringToDate=function(e){if(("string"==typeof e||e instanceof String)&&""!==e)if(isNaN(e)){if(e.match(/^(\d{4})\-(\d{2})\-(\d{2}).(\d{2}):(\d{2})(:(\d{2})?)$/))e+=f.getTimeOffSetString();date=new Date(e)}else date=new Date(parseInt(e));else date="number"==typeof e&&""!==e?new Date(e):new Date;return date},f.getParsedDate=function(e){return e instanceof Date||(e=f.convertStringToDate(e)),{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(),seconds:e.getSeconds(),fullSeconds:e.getSeconds()<10?"0"+e.getSeconds():e.getSeconds()}},f.getDecade=function(e){var t=10*Math.floor(e.getFullYear()/10);return[t,9+t]},f.template=function(e,i){return e.replace(/#\{([\w]+)\}/g,function(e,t){if(i[t]||0===i[t])return i[t]})},f.isSame=function(e,t,i){if(!e||!t)return!1;var s=f.getParsedDate(e),a=f.getParsedDate(t),n=i||"day";return{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}[n]},f.less=function(e,t,i){return!(!e||!t)&&t.getTime()<e.getTime()},f.bigger=function(e,t,i){return!(!e||!t)&&t.getTime()>e.getTime()},f.getLeadingZeroNum=function(e){return parseInt(e)<10?"0"+e:e},f.resetTime=function(e){if("object"==typeof e)return e=f.getParsedDate(e),new Date(e.year,e.month,e.date)},n.fn.fdatepicker=function(t){return this.each(function(){if(n.data(this,h)){var e=n.data(this,h);e.opts=n.extend(!0,e.opts,t),e.update()}else n.data(this,h,new s(this,t))})},n.fn.fdatepicker.Constructor=s,n.fn.fdatepicker.language={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",dateFormat:"m/d/Y",timeFormat:"h:i a",firstDay:0}},n(function(){n(".fdatepicker-here").fdatepicker()})},"function"==typeof define&&define.amd?define(["jquery"],s):s(jQuery),a=function(r){var e={days:'<div class="fdatepicker--days fdatepicker--body"><div class="fdatepicker--days-names"></div><div class="fdatepicker--cells fdatepicker--cells-days"></div></div>',months:'<div class="fdatepicker--months fdatepicker--body"><div class="fdatepicker--cells fdatepicker--cells-months"></div></div>',years:'<div class="fdatepicker--years fdatepicker--body"><div class="fdatepicker--cells fdatepicker--cells-years"></div></div>'},t=r.fn.fdatepicker,u=t.Constructor;t.Body=function(e,t,i){this.d=e,this.type=t,this.opts=i,this.$el=r(""),this.opts.onlyTimepicker||this.init()},t.Body.prototype={init:function(){this._buildBaseHtml(),this._render(),this._bindEvents()},_bindEvents:function(){this.$el.on("click",".fdatepicker--cell",r.proxy(this._onClickCell,this))},_buildBaseHtml:function(){this.$el=r(e[this.type]).appendTo(this.d.$content),this.$names=r(".fdatepicker--days-names",this.$el),this.$cells=r(".fdatepicker--cells",this.$el)},_getDayNamesHtml:function(e,t,i,s){return i=i||"",7<(s=s!=c?s:0)?i:7==(t=t!=c?t:e)?this._getDayNamesHtml(e,0,i,++s):(i+='<div class="fdatepicker--day-name'+(this.d.isWeekend(t)?" -weekend-":"")+'">'+this.d.loc.daysMin[t]+"</div>",this._getDayNamesHtml(e,++t,i,++s))},_getCellContents:function(e,t){var i="fdatepicker--cell fdatepicker--cell-"+t,s=new Date,a=this.d,n=u.resetTime(a.minRange),r=u.resetTime(a.maxRange),h=a.opts,o=u.getParsedDate(e),d={},c=o.date;switch(t){case"day":a.isWeekend(o.day)&&(i+=" -weekend-"),o.month!=this.d.parsedDate.month&&(i+=" -other-month-",h.selectOtherMonths||(i+=" -disabled-"),h.showOtherMonths||(c=""));break;case"month":c=a.loc[a.opts.monthsField][o.month];break;case"year":var l=a.curDecade;c=o.year,(o.year<l[0]||o.year>l[1])&&(i+=" -other-decade-",h.selectOtherYears||(i+=" -disabled-"),h.showOtherYears||(c=""))}return h.onRenderCell&&(c=(d=h.onRenderCell(e,t)||{}).html?d.html:c,i+=d.classes?" "+d.classes:""),h.range&&(u.isSame(n,e,t)&&(i+=" -range-from-"),u.isSame(r,e,t)&&(i+=" -range-to-"),1==a.selectedDates.length&&a.focused?((u.bigger(n,e)&&u.less(a.focused,e)||u.less(r,e)&&u.bigger(a.focused,e))&&(i+=" -in-range-"),u.less(r,e)&&u.isSame(a.focused,e)&&(i+=" -range-from-"),u.bigger(n,e)&&u.isSame(a.focused,e)&&(i+=" -range-to-")):2==a.selectedDates.length&&u.bigger(n,e)&&u.less(r,e)&&(i+=" -in-range-")),u.isSame(s,e,t)&&(i+=" -current-"),a.focused&&u.isSame(e,a.focused,t)&&(i+=" -focus-"),a._isSelected(e,t)&&(i+=" -selected-"),a._isInRange(e,t)&&!d.disabled||(i+=" -disabled-"),{html:c,classes:i}},_getDaysHtml:function(e){for(var t,i,s=u.getDaysCount(e),a=new Date(e.getFullYear(),e.getMonth(),1).getDay(),n=new Date(e.getFullYear(),e.getMonth(),s).getDay(),r=a-this.d.loc.firstDay,h=6-n+this.d.loc.firstDay,o="",d=1-(r=r<0?r+7:r),c=s+(h=6<h?h-7:h);d<=c;d++)i=e.getFullYear(),t=e.getMonth(),o+=this._getDayHtml(new Date(i,t,d));return o},_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=u.getParsedDate(e),s=0;s<12;)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){u.getParsedDate(e);for(var t=u.getDecade(e),i="",s=t[0]-1;s<=t[1]+1;s++)i+=this._getYearHtml(new Date(s,0));return i},_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 i,s,a,e=r(".fdatepicker--cell",this.$cells),n=this;e.each(function(e,t){s=r(this),a=n.d._getDateFromCell(r(this)),i=n._getCellContents(a,n.d.cellType),s.attr("class",i.classes)})},show:function(){this.opts.onlyTimepicker||(this.$el.addClass("active"),this.active=!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){var n=new Date(s,i,t),r=this.d._isSelected(n,this.d.cellType);r?a._handleAlreadySelectedDates.bind(a,r,n)():a._trigger("clickCell",n)}else a.down(new Date(s,i,t))},_onClickCell:function(e){var t=r(e.target).closest(".fdatepicker--cell");t.hasClass("-disabled-")||this._handleClick.bind(this)(t)}}},"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery),n=function(s){var e=s.fn.fdatepicker,n=e.Constructor;e.Navigation=function(e,t){this.d=e,this.opts=t,this.$buttonsContainer="",this.init()},e.Navigation.prototype={init:function(){this._buildBaseHtml(),this._bindEvents()},_bindEvents:function(){this.d.$nav.on("click",".fdatepicker--nav-action",s.proxy(this._onClickNavButton,this)),this.d.$nav.on("click",".fdatepicker--nav-title",s.proxy(this._onClickNavTitle,this)),this.d.$fdatepicker.on("click",".fdatepicker--button",s.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 e=this._getTitle(this.d.currentDate),t=n.template('<div class="fdatepicker--nav-action" data-fpicker-action="prev">#{prevHtml}</div><div class="fdatepicker--nav-title">#{title}</div><div class="fdatepicker--nav-action" data-fpicker-action="next">#{nextHtml}</div>',s.extend({title:e},this.opts));this.d.$nav.html(t),"years"==this.d.view&&s(".fdatepicker--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 t={action:e,label:this.d.loc[e]},i=n.template('<span class="fdatepicker--button" data-fpicker-action="#{action}">#{label}</span>',t);s("[data-fpicker-action="+e+"]",this.$buttonsContainer).length||this.$buttonsContainer.append(i)},_addButtonsContainer:function(){this.d.$fdatepicker.append('<div class="fdatepicker--buttons"></div>'),this.$buttonsContainer=s(".fdatepicker--buttons",this.d.$fdatepicker)},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){s('[data-fpicker-action="'+e+'"]',this.d.$nav).addClass("-disabled-")},_activateNav:function(e){s('[data-fpicker-action="'+e+'"]',this.d.$nav).removeClass("-disabled-")},_onClickNavButton:function(e){var t=s(e.target).closest("[data-fpicker-action]").data("fpicker-action");this.d[t]()},_onClickNavTitle:function(e){if(!s(e.target).hasClass("-disabled-"))return"days"==this.d.view?this.d.view="months":void(this.d.view="years")}}},"function"==typeof define&&define.amd?define(["jquery"],n):n(jQuery),r=function(s){var e=s.fn.fdatepicker,a=e.Constructor;e.Timepicker=function(e,t){this.d=e,this.opts=t,this.init()},e.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=a.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=this.opts;this.minHours=e.minHours<0||23<e.minHours?0:e.minHours,this.minMinutes=e.minMinutes<0||59<e.minMinutes?0:e.minMinutes,this.maxHours=e.maxHours<0||23<e.maxHours?23:e.maxHours,this.maxMinutes=e.maxMinutes<0||59<e.maxMinutes?59:e.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 e=a.getLeadingZeroNum,t={hourMin:this.minHours,hourMax:e(this.maxHours),hourStep:this.opts.hoursStep,hourValue:this.hours,hourVisible:e(this.displayHours),minMin:this.minMinutes,minMax:e(this.maxMinutes),minStep:this.opts.minutesStep,minValue:e(this.minutes)},i=a.template('<div class="fdatepicker--time"><div class="fdatepicker--time-current">   <span class="fdatepicker--time-current-hours">#{hourVisible}</span>   <span class="fdatepicker--time-current-colon">:</span>   <span class="fdatepicker--time-current-minutes">#{minValue}</span></div><div class="fdatepicker--time-sliders">   <div class="fdatepicker--time-row">      <input type="range" name="hours" value="#{hourValue}" min="#{hourMin}" max="#{hourMax}" step="#{hourStep}"/>   </div>   <div class="fdatepicker--time-row">      <input type="range" name="minutes" value="#{minValue}" min="#{minMin}" max="#{minMax}" step="#{minStep}"/>   </div></div></div>',t);this.$timepicker=s(i).appendTo(this.d.$fdatepicker),this.$ranges=s('[type="range"]',this.$timepicker),this.$hours=s('[name="hours"]',this.$timepicker),this.$minutes=s('[name="minutes"]',this.$timepicker),this.$hoursText=s(".fdatepicker--time-current-hours",this.$timepicker),this.$minutesText=s(".fdatepicker--time-current-minutes",this.$timepicker),this.d.ampm&&(this.$ampm=s('<span class="fdatepicker--time-current-ampm">').appendTo(s(".fdatepicker--time-current",this.$timepicker)).html(this.dayPeriod),this.$timepicker.addClass("-am-pm-"))},_updateCurrentTime:function(){var e=a.getLeadingZeroNum(this.displayHours),t=a.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&&(a.isSame(e,this.d.opts.minDate)?this._setMinTimeFromDate(this.d.opts.minDate):a.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;e instanceof Date&&(i=a.getParsedDate(e).hours);var s="am";if(t||this.d.ampm)switch(!0){case 0==i:i=12;break;case 12==i:s="pm";break;case 11<i:i-=12,s="pm"}return{hours:i,dayPeriod:s}},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 t=s(e.target),i=t.attr("name");this.d.timepickerIsActive=!0,this[i]=t.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 t=s(e.target).attr("name");s(".fdatepicker--time-current-"+t,this.$timepicker).addClass("-focus-")},_onMouseOutRange:function(e){var t=s(e.target).attr("name");this.d.inFocus||s(".fdatepicker--time-current-"+t,this.$timepicker).removeClass("-focus-")},_onMouseUpRange:function(e){this.d.timepickerIsActive=!1}}},"function"==typeof define&&define.amd?define(["jquery"],r):r(jQuery)}(window,jQuery);
Note: See TracChangeset for help on using the changeset viewer.