MonthView.min.js 29 KB

1
  1. 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="<tr><th>"+this.app.lp.weeks.Mon+"</th><th>"+this.app.lp.weeks.Tues+"</th><th>"+this.app.lp.weeks.Wed+"</th>"+"<th>"+this.app.lp.weeks.Thur+"</th><th>"+this.app.lp.weeks.Fri+"</th><th>"+this.app.lp.weeks.Sat+"</th><th>"+this.app.lp.weeks.Sun+"</th></tr>"}else{var t="<tr><th>"+this.app.lp.weeks.Sun+"</th><th>"+this.app.lp.weeks.Mon+"</th><th>"+this.app.lp.weeks.Tues+"</th><th>"+this.app.lp.weeks.Wed+"</th>"+"<th>"+this.app.lp.weeks.Thur+"</th><th>"+this.app.lp.weeks.Fri+"</th><th>"+this.app.lp.weeks.Sat+"</th></tr>"}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="<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>";t+="<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>";t+="<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>";t+="<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>";t+="<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>";t+="<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>";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<this.weekRangeList.length;i++){var n=0;var s=[];while(n<7){s.push(t.format("%Y-%m-%d"));t.increment("day",1);n++}this.weekDaysList.push(s)}this.usedYIndex={};for(var i=0;i<this.weekRangeList.length;i++){this.usedYIndex[i]={};var n=0;while(n<7){this.usedYIndex[i][n]=[];n++}}},getUserfulYIndex:function(t,e){var i=0;var n=true;var s=this.usedYIndex[t];while(n){var a=false;for(var o=0;o<e.length;o++){if(s[e[o]].contains(i)){a=true;break}}if(!a){n=false}else{i++}}for(var o=0;o<e.length;o++){s[e[o]].push(i)}return i},getDateIndex:function(t){var e=t.format("%Y-%m-%d");for(var i=0;i<this.weekDaysList.length;i++){var n=this.weekDaysList[i].indexOf(e);if(n>-1){return{weekIndex:i,dayIndex:n}}}return null},getDateIndexOfWeek:function(t,e){var i=this.weekDaysList[t];var n=[];for(var s=0;s<e.length;s++){n.push(i.indexOf(e[s]))}return n},inCurrentMonth:function(t){return t>this.monthStart&&t<this.monthEnd},getTimeRange:function(t,e){if(t>this.monthEnd||e<this.monthStart)return null;var i={startTime:t,endTime:e,start:t<=this.monthStart?this.monthStart.clone():t.clone(),end:this.monthEnd<=e?this.monthEnd.clone():e.clone()};i.firstDay=i.start.clone().clearTime();i.diff=i.start-i.end;i.weekInforList=this.getWeekInfor(t,e);return i},getWeekInfor:function(t,e){if(t>this.monthEnd||e<this.monthStart)return null;var i={};for(var n=0;n<this.weekRangeList.length;n++){var s=this.weekRangeList[n];if(t>s.end||e<s.start)continue;var a=t>=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(i<n){s.push(i.clone().format("%Y-%m-%d"));i.increment()}return s},loadCalendar:function(){this.app.currentDate=this.date.clone();this.calculateMonthRange();this.cancelCurrentTd();this.loadData(function(){this.loadWholeDay(this.wholeDayData);this.loadOneDay(this.inOneDayEvents);this.resetBodySize()}.bind(this))},loadBackgroundCalendar:function(e){var i=this.date.clone();i.set("date",1);var t=i.getDay();if(this.weekBegin=="1"){var n=t-1<0?6:t-1}else{var n=t}i.decrement("day",n);var s=this.calendarTable.getElements("td");s.each(function(t){this.loadDay(t,i,e);i.increment()}.bind(this))},loadData:function(e){this.app.actions.listEventWithFilter({calendarIds:this.app.getSelectedCalendarId(),startTime:this.monthStartStr,endTime:this.monthEndStr},function(t){this.wholeDayData=t.data&&t.data.wholeDayEvents?t.data.wholeDayEvents:[];this.inOneDayEvents=[];(t.data&&t.data.inOneDayEvents?t.data.inOneDayEvents:[]).each(function(t){if(t.inOneDayEvents.length>0){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.firstDay<e.firstDay)return-1;return t.diff-e.diff}.bind(this));this.wholeDayDocumentList=[];this.wholeDayRange.each(function(t){this.wholeDayDocumentList.push(new MWFCalendarMonthView.Calendar.WholeDayDocument(this,t))}.bind(this))},loadDay:function(e,t,i){var n=this;e.empty();var s="thisMonth";var a=t.get("month");var o=t.get("year");var h=t.get("date");var d=this.date.get("month");var r=this.date.get("year");var l=this.today.get("month");var c=this.today.get("year");var u=this.today.get("date");if(a==l&&o==c&&h==u){s="today"}else if(a==d&&o==r){s="thisMonth"}else{s="otherMonth"}e.set("valign","top");e.setStyles(this.css["calendarTableCell_"+s]);e.store("dateStr",t.format("%Y-%m-%d"));e.store("type",s);if(i){e.addEvent("click",function(t){this.setCurrentTd(e)}.bind(this));e.addEvent("dblclick",function(t){n.cancelCurrentTd();var e=new MWF.xApplication.Calendar.EventForm(n,{},{startTime:Date.parse(this.retrieve("dateStr")+" 08:00"),endTime:Date.parse(this.retrieve("dateStr")+" 09:00")},{app:n.app});e.view=n;e.create()}.bind(e));new Drag(e,{onStart:function(t,e){this.cancelCurrentTd();this.cellDragStart(t,e)}.bind(this),onDrag:function(t,e){this.cellDrag(t,e)}.bind(this),onComplete:function(t,e){this.completeDrag(t,e)}.bind(this)})}var p=new Element("div",{styles:this.css["dayTitle_"+s]}).inject(e);var f=new Element("div",{styles:this.css["dayTitleDay_"+s],text:h}).inject(p);f.addEvent("click",function(){n.app.toDay(this.date)}.bind({date:t.format("%Y-%m-%d")}))},setCurrentTd:function(t){t.setStyle("background-color","#fffdf2");if(this.currentSelectedTd){this.currentSelectedTd.setStyle("background-color",this.currentSelectedTd.retrieve("type")=="today"?"#F8FBFF":"#fff")}this.currentSelectedTd=t},cancelCurrentTd:function(){if(this.currentSelectedTd){this.currentSelectedTd.setStyle("background-color",this.currentSelectedTd.retrieve("type")=="today"?"#F8FBFF":"#fff")}this.currentSelectedTd=null},reload:function(){this.view.reload()},destroy:function(){Object.each(this.days,function(t){t.destroy()}.bind(this));this.container.empty()},getIndexByPage:function(t){var e=this.calendarTable.getPosition();var i=(t.x-e.x)/MWFCalendarMonthView.DayWidth;if(i<0||i>7)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;a<this.calendarTrHeight.length;a++){if(n<this.calendarTrHeight[a]){s=a;break}else{n=n-this.calendarTrHeight[a]}}if(s!=null){return{row:s,col:Math.floor(i)}}else{return null}},getTdsByIndexRange:function(t,e){if(this.calendarTableTds){var i=this.calendarTableTds}else{var i=this.calendarTableTds=this.calendarTable.getElements("td")}var n,s;if(t.row==e.row){if(t.col<=e.col){n=t;s=e}else{n=e;s=t}}else if(t.row<e.row){n=t;s=e}else{n=e;s=t}var a=n.row*7+n.col;var o=s.row*7+s.col;var h=[];for(var d=a;d<=o;d++){h.push(i[d])}return h},cellDragStart:function(t,e){t.store("index",this.getIndexByPage(e.page));this.scrollNodeHeight=this.scrollNode.getSize().y},cellDrag:function(t,e){var i=t.retrieve("index");var n=this.getIndexByPage(e.page);if(!n)return;var s=this.getTdsByIndexRange(i,n);if(this.selectedTds){this.selectedTds.each(function(t){var e=t.retrieve("type");if(!s.contains(t))t.setStyle("background-color",e=="today"?"#F8FBFF":"#fff")}.bind(this));s.each(function(t){if(!this.selectedTds.contains(t))t.setStyle("background-color","#fffdf2")}.bind(this))}else{s.each(function(t){t.setStyle("background-color","#fffdf2")}.bind(this))}var a=this.scrollNode.getScroll().y;if(this.pageOffsetHeight+MWFCalendarMonthView.WeekHeight*1.5>this.scrollNodeHeight+a){window.setTimeout(function(){this.scrollNode.scrollTo(0,a+MWFCalendarMonthView.WeekHeight)}.bind(this),200)}else if(this.pageOffsetHeight-MWFCalendarMonthView.WeekHeight*1.5<a){window.setTimeout(function(){this.scrollNode.scrollTo(0,a-MWFCalendarMonthView.WeekHeight)}.bind(this),200)}this.selectedTds=s},completeDrag:function(t,e){if(this.selectedTds&&this.selectedTds.length){this.selectedTds.each(function(t){var e=t.retrieve("type");t.setStyle("background-color",e=="today"?"#F8FBFF":"#fff")}.bind(this));var i=this.selectedTds[0].retrieve("dateStr");var n=this.selectedTds.getLast().retrieve("dateStr");var s=new MWF.xApplication.Calendar.EventForm(this,{},{startTime:i,endTime:n,isWholeday:true},{app:this.app});s.view=this;s.create();this.selectedTds=null}}});MWFCalendarMonthView.THHeight=50;MWFCalendarMonthView.WeekHeight=140;MWFCalendarMonthView.WeekWidth;MWFCalendarMonthView.DayWidth;MWFCalendarMonthView.Calendar.WholeDayDocument=new Class({Implements:[Events],initialize:function(t,e){this.calendar=t;this.view=this.calendar.view;this.css=this.calendar.css;this.app=this.calendar.app;this.range=e;this.load()},load:function(){this.weekList=[];Object.each(this.range.weekInforList,function(t){this.weekList.push(new MWFCalendarMonthView.Calendar.WholeDayWeek(this,t,this.range.data))}.bind(this))},setMouseOver:function(){this.weekList.each(function(t){t.mouseover()}.bind(this))},setMouseOut:function(){this.weekList.each(function(t){t.mouseout()}.bind(this))},resize:function(){this.weekList.each(function(t){t.resize()}.bind(this))},destroy:function(){this.weekList.each(function(t){t.destroy()}.bind(this))}});MWFCalendarMonthView.Calendar.WholeDayWeek=new Class({Implements:[Events],initialize:function(t,e,i){this.document=t;this.calendar=t.calendar;this.view=this.calendar.view;this.css=this.calendar.css;this.app=this.calendar.app;this.weekInfor=e;this.data=i;this.load()},load:function(){this.timeStart=Date.parse(this.data.startTime);this.timeEnd=Date.parse(this.data.endTime);this.yIndex=this.calendar.getUserfulYIndex(this.weekInfor.index,this.weekInfor.daysIndex);this.container=this.getContainer();this.createNode()},createNode:function(){var t=this.lightColor=MWFCalendar.ColorOptions.getLightColor(this.data.color);var e=this.node=new Element("div",{styles:{position:"absolute",overflow:"hidden",height:"20px","line-height":"20px","border-top":"1px solid "+t,"border-bottom":"1px solid "+t,"background-color":t},events:{click:function(){var t=new MWF.xApplication.Calendar.EventForm(this,this.data,{isFull:true},{app:this.app});t.view=this.view;t.edit()}.bind(this),mouseover:function(){this.document.setMouseOver()}.bind(this),mouseout:function(){this.document.setMouseOut()}.bind(this)}}).inject(this.container);e.setStyles(this.getCoordinate());if(this.weekInfor.isEventStart){e.setStyles({"border-left":"1px solid "+t,"border-top-left-radius":"10px","border-bottom-left-radius":"10px"})}if(this.weekInfor.isEventEnd){e.setStyles({"border-right":"1px solid "+t,"border-top-right-radius":"10px","border-bottom-right-radius":"10px"})}if(this.weekInfor.isEventStart){var i=new Element("div",{styles:{"font-size":"10px","padding-left":"2px",float:"left"},text:this.timeStart.format("%m-%d %H:%M")+"至"+this.timeEnd.format("%m-%d %H:%M")}).inject(e)}var n=new Element("div",{styles:{"padding-left":"5px","font-size":"12px",float:"left"},text:this.data.title}).inject(e);this.tooltip=new MWF.xApplication.Calendar.EventTooltip(this.app.content,this.node,this.app,this.data,{axis:"y",delay:350})},getContainer:function(){return this.calendar.dataTdList[this.weekInfor.index]},getCoordinate:function(){var t=this.data;var e=this.weekInfor;var i=this.yIndex*24;var n=e.daysIndex.length/7*MWFCalendarMonthView.WeekWidth-3;var s=e.daysIndex[0]/7*MWFCalendarMonthView.WeekWidth;return{top:i+2,left:s,width:n}},mouseover:function(){this.node.setStyle("border-color",this.data.color)},mouseout:function(){this.node.setStyle("border-color",this.lightColor)},resize:function(){this.node.setStyles(this.getCoordinate())},reload:function(){if(this.tooltip)this.tooltip.destroy();this.view.reload()},destroy:function(){if(this.tooltip)this.tooltip.destroy();this.node.destroy()}});MWFCalendarMonthView.Calendar.InOnDayDocument=new Class({Implements:[Events],initialize:function(t,e,i){this.calendar=t;this.view=this.calendar.view;this.css=this.calendar.css;this.app=this.calendar.app;this.data=e;this.dateStr=i;this.date=Date.parse(i);this.load()},load:function(){this.timeStart=Date.parse(this.data.startTime);this.timeEnd=Date.parse(this.data.endTime);this.index=this.calendar.getDateIndex(this.date);this.yIndex=this.calendar.getUserfulYIndex(this.index.weekIndex,[this.index.dayIndex]);this.container=this.getContainer();this.createNode()},createNode:function(){var t=this.lightColor=MWFCalendar.ColorOptions.getLightColor(this.data.color);var e=this.node=new Element("div",{styles:{position:"absolute",border:"1px solid "+t,"background-color":t,overflow:"hidden",height:"20px","line-height":"20px","border-radius":"10px"},events:{click:function(){var t=new MWF.xApplication.Calendar.EventForm(this,this.data,{isFull:true},{app:this.app});t.view=this.view;t.edit()}.bind(this),mouseover:function(){this.node.setStyle("border-color",this.data.color)}.bind(this),mouseout:function(){this.node.setStyle("border-color",this.lightColor)}.bind(this)}}).inject(this.container);e.setStyles(this.getCoordinate());var i=new Element("div",{styles:{"font-size":"10px","padding-left":"2px",float:"left"},text:this.timeStart.format("%H:%M")+"至"+this.timeEnd.format("%H:%M")}).inject(e);var n=new Element("div",{styles:{"padding-left":"5px","font-size":"12px",float:"left"},text:this.data.title}).inject(e);this.tooltip=new MWF.xApplication.Calendar.EventTooltip(this.app.content,this.node,this.app,this.data,{axis:"y",delay:350})},getContainer:function(){return this.calendar.dataTdList[this.index.weekIndex]},getCoordinate:function(){var t=this.data;var e=this.yIndex*24;var i=MWFCalendarMonthView.DayWidth-3;var n=this.index.dayIndex*MWFCalendarMonthView.DayWidth;return{top:e+2,left:n,width:i}},resize:function(){this.node.setStyles(this.getCoordinate())},reload:function(){if(this.tooltip)this.tooltip.destroy();this.view.reload()},destroy:function(){if(this.tooltip)this.tooltip.destroy();this.node.destroy()}});MWFCalendarMonthView.Document=new Class({initialize:function(t,e,i){this.day=t;this.css=this.day.css;this.view=this.day.view;this.app=this.day.app;this.container=this.day.contentNode;this.data=e;this.index=i;this.load()},load:function(){this.nodeStyles=this.day.type=="today"?this.css.calendarNode_today:this.css.calendarNode;this.node=new Element("div",{styles:this.nodeStyles}).inject(this.container);this.iconNode=new Element("div",{styles:this.css.calendarIconNode}).inject(this.node);this.timeNode=new Element("div",{styles:this.css.calendarTimeNode}).inject(this.node);this.textNode=new Element("div",{styles:this.css.calendarTextNode}).inject(this.node);var t=Date.parse(this.data.startTime).format("%H:%M");this.timeNode.set("text",t);this.textNode.set("text",this.data.subject);this.node.addEvents({mouseenter:function(){this.day.collapseReady=false;this.node.setStyles(this.css.calendarNode_over)}.bind(this),mouseleave:function(){this.node.setStyles(this.nodeStyles)}.bind(this),click:function(){this.openCalendar()}.bind(this)});this.loadTooltip()},loadTooltip:function(){this.tooltip=new MWF.xApplication.Calendar.EventTooltip(this.app.content,this.node,this.app,this.data,{axis:"x",hiddenDelay:300,displayDelay:300,onShow:function(){this.day.collapseDisable=true}.bind(this),onQueryCreate:function(){this.day.collapseDisable=true}.bind(this),onHide:function(){this.day.collapseDisable=false;this.day.collapse()}.bind(this)})},showTooltip:function(){if(this.tooltip){this.tooltip.load()}else{this.tooltip=new MWF.xApplication.Calendar.EventTooltip(this.app.content,this.node,this.app,this.data,{axis:"x",delay:150});this.tooltip.load()}},openCalendar:function(){this.form=new MWF.xApplication.Calendar.CalendarForm(this,this.data,{},{app:this.app});this.form.view=this;this.form.open()},destroy:function(){if(this.tooltip)this.tooltip.destroy();this.node.destroy();MWF.release(this)},reload:function(){this.view.reload()}});MWFCalendarMonthView.MonthSelector=new Class({Implements:[Events],initialize:function(t,e){this.calendar=e;this.css=this.calendar.css;this.app=this.calendar.app;this.date=t;this.year=this.date.get("year");this.load()},load:function(){this.monthSelectNode=new Element("div",{styles:this.css.calendarMonthSelectNode}).inject(this.calendar.container);this.monthSelectNode.position({relativeTo:this.calendar.titleTextNode,position:"bottomCenter",edge:"upperCenter"});this.monthSelectNode.addEvent("mousedown",function(t){t.stopPropagation()});this.monthSelectTitleNode=new Element("div",{styles:this.css.calendarMonthSelectTitleNode}).inject(this.monthSelectNode);this.monthSelectPrevYearNode=new Element("div",{styles:this.css.calendarMonthSelectTitlePrevYearNode}).inject(this.monthSelectTitleNode);this.monthSelectNextYearNode=new Element("div",{styles:this.css.calendarMonthSelectTitleNextYearNode}).inject(this.monthSelectTitleNode);this.monthSelectTextNode=new Element("div",{styles:this.css.calendarMonthSelectTitleTextNode}).inject(this.monthSelectTitleNode);this.monthSelectTextNode.set("text",this.year);var t="<tr><td></td><td></td><td></td></tr>";t+="<tr><td></td><td></td><td></td></tr>";t+="<tr><td></td><td></td><td></td></tr>";t+="<tr><td></td><td></td><td></td></tr>";this.monthSelectTable=new Element("table",{styles:{"margin-top":"10px"},height:"200px",width:"90%",align:"center",border:"0",cellPadding:"0",cellSpacing:"0",html:t}).inject(this.monthSelectNode);this.monthSelectBottomNode=new Element("div",{styles:this.css.calendarMonthSelectBottomNode,text:this.app.lp.today}).inject(this.monthSelectNode);this.setEvent()},loadMonth:function(){this.monthSelectTextNode.set("text",this.year);var t=new Date;var n=t.get("year");var s=t.get("month");var a=this.date.get("year");var o=this.date.get("month");var h=this;var e=this.monthSelectTable.getElements("td");e.each(function(t,e){t.empty();t.removeEvents("mouseover");t.removeEvents("mouseout");t.removeEvents("mousedown");t.removeEvents("mouseup");t.removeEvents("click");var i=e+1;t.store("month",i);t.setStyles(this.css.calendarMonthSelectTdNode);t.setStyle("background-color","#FFF");if(this.year==n&&e==s){new Element("div",{styles:h.css.calendarMonthSelectTodayNode,text:""+i+this.app.lp.month}).inject(t)}else if(this.year==a&&e==o){new Element("div",{styles:h.css.calendarMonthSelectCurrentNode,text:""+i+this.app.lp.month}).inject(t)}else{t.set("text",""+i+this.app.lp.month)}t.addEvents({mouseover:function(){this.setStyles(h.css.calendarMonthSelectTdNode_over)},mouseout:function(){this.setStyles(h.css.calendarMonthSelectTdNode)},mousedown:function(){this.setStyles(h.css.calendarMonthSelectTdNode_down)},mouseup:function(){this.setStyles(h.css.calendarMonthSelectTdNode_over)},click:function(){h.selectedMonth(this)}})}.bind(this))},setEvent:function(){this.monthSelectPrevYearNode.addEvent("click",function(){this.prevYear()}.bind(this));this.monthSelectNextYearNode.addEvent("click",function(){this.nextYear()}.bind(this));this.monthSelectBottomNode.addEvents({mouuseover:function(){this.monthSelectBottomNode.setStyles(this.css.calendarMonthSelectBottomNode_over)}.bind(this),mouuseout:function(){this.monthSelectBottomNode.setStyles(this.css.calendarMonthSelectBottomNode)}.bind(this),click:function(){this.todayMonth()}.bind(this)})},prevYear:function(){this.year--;if(this.year<1900)this.year=1900;this.monthSelectTextNode.set("text",this.year);this.loadMonth()},nextYear:function(){this.year++;this.monthSelectTextNode.set("text",this.year);this.loadMonth()},todayMonth:function(){var t=new Date;this.calendar.changeMonthTo(t);this.hide()},selectedMonth:function(t){var e=t.retrieve("month");var i=Date.parse(this.year+"/"+e+"/1");this.calendar.changeMonthTo(i);this.hide()},show:function(){this.date=this.calendar.date;this.year=this.date.get("year");this.loadMonth();this.monthSelectNode.setStyle("display","block");this.hideFun=this.hide.bind(this);document.body.addEvent("mousedown",this.hideFun)},hide:function(){this.monthSelectNode.setStyle("display","none");document.body.removeEvent("mousedown",this.hideFun)},destroy:function(){}});