(function(A){A.fn.monthSelector=function(C){var E=A.extend({minDate:new Date(1970,0,1),maxDate:new Date(),selectedDate:new Date(),callback:null,scope:window,monthFormat:"long",yearFormat:"long",firstText:"«",lastText:"»",prevText:"<",nextText:">",showFirstAndLast:true,showPrevAndNext:true,longMonthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],numericMonthNames:["1","2","3","4","5","6","7","8","9","10","11","12"],leadingZeroMonthNames:["01","02","03","04","05","06","07","08","09","10","11","12"]},C||{});if(!(E.minDate instanceof Date)){E.minDate=new Date(E.minDate);}if(!(E.maxDate instanceof Date)){E.maxDate=new Date(E.maxDate);}if(!(E.selectedDate instanceof Date)){E.selectedDate=new Date(E.selectedDate);}if(E.minDate.toString()==="Invalid Date"){throw new TypeError("$().monthSelector: Invalid minDate.");}if(E.maxDate.toString()==="Invalid Date"){throw new TypeError("$().monthSelector: Invalid maxDate.");}if(E.selectedDate.toString()==="Invalid Date"){throw new TypeError("$().monthSelector: Invalid selectedDate.");}if(E.minDate>E.maxDate){throw new Error("$().monthSelector: minDate exceeds maxDate.");}var D=E[E.monthFormat+"MonthNames"];var F={fieldset:"ms-fieldset",select:"ms-select",button:"ms-button",month:"ms-month",year:"ms-year",first:"ms-first",last:"ms-last",prev:"ms-prev",next:"ms-next",hovered:"ms-hovered",disabled:"ms-disabled"};var B=function(I,H){return new Date((new Date(H,I,1)).getTime()-1);};var G=function(I,H){return new Date(H,I+1,1);};this.each(function(){var H=A.fn.monthSelector.counter++;var Q,O,P,M,T,I,J;var R=function(){var W=parseInt(P.val(),10);var X=parseInt(O.val(),10);return new Date(W,X,1);};var V=function(X){if(!(X instanceof Date)||X.toString()==="Invalid Date"){throw new TypeError("$().monthSelector::_setDate: Invalid date.");}if(X>E.maxDate){X=E.maxDate;}else{if(X<E.minDate){X=E.minDate;}}var a=X.getMonth();var Y=X.getFullYear();O.val(a);P.val(Y);var Z=E.minDate.getMonth();var c=E.minDate.getFullYear();var b=E.maxDate.getMonth();var W=E.maxDate.getFullYear();O.find("option").each(function(){var d=A(this);var e=d.val();if(Y===c&&e<Z||Y===W&&e>b){d.attr("disabled","disabled").addClass(F.disabled);}else{d.removeAttr("disabled").removeClass(F.disabled);}});if(B(a,Y)<E.minDate){I.attr("disabled","disabled").addClass(F.disabled);M.attr("disabled","disabled").addClass(F.disabled);}else{I.removeAttr("disabled").removeClass(F.disabled);M.removeAttr("disabled").removeClass(F.disabled);}if(G(a,Y)>E.maxDate){J.attr("disabled","disabled").addClass(F.disabled);T.attr("disabled","disabled").addClass(F.disabled);}else{J.removeAttr("disabled").removeClass(F.disabled);T.removeAttr("disabled").removeClass(F.disabled);}if(typeof E.callback==="function"){E.callback.call(E.scope,R());}};Q=A("<fieldset>").addClass(F.fieldset).attr("id",F.fieldset+"-"+H);O=A("<select>").addClass(F.select+" "+F.month).attr("id",F.month+"-"+H).change(function(){V(R());this.blur();});for(var L=0;L<12;++L){O.append(A("<option>").val(L).text(D[L]));}P=A("<select>").addClass(F.select+" "+F.year).attr("id",F.year+"-"+H).change(function(){V(R());this.blur();});var N=E.maxDate.getFullYear();var U=E.minDate.getFullYear();for(var K=N;K>=U;--K){var S;if(E.yearFormat==="short"){S=K.toString().substring(2);}else{S=K;}P.append(A("<option>").val(K).text(S));}M=A("<button>").addClass(F.button+" "+F.first).attr("id",F.first+"-"+H).html(E.firstText).click(function(){V(E.minDate);this.blur();});T=A("<button>").addClass(F.button+" "+F.last).attr("id",F.last+"-"+H).html(E.lastText).click(function(){V(E.maxDate);this.blur();});if(!E.showFirstAndLast){M.hide();T.hide();}I=A("<button>").addClass(F.button+" "+F.prev).attr("id",F.prev+"-"+H).html(E.prevText).click(function(){var W=parseInt(P.val(),10);var X=parseInt(O.val(),10);V(B(X,W));this.blur();});J=A("<button>").addClass(F.button+" "+F.next).attr("id",F.next+"-"+H).html(E.nextText).click(function(){var W=parseInt(P.val(),10);var X=parseInt(O.val(),10);V(G(X,W));this.blur();});if(!E.showPrevAndNext){I.hide();J.hide();}A.each([Q,O,P,M,T,I,J],function(){var W=this;W.hover(function(){W.addClass(F.hovered);},function(){W.removeClass(F.hovered);});});Q.append(M).append(I).append(O).append(P).append(J).append(T);V(E.selectedDate);A(this).append(Q);});return this;};A.fn.monthSelector.counter=0;})(jQuery);

