diff --git a/MonthPicker.js b/MonthPicker.js index d8e9cd9..cdb3861 100644 --- a/MonthPicker.js +++ b/MonthPicker.js @@ -359,22 +359,22 @@ http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt. return false; } - var _elem = this.element, _opts = this.options; + if (!this._visible) { + var _elem = this.element, _opts = this.options; - // Allow the user to prevent opening the menu. - event = event || new $.Event(); - if (_opts.OnBeforeMenuOpen.call(_elem[0], event) === false || event.isDefaultPrevented()) { - return false; - } + // Allow the user to prevent opening the menu. + event = event || new $.Event(); + if (_opts.OnBeforeMenuOpen.call(_elem[0], event) === false || event.isDefaultPrevented()) { + return false; + } + + this._ajustYear(_opts); - // If there is an open menu close it first. - if (_openedInstance) { - _openedInstance.Close(event); - } - - this._ajustYear(_opts); + // If there is an open menu close it first. + if (_openedInstance) { + _openedInstance.Close(event); + } - if (!this._visible) { var _menu = this._monthPickerMenu; this._showMonths(); diff --git a/MonthPicker.min.js b/MonthPicker.min.js index f01e15d..ac5799a 100644 --- a/MonthPicker.min.js +++ b/MonthPicker.min.js @@ -1 +1 @@ -!function(a,b,c){function d(b){return a(''+b.i18n.buttonText+"").button({text:!1,icons:{primary:b.ButtonIcon}})}function e(a,b){a.button("option",{icons:{primary:"ui-icon-circle-triangle-"+(b?"w":"e")}})}var f=a.fx.speeds,g=".MonthPicker",h={my:"left top+1",at:"left bottom"},i={my:"right top+1",at:"right bottom"},j="MonthPicker Setup Error: ",k=j+"The jQuery UI position plug-in must be loaded in order to specify a position.",l=j+"Unsupported % option value, supported (case sensitive) values are: ",m=j+'"_" is not a valid %Month value.',n={Animation:["slideToggle","fadeToggle","none"],ShowAnim:["fadeIn","slideDown","none"],HideAnim:["fadeOut","slideUp","none"]},o={ValidationErrorMessage:"_createValidationMessage",Disabled:"_setDisabledState",ShowIcon:"_showIcon",Button:"_createButton",ShowOn:"_updateFieldEvents",IsRTL:"_setRTL",StartYear:"_setPickerYear",MinMonth:"_setMinMonth",MaxMonth:"_setMaxMonth"},p=a.noop,q=a.datepicker,r=null,s=!!a.ui.position;a.MonthPicker={i18n:{year:"Year",prevYear:"Previous Year",nextYear:"Next Year",next5Years:"Jump Forward 5 Years",prev5Years:"Jump Back 5 Years",nextLabel:"Next",prevLabel:"Prev",buttonText:"Open Month Chooser",jumpYears:"Jump Years",months:["Jan.","Feb.","Mar.","Apr.","May","June","July","Aug.","Sep.","Oct.","Nov.","Dec."]}};var t='
';a.widget("KidSysco.MonthPicker",{options:{i18n:{},IsRTL:!1,Position:null,StartYear:null,ShowIcon:!0,UseInputMask:!1,ValidationErrorMessage:null,Disabled:!1,MonthFormat:"mm/yy",Animation:"fadeToggle",ShowAnim:null,HideAnim:null,ShowOn:null,MinMonth:null,MaxMonth:null,Duration:"normal",Button:d,OnAfterSetDisabled:p,ButtonIcon:"ui-icon-calculator",OnBeforeMenuOpen:p,OnAfterMenuOpen:p,OnBeforeMenuClose:p,OnAfterMenuClose:p,OnAfterNextYear:p,OnAfterNextYears:p,OnAfterPreviousYear:p,OnAfterPreviousYears:p,OnAfterChooseMonth:p,OnAfterChooseYear:p,OnAfterChooseYears:p,OnAfterChooseMonths:p},_monthPickerButton:a(),_validationMessage:a(),_destroy:function(){var b=this.element;jQuery.mask&&this.options.UseInputMask&&(b.unmask(),this.GetSelectedDate()||b.val("")),b.removeClass("month-year-input").off(g),a(c).off("click"+g+this.uuid),this._monthPickerMenu.remove(),this._monthPickerButton.remove(),this._validationMessage.remove()},_setOption:function(b,c){switch(b){case"i18n":c=a.extend({},c);break;case"Position":if(!s)return void alert(k)}return b in n&&-1===n[b].indexOf(c)?void alert(l.replace(/%/,b)+n[b]):(this._super(b,c),void(o[b]?this[o[b]](c):0))},_create:function(){if(!jQuery.ui||!jQuery.ui.button||!jQuery.ui.datepicker)return alert(j+"The jQuery UI button and datepicker plug-ins must be loaded before MonthPicker is called."),!1;var b=this.element,c=this.options;if(!b.is("input")||-1===["text","month",void 0].indexOf(b.attr("type"))){var d=j+"MonthPicker can only be called on text or month inputs.";return alert(d+" \n\nSee console (developer tools) for more details."),console.error(d+"\n Caused by:"),console.log(b[0]),!1}if(!jQuery.mask&&c.UseInputMask)return alert(j+"The UseInputMask option is set but the Digital Bush Input Mask jQuery Plugin is not loaded. Get the plugin from http://digitalbush.com/"),!1;if(null!==c.Position&&!s)return alert(k),!1;for(var e in n)if(null!==c[e]&&-1===n[e].indexOf(c[e]))return alert(l.replace(/%/,e)+n[e]),!1;this._isMonthInputType="month"===b.attr("type"),this._isMonthInputType&&(this.options.MonthFormat=this.MonthInputFormat,b.css("width","auto")),b.addClass("month-year-input");var f=this._monthPickerMenu=a('
');a(t).appendTo(f),a("body").append(f),a(".year-title",f).text(this._i18n("year")),a(".year-container-all",f).attr("title",this._i18n("jumpYears")),this._createValidationMessage(),this._yearContainer=a(".year",f),this._prevButton=a(".previous-year button",f).button({text:!1}),this._nextButton=a(".next-year button",f).button({text:!1}),this._setRTL(c.IsRTL),a(".ui-button-icon-primary",this._nextButton).text(this._i18n("nextLabel")),a(".ui-button-icon-primary",this._prevButton).text(this._i18n("prevLabel"));for(var h=a(".month-picker-month-table",f),i=0;12>i;i++){var o=i%3?o:a("").appendTo(h);o.append('')}this._buttons=a("button",h).button(),a(".year-container-all",f).click(a.proxy(this._showYearsClickHandler,this)),f.on("click"+g,function(a){return!1});var p=this,q="Month";a.each(["Min","Max"],function(a,b){p["_set"+b+q]=function(a){(p["_"+b+q]=this._toDate(a))===!1&&alert(m.replace(/%/,b).replace(/_/,a))},p._setOption(b+q,p.options[b+q])}),this._setUseInputMask(),this._setDisabledState(),this._updateFieldEvents(),this.Destroy=this.destroy},_i18n:function(b){return this.options.i18n[b]||a.MonthPicker.i18n[b]},GetSelectedDate:function(){return this._parseMonth()},GetSelectedYear:function(){var a=this.GetSelectedDate();return a?a.getFullYear():NaN},GetSelectedMonth:function(){var a=this.GetSelectedDate();return a?a.getMonth()+1:NaN},Validate:function(){var a=this.GetSelectedDate();return null===this.options.ValidationErrorMessage||this.options.Disabled||this._validationMessage[a?"hide":"show"](),a},GetSelectedMonthYear:function(){var a=this.Validate();return a?a.getMonth()+1+"/"+a.getFullYear():null},Disable:function(){this._setOption("Disabled",!0)},Enable:function(){this._setOption("Disabled",!1)},ClearAllCallbacks:function(){for(var a in this.options)0===a.indexOf("On")&&(this.options[a]=p)},Clear:function(){this.element.val(""),this._validationMessage.hide()},Toggle:function(){return this._visible?this.Close():this.Open()},Open:function(b){if(this.options.Disabled)return!1;var d=this.element,e=this.options;if(b=b||new a.Event,e.OnBeforeMenuOpen.call(d[0],b)===!1||b.isDefaultPrevented())return!1;if(r&&r.Close(b),this._ajustYear(e),!this._visible){var f=this._monthPickerMenu;this._showMonths(),a(c).on("click"+g+this.uuid,a.proxy(this.Close,this)).on("keydown"+g+this.uuid,a.proxy(this._keyDown,this)),d.off("blur"+g);var h=e.ShowAnim||e.Animation,i="none"===h;f[i?"show":h]({duration:i?0:this._duration(),start:a.proxy(this._position,this,f),complete:a.proxy(e.OnAfterMenuOpen,d[0])}),d.focus(),this._visible=!0,r=this}return!1},Close:function(b){if(this._visible){var d=this._monthPickerMenu,e=this.options,f=this.element;if(b=b||new a.Event,e.OnBeforeMenuClose.call(f[0],b)===!1||b.isDefaultPrevented())return;a(c).off("keydown"+g+this.uuid).off("click"+g+this.uuid),this.Validate(),f.on("blur"+g,a.proxy(this.Validate,this));var h=a.proxy(e.OnAfterMenuClose,f[0]),i=e.HideAnim||e.Animation;"none"===i?d.hide(0,h):d[i](this._duration(),h),this._visible=!1,r=null}},SetDisabled:function(a,b){try{b.button("option","disabled",a)}catch(c){b.prop("disabled",a)}},MonthInputFormat:"yy-mm",ParseMonth:function(a,b){try{return q.parseDate("dd"+b,"01"+a)}catch(c){return null}},FormatMonth:function(a,b){try{return q.formatDate(b,a)||null}catch(c){return null}},_parseMonth:function(a){return this.ParseMonth(a||this.element.val(),this.options.MonthFormat)},_formatMonth:function(a){return this.FormatMonth(a||this._parseMonth(),this.options.MonthFormat)},_showIcon:function(){var a=this._monthPickerButton;a.length?a[this.options.ShowIcon?"show":"hide"]():this._createButton(),this._updateFieldEvents()},_createButton:function(){if(this.options.ShowIcon){var b=this._monthPickerButton,d=this.options.Button,e=this.element;a.isFunction(d)&&(d=d.call(e[0],a.extend(!0,{i18n:a.MonthPicker.i18n},this.options)));var f=!1;this._monthPickerButton=(d instanceof a?d:a(d)).each(function(){a.contains(c.body,this)||(f=!0,a(this).insertAfter(e))}).on("click"+g,a.proxy(this.Toggle,this)),this._removeOldBtn&&b.remove(),this._removeOldBtn=f}},_updateFieldEvents:function(){this.element.off("click"+g),"both"!==this.options.ShowOn&&this._monthPickerButton.length||this.element.on("click"+g,a.proxy(this.Open,this))},_createValidationMessage:function(){var b=this.options.ValidationErrorMessage,c=this.element;if(-1===[null,""].indexOf(b)){var d=a(''+b+""),e=this._monthPickerButton;this._validationMessage=d.insertAfter(e.length?e:c),c.on("blur"+g,a.proxy(this.Validate,this))}else this._validationMessage.remove()},_setRTL:function(a){e(this._prevButton,!a),e(this._nextButton,a)},_keyDown:function(){var b=a.ui.keyCode;switch(event.keyCode){case b.ENTER:this._chooseMonth((new Date).getMonth()+1),this.Close();break;case b.ESCAPE:this.Close()}},_duration:function(){var b=this.options.Duration;return a.isNumeric(b)?b:b in f?f[b]:f._default},_position:s?function(b){var c=this.options.IsRTL?i:h,d=a.extend(c,this.options.Position);return b.position(a.extend({of:this.element},d))}:function(a){var b=this.element,c={top:b.offset().top+b.height()+7+"px"};return this.options.IsRTL?c.left=b.offset().left-a.width()+b.width()+7+"px":c.left=b.offset().left+"px",a.css(c)},_setUseInputMask:function(){if(!this._isMonthInputType)try{this.options.UseInputMask?this.element.mask(this._formatMonth(new Date).replace(/\d/g,9)):this.element.unmask()}catch(a){}},_setDisabledState:function(){var a=this.options.Disabled;this.element[0].disabled=a,this.element[a?"addClass":"removeClass"]("disabled"),a&&this._validationMessage.hide(),this.Close(),this._createButton(),this.SetDisabled(a,this._monthPickerButton),this.options.OnAfterSetDisabled.call(this.element[0],a)},_getPickerYear:function(){return parseInt(this._yearContainer.text(),10)},_setPickerYear:function(a){this._yearContainer.text(a||(new Date).getFullYear())},_chooseMonth:function(a){var b=new Date(this._getPickerYear(),a-1);this.element.val(this._formatMonth(b)).blur(),this.options.OnAfterChooseMonth.call(this.element[0])},_chooseYear:function(a){this._setPickerYear(a),this._showMonths(),this.options.OnAfterChooseYear.call(this.element[0])},_showMonths:function(){var b=this._i18n("months");this._prevButton.attr("title",this._i18n("prevYear")).off("click"+g).on("click"+g,a.proxy(this._addToYear,this,-1)),this._nextButton.attr("title",this._i18n("nextYear")).off("click"+g).on("click"+g,a.proxy(this._addToYear,this,1)),a(".year-container-all",this._monthPickerMenu).css("cursor","pointer"),this._buttons.off(g);var c=this,d=a.proxy(c._onMonthClick,c);a.each(b,function(b,e){a(c._buttons[b]).on("click"+g,{month:b+1},d).button("option","label",e)}),this._enableMonthButtons()},_showYearsClickHandler:function(){this._showYears(),this.options.OnAfterChooseYears.call(this.element[0])},_showYears:function(){var b=this._getPickerYear(),c=-4,d=b+c,e=5,f=this._MinMonth,h=this._MaxMonth;_minYear=f?f.getFullYear():0,_maxYear=h?h.getFullYear():0,this._prevButton.attr("title",this._i18n("prev5Years")).off("click"+g).on("click"+g,a.proxy(this._addToYears,this,-e)).button("option","disabled",_minYear&&d-1<_minYear),this._nextButton.attr("title",this._i18n("next5Years")).off("click"+g).on("click"+g,a.proxy(this._addToYears,this,e)).button("option","disabled",_maxYear&&d+12-1>_maxYear),a(".year-container-all",this._monthPickerMenu).css("cursor","default"),this._buttons.off(g);for(var i=a.proxy(this._onYearClick,this),j=0;12>j;j++){var k=b+c,l=a(this._buttons[j]);l.on("click"+g,{year:k},i).button("option","label",k),a(this._buttons[j]).button("option","disabled",_minYear&&k<_minYear||_maxYear&&k>_maxYear),c++}},_onMonthClick:function(a){this._chooseMonth(a.data.month),this.Close()},_onYearClick:function(a){this._chooseYear(a.data.year)},_addToYear:function(a){var b=this._yearContainer;b.text(parseInt(b.text())+a,10),this.element.focus(),this._enableMonthButtons(),this.options["OnAfter"+(a>0?"Next":"Previous")+"Year"].call(this.element[0])},_addToYears:function(a){var b=this._yearContainer;b.text(parseInt(b.text())+a,10),this._showYears(),this.element.focus(),this.options["OnAfter"+(a>0?"Next":"Previous")+"Years"].call(this.element[0])},_ajustYear:function(a){var b=a.StartYear||this.GetSelectedYear()||(new Date).getFullYear();null!==this._MinMonth&&(b=Math.max(this._MinMonth.getFullYear(),b)),null!==this._MaxMonth&&(b=Math.min(this._MaxMonth.getFullYear(),b)),this._setPickerYear(b)},_enableMonthButtons:function(){var b=this._getPickerYear(),c=this._MinMonth,d=this._MaxMonth;this._prevButton.button("option","disabled",c&&b==c.getFullYear()),this._nextButton.button("option","disabled",d&&b==d.getFullYear());for(var e=0;12>e;e++)a(this._buttons[e]).button("option","disabled",c&&new Date(b,e,1)d)},_toDate:function(b){if(null===b)return b;if(b instanceof Date)return b=new Date(b.getTime()),b.setDate(0),b;if(a.isNumeric(b)){var c=new Date;return c.setDate(0),c.setMonth(c.getMonth()+parseInt(b,10)),c}var c=this._parseMonth(b);return c?c:this._parsePeriod(b)},_parsePeriod:function(a,b){var c=a.trim();c=c.replace(/y/i,'":"y"'),c=c.replace(/m/i,'":"m"');try{var d=JSON.parse('{"'+c.replace(/ /g,',"')+"}"),e={};for(var f in d)e[d[f]]=f;var g=new Date;return g.setFullYear(g.getFullYear()+(parseInt(e.y,10)||0)),g.setMonth(g.getMonth()+(parseInt(e.m,10)||0)),g.setDate(0),g}catch(h){return!1}}}),a.MonthPicker.VERSION="2.6"}(jQuery,window,document); \ No newline at end of file +!function(a,b,c){function d(b){return a(''+b.i18n.buttonText+"").button({text:!1,icons:{primary:b.ButtonIcon}})}function e(a,b){a.button("option",{icons:{primary:"ui-icon-circle-triangle-"+(b?"w":"e")}})}var f=a.fx.speeds,g=".MonthPicker",h={my:"left top+1",at:"left bottom"},i={my:"right top+1",at:"right bottom"},j="MonthPicker Setup Error: ",k=j+"The jQuery UI position plug-in must be loaded in order to specify a position.",l=j+"Unsupported % option value, supported (case sensitive) values are: ",m=j+'"_" is not a valid %Month value.',n={Animation:["slideToggle","fadeToggle","none"],ShowAnim:["fadeIn","slideDown","none"],HideAnim:["fadeOut","slideUp","none"]},o={ValidationErrorMessage:"_createValidationMessage",Disabled:"_setDisabledState",ShowIcon:"_showIcon",Button:"_createButton",ShowOn:"_updateFieldEvents",IsRTL:"_setRTL",StartYear:"_setPickerYear",MinMonth:"_setMinMonth",MaxMonth:"_setMaxMonth"},p=a.noop,q=a.datepicker,r=null,s=!!a.ui.position;a.MonthPicker={i18n:{year:"Year",prevYear:"Previous Year",nextYear:"Next Year",next5Years:"Jump Forward 5 Years",prev5Years:"Jump Back 5 Years",nextLabel:"Next",prevLabel:"Prev",buttonText:"Open Month Chooser",jumpYears:"Jump Years",months:["Jan.","Feb.","Mar.","Apr.","May","June","July","Aug.","Sep.","Oct.","Nov.","Dec."]}};var t='
';a.widget("KidSysco.MonthPicker",{options:{i18n:{},IsRTL:!1,Position:null,StartYear:null,ShowIcon:!0,UseInputMask:!1,ValidationErrorMessage:null,Disabled:!1,MonthFormat:"mm/yy",Animation:"fadeToggle",ShowAnim:null,HideAnim:null,ShowOn:null,MinMonth:null,MaxMonth:null,Duration:"normal",Button:d,OnAfterSetDisabled:p,ButtonIcon:"ui-icon-calculator",OnBeforeMenuOpen:p,OnAfterMenuOpen:p,OnBeforeMenuClose:p,OnAfterMenuClose:p,OnAfterNextYear:p,OnAfterNextYears:p,OnAfterPreviousYear:p,OnAfterPreviousYears:p,OnAfterChooseMonth:p,OnAfterChooseYear:p,OnAfterChooseYears:p,OnAfterChooseMonths:p},_monthPickerButton:a(),_validationMessage:a(),_destroy:function(){var b=this.element;jQuery.mask&&this.options.UseInputMask&&(b.unmask(),this.GetSelectedDate()||b.val("")),b.removeClass("month-year-input").off(g),a(c).off("click"+g+this.uuid),this._monthPickerMenu.remove(),this._monthPickerButton.remove(),this._validationMessage.remove()},_setOption:function(b,c){switch(b){case"i18n":c=a.extend({},c);break;case"Position":if(!s)return void alert(k)}return b in n&&-1===n[b].indexOf(c)?void alert(l.replace(/%/,b)+n[b]):(this._super(b,c),void(o[b]?this[o[b]](c):0))},_create:function(){if(!jQuery.ui||!jQuery.ui.button||!jQuery.ui.datepicker)return alert(j+"The jQuery UI button and datepicker plug-ins must be loaded before MonthPicker is called."),!1;var b=this.element,c=this.options;if(!b.is("input")||-1===["text","month",void 0].indexOf(b.attr("type"))){var d=j+"MonthPicker can only be called on text or month inputs.";return alert(d+" \n\nSee console (developer tools) for more details."),console.error(d+"\n Caused by:"),console.log(b[0]),!1}if(!jQuery.mask&&c.UseInputMask)return alert(j+"The UseInputMask option is set but the Digital Bush Input Mask jQuery Plugin is not loaded. Get the plugin from http://digitalbush.com/"),!1;if(null!==c.Position&&!s)return alert(k),!1;for(var e in n)if(null!==c[e]&&-1===n[e].indexOf(c[e]))return alert(l.replace(/%/,e)+n[e]),!1;this._isMonthInputType="month"===b.attr("type"),this._isMonthInputType&&(this.options.MonthFormat=this.MonthInputFormat,b.css("width","auto")),b.addClass("month-year-input");var f=this._monthPickerMenu=a('
');a(t).appendTo(f),a("body").append(f),a(".year-title",f).text(this._i18n("year")),a(".year-container-all",f).attr("title",this._i18n("jumpYears")),this._createValidationMessage(),this._yearContainer=a(".year",f),this._prevButton=a(".previous-year button",f).button({text:!1}),this._nextButton=a(".next-year button",f).button({text:!1}),this._setRTL(c.IsRTL),a(".ui-button-icon-primary",this._nextButton).text(this._i18n("nextLabel")),a(".ui-button-icon-primary",this._prevButton).text(this._i18n("prevLabel"));for(var h=a(".month-picker-month-table",f),i=0;12>i;i++){var o=i%3?o:a("").appendTo(h);o.append('')}this._buttons=a("button",h).button(),a(".year-container-all",f).click(a.proxy(this._showYearsClickHandler,this)),f.on("click"+g,function(a){return!1});var p=this,q="Month";a.each(["Min","Max"],function(a,b){p["_set"+b+q]=function(a){(p["_"+b+q]=this._toDate(a))===!1&&alert(m.replace(/%/,b).replace(/_/,a))},p._setOption(b+q,p.options[b+q])}),this._setUseInputMask(),this._setDisabledState(),this._updateFieldEvents(),this.Destroy=this.destroy},_i18n:function(b){return this.options.i18n[b]||a.MonthPicker.i18n[b]},GetSelectedDate:function(){return this._parseMonth()},GetSelectedYear:function(){var a=this.GetSelectedDate();return a?a.getFullYear():NaN},GetSelectedMonth:function(){var a=this.GetSelectedDate();return a?a.getMonth()+1:NaN},Validate:function(){var a=this.GetSelectedDate();return null===this.options.ValidationErrorMessage||this.options.Disabled||this._validationMessage[a?"hide":"show"](),a},GetSelectedMonthYear:function(){var a=this.Validate();return a?a.getMonth()+1+"/"+a.getFullYear():null},Disable:function(){this._setOption("Disabled",!0)},Enable:function(){this._setOption("Disabled",!1)},ClearAllCallbacks:function(){for(var a in this.options)0===a.indexOf("On")&&(this.options[a]=p)},Clear:function(){this.element.val(""),this._validationMessage.hide()},Toggle:function(){return this._visible?this.Close():this.Open()},Open:function(b){if(this.options.Disabled)return!1;if(!this._visible){var d=this.element,e=this.options;if(b=b||new a.Event,e.OnBeforeMenuOpen.call(d[0],b)===!1||b.isDefaultPrevented())return!1;this._ajustYear(e),r&&r.Close(b);var f=this._monthPickerMenu;this._showMonths(),a(c).on("click"+g+this.uuid,a.proxy(this.Close,this)).on("keydown"+g+this.uuid,a.proxy(this._keyDown,this)),d.off("blur"+g);var h=e.ShowAnim||e.Animation,i="none"===h;f[i?"show":h]({duration:i?0:this._duration(),start:a.proxy(this._position,this,f),complete:a.proxy(e.OnAfterMenuOpen,d[0])}),d.focus(),this._visible=!0,r=this}return!1},Close:function(b){if(this._visible){var d=this._monthPickerMenu,e=this.options,f=this.element;if(b=b||new a.Event,e.OnBeforeMenuClose.call(f[0],b)===!1||b.isDefaultPrevented())return;a(c).off("keydown"+g+this.uuid).off("click"+g+this.uuid),this.Validate(),f.on("blur"+g,a.proxy(this.Validate,this));var h=a.proxy(e.OnAfterMenuClose,f[0]),i=e.HideAnim||e.Animation;"none"===i?d.hide(0,h):d[i](this._duration(),h),this._visible=!1,r=null}},SetDisabled:function(a,b){try{b.button("option","disabled",a)}catch(c){b.prop("disabled",a)}},MonthInputFormat:"yy-mm",ParseMonth:function(a,b){try{return q.parseDate("dd"+b,"01"+a)}catch(c){return null}},FormatMonth:function(a,b){try{return q.formatDate(b,a)||null}catch(c){return null}},_parseMonth:function(a){return this.ParseMonth(a||this.element.val(),this.options.MonthFormat)},_formatMonth:function(a){return this.FormatMonth(a||this._parseMonth(),this.options.MonthFormat)},_showIcon:function(){var a=this._monthPickerButton;a.length?a[this.options.ShowIcon?"show":"hide"]():this._createButton(),this._updateFieldEvents()},_createButton:function(){if(this.options.ShowIcon){var b=this._monthPickerButton,d=this.options.Button,e=this.element;a.isFunction(d)&&(d=d.call(e[0],a.extend(!0,{i18n:a.MonthPicker.i18n},this.options)));var f=!1;this._monthPickerButton=(d instanceof a?d:a(d)).each(function(){a.contains(c.body,this)||(f=!0,a(this).insertAfter(e))}).on("click"+g,a.proxy(this.Toggle,this)),this._removeOldBtn&&b.remove(),this._removeOldBtn=f}},_updateFieldEvents:function(){this.element.off("click"+g),"both"!==this.options.ShowOn&&this._monthPickerButton.length||this.element.on("click"+g,a.proxy(this.Open,this))},_createValidationMessage:function(){var b=this.options.ValidationErrorMessage,c=this.element;if(-1===[null,""].indexOf(b)){var d=a(''+b+""),e=this._monthPickerButton;this._validationMessage=d.insertAfter(e.length?e:c),c.on("blur"+g,a.proxy(this.Validate,this))}else this._validationMessage.remove()},_setRTL:function(a){e(this._prevButton,!a),e(this._nextButton,a)},_keyDown:function(){var b=a.ui.keyCode;switch(event.keyCode){case b.ENTER:this._chooseMonth((new Date).getMonth()+1),this.Close();break;case b.ESCAPE:this.Close()}},_duration:function(){var b=this.options.Duration;return a.isNumeric(b)?b:b in f?f[b]:f._default},_position:s?function(b){var c=this.options.IsRTL?i:h,d=a.extend(c,this.options.Position);return b.position(a.extend({of:this.element},d))}:function(a){var b=this.element,c={top:b.offset().top+b.height()+7+"px"};return this.options.IsRTL?c.left=b.offset().left-a.width()+b.width()+7+"px":c.left=b.offset().left+"px",a.css(c)},_setUseInputMask:function(){if(!this._isMonthInputType)try{this.options.UseInputMask?this.element.mask(this._formatMonth(new Date).replace(/\d/g,9)):this.element.unmask()}catch(a){}},_setDisabledState:function(){var a=this.options.Disabled;this.element[0].disabled=a,this.element[a?"addClass":"removeClass"]("disabled"),a&&this._validationMessage.hide(),this.Close(),this._createButton(),this.SetDisabled(a,this._monthPickerButton),this.options.OnAfterSetDisabled.call(this.element[0],a)},_getPickerYear:function(){return parseInt(this._yearContainer.text(),10)},_setPickerYear:function(a){this._yearContainer.text(a||(new Date).getFullYear())},_chooseMonth:function(a){var b=new Date(this._getPickerYear(),a-1);this.element.val(this._formatMonth(b)).blur(),this.options.OnAfterChooseMonth.call(this.element[0])},_chooseYear:function(a){this._setPickerYear(a),this._showMonths(),this.options.OnAfterChooseYear.call(this.element[0])},_showMonths:function(){var b=this._i18n("months");this._prevButton.attr("title",this._i18n("prevYear")).off("click"+g).on("click"+g,a.proxy(this._addToYear,this,-1)),this._nextButton.attr("title",this._i18n("nextYear")).off("click"+g).on("click"+g,a.proxy(this._addToYear,this,1)),a(".year-container-all",this._monthPickerMenu).css("cursor","pointer"),this._buttons.off(g);var c=this,d=a.proxy(c._onMonthClick,c);a.each(b,function(b,e){a(c._buttons[b]).on("click"+g,{month:b+1},d).button("option","label",e)}),this._enableMonthButtons()},_showYearsClickHandler:function(){this._showYears(),this.options.OnAfterChooseYears.call(this.element[0])},_showYears:function(){var b=this._getPickerYear(),c=-4,d=b+c,e=5,f=this._MinMonth,h=this._MaxMonth;_minYear=f?f.getFullYear():0,_maxYear=h?h.getFullYear():0,this._prevButton.attr("title",this._i18n("prev5Years")).off("click"+g).on("click"+g,a.proxy(this._addToYears,this,-e)).button("option","disabled",_minYear&&d-1<_minYear),this._nextButton.attr("title",this._i18n("next5Years")).off("click"+g).on("click"+g,a.proxy(this._addToYears,this,e)).button("option","disabled",_maxYear&&d+12-1>_maxYear),a(".year-container-all",this._monthPickerMenu).css("cursor","default"),this._buttons.off(g);for(var i=a.proxy(this._onYearClick,this),j=0;12>j;j++){var k=b+c,l=a(this._buttons[j]);l.on("click"+g,{year:k},i).button("option","label",k),a(this._buttons[j]).button("option","disabled",_minYear&&k<_minYear||_maxYear&&k>_maxYear),c++}},_onMonthClick:function(a){this._chooseMonth(a.data.month),this.Close()},_onYearClick:function(a){this._chooseYear(a.data.year)},_addToYear:function(a){var b=this._yearContainer;b.text(parseInt(b.text())+a,10),this.element.focus(),this._enableMonthButtons(),this.options["OnAfter"+(a>0?"Next":"Previous")+"Year"].call(this.element[0])},_addToYears:function(a){var b=this._yearContainer;b.text(parseInt(b.text())+a,10),this._showYears(),this.element.focus(),this.options["OnAfter"+(a>0?"Next":"Previous")+"Years"].call(this.element[0])},_ajustYear:function(a){var b=a.StartYear||this.GetSelectedYear()||(new Date).getFullYear();null!==this._MinMonth&&(b=Math.max(this._MinMonth.getFullYear(),b)),null!==this._MaxMonth&&(b=Math.min(this._MaxMonth.getFullYear(),b)),this._setPickerYear(b)},_enableMonthButtons:function(){var b=this._getPickerYear(),c=this._MinMonth,d=this._MaxMonth;this._prevButton.button("option","disabled",c&&b==c.getFullYear()),this._nextButton.button("option","disabled",d&&b==d.getFullYear());for(var e=0;12>e;e++)a(this._buttons[e]).button("option","disabled",c&&new Date(b,e,1)d)},_toDate:function(b){if(null===b)return b;if(b instanceof Date)return b=new Date(b.getTime()),b.setDate(0),b;if(a.isNumeric(b)){var c=new Date;return c.setMonth(c.getMonth()+parseInt(b,10)),c.setDate(0),c}var c=this._parseMonth(b);return c?c:this._parsePeriod(b)},_parsePeriod:function(a,b){var c=a.trim();c=c.replace(/y/i,'":"y"'),c=c.replace(/m/i,'":"m"');try{var d=JSON.parse('{"'+c.replace(/ /g,',"')+"}"),e={};for(var f in d)e[d[f]]=f;var g=new Date;return g.setFullYear(g.getFullYear()+(parseInt(e.y,10)||0)),g.setMonth(g.getMonth()+(parseInt(e.m,10)||0)),g.setDate(0),g}catch(h){return!1}}}),a.MonthPicker.VERSION="2.6"}(jQuery,window,document); \ No newline at end of file