var MWFCalendarMonthView=MWF.xApplication.Calendar.MonthView=new Class({Extends:MWF.widget.Common,Implements:[Options,Events],options:{style:"default",date:""},initialize:function(t,e,i){this.setOptions(i);this.path="/x_component_Calendar/$MonthView/";this.cssPath="/x_component_Calendar/$MonthView/"+this.options.style+"/css.wcss";this._loadCss();this.app=e;this.container=$(t);this.load()},load:function(){this.node=new Element("div",{styles:this.css.node}).inject(this.container);this.loadCalendar();this.resetNodeSize()},resetNodeSize:function(){var t=this.container.getSize();var e=t.y-50;this.node.setStyle("height",""+e+"px");var i=this.app.sideBar?this.app.sideBar.getSize():{x:0,y:0};this.node.setStyle("width",""+(t.x-i.x)+"px");this.node.setStyle("margin-right",""+i.x+"px");if(this.calendar){this.calendar.resetBodySize()}},loadCalendar:function(){var t="";if(this.options.date){t=Date.parse(this.options.date)}this.calendar=new MWFCalendarMonthView.Calendar(this,t)},hide:function(){var t=new Fx.Morph(this.node,{duration:"300",transition:Fx.Transitions.Expo.easeOut});t.start({opacity:0}).chain(function(){this.node.setStyle("display","none")}.bind(this))},show:function(){this.node.setStyles(this.css.node);var t=new Fx.Morph(this.node,{duration:"800",transition:Fx.Transitions.Expo.easeOut});t.start({opacity:1}).chain(function(){}.bind(this))},reload:function(){if(this.calendar)this.calendar.reLoadCalendar()},recordStatus:function(){var t="";if(this.calendar)t=this.calendar.date;return{date:t.toString()}},destroy:function(){if(this.calendar){this.calendar.destroy()}this.node.destroy()}});MWFCalendarMonthView.Calendar=new Class({Implements:[Events],initialize:function(t,e){this.view=t;this.css=this.view.css;this.container=this.view.node;this.app=this.view.app;this.date=e||new Date;this.today=new Date;this.days={};this.weekBegin=this.app.calendarConfig.weekBegin||0;this.load()},load:function(){this.titleNode=new Element("div",{styles:this.css.calendarTitleNode}).inject(this.container);this.titleTableContainer=new Element("div",{styles:this.css.calendarTitleTableContainer}).inject(this.container);this.scrollNode=new Element("div",{styles:this.css.scrollNode}).inject(this.container);this.contentWarpNode=new Element("div",{styles:this.css.contentWarpNode}).inject(this.scrollNode);this.contentContainerNode=new Element("div",{styles:this.css.contentContainerNode}).inject(this.contentWarpNode);this.bodyNode=new Element("div",{styles:this.css.contentNode}).inject(this.contentContainerNode);this.bodyNode.setStyle("position","relative");this.setTitleNode();this.setTitleTableNode();this.setBodyNode()},resetBodySize:function(){var t=this.container.getSize();var e=this.titleNode.getSize();var i=this.titleTable.getSize();var n=t.y-e.y-i.y;this.scrollNode.setStyle("height",""+n+"px");this.titleTableContainer.setStyles({width:t.x-40+"px"});if(this.contentWarpNode){this.contentWarpNode.setStyles({width:t.x-40+"px"})}var s=this.calendarTable.getSize();MWFCalendarMonthView.WeekWidth=s.x;MWFCalendarMonthView.DayWidth=s.x/7;this.dataTdList.each(function(t){t.setStyle("width",MWFCalendarMonthView.WeekWidth)});if(this.wholeDayDocumentList&&this.wholeDayDocumentList.length){this.wholeDayDocumentList.each(function(t){t.resize()}.bind(this))}if(this.oneDayDocumentList&&this.oneDayDocumentList.length){this.oneDayDocumentList.each(function(t){t.resize()}.bind(this))}var a=30;var o=this.calendarTable.getElements("tr");this.calendarTrHeight=[];for(var h in this.usedYIndex){var d=this.usedYIndex[h];var r=Math.max(d[0].length,d[1].length,d[2].length,d[3].length,d[4].length,d[5].length,d[6].length);if(r>4){this.dataTableList[h].setStyle("top",a);var l=30+r*(22+2);a=a+l;o[parseInt(h)].getElements("td").each(function(t){t.setStyle("height",l)});this.calendarTrHeight.push(l)}else{this.dataTableList[h].setStyle("top",a);a=a+MWFCalendarMonthView.WeekHeight+1;o[parseInt(h)].getElements("td").each(function(t){t.setStyle("height",MWFCalendarMonthView.WeekHeight)});this.calendarTrHeight.push(MWFCalendarMonthView.WeekHeight)}}},setTitleNode:function(){this.prevMonthNode=new Element("div",{styles:this.css.calendarPrevMonthNode}).inject(this.titleNode);var t=this.date.format(this.app.lp.dateFormatMonth);this.titleTextNode=new Element("div",{styles:this.css.calendarTitleTextNode,text:t}).inject(this.titleNode);this.nextMonthNode=new Element("div",{styles:this.css.calendarNextMonthNode}).inject(this.titleNode);this.prevMonthNode.addEvents({mouseover:function(){this.prevMonthNode.setStyles(this.css.calendarPrevMonthNode_over)}.bind(this),mouseout:function(){this.prevMonthNode.setStyles(this.css.calendarPrevMonthNode)}.bind(this),mousedown:function(){this.prevMonthNode.setStyles(this.css.calendarPrevMonthNode_down)}.bind(this),mouseup:function(){this.prevMonthNode.setStyles(this.css.calendarPrevMonthNode_over)}.bind(this),click:function(){this.changeMonthPrev()}.bind(this)});this.nextMonthNode.addEvents({mouseover:function(){this.nextMonthNode.setStyles(this.css.calendarNextMonthNode_over)}.bind(this),mouseout:function(){this.nextMonthNode.setStyles(this.css.calendarNextMonthNode)}.bind(this),mousedown:function(){this.nextMonthNode.setStyles(this.css.calendarNextMonthNode_down)}.bind(this),mouseup:function(){this.nextMonthNode.setStyles(this.css.calendarNextMonthNode_over)}.bind(this),click:function(){this.changeMonthNext()}.bind(this)});this.titleTextNode.addEvents({mouseover:function(){this.titleTextNode.setStyles(this.css.calendarTitleTextNode_over)}.bind(this),mouseout:function(){this.titleTextNode.setStyles(this.css.calendarTitleTextNode)}.bind(this),mousedown:function(){this.titleTextNode.setStyles(this.css.calendarTitleTextNode_down)}.bind(this),mouseup:function(){this.titleTextNode.setStyles(this.css.calendarTitleTextNode_over)}.bind(this),click:function(){this.changeMonthSelect()}.bind(this)})},changeMonthPrev:function(){this.date.decrement("month",1);var t=this.date.format(this.app.lp.dateFormatMonth);this.titleTextNode.set("text",t);this.reLoadCalendar()},changeMonthNext:function(){this.date.increment("month",1);var t=this.date.format(this.app.lp.dateFormatMonth);this.titleTextNode.set("text",t);this.reLoadCalendar()},changeMonthSelect:function(){if(!this.monthSelector)this.createMonthSelector();this.monthSelector.show()},createMonthSelector:function(){this.monthSelector=new MWFCalendarMonthView.MonthSelector(this.date,this)},changeMonthTo:function(t){this.date=t;var e=this.date.format(this.app.lp.dateFormatMonth);this.titleTextNode.set("text",e);this.reLoadCalendar()},setTitleTableNode:function(){if(this.weekBegin=="1"){var t=""+this.app.lp.weeks.Mon+""+this.app.lp.weeks.Tues+""+this.app.lp.weeks.Wed+""+""+this.app.lp.weeks.Thur+""+this.app.lp.weeks.Fri+""+this.app.lp.weeks.Sat+""+this.app.lp.weeks.Sun+""}else{var t=""+this.app.lp.weeks.Sun+""+this.app.lp.weeks.Mon+""+this.app.lp.weeks.Tues+""+this.app.lp.weeks.Wed+""+""+this.app.lp.weeks.Thur+""+this.app.lp.weeks.Fri+""+this.app.lp.weeks.Sat+""}this.titleTable=new Element("table",{styles:this.css.calendarTable,height:"100%",border:"0",cellPadding:"0",cellSpacing:"0",html:t}).inject(this.titleTableContainer);this.calendarTableTitleTr=this.titleTable.getElement("tr");this.calendarTableTitleTr.setStyles(this.css.calendarTableTitleTr);var e=this.calendarTableTitleTr.getElements("th");e.setStyles(this.css.calendarTableTh)},setBodyNode:function(){var t="";t+="";t+="";t+="";t+="";t+="";this.calendarTable=new Element("table",{styles:this.css.calendarTable,height:"100%",border:"0",cellPadding:"0",cellSpacing:"0",html:t}).inject(this.bodyNode);this.loadBackgroundCalendar(true);this.loadDataContainer();this.loadCalendar()},reLoadCalendar:function(){if(this.wholeDayDocumentList&&this.wholeDayDocumentList.length){this.wholeDayDocumentList.each(function(t){t.destroy()}.bind(this))}this.wholeDayDocumentList=[];if(this.oneDayDocumentList&&this.oneDayDocumentList.length){this.oneDayDocumentList.each(function(t){t.destroy()}.bind(this))}this.oneDayDocumentList=[];this.loadBackgroundCalendar(false);this.loadCalendar()},loadDataContainer:function(){this.dataTableList=[];this.dataTdList=[];[0,1,2,3,4,5,6].each(function(t){var e=new Element("table.dataTable",{styles:this.css.calendarTable,border:"0",cellPadding:"0",cellSpacing:"0",index:t}).inject(this.bodyNode);e.setStyles({position:"absolute",top:(MWFCalendarMonthView.WeekHeight+1)*t+MWFCalendarMonthView.THHeight+30,left:"0px",margin:"0px auto 0px 0px"});var i=new Element("tr").inject(e);var n=new Element("td",{valign:"top",styles:{height:"0px",position:"relative"}}).inject(i);this.dataTableList.push(e);this.dataTdList.push(n)}.bind(this))},calculateMonthRange:function(){var t=this.date.clone();var e=new Date(t.get("year"),t.get("month"),1,0,0,0);var i=e.getDay();if(this.weekBegin=="1"){var n=i-1<0?6:i-1}else{var n=i}e.decrement("day",n);this.monthStart=e;this.monthStartStr=this.monthStart.format("db");var s=e.clone();s.increment("day",41);this.monthEnd=new Date(s.get("year"),s.get("month"),s.get("date"),23,59,59);this.monthEndStr=this.monthEnd.format("db");this.calculateWeekRange()},calculateWeekRange:function(){this.weekRangeList=[];var t=this.monthStart.clone();var e;for(var i=0;i<6;i++){e=t.clone().increment("day",6);e=new Date(e.get("year"),e.get("month"),e.get("date"),23,59,59);this.weekRangeList.push({start:t,end:e});t=e.clone().increment("second",1)}this.weekDaysList=[];t=this.monthStart.clone();for(var i=0;i-1){return{weekIndex:i,dayIndex:n}}}return null},getDateIndexOfWeek:function(t,e){var i=this.weekDaysList[t];var n=[];for(var s=0;sthis.monthStart&&tthis.monthEnd||ethis.monthEnd||es.end||e=s.start;var o=s.end>=e;var h=a?t:s.start;var d=o?e:s.end;var r=d-h;var l=h-s.start;var c=this.getDaysByRange(h,d);var u=this.getDateIndexOfWeek(n,c);i[n]={index:n,isEventStart:a,isEventEnd:o,start:h,end:d,diff:r,days:c,left:l,daysIndex:u};if(o)break}return i},getDaysByRange:function(t,e){var i=t.clone();var n=e;var s=[];while(i0){this.inOneDayEvents.push(t)}}.bind(this));if(e)e()}.bind(this))},loadOneDay:function(t){this.oneDayDocumentList=[];t.each(function(i,t){i.inOneDayEvents.each(function(t,e){this.oneDayDocumentList.push(new MWFCalendarMonthView.Calendar.InOnDayDocument(this,t,i.eventDate))}.bind(this))}.bind(this))},loadWholeDay:function(t){this.wholeDayRange=[];t.each(function(t,e){var i=this.getTimeRange(Date.parse(t.startTime),Date.parse(t.endTime));if(!i)return;i.data=t;this.wholeDayRange.push(i)}.bind(this));this.wholeDayRange.sort(function(t,e){if(t.firstDay>e.firstDay)return 1;if(t.firstDay7)return null;this.pageOffsetHeight=t.y-e.y;var n=t.y-e.y-MWFCalendarMonthView.THHeight;if(n<0)return null;var s=null;for(var a=0;athis.scrollNodeHeight+a){window.setTimeout(function(){this.scrollNode.scrollTo(0,a+MWFCalendarMonthView.WeekHeight)}.bind(this),200)}else if(this.pageOffsetHeight-MWFCalendarMonthView.WeekHeight*1.5