/*! Copyright (c) Epic Systems Corporation 2015-2016 */
$$WPUtil.guaranteeExistence($$WP,"Containers"),$$WP.Containers.MultiMonthCalendar=function $$WP$Containers$MultiMonthCalendar(t){this.Containers$ContainerComponent(t),this.NumOfMonths=t.NumOfMonths||2,this.Class="multiMonthCalendar",this.Today=new Date,this.Month=this.Today.getMonth(),this.Year=this.Today.getFullYear(),this.IsAriaHidden=t.IsAriaHidden||!1;var n,e,a,s="SingleCalendar ";this.NumOfMonths<2?s+="full":this.NumOfMonths>2?s+="onethird":s+="half",n=this.Month,e=this.Year,a=this.IsAriaHidden;for(var i=0;i<this.NumOfMonths;i++){var o,r;o=!1,r=!1,0===i&&(r=!0),i===this.NumOfMonths-1&&(o=!0);var h=new $$WP.Components.Calendar({Class:s,Month:n,Year:e,IsClickEventEnabled:!1,IsNextEnabled:o,IsPrevEnabled:r,IsAriaHidden:a});0===(n=(n+1)%12)&&e++,this.CalendarComponents[i]=h,this.addComponent(this.CalendarComponents[i]),this.CalendarComponents[i].show()}this.Containers$ContainerComponent(t),this.addEventListener("click",this._calendarClick)},$$WP.Containers.MultiMonthCalendar.prototype={Today:{},NumOfMonths:0,Month:"",Year:"",CalendarComponents:[],Class:"multiMonthCalendar",MonthsMap:{},HighlightDays:[],data:{},IsAriaHidden:!1,setData:function $$WP$Containers$MultiMonthCalendar$set(t){for(var n=0;n<this.NumOfMonths;n++){this.CalendarComponents[n].Data=t;var e=this.CalendarComponents[n].settings||{};e.HighlightDays=t.HighlightDays,this.CalendarComponents[n].reInit(e)}this.MonthsMap=t.MonthsMap||{},this.MonthsMap&&this.setToolbarButtons()},setToolbarButtons:function $$WP$Containers$MultiMonthCalendar$setToolbarButtons(){var t,n,e,a,s,i,o,r=[];t=this.Month,n=this.Year,0===(t=(t+1)%12)&&n++,this.getFormattedMonthID(t,n),s=this.getPreviousEvent(),i=this.getNextEvent(),$$WP.Strings.setDefaultNamespace("clinical.todo"),s&&(o=new Date(this.MonthsMap[s].EndEvent.EventDate),$$WP.Strings.addMnemonic("@MYCHART@APPTTITLE@",this.MonthsMap[s].EndEvent.EventName),$$WP.Strings.addMnemonic("@MYCHART@APPTMONTH@",getMonthAbbr(o.getMonth()+1)),$$WP.Strings.addMnemonic("@MYCHART@APPTDATE@",o.getDate()),$$WP.Strings.addMnemonic("@MYCHART@APPTYEAR@",o.getFullYear()),e=$$WP.Strings.getForTemplate("calendarnextandpreveventtitle"),$$WP.Strings.removeMnemonic("@MYCHART@APPTTITLE@"),$$WP.Strings.removeMnemonic("@MYCHART@APPTMONTH@"),$$WP.Strings.removeMnemonic("@MYCHART@APPTDATE@"),$$WP.Strings.removeMnemonic("@MYCHART@APPTYEAR@"),r.push(new $$WPComp.ComplexObjects.Button(e,"","calendarBackEventBtn calendarBtns tertiary neutral",s))),i&&(o=new Date(this.MonthsMap[i].StartEvent.EventDate),$$WP.Strings.addMnemonic("@MYCHART@APPTTITLE@",this.MonthsMap[i].StartEvent.EventName),$$WP.Strings.addMnemonic("@MYCHART@APPTMONTH@",getMonthAbbr(o.getMonth()+1)),$$WP.Strings.addMnemonic("@MYCHART@APPTDATE@",o.getDate()),$$WP.Strings.addMnemonic("@MYCHART@APPTYEAR@",o.getFullYear()),a=$$WP.Strings.getForTemplate("calendarnextandpreveventtitle"),$$WP.Strings.removeMnemonic("@MYCHART@APPTTITLE@"),$$WP.Strings.removeMnemonic("@MYCHART@APPTMONTH@"),$$WP.Strings.removeMnemonic("@MYCHART@APPTDATE@"),$$WP.Strings.removeMnemonic("@MYCHART@APPTYEAR@"),r.push(new $$WPComp.ComplexObjects.Button(a,"","calendarNextEventBtn calendarBtns tertiary neutral",i))),$$WP.Strings.clearDefaultNamespace(),this.setToolbar(r)},getPreviousEvent:function $$WP$Containers$MultiMonthCalendar$getPreviousEvent(){var t,n,e,a,s;for(var i in n=this.Month,e=this.Year,t="",this.getFormattedMonthID(n,e),this.MonthsMap)if(this.MonthsMap.hasOwnProperty(i)){var o=i.split("_");if(o.length>=0)if(a=parseInt(o[0],10),s=parseInt(o[1],10),e>a)t=i;else{if(e!==a)break;if(!(n>s))break;t=i}}return""!==t?t:null},getNextEvent:function $$WP$Containers$MultiMonthCalendar$getNextEvent(){var t,n,e,a,s;e=this.Month,t=this.Year,n=!1;for(var i=0;i<this.NumOfMonths;i++)0===(e=(e+1)%12)&&t++;for(var o in"",this.getFormattedMonthID(e,t),this.MonthsMap)if(this.MonthsMap.hasOwnProperty(o)){var r=o.split("_");if(r.length>=0&&(a=parseInt(r[0],10),s=parseInt(r[1],10),t<=a&&(n=!0,t===a&&(n=e<=s)),n))return o}return null},moveCalendarMonths:function $$WP$Containers$MultiMonthCalendar$moveCalendarMonths(t,n){for(var e=0;e<this.NumOfMonths;e++)this.CalendarComponents[e].Month=t,this.CalendarComponents[e].Year=n,0===(t=(t+1)%12)&&n++,this.CalendarComponents[e].setTitles(),this.CalendarComponents[e].refresh();this.setToolbarButtons()},_calendarClick:function $$WP$Containers$MultiMonthCalendar$_calendarClick(t){var n,e,a,s=!1;if("calnext"===t.dataId?(this.Month=(this.Month+1)%12,0===this.Month&&this.Year++,n=this.Month,e=this.Year,this.moveCalendarMonths(n,e),t.preventDefault(),this.$container.find('[data-id="calnext"]').focus()):"calprev"===t.dataId?(this.Month=this.Month-1,this.Month<0&&(this.Month+=12),11===this.Month&&this.Year--,n=this.Month,e=this.Year,this.moveCalendarMonths(n,e),t.preventDefault(),s=!0):-1!==t.target.className.indexOf("calendarNextEventBtn")?(a="",t.dataId&&(a=t.dataId.substring(7)),a.length>5&&(e=a.substring(0,4),n=a.substring(5,a.length)),e&&n&&(e=parseInt(e,10),n=parseInt(n,10),(n-=this.NumOfMonths-1)<0&&(n+=12,e--),this.Month=n,this.Year=e,this.moveCalendarMonths(n,e)),t.preventDefault(),s=!0):-1!==t.target.className.indexOf("calendarBackEventBtn")&&(a="",t.dataId&&(a=t.dataId.substring(7)),a.length>5&&(e=a.substring(0,4),n=a.substring(5,a.length)),e&&n&&(e=parseInt(e,10),n=parseInt(n,10),this.Month=n,this.Year=e,this.moveCalendarMonths(n,e)),t.preventDefault(),s=!0),s)return this.$container.find("button").first().focus(),!1},getFormattedMonthID:function $$WP$Containers$MultiMonthCalendar$getFormattedMonthID(t,n){return n+"_"+t}},$$WP.Containers.MultiMonthCalendar.extend("Containers.ContainerComponent");