8 lines
35 KiB
JavaScript
8 lines
35 KiB
JavaScript
/**
|
|
* @preserve jQuery PeriodPicker plugin v5.4.2
|
|
* @homepage http://xdsoft.net/jqplugins/periodpicker/
|
|
* @copyright (c) 2016 xdsoft.net Chupurnov Valeriy
|
|
* @license PRO http://xdsoft.net/jqplugins/periodpicker/license/
|
|
*/
|
|
!function(a,b,c){"use strict";function d(b,c,e){var f,g=e||new Date;return g.isTW=!0,g.weekdays=function(a){var b,c,d=moment.weekdaysShort();for(b=d.splice(1),b[6]=d[0],d=b,b=d.splice(a-1),c=0;a-1>c;c+=1)b.push(d[c]);return b},g.clone=function(a,b,c,e,f,h){var i=new d(!1,!1,new Date(g.getTime()));return e&&i.setHours(e),f&&i.setMinutes(f),h&&i.setSeconds(h),a&&i.setFullYear(a),b&&i.setMonth(b),c&&i.setDate(c),i},g.inRange=function(a,b){return moment(a).isBetween(b[0],b[1],"day")||moment(a).isSame(b[0],"day")||moment(a).isSame(b[1],"day")},g.isValid=function(){return"[object Date]"!==Object.prototype.toString.call(g)?!1:!isNaN(g.getTime())},g.parseStr=function(b,c){var e;return e="string"==typeof b?moment(b,c):"date"===a.type(b)?new d(0,0,new Date(b.getTime())):b,e&&e.isValid()?g=e.isTW?e:new d(0,0,e.toDate()):null},g.isEqualDate=function(a,b){return a&&a.isValid()&&b&&b.isValid()?a.getDate()===b.getDate()&&a.getMonth()===b.getMonth()&&a.getMonth()===b.getMonth():!1},g.format=function(a){return f=moment(g).format(a),new RegExp("^[0-9]+$").test(f)?parseInt(f,10):f},g.countDaysInMonth=function(){return new Date(g.getFullYear(),g.getMonth()+1,0).getDate()},b&&c&&g.parseStr(b,c),g}function e(b,c){var e,f=this,h=[];f.options=c,f.picker=a('<div unselectable="on" class="period_picker_box xdsoft_noselect" style=""><div class="period_picker_resizer"></div><div class="period_picker_head"><span class="period_picker_head_title"></span><span class="period_picker_max_min" title="'+this.i18n("Open fullscreen")+'"></span><span class="period_picker_close" title="'+this.i18n("Close")+'"></span></div><div class="period_picker_years"><div class="period_picker_years_inner"><div class="period_picker_years_selector"><div class="period_picker_years_selector_container" style="width: 5960px; left: 0px;"></div></div></div></div><div class="period_picker_work"><a href="" class="xdsoft_navigate xdsoft_navigate_prev"></a><div class="period_picker_timepicker_box"><input data-index="0" class="timepicker" type="hidden"></div><div class="period_picker_days"><table><tbody></tbody></table></div><div class="period_picker_timepicker_box"><input data-index="1" class="timepicker" type="hidden"></div><a href="" class="xdsoft_navigate xdsoft_navigate_next"></a></div><div class="period_picker_submit_shadow"></div><div class="period_picker_submit_dates"><span class="period_picker_from_time_block period_picker_time"><span class="input_box"><input data-index="0" class="input_control period_picker_from_time"></span></span><span class="period_picker_from_block period_picker_date"><span class="input_box"><input class="input_control period_picker_from" maxlength="10"></span></span><span class="period_picker_date_separator">—</span><span class="period_picker_to_block period_picker_date"><span class="input_box"><input class="input_control period_picker_to" maxlength="10"></span></span><span class="period_picker_to_time_block period_picker_time"><span class="input_box"><input data-index="1" class="input_control period_picker_to_time"></span></span><button class="period_picker_show period_picker_ok" role="button" type="button"><span class="button_text">'+this.i18n("OK")+'</span></button><button class="period_picker_show period_picker_today" role="button" type="button"><span class="button_text">'+this.i18n("Today")+'</span></button><button class="period_picker_show period_picker_clear" role="button" type="button"><span class="button_text">'+this.i18n("Clear")+"</span></button></div></div>"),f.pickerdays=f.picker.find(".period_picker_days"),f.calendarbox=f.pickerdays.find("> table > tbody"),f.yearsline=f.picker.find(".period_picker_years_selector_container"),f.yearslineparent=f.picker.find(".period_picker_years_selector"),f.timepicker=f.picker.find(".period_picker_timepicker_box"),f.button=a('<div class="period_picker_input" type="button"><span class="period_button_text"><span class="period_button_content_wrapper"><span class="period_button_content"><span class="icon_calendar"></span><span class="period_button_content_body">'+this.i18n(c.norange?"Choose date":"Choose period")+'</span><span class="icon_clear"></span></span></span></span></div>'),f.startinput=a(c.start?c.start:b),f.endinput=a(c.end),f.startinput.attr("autocomplete","off"),f.endinput.attr("autocomplete","off"),f.periodtime=[[]],f.period=[],f.director=0,e=new d,h[0]=f.startinput.val(),h[1]=f.endinput.val(),f.addRange([e.parseStr(h[0],c.timepicker?c.formatDateTime:c.formatDate)||e.parseStr(h[0],c.formatDate),e.parseStr(h[1],c.timepicker?c.formatDateTime:c.formatDate)||e.parseStr(h[1],c.formatDate)]),f.onAfterShow=[],f.onAfterHide=[],f.onAfterRegenerate=[],f.uniqueid=g,f.currentTimepickerIndex=0,f.timepickerSetLimits=!1,f.timer1=0,f.timer2=0,f.timer3=0,g+=1,f.applyOptions(),f.init(),c.timepicker&&void 0!==a.fn.TimePicker&&f.addRangeTime(e.parseStr(h[0],c.formatDateTime)||e.parseStr(h[0],c.formatDate),e.parseStr(h[1],c.formatDateTime)||e.parseStr(h[1],c.formatDate))}var f,g=0,h=function(a,b){(b||void 0===b)&&a.is(":hidden")?a.each(function(){this.style.display=""}):b||a.hide()};e.prototype.applyOptions=function(){var b,c=this.options,e=this;e.picker.toggleClass("period_picker_maximize",c.fullsize),h(e.picker.find(".period_picker_resizer"),c.resizeButton),h(e.picker.find(".period_picker_head_title").html(e.i18n(c.norange?"Select date":"Select period")),c.title),h(e.picker.find(".period_picker_max_min"),c.fullsizeButton),h(e.picker.find(".period_picker_close"),c.closeButton&&!c.inline),h(e.picker.find(".period_picker_years"),c.yearsLine),h(e.picker.find(".xdsoft_navigate"),c.navigate),h(e.picker.find(".period_picker_timepicker_box").eq(0),c.timepicker&&void 0!==a.fn.TimePicker),h(e.picker.find(".period_picker_timepicker_box").eq(1),c.timepicker&&void 0!==a.fn.TimePicker&&!c.norange),e.picker.find(".period_picker_date,.period_picker_date_separator").css("visibility",c.showDatepickerInputs?"":"hidden"),h(e.picker.find(".period_picker_from_time_block"),c.timepicker&&void 0!==a.fn.TimePicker),e.picker.find(".period_picker_from_time_block").css("visibility",c.showTimepickerInputs?"":"hidden"),h(e.picker.find(".period_picker_to_time_block"),c.timepicker&&void 0!==a.fn.TimePicker&&!e.options.norange),e.picker.find(".period_picker_to_time_block").css("visibility",c.showTimepickerInputs?"":"hidden"),h(e.picker.find(".period_picker_ok"),c.okButton&&!c.inline),h(e.picker.find(".period_picker_today"),c.todayButton),h(e.picker.find(".period_picker_clear"),c.clearButton),h(e.button.find(".period_button_content .icon_clear"),c.clearButtonInButton),c.tabIndex!==!1&&e.button.attr("tabindex",c.tabIndex),!c.withoutBottomPanel&&(c.todayButton||c.clearButton||c.okButton&&!c.inline||c.showDatepickerInputs||c.showTimepickerInputs&&c.timepicker&&void 0!==a.fn.TimePicker)||(e.picker.addClass("without_bottom_panel"),c.withoutBottomPanel=!0,c.someYOffset=0),c.yearsLine||e.picker.addClass("without_yearsline"),c.title||c.fullsizeButton||c.closeButton&&!c.inline||e.picker.addClass("without_header"),c.timepicker&&void 0!==a.fn.TimePicker&&e.picker.addClass("with_first_timepicker"),c.timepicker&&void 0!==a.fn.TimePicker&&!c.norange&&e.picker.addClass("with_second_timepicker"),c.animation&&e.picker.addClass("animation"),c.norange&&e.picker.addClass("xdsoft_norange"),c.inline&&e.picker.addClass("xdsoft_inline"),b=function(b){var d,f=!1;if(void 0!==c[b]&&a.isFunction(c[b])){for(d=0;d<e[b].length;d+=1)if(c[b]===e[b][d]){f=!0;break}f||e[b].push(c[b])}},b("onAfterShow"),b("onAfterHide"),b("onAfterRegenerate"),e.maxdate=c.maxDate?new d(c.maxDate,c.formatDate):!1,e.mindate=c.minDate?new d(c.minDate,c.formatDate):!1,e.monthcount=c.cells[0]*c.cells[1],e.picker.css({width:c.cells[1]*c.monthWidthInPixels+(c.timepicker&&a.fn.TimePicker?87*(c.norange?1:2):0)+50,height:c.cells[0]*c.monthHeightInPixels+c.someYOffset})},e.prototype.returnPeriod=function(){this.picker.find("input.period_picker_from").val(void 0!==this.period?this.period:""),this.picker.find("input.period_picker_to").val(void 0!==this.period[1]?this.period[1]:this.picker.find("input.period_picker_from").val())},e.prototype.moveTimeToDate=function(){this.options.timepicker&&this.periodtime.length&&this.periodtime[0].length&&(null!==this.period[0]&&this.period[0].format&&this.periodtime[0][0].format&&(this.period[0].setSeconds(this.periodtime[0][0].getSeconds()),this.period[0].setMinutes(this.periodtime[0][0].getMinutes()),this.period[0].setHours(this.periodtime[0][0].getHours())),null!==this.periodtime[0][1]&&null!==this.period[1]&&this.period[1].format&&this.periodtime[0][1].format&&(this.period[1].setSeconds(this.periodtime[0][1].getSeconds()),this.period[1].setMinutes(this.periodtime[0][1].getMinutes()),this.period[1].setHours(this.periodtime[0][1].getHours())))},e.prototype.syncTimesInputs=function(){if(this.options.timepicker&&void 0!==a.fn.TimePicker){var b=new d,c=this.timepicker.find("input.timepicker"),e=this.picker.find(".period_picker_submit_dates .period_picker_time input");this.periodtime[0][0]&&(a.fn.TimePicker&&c.eq(0).TimePicker("setValue",this.periodtime[0][0],!0),e.eq(0).is(":focus")||e.eq(0).val(this.periodtime[0][0].format(this.options.timepickerOptions.inputFormat))),!this.options.norange&&this.periodtime[0][1]&&(a.fn.TimePicker&&c.eq(1).TimePicker("setValue",this.periodtime[0][1],!0),e.eq(1).is(":focus")||e.eq(1).val(this.periodtime[0][1].format(this.options.timepickerOptions.inputFormat))),!this.options.norange&&this.options.useTimepickerLimits&&b.isEqualDate(this.period[0],this.period[1])&&(0===this.currentTimepickerIndex?c.eq(1).TimePicker("setMin",c.eq(0).val()).TimePicker("setMin",!1):c.eq(0).TimePicker("setMax",c.eq(1).val()).TimePicker("setMax",!1))}},e.prototype.getInputsValue=function(){var a,b=[];return this.syncTimesInputs(),this.startinput.length&&this.period&&this.period.length&&(this.moveTimeToDate(),a=this.options.timepicker?this.options.formatDateTime:this.options.formatDate,this.period[0]&&this.period[0].format&&b.push(this.period[0].format(a)),this.period[1]&&this.period[1].format&&b.push(this.period[1].format(a))),b},e.prototype.setInputsValue=function(){var a=this.getInputsValue();a.length?(a[0]&&this.startinput.val()!==a[0]&&this.startinput.val(a[0]),a[1]&&this.endinput.val()!==a[1]&&this.endinput.val(a[1])):(this.startinput.val(""),this.endinput.val("")),this.oldStringRange!==a.join("-")&&(this.oldStringRange=a.join("-"),this.startinput.trigger("change"),this.endinput.trigger("change"))},e.prototype.getLabel=function(){var a,b=[];return this.period.length&&(this.moveTimeToDate(),a=this.options.timepicker?[this.options.formatDecoreDateTimeWithYear||this.options.formatDecoreDateTime||this.options.formatDateTime,this.options.formatDecoreDateTimeWithoutMonth||this.options.formatDecoreDateTime||this.options.formatDateTime,this.options.formatDecoreDateTime||this.options.formatDateTime,this.options.formatDateTime]:[this.options.formatDecoreDateWithYear||this.options.formatDecoreDate||this.options.formatDate,this.options.formatDecoreDateWithoutMonth||this.options.formatDecoreDate||this.options.formatDate,this.options.formatDecoreDate||this.options.formatDate,this.options.formatDate],void 0!==this.period[1]&&this.period[1]&&void 0!==this.period[1].format&&this.period[1].format&&this.period[0].format(a[3])!==this.period[1].format(a[3])?(b.push(this.period[0].format(this.period[0].format("YYYY")!==this.period[1].format("YYYY")?a[0]:this.period[0].format("M")!==this.period[1].format("M")?a[2]:a[1])),b.push(this.period[1].format(a[0]))):b.push(this.period[0].format(a[0]))),b},e.prototype.setLabel=function(){var a=this.getLabel();a.length?(1===a.length?this.button.find(".period_button_content_body").html(a[0]):this.button.find(".period_button_content_body").html("<span>"+a[0]+'</span><span class="period_button_dash">—</span><span>'+a[1]+"</span>"),this.options.clearButtonInButton&&h(this.button.find(".period_button_content .icon_clear"),!0)):(this.button.find(".period_button_content_body").html(this.i18n(this.options.norange?"Choose date":"Choose period")),h(this.button.find(".period_button_content .icon_clear"),!1))},e.prototype.highlightPeriod=function(){var b=this,c=new d;moment.locale(b.options.lang),b.picker.is(":hidden")||(b.picker.find(".period_picker_cell.period_picker_selected").removeClass("period_picker_selected"),b.period.length?(b.picker.find(".period_picker_cell").each(function(){var d=c.parseStr(a(this).data("date"),b.options.formatDate);c.inRange(d,b.period)&&a(this).addClass("period_picker_selected")}),b.picker.find(".period_picker_years_period").css({width:Math.floor(b.options.yearSizeInPixels/365*Math.abs(moment(b.period[1]).diff(b.period[0],"day")))+"px",left:Math.floor(b.options.yearSizeInPixels/365*-moment([b.options.yearsPeriod[0],1,1]).diff(b.period[0],"day"))}),b.picker.find("input.period_picker_from:not(:focus)").val(void 0!==b.period[0]&&b.period[0]?b.period[0].format(b.options.formatDate):""),b.picker.find("input.period_picker_to:not(:focus)").val(void 0!==b.period[1]&&b.period[1]?b.period[1].format(b.options.formatDate):b.picker.find("input.period_picker_from").val()),b.picker.find("input.period_picker_from:not(:focus),input.period_picker_to:not(:focus)").trigger("change")):b.picker.find("input.period_picker_from:not(:focus),input.period_picker_to:not(:focus)").val("")),b.setLabel(),b.setInputsValue()},e.prototype.addRangeTime=function(a,b){var c=new d;this.periodtime[0][0]=c.parseStr(a,this.options.timepickerOptions.inputFormat),this.options.norange?this.periodtime[0][1]=this.periodtime[0][0]:(this.periodtime[0][1]=c.parseStr(b,this.options.timepickerOptions.inputFormat),null===this.periodtime[0][0]&&this.periodtime[0][1]&&(this.periodtime[0][0]=this.periodtime[0][1])),null===this.periodtime[0][0]&&(this.periodtime[0]=[]),this.setLabel(),this.setInputsValue()},e.prototype.addRange=function(b){this.oldStringRange=this.getInputsValue().join("-"),this.currentTimepickerIndex=0;var c,e=new d;if(this.options.norange&&(this.director=0),a.isArray(b))this.period=[e.parseStr(b[0],this.options.formatDate),e.parseStr(b[1],this.options.formatDate)],null===this.period[0]&&(this.period=[]),this.director=0;else{if(void 0===this.period&&(this.period=[]),this.period[this.options.norange?0:this.director]=e.parseStr(b,this.options.formatDate),null===this.period[this.director])return this.period=[],void this.highlightPeriod();this.director||(this.period[1]=this.period[this.director].clone()),this.period[0]>this.period[1]&&(c=this.period[0],this.period[0]=this.period[1],this.period[1]=c),this.director=this.director?0:1}this.options.norange&&this.period[0]&&this.period[1]&&this.period[1]!==this.period[0]&&(this.period[1]=this.period[0].clone()),this.highlightPeriod(),this.options.hideAfterSelect&&this.period[0]&&this.period[1]&&this.period[0]!==this.period[1]&&this.hide(),this.month=this.period.length?this.period[0].getMonth()+1:this.options.startMonth,this.year=this.period.length?this.period[0].getFullYear():this.options.startYear},e.prototype.recalcDraggerPosition=function(){var a=this;clearTimeout(this.timer2),this.timer2=setTimeout(function(){var b=Math.abs(parseInt(a.yearsline.css("left"),10)),c=a.picker.find(".period_picker_years_dragger"),d=parseInt(c.css("left"),10);b>d?a.yearsline.css("left",-d+"px"):d+c.width()>b+a.yearslineparent.width()&&a.yearsline.css("left",-(d+c.width()-a.yearslineparent.width())+"px")},100)},e.prototype.calcDate=function(a,b,c,d){a.setFullYear(b),a.setMonth(c),a.setDate(d)},e.prototype.getRealDateTime=function(){var a=new Date;return this.calcDate(a,this.year,this.month-1,1),[a.getMonth(),a.getFullYear()]},e.prototype.regenerate=function(b){if(this.picker.is(":visible")){var c,d=this,e=parseInt(d.pickerdays.width(),10),f=parseInt(d.picker[0].offsetHeight,10);for(moment.locale(d.options.lang),void 0===b?this.options.cells=[Math.floor((f-d.options.someYOffset)/d.options.monthHeightInPixels)||1,Math.floor(e/d.options.monthWidthInPixels)||1]:(this.options.cells=b,d.picker.css({width:this.options.cells[1]*d.options.monthWidthInPixels+(d.options.timepicker&&a.fn.TimePicker?87*(d.options.norange?1:2):0)+50,height:this.options.cells[0]*d.options.monthHeightInPixels+d.options.someYOffset})),this.options.cells[0]<0&&(this.options.cells[0]=1),d.monthcount=this.options.cells[0]*this.options.cells[1],d.generateCalendars(d.month,d.year),d.generateYearsLine(),d.recalcDraggerPosition(),d.highlightPeriod(),c=0;c<this.onAfterRegenerate.length;c+=1)this.onAfterRegenerate[c].call(this)}},e.prototype.init=function(){var e,g,h,i,j,k,l,m,n,o,p,q,r=this;r.button.on("click keydown",function(a){if("keydown"===a.type)switch(a.which){case 9:return void(r.options.inline||r.hide());case 38:case 13:break;default:return}return r.button.is("[disabled]")?(a.preventDefault(),!1):void r.toggle()}),r.options.inline||r.startinput.after(r.button),e=r.startinput.offset(),r.picker.find(".period_picker_submit_dates input").on("focus",function(){a(this).parent().parent().addClass("input_focused_yes")}).on("blur",function(){a(this).parent().parent().removeClass("input_focused_yes")}),r.picker.find(".period_picker_submit_dates .period_picker_date input").on("keydown",function(){var b=this;clearTimeout(r.timer3),r.timer3=setTimeout(function(){if(a(b).val()){var c=moment(a(b).val(),r.options.formatDate);if(!c.isValid())return void a(b).parent().parent().addClass("period_picker_error");r.addRange([r.picker.find(".period_picker_submit_dates .period_picker_date input").eq(0).val(),r.picker.find(".period_picker_submit_dates .period_picker_date input").eq(1).val()])}a(b).parent().parent().removeClass("period_picker_error")},200)}),r.options.timepicker&&a.fn.TimePicker&&(q=function(){var b,c=this,e=new d;if(r.currentTimepickerIndex=parseInt(a(this).data("index"),10),a(c).val()){if(b=moment(a(c).val(),r.options.timepickerOptions.inputFormat),!b.isValid())return void a(c).parent().parent().addClass("period_picker_error");if(this.period&&this.period.length&&e.isEqualDate(this.period[0],this.period[1])&&moment(p.eq(0).val(),r.options.timepickerOptions.inputFormat).getDate().getTime()>moment(p.eq(1).val(),r.options.timepickerOptions.inputFormat).getDate().getTime())return void a(c).parent().parent().addClass("period_picker_error");r.addRangeTime(r.picker.find(".period_picker_submit_dates .period_picker_time input").eq(0).val(),r.picker.find(".period_picker_submit_dates .period_picker_time input").eq(1).val())}a(c).parent().parent().removeClass("period_picker_error")},p=r.picker.find(".period_picker_submit_dates .period_picker_time input").on("keydown change",function(a){"keydown"===a.type?(clearTimeout(r.timer3),r.timer3=setTimeout(q.bind(this),300)):q.call(this)})),r.picker.find(".period_picker_max_min").on("click",function(){r.picker.toggleClass("period_picker_maximize"),r.regenerate()}),r.options.fullsizeOnDblClick&&r.picker.find(".period_picker_head").on("dblclick",function(){r.picker.toggleClass("period_picker_maximize"),r.regenerate()}),r.picker.find(".period_picker_close").on("click",function(){r.hide()}),r.options.mousewheel&&(r.picker.on("mousewheel",function(a){return r.month+=(r.options.reverseMouseWheel?-1:1)*a.deltaY,r.regenerate(),!1}),r.options.mousewheelYearsLine&&r.picker.find(".period_picker_years_selector").on("mousewheel",function(a){return r.year+=(r.options.reverseMouseWheel?-1:1)*a.deltaY,r.month=1,r.regenerate(),a.preventDefault(),a.stopPropagation(),!1})),r.options.navigate&&r.picker.find(".xdsoft_navigate").on("click",function(){return r.month+=a(this).hasClass("xdsoft_navigate_prev")?-1:1,r.regenerate(),!1}),r.picker.on("click",".period_picker_show.period_picker_today",function(){if(!r.options.onTodayButtonClick||!a.isFunction(r.options.onTodayButtonClick)||r.options.onTodayButtonClick.call(r)!==!1){var b=new Date;r.year=b.getFullYear(),r.month=b.getMonth()+1,r.regenerate()}}),r.picker.on("click",".period_picker_show.period_picker_ok",function(){r.options.onOkButtonClick&&a.isFunction(r.options.onOkButtonClick)&&r.options.onOkButtonClick.call(r)===!1||r.hide()}),r.options.clearButtonInButton&&r.button.find(".icon_clear").on("mousedown",function(a){return r.clear(),a.preventDefault(),a.stopPropagation(),!1}),r.options.clearButton&&r.picker.on("click",".period_picker_show.period_picker_clear",function(){r.clear()}),r.picker.on("click",".period_picker_years_selector .period_picker_year",function(){r.year=parseInt(a(this).text(),10),r.month=-Math.floor(r.monthcount/2)+1,r.regenerate()}),r.picker.on("mousedown",".period_picker_days td td,.period_picker_month",function(){if(a(this).hasClass("period_picker_month"))r.addRange([a(this).data("datestart"),a(this).data("dateend")]);else if(!a(this).hasClass("period_picker_gray_period")&&!a(this).hasClass("period_picker_empty"))if(a(this).hasClass("period_picker_selector_week")){var b=parseInt(a(this).parent().data("week"),10),c=r.picker.find("tr[data-week="+b+"] > td.period_picker_cell:not(.period_picker_gray_period)"),d=c.eq(-1),e=c.eq(0);d.length&&r.addRange([e.data("date"),d.data("date")])}else 1!==r.picker.find(".period_picker_selected").length?(r.picker.find(".period_picker_selected").removeClass("period_picker_selected"),a(this).addClass("period_picker_selected")):a(this).addClass("period_picker_selected"),r.addRange(a(this).data("date"))}),r.picker.on("mousedown",".period_picker_years_selector_container",function(b){n=a(this),o=!0,g=[b.clientX,b.clientY,parseInt(n.css("left")||0,10)],b.preventDefault()}),r.picker.on("mousedown",".period_picker_years_dragger",function(b){k=a(this),j=!0,g=[b.clientX,b.clientY,parseInt(k.css("left"),10)],b.stopPropagation(),b.preventDefault()}),r.options.draggable&&r.picker.on("mousedown",".period_picker_head",function(a){m=!0,g=[a.clientX,a.clientY,parseInt(r.picker.css("left"),10),parseInt(r.picker.css("top"),10)],a.preventDefault()}),r.picker.on("mouseup",function(b){i=!1,j=!1,m=!1,o=!1,r.options.timepicker&&a.fn.TimePicker&&r.timepicker.find("input.timepicker").TimePicker("stopDrag"),b.stopPropagation()}),r.picker.find(".period_picker_resizer").on("mousedown",function(a){i=!0,g=[a.clientX,a.clientY,parseInt(r.picker.css("width"),10),parseInt(r.picker.css("height"),10)],a.preventDefault()}),r.picker.css({left:r.options.inline?"auto":e.left,top:r.options.inline?"auto":e.top+r.button.height(),width:this.options.cells[1]*r.options.monthWidthInPixels+(r.options.timepicker&&a.fn.TimePicker?87*(r.options.norange?1:2):0)+50,height:this.options.cells[0]*r.options.monthHeightInPixels+r.options.someYOffset}),r.options.noHideSourceInputs||r.options.likeXDSoftDateTimePicker?(r.startinput.add(r.endinput).on("keydown.xdsoftpp mousedown.xdsoftpp",function(){clearTimeout(f),f=setTimeout(function(){var a,b=r.getInputsValue(),c=r.options.timepicker?r.options.formatDateTime:r.options.formatDate;(void 0!==b[0]&&b[0]!==r.startinput.val()||void 0!==b[1]&&r.endinput.length&&b[1]!==r.endinput.val())&&(a=new d,r.addRange([a.parseStr(r.startinput.val(),c),a.parseStr(r.endinput.val(),c)]),r.period[0]&&(r.year=r.period[0].getFullYear(),r.month=r.period[0].getMonth()+1,r.regenerate()))},300)}),r.options.likeXDSoftDateTimePicker&&(r.button.remove(),r.startinput.add(r.endinput).on("open.xdsoftpp focusin.xdsoftpp mousedown.xdsoftpp touchstart.xdsoftpp",function(){var b=this;a(b).is(":disabled")||r.picker.hasClass("visible")||(clearTimeout(f),f=setTimeout(function(){r.show(b)},100))}),r.options.hideOnBlur&&r.startinput.add(r.endinput).on("blur.xdsoftpp",function(){setTimeout(function(){r.picker.find("*:focus").length||r.hide()},200)}))):(r.startinput.hide(),r.endinput.hide()),r.options.inline?(r.startinput.after(r.picker),r.show()):a(c.body).append(r.picker),a(b).on("resize.xdsoftpp"+r.uniqueid,function(){r.regenerate()}).on("keydown.xdsoftpp"+r.uniqueid,function(a){if(r.picker.hasClass("visible"))switch(a.which){case 40:case 27:r.options.inline||r.hide();break;case 37:case 39:r.picker.find(".xdsoft_navigate").eq(37===a.which?0:1).trigger("click")}}).on("mouseup.xdsoftpp"+r.uniqueid,function(a){i||j||m||o?(i=!1,j=!1,m=!1,o=!1):r.options.inline||(r.hide(),r.options.likeXDSoftDateTimePicker&&(r.startinput.is(a.target)||r.endinput.is(a.target))&&r.show(a.target))}).on("mousemove.xdsoftpp"+r.uniqueid,function(a){m&&!r.options.inline&&(h=[a.clientX-g[0],a.clientY-g[1]],r.picker.hasClass("xdsoft_i_moved")||r.picker.addClass("xdsoft_i_moved"),r.picker.css({left:g[2]+h[0],top:g[3]+h[1]})),i&&(h=[a.clientX-g[0],a.clientY-g[1]],r.picker.css({width:g[2]+h[0],height:g[3]+h[1]}),r.regenerate()),j&&(h=[a.clientX-g[0],a.clientY-g[1]],l=g[2]+h[0],k.css("left",l),r.calcMonthOffsetFromPeriodDragger(l),r.generateCalendars(r.month,r.year),r.recalcDraggerPosition()),o&&(h=[a.clientX-g[0],a.clientY-g[1]],l=g[2]+h[0],n.css("left",l))}),r.generateTimePicker()},e.prototype.generateTimePicker=function(){var b=this;b.options.timepicker&&void 0!==a.fn.TimePicker&&b.timepicker.each(function(){var c=a(this).find("input.timepicker"),d=parseInt(c.data("index")||0,10);c.length&&!c.data("timepicker")&&void 0!==a.fn.TimePicker&&(d&&b.options.defaultEndTime&&(b.options.timepickerOptions.defaultTime=b.options.defaultEndTime),c.TimePicker(b.options.timepickerOptions,a(this)),b.onAfterRegenerate.push(function(){c.TimePicker("regenerate")}),c.on("change",function(){var a=b.picker.find(".period_picker_submit_dates .period_picker_time input").eq(d);a.is(":focus")||a.val()===this.value||a.val(this.value).trigger("change")}).trigger("change"))})},e.prototype.generateCalendars=function(a,b){function c(){var a,b=[];for(a=0;a<i.length;a+=1)b.push('<th class="'+(-1!==f.options.weekEnds.indexOf(a+f.options.dayOfWeekStart>7?(a+f.options.dayOfWeekStart)%7:a+f.options.dayOfWeekStart)?"period_picker_holiday":"")+'">'+i[a]+"</th>");return b.join("")}moment.locale(this.options.lang);var e,f=this,g=[],h=f.getRealDateTime(),i=(new d).weekdays(f.options.dayOfWeekStart);for(h[1]>f.options.yearsPeriod[1]&&(f.year=f.options.yearsPeriod[1],b=f.year,f.month=12-f.monthcount,a=f.month),h[1]<f.options.yearsPeriod[0]&&(f.year=f.options.yearsPeriod[0],b=f.year,f.month=1,a=f.month),g.push('<tr class="period_picker_first_letters_tr">'),e=0;e<f.options.cells[1];e+=1)g.push('<td class="period_picker_first_letters_td"><table class="period_picker_first_letters_table"><tbody><tr><th class="period_picker_selector_week_cap"><span class="period_picker_selector_week_cap"></span></th>'+c()+"</tr></tbody></table></td>");for(g.push("</tr>"),e=0;e<f.options.cells[0];e+=1)g.push("<tr>"),g.push(f.generateCalendarLine(a+e*f.options.cells[1],b,f.options.cells[1])),g.push("</tr>");f.calendarbox.html(g.join("")),f.highlightPeriod()},e.prototype.i18n=function(a){return void 0!==this.options.i18n[this.options.lang]&&void 0!==this.options.i18n[this.options.lang][a]?this.options.i18n[this.options.lang][a]:a},e.prototype.calcPixelOffsetForPeriodDragger=function(){var a=this.getRealDateTime();return(a[1]-this.options.yearsPeriod[0])*this.options.yearSizeInPixels+a[0]*Math.floor(this.options.yearSizeInPixels/12)},e.prototype.calcMonthOffsetFromPeriodDragger=function(a){this.year=Math.floor(a/this.options.yearSizeInPixels)+this.options.yearsPeriod[0],this.month=Math.floor(a%this.options.yearSizeInPixels/Math.floor(this.options.yearSizeInPixels/12))+1},e.prototype.generateYearsLine=function(){if(this.options.yearsLine){var b,c=[],d=0;if(c.push('<div class="period_picker_years_dragger" title="'+this.i18n("Move to select the desired period")+'" style="left: '+this.calcPixelOffsetForPeriodDragger()+"px; width: "+Math.floor(this.options.yearSizeInPixels/12)*this.monthcount+'px;"></div>'),c.push('<div class="period_picker_years_period" style="display: block; width: 0px; left: 300px;"></div>'),this.options.yearsPeriod&&a.isArray(this.options.yearsPeriod))for(b=this.options.yearsPeriod[0];b<=this.options.yearsPeriod[1];b+=1)c.push('<div class="period_picker_year" style="left:'+d*this.options.yearSizeInPixels+'px">'+b+"</div>"),d+=1;this.yearsline.css("width",d*this.options.yearSizeInPixels+"px"),this.yearsline.html(c.join(""))}},e.prototype.generateCalendarLine=function(a,b,c){var e,f,g,h,i,j,k=[],l=new d,m=(new d).format("DD.MM.YYYY");for(l.setDate(1),l.setFullYear(b),l.setMonth(a-1),e=0;c>e;e+=1){for(i=l.getMonth()+1,h=l.countDaysInMonth(),k.push('<td class="period_picker_month'+l.format("M")+'"><table><tbody>'),k.push('<tr><th class="period_picker_month" data-datestart="'+l.format(this.options.formatDate)+'" data-dateend="'+l.clone(0,0,h).format(this.options.formatDate)+'" colspan="8" title="'+l.format(this.options.formatMonth)+'">'+l.format(this.options.formatMonth)+"<b>"+l.format("M.YYYY")+"</b></th></tr>"),j=0;l.format("E")!==this.options.dayOfWeekStart&&7>j;)l.setDate(l.getDate()-1),j+=1;for(f=1,j=0;h>=f&&100>j;){for(k.push('<tr data-week="'+l.format("W")+'">'),k.push('<td class="period_picker_selector_week" title="'+this.i18n("Select week #")+" "+l.format("W")+'"><span class="period_picker_selector_week"></span></td>'),g=1;7>=g;g+=1)l.format("M")!==i?k.push('<td class="period_picker_empty"> </td>'):((!this.maxdate||l<this.maxdate)&&(!this.mindate||l>this.mindate)&&-1===this.options.disableDays.indexOf(l.format(this.options.formatDate))?(k.push('<td data-date="'+l.format(this.options.formatDate)+'"'),k.push(' class="period_picker_cell '),k.push(-1!==this.options.weekEnds.indexOf(l.format("E"))||-1!==this.options.holidays.indexOf(l.format(this.options.formatDate))?" period_picker_holiday":" period_picker_weekday"),l.format("DD.MM.YYYY")===m&&k.push(" period_picker_cell_today "),k.push((7===g||l.format("D")===h?" period_picker_last_cell":"")+'">'+l.format("D")+"</td>")):k.push('<td class="period_picker_gray_period">'+l.format("D")+"</td>"),f+=1),l.setDate(l.getDate()+1);j+=1,k.push("</tr>")}a+=1,l.setDate(1),l.setFullYear(b),l.setMonth(a-1),k.push("</tbody></table></td>")}return k.join("")},e.prototype.toggle=function(){this.picker.hasClass("active")?this.hide():this.show()},e.prototype.clear=function(){this.addRange(),this.options.onClearButtonClick&&a.isFunction(this.options.onClearButtonClick)&&this.options.onClearButtonClick.call(this),this.options.closeAfterClear&&!this.options.inline&&this.hide()},e.prototype.getPosition=function(c){var d=this.options.likeXDSoftDateTimePicker?a(c).offset():this.button.offset(),e=d.top+(this.options.likeXDSoftDateTimePicker?a(c).outerHeight():this.button.outerHeight())-1,f=d.left;return e+this.picker.outerHeight()>a(b).height()+a(b).scrollTop()&&(e=d.top-this.picker.outerHeight()-1),0>e&&(e=0),f+this.picker.outerWidth()>a(b).width()&&(f=a(b).width()-this.picker.outerWidth()),{left:f,top:e}},e.prototype.show=function(a){var b,c=this;for(c.options.inline||(c.picker.addClass("visible"),setTimeout(function(){c.picker.addClass("active")},100),c.options.fullsize?c.picker.addClass("period_picker_maximize"):c.picker.hasClass("xdsoft_i_moved")||c.picker.css(c.getPosition(a))),this.regenerate(),b=0;b<this.onAfterShow.length;b+=1)this.onAfterShow[b].call(this)},e.prototype.hide=function(){var a,b=this;if(b.picker.hasClass("visible")&&(b.picker.removeClass("active"),b.picker.hasClass("animation")?setTimeout(function(){b.picker.hasClass("active")||b.picker.removeClass("visible")},300):b.picker.removeClass("visible"),void 0!==this.onAfterHide&&this.onAfterHide.length))for(a=0;a<this.onAfterHide.length;a+=1)this.onAfterHide[a].call(this)},e.prototype.destroy=function(){this.picker.remove(),this.button.remove(),this.startinput.off(".xdsoftpp").show().removeData("periodpicker"),this.endinput.off(".xdsoftpp").show(),a(b).off(".xdsoftpp"+this.uniqueid)},a.fn.periodpicker=function(c,f,g){if(void 0===b.moment)throw new Error("PeriodPicker's JavaScript requires MomentJS");var h=this;return this.each(function(){var b,i,j=[],k=a(this),l=k.data("periodpicker");if(l)switch(b=l.options,c){case"picker":h=l;break;case"regenerate":l.regenerate(f);break;case"setOption":l.options[f]=g,l.applyOptions();break;case"setOptions":l.options=a.extend(!0,{},l.options,f),l.applyOptions();break;case"clear":l.addRange();break;case"change":i=new d,j[0]=i.parseStr(l.startinput.val(),b.timepicker?b.formatDateTime:b.formatDate)||i.parseStr(l.startinput.val(),b.formatDate),
|
|
l.endinput.length&&(j[1]=i.parseStr(l.endinput.val(),b.timepicker?b.formatDateTime:b.formatDate)||i.parseStr(l.endinput.val(),b.formatDate)),l.addRange(j);break;case"destroy":l.destroy();break;case"hide":l.hide();break;case"show":l.show();break;case"value":void 0!==f?(i=new d,a.isArray(f)?(j[0]=i.parseStr(f[0],b.timepicker?b.formatDateTime:b.formatDate)||i.parseStr(f[0],b.formatDate),void 0!==f[1]&&(j[1]=i.parseStr(f[1],b.timepicker?b.formatDateTime:b.formatDate)||i.parseStr(f[1],b.formatDate))):j[0]=i.parseStr(f,b.timepicker?b.formatDateTime:b.formatDate)||i.parseStr(f,b.formatDate),l.addRange(j),b.timepicker&&void 0!==a.fn.TimePicker&&l.addRangeTime(j[0],j[1]||j[0])):h=l.period;break;case"valueStringStrong":h=l.getInputsValue().join("-");break;case"valueString":h=l.getLabel().join("-");break;case"disable":l.button.attr("disabled",!0),l.startinput.add(l.endinput).attr("disabled",!0).attr("readonly",!0);break;case"enable":l.button.removeAttr("disabled"),l.startinput.add(l.endinput).removeAttr("disabled").removeAttr("readonly")}else b=a.extend(!0,{},a.fn.periodpicker.defaultOptions,c),l=new e(this,b),k.data("periodpicker",l)}),h},a.fn.periodpicker.defaultOptions={tabIndex:0,animation:!0,lang:"en",i18n:{en:{"Select week #":"Select week #","Select period":"Select period","Select date":"Select date","Choose period":"Select period","Choose date":"Select date",Clear:"Clear"},ru:{"Move to select the desired period":"Переместите, чтобы выбрать нужный период","Select week #":"Выбрать неделю №","Select period":"Выбрать период","Select date":"Выбрать дату","Open fullscreen":"Открыть на весь экран",Close:"Закрыть",OK:"OK","Choose period":"Выбрать период","Choose date":"Выбрать дату",Clear:"Отчистить"},fr:{"Move to select the desired period":"Déplacer pour sélectionner la période désirée","Select week #":"Sélectionner la semaine #","Select period":"Choisissez une date","Select date":"Sélectionner la date","Open fullscreen":"Ouvrir en plein écran",Close:"Fermer",OK:"OK","Choose period":"Choisir la période","Choose date":"Choisir une date",Clear:"Propre"}},withoutBottomPanel:!1,showTimepickerInputs:!0,showDatepickerInputs:!0,timepicker:!1,useTimepickerLimits:!0,timepickerOptions:{inputFormat:"HH:mm"},defaultEndTime:!1,yearsLine:!0,title:!0,inline:!1,clearButtonInButton:!1,clearButton:!1,closeAfterClear:!0,okButton:!0,todayButton:!1,closeButton:!0,fullsizeButton:!0,resizeButton:!0,navigate:!0,fullsizeOnDblClick:!0,fullsize:!1,draggable:!0,mousewheel:!0,mousewheelYearsLine:!0,reverseMouseWheel:!0,hideAfterSelect:!1,hideOnBlur:!0,norange:!1,formatMonth:"MMMM YYYY",formatDecoreDate:"D MMMM",formatDecoreDateWithYear:"D MMMM YYYY",formatDecoreDateWithoutMonth:"D",formatDecoreDateTimeWithoutMonth:"HH:mm D",formatDecoreDateTime:"HH:mm D MMMM",formatDecoreDateTimeWithYear:"HH:mm D MMMM YYYY",formatDateTime:"HH:mm YYYY/MM/D",formatDate:"YYYY/MM/D",end:"",noHideSourceInputs:!1,likeXDSoftDateTimePicker:!1,startMonth:(new Date).getMonth()+1,startYear:(new Date).getFullYear(),dayOfWeekStart:1,yearSizeInPixels:120,timepickerWidthInPixels:50,monthWidthInPixels:184,monthHeightInPixels:174,someYOffset:150,yearsPeriod:[2e3,(new Date).getFullYear()+20],weekEnds:[6,7],holidays:[],disableDays:[],minDate:!1,maxDate:!1,cells:[1,3],utcOffset:null,onTodayButtonClick:!1,onOkButtonClick:!1,onAfterShow:!1,onAfterHide:!1,onAfterRegenerate:!1},void 0===Array.prototype.indexOf&&(Array.prototype.indexOf=function(a,b){var c,d;for(d=this.length,c=b||0;d>c;c+=1)if(this[c]===a)return c;return-1})}(jQuery,window,document); |