WeekView.min.js 34 KB

1
  1. MWF.require("MWF.widget.Calendar",null,false);var MWFCalendarWeekView=MWF.xApplication.Calendar.WeekView=new Class({Extends:MWF.widget.Common,Implements:[Options,Events],options:{style:"default",date:""},initialize:function(e,t,i){this.setOptions(i);this.path="/x_component_Calendar/$WeekView/";this.cssPath="/x_component_Calendar/$WeekView/"+this.options.style+"/css.wcss";this._loadCss();this.app=t;this.container=$(e);this.weekBegin=this.app.calendarConfig.weekBegin||"0";this.load()},load:function(){this.node=new Element("div.node",{styles:this.css.node}).inject(this.container);this.node.setStyle("position","relative");this.resetNodeSize();this.loadCalendar()},resetNodeSize:function(){var e=this.container.getSize();var t=e.y-50;this.node.setStyle("height",""+t+"px");if(this.calendar){this.calendar.resetBodySize()}},loadCalendar:function(){var e="";if(this.options.date){e=Date.parse(this.options.date)}else{e=new Date}this.currentWeek=this.getWeekNumber(e);this.calendar=new MWFCalendarWeekView.Calendar(this,e)},hide:function(){var e=new Fx.Morph(this.node,{duration:"300",transition:Fx.Transitions.Expo.easeOut});e.start({opacity:0}).chain(function(){this.node.setStyle("display","none")}.bind(this))},show:function(){this.node.setStyles(this.css.node);var e=new Fx.Morph(this.node,{duration:"800",transition:Fx.Transitions.Expo.easeOut});e.start({opacity:1}).chain(function(){if(this.calendar.dataTable_WholeDay){this.calendar.dataTable_WholeDay.setStyle("display","")}}.bind(this))},reload:function(){if(this.calendar)this.calendar.reLoadCalendar()},recordStatus:function(){var e="";if(this.calendar)e=this.calendar.baseDate;return{date:e.toString()}},destroy:function(){if(this.calendar){this.calendar.destroy()}this.node.destroy()},getWeekNumber:function(e){var t=e.clone();var i=(7+e.getDay()-parseInt(this.weekBegin))%7;t.setDate(t.getDate()-i+3);var a=t.valueOf();t.setMonth(0,1);if(t.getDay()!=4){t.setMonth(0,1+(4-t.getDay()+7)%7)}return 1+Math.ceil((a-t)/6048e5)}});MWFCalendarWeekView.DayWidth;MWFCalendarWeekView.HourHeight=48;MWFCalendarWeekView.DayHeight=24*MWFCalendarWeekView.HourHeight;MWFCalendarWeekView.DayMsec=3600*24*1e3;MWFCalendarWeekView.WeekWidth;MWFCalendarWeekView.WeekMsec=MWFCalendarWeekView.DayMsec*7;MWFCalendarWeekView.Calendar=new Class({Implements:[Events],initialize:function(e,t){this.view=e;this.css=this.view.css;this.container=this.view.node;this.app=this.view.app;this.weekBegin=this.app.calendarConfig.weekBegin||"0";this.baseDate=t||new Date;this.today=new Date;this.load()},load:function(){this.date=this.getWeekStartTime(this.baseDate);this.weekStartTime=new Date(this.date.get("year"),this.date.get("month"),this.date.get("date"),0,0,0);this.weekStartTimeStr=this.weekStartTime.format("db");var e=this.date.clone().increment("day",6);this.weekEndTime=new Date(e.get("year"),e.get("month"),e.get("date"),23,59,59);this.weekEndTimeStr=this.weekEndTime.format("db");this.titleNode=new Element("div",{styles:this.css.calendarTitleNode}).inject(this.container);this.titleTable=new Element("table",{styles:this.css.titleTable,border:"0",cellPadding:"0",cellSpacing:"0"}).inject(this.container);this.scrollNode=new Element("div.scrollNode",{styles:this.css.scrollNode}).inject(this.container);this.contentWarpNode=new Element("div.contentWarpNode",{styles:this.css.contentWarpNode}).inject(this.scrollNode);this.contentContainerNode=new Element("div.contentContainerNode",{styles:this.css.contentContainerNode}).inject(this.contentWarpNode);this.bodyNode=new Element("div.bodyNode",{styles:this.css.contentNode}).inject(this.contentContainerNode);this.bodyNode.setStyle("position","relative");this.setTitleNode();this.loadTitleTable();this.loadBodyTable();this.loadDataTable_WholeDay();this.loadDataTable();this.loadCalendar()},getWeekStartTime:function(e){var t=e.clone();var i=(7+e.getDay()-parseInt(this.weekBegin))%7;return t.decrement("day",i)},setTitleNode:function(){this.prevWeekNode=new Element("div",{styles:this.css.calendarPrevWeekNode}).inject(this.titleNode);var e=this.baseDate.format(this.app.lp.dateFormatMonth)+",第"+this.view.getWeekNumber(this.baseDate)+"周";this.titleTextNode=new Element("div",{styles:this.css.calendarTitleTextNode,text:e}).inject(this.titleNode);this.nextWeekNode=new Element("div",{styles:this.css.calendarNextWeekNode}).inject(this.titleNode);this.prevWeekNode.addEvents({mouseover:function(){this.prevWeekNode.setStyles(this.css.calendarPrevWeekNode_over)}.bind(this),mouseout:function(){this.prevWeekNode.setStyles(this.css.calendarPrevWeekNode)}.bind(this),mousedown:function(){this.prevWeekNode.setStyles(this.css.calendarPrevWeekNode_down)}.bind(this),mouseup:function(){this.prevWeekNode.setStyles(this.css.calendarPrevWeekNode_over)}.bind(this),click:function(){this.changeWeekPrev()}.bind(this)});this.nextWeekNode.addEvents({mouseover:function(){this.nextWeekNode.setStyles(this.css.calendarNextWeekNode_over)}.bind(this),mouseout:function(){this.nextWeekNode.setStyles(this.css.calendarNextWeekNode)}.bind(this),mousedown:function(){this.nextWeekNode.setStyles(this.css.calendarNextWeekNode_down)}.bind(this),mouseup:function(){this.nextWeekNode.setStyles(this.css.calendarNextWeekNode_over)}.bind(this),click:function(){this.changeWeekNext()}.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)});this.createWeekSelector()},changeWeekPrev:function(){this.date.decrement("week",1);this.baseDate=this.date;var e=this.baseDate.format(this.app.lp.dateFormatMonth)+",第"+this.view.getWeekNumber(this.baseDate)+"周";this.titleTextNode.set("text",e);this.reLoadCalendar()},changeWeekNext:function(){this.date.increment("week",1);this.baseDate=this.date;var e=this.baseDate.format(this.app.lp.dateFormatMonth)+",第"+this.view.getWeekNumber(this.baseDate)+"周";this.titleTextNode.set("text",e);this.reLoadCalendar()},changeWeekSelect:function(){if(!this.monthSelector)this.createWeekSelector()},createWeekSelector:function(){this.weekCalendar=new MWFCalendarWeekView.WeekCalendar(this.titleTextNode,{style:"meeting_blue",weekBegin:this.weekBegin,target:this.node,baseDate:this.baseDate,onInit:function(){this.options.dayPath=this.options.path+this.options.style+"/day_week.html"},onQueryComplate:function(e,t,i){var a=new Date.parse(t);this.changeWeekTo(a)}.bind(this)})},changeWeekTo:function(e){this.baseDate=e;this.date=this.getWeekStartTime(e);var t=this.baseDate.format(this.app.lp.dateFormatMonth)+",第"+this.view.getWeekNumber(this.baseDate)+"周";this.titleTextNode.set("text",t);this.reLoadCalendar()},isToday:function(e){var t=new Date;if(t.get("year")!=e.get("year"))return false;if(t.get("month")!=e.get("month"))return false;if(t.get("date")!=e.get("date"))return false;return true},loadTitleTable:function(){var e=this;if(!this.tableHead){var a=this.date.clone();var t=this.tableHead=new Element("tr",{styles:this.css.calendarTableTitleTr}).inject(this.titleTable);new Element("th",{styles:this.css.calendarTableTh_hour}).inject(t);for(var i=0;i<7;i++){var s=(i+parseInt(this.weekBegin))%7;var n=new Element("th",{styles:this.css.calendarTableTh,text:this.app.lp.weeks.arr[s]+"("+a.format("%m.%d")+")"}).inject(t);n.store("date",a.format("%Y-%m-%d"));n.addEvent("click",function(){e.app.toDay(this.retrieve("date"))}.bind(n));a.increment("day",1)}var o=this.wholeDayTr=new Element("tr").inject(this.titleTable);var r=new Element("td.calendarTableCell",{tdType:"hour",styles:this.css.calendarTableCell_hour}).inject(o);r.setStyle("min-height","80px");var h=new Element("div",{text:"全天"}).inject(r);r.store("hour",i);this.wholeDayTdMap={};var a=this.date.clone();for(var d=0;d<7;d++){r=this.wholeDayTdMap[d]=new Element("td",{tdType:"calendar",styles:this.css.calendarTableCell,index:d+1}).inject(o);r.store("dateStr",a.format("%Y-%m-%d"));r.store("index",d);r.addEvent("click",function(e){this.setCurrentTd(e.target)}.bind(this));r.addEvent("dblclick",function(e){this.cancelCurrentTd();var t=new MWF.xApplication.Calendar.EventForm(this,{},{startTime:Date.parse(e.target.retrieve("dateStr")),endTime:Date.parse(e.target.retrieve("dateStr")),isWholeday:true},{app:this.app});t.view=this;t.create()}.bind(this));new Drag(r,{onStart:function(e,t){this.cancelCurrentTd();this.cellDragStart_wholeDay(e,t)}.bind(this),onDrag:function(e,t){this.cellDrag_wholeDay(e,t)}.bind(this),onComplete:function(e,t){this.completeDrag_wholeDay(e,t)}.bind(this)});a.increment("day",1)}}else{var a=this.date.clone();this.tableHead.getElements("th").each(function(e,t){if(t==0)return;var i=(t-1+parseInt(this.weekBegin))%7;e.set("text",this.app.lp.weeks.arr[i]+"("+a.format("%d")+")");e.store("date",a.format("%Y-%m-%d"));a.increment("day",1)}.bind(this));var a=this.date.clone();Object.each(this.wholeDayTdMap,function(e,t){e.store("dateStr",a.format("%Y-%m-%d"));a.increment("day",1)}.bind(this))}},loadBodyTable:function(){this.calendarTable=new Element("table",{styles:this.css.calendarTable,height:"100%",border:"0",cellPadding:"0",cellSpacing:"0"}).inject(this.bodyNode);this.hourTdMap={};this.hourTrMap={};for(var e=0;e<24;e++){var t=new Element("tr").inject(this.calendarTable);var i=new Element("td.calendarTableCell",{tdType:"hour",styles:this.css.calendarTableCell_hour,valign:"top"}).inject(t);var a=new Element("div",{text:e+":00"}).inject(i);i.store("hour",e);for(var s=0;s<7;s++){if(!this.hourTdMap[s])this.hourTdMap[s]={};var i=this.hourTdMap[s][e]=new Element("td",{tdType:"calendar",styles:this.css.calendarTableCell,index:s+1}).inject(t);i.store("hour",e);i.store("index",s);i.addEvent("click",function(e){this.setCurrentTd(e.target)}.bind(this));i.addEvent("dblclick",function(e){this.cancelCurrentTd();var t=e.target.retrieve("hour");var i=e.target.retrieve("index");var a=this.getDateByIndex(i);var s=new MWF.xApplication.Calendar.EventForm(this,{},{startTime:Date.parse(a+" "+t+":00"),endTime:Date.parse(a+" "+(t+1)+":00")},{app:this.app});s.view=this;s.create()}.bind(this));new Drag(i,{onStart:function(e,t){this.cancelCurrentTd();this.cellDragStart(e,t)}.bind(this),onDrag:function(e,t){this.cellDrag(e,t)}.bind(this),onComplete:function(e,t){this.completeDrag(e,t)}.bind(this)})}this.hourTrMap[e]=t}},setCurrentTd:function(e){e.setStyle("background-color","#fffdf2");if(this.currentSelectedTd){var t=this.currentSelectedTd.retrieve("index")==this.todayIndex;this.currentSelectedTd.setStyle("background-color",t?"#F8FBFF":"#fff")}this.currentSelectedTd=e},cancelCurrentTd:function(){if(this.currentSelectedTd){var e=this.currentSelectedTd.retrieve("index")==this.todayIndex;this.currentSelectedTd.setStyle("background-color",e?"#F8FBFF":"#fff")}this.currentSelectedTd=null},reLoadCalendar:function(){this.weekStartTime=new Date(this.date.get("year"),this.date.get("month"),this.date.get("date"),0,0,0);this.weekStartTimeStr=this.weekStartTime.format("db");var e=this.date.clone().increment("day",6);this.weekEndTime=new Date(e.get("year"),e.get("month"),e.get("date"),23,59,59);this.weekEndTimeStr=this.weekEndTime.format("db");Object.each(this.dayMap||{},function(e){e.destroy()}.bind(this));this.dayMap={};if(this.wholeday){this.wholeday.destroy()}this.wholeday=null;this.loadTitleTable();this.loadCalendar()},loadCalendar:function(){this.app.currentDate=this.baseDate.clone();this.dateIndexMap=null;this.titleTable.getElement("td:nth-child(1)").setStyle("height","auto");this.loadData(function(){this.loadWholeday(this.wholeDayData);this.loadDataDay(this.inOneDayEvents);this.resetBodySize();this.setTodayTds();this.cancelCurrentTd()}.bind(this))},setTodayTds:function(){var e=new Date;var t=this.todayIndex=this.getDateNumOfWeek(e.format("%Y-%m-%d"));var i=e.get("hours");var a=e.get("minutes");a=a<2?2:a;if(t>-1){this.todayTds=[];var s=this.wholeDayTdMap[t];s.setStyle("background-color","#f8fbff");this.todayTds.push(s);var n=this.hourTdMap[t];Object.each(n,function(e,t){e.setStyle("background-color","#f8fbff");this.todayTds.push(e)}.bind(this));this.nowTd=n[i];var o=this.nowTd.getPosition(this.bodyNode);this.nowTimeNode=new Element("div",{styles:{position:"absolute",left:o.x,top:o.y+(a-2)/60*MWFCalendarWeekView.HourHeight,height:"2px",width:MWFCalendarWeekView.DayWidth,"background-color":"#ff3333"}}).inject(this.bodyNode)}else if(this.todayTds&&this.todayTds.length){while(this.todayTds.length>0){this.todayTds.pop().setStyle("background-color","#fff")}if(this.nowTd)this.nowTd=null;if(this.nowTimeNode)this.nowTimeNode.destroy()}},loadData:function(t){this.app.actions.listEventWithFilter({calendarIds:this.app.getSelectedCalendarId(),startTime:this.weekStartTimeStr,endTime:this.weekEndTimeStr},function(e){this.wholeDayData=e.data&&e.data.wholeDayEvents?e.data.wholeDayEvents:[];this.inOneDayEvents=[];(e.data&&e.data.inOneDayEvents?e.data.inOneDayEvents:[]).each(function(e){if(e.inOneDayEvents.length>0){this.inOneDayEvents.push(e)}}.bind(this));if(t)t()}.bind(this))},loadDataTable_WholeDay:function(e){this.dataTable_WholeDay=new Element("table.dataTable",{styles:this.css.calendarTable,border:"0",cellPadding:"0",cellSpacing:"0"}).inject(this.container);this.dataTable_WholeDay.setStyles({display:"none",position:"absolute",top:"92px",left:"0px",margin:"0px auto 0px 12px"});var t=new Element("tr").inject(this.dataTable_WholeDay);new Element("td",{styles:{height:"0px",position:"relative"}}).inject(t);this.dataTd_WholeDay=new Element("td",{valign:"top",styles:{height:"0px",position:"relative"}}).inject(t)},loadWholeday:function(e){this.wholeday=new MWFCalendarWeekView.Calendar.WholeDay(this,e,this.date)},loadDataTable:function(e){this.dataTable=new Element("table.dataTable",{styles:this.css.calendarTable,height:"100%",border:"0",cellPadding:"0",cellSpacing:"0"}).inject(this.bodyNode);this.dataTable.setStyles({position:"absolute",top:"0px",left:"0px"});var t=new Element("tr").inject(this.dataTable);new Element("td",{styles:{height:"0px",position:"relative"}}).inject(t);this.dataTdMap={};for(var i=0;i<7;i++){this.dataTdMap[i]=new Element("td",{styles:{height:"0px",position:"relative"},index:i}).inject(t)}},getDateIndexMap:function(){if(!this.dateIndexMap){var e=this.getWeekStartTime(this.baseDate);this.dateIndexMap={};for(var t=0;t<7;t++){var i=e.format("%Y-%m-%d");this.dateIndexMap[i]=t;e.increment()}}return this.dateIndexMap},getDateByIndex:function(e){var t;var i=this.getDateIndexMap();for(var a in i){if(i[a]==e){return a}}},getDateNumOfWeek:function(e){var t=this.getDateIndexMap();return this.dateIndexMap[e]},loadDataDay:function(e){this.dayMap={};e.each(function(e){var t=e.eventDate;var i=this.dataTdMap[this.getDateNumOfWeek(t)];if(i){this.loadDay(i,t,e.inOneDayEvents)}}.bind(this))},loadDay:function(e,t,i){var a=Date.parse(t);var s=a.get("month");var n=a.get("year");var o=a.get("date");var r=new Date(n,s,o,0,0,0);var h=new Date(n,s,o,23,59,59);this.dayMap[t]=new MWFCalendarWeekView.Calendar.Day(e,a,this,i)},resetBodySize:function(){var e=this.container.getSize();var t=this.titleNode.getSize();var i=this.titleTable.getSize();var a=e.y-t.y-i.y;if(this.contentWarpNode){this.contentWarpNode.setStyles({width:e.x-40+"px"})}this.scrollNode.setStyle("height",""+a+"px");var s=60;MWFCalendarWeekView.WeekWidth=e.x-40-s;var n=MWFCalendarWeekView.DayWidth=Math.floor((MWFCalendarWeekView.WeekWidth-8)/7);if(this.calendarTable){this.calendarTable.setStyles({width:e.x-40+"px"});var o=this.calendarTable.getElement("tr:nth-child(1)");o.getElements("td").each(function(e,t){e.setStyle("width",(t==0?s:n)+"px")})}if(this.titleTable){this.titleTable.setStyles({width:e.x-40+"px"});var o=this.titleTable.getElement("tr:nth-child(1)");o.getElements("th").each(function(e,t){e.setStyle("width",(t==0?s:n)+"px")})}if(this.dataTable){this.dataTable.setStyles({width:e.x-40+"px"});var o=this.dataTable.getElement("tr:nth-child(1)");o.getElements("td").each(function(e,t){e.setStyle("width",(t==0?s:n)+"px")})}for(var r in this.dayMap){this.dayMap[r].resize()}if(this.dataTable_WholeDay){this.dataTable_WholeDay.setStyles({width:e.x-40+"px"});var o=this.dataTable_WholeDay.getElement("tr:nth-child(1)");var h=e.x-40-s-2;o.getElements("td").each(function(e,t){e.setStyle("width",(t==0?s:h)+"px")})}if(this.wholeday)this.wholeday.resize();if(this.nowTimeNode){this.nowTimeNode.setStyle("width",n);if(this.nowTd)this.nowTimeNode.setStyle("left",this.nowTd.getPosition(this.bodyNode).x)}},reload:function(){this.view.reload()},destroy:function(){Object.each(this.dayMap||{},function(e){e.destroy()}.bind(this));if(this.wholeday){this.wholeday.destroy()}this.container.empty()},getIndexByPage:function(e){var t=this.calendarTable.getPosition();if(!this.calendarTableFirstTd){this.calendarTableFirstTd=this.calendarTable.getElement("td")}t.x=t.x+this.calendarTableFirstTd.getSize().x;var i=(e.x-t.x)/(MWFCalendarWeekView.DayWidth+1);if(i<0||i>7)return null;this.pageOffsetHeight=e.y-t.y;var a=(e.y-t.y)/MWFCalendarWeekView.HourHeight;if(a<0||a>24)return null;return{row:Math.floor(a),col:Math.floor(i)}},getIndexListByRange:function(e,t){var i,a;if(e.col==t.col){if(e.row<=t.row){i=e;a=t}else{i=t;a=e}}else if(e.col<t.col){i=e;a=t}else{i=t;a=e}var s,n;var o=[];for(var r=i.col;r<=a.col;r++){s=r==i.col?i.row:0;n=r==a.col?a.row:23;for(var h=s;h<=n;h++){o.push(r+"_"+h)}}return o},getTdByIndexString:function(e){var t=e.split("_");var i=t[0];var a=t[1];return this.hourTdMap[i][a]},cellDragStart:function(e,t){e.store("index",this.getIndexByPage(t.page));this.scrollNodeHeight=this.scrollNode.getSize().y},cellDrag:function(e,t){var i=e.retrieve("index");var a=this.getIndexByPage(t.page);if(!a)return;var s=this.getIndexListByRange(i,a);var n=this.todayIndex>-1;if(this.selectedIndexRange){var o=this.selectedIndexRange;this.selectedIndexRange.each(function(e){if(!s.contains(e)){this.getTdByIndexString(e).setStyle("background-color",n&&e.split("_")[0]==this.todayIndex?"#F8FBFF":"#fff")}}.bind(this));s.each(function(e){if(!this.selectedIndexRange.contains(e)){this.getTdByIndexString(e).setStyle("background-color","#fffdf2")}}.bind(this))}else{for(var r=0;r<s.length;r++){this.getTdByIndexString(s[r]).setStyle("background-color","#fffdf2")}}this.selectedIndexRange=s;var h=this.scrollNode.getScroll().y;if(this.pageOffsetHeight+MWFCalendarWeekView.HourHeight*1.5>this.scrollNodeHeight+h){window.setTimeout(function(){this.scrollNode.scrollTo(0,h+MWFCalendarWeekView.HourHeight)}.bind(this),200)}else if(this.pageOffsetHeight-MWFCalendarWeekView.HourHeight*1.5<h){window.setTimeout(function(){this.scrollNode.scrollTo(0,h-MWFCalendarWeekView.HourHeight)}.bind(this),200)}},completeDrag:function(e,t){var i=this.todayIndex>-1;if(this.selectedIndexRange&&this.selectedIndexRange.length){this.selectedIndexRange.each(function(e){this.getTdByIndexString(e).setStyle("background-color",i&&e.split("_")[0]==this.todayIndex?"#F8FBFF":"#fff")}.bind(this));var a=this.selectedIndexRange[0].split("_");var s=this.selectedIndexRange.getLast().split("_");var n=this.getDateByIndex(a[0])+" "+a[1]+":00";var o=this.getDateByIndex(s[0])+" "+s[1]+":59";var r=new MWF.xApplication.Calendar.EventForm(this,{},{startTime:n,endTime:o},{app:this.app});r.view=this;r.create();this.selectedIndexRange=null}},getIndexByPage_wholeDay:function(e){var t=this.wholeDayTr.getPosition();if(!this.wholeDayFirstTd){this.wholeDayFirstTd=this.wholeDayTr.getElement("td")}t.x=t.x+this.wholeDayFirstTd.getSize().x;var i=(e.x-t.x)/(MWFCalendarWeekView.DayWidth+1);if(i<0||i>7)return null;return Math.floor(i)},getIndexListByRange_wholeDay:function(e,t){var i=Math.min(e,t);var a=Math.max(e,t);var s=[];for(var n=i;n<=a;n++){s.push(n)}return s},cellDragStart_wholeDay:function(e,t){e.store("index",this.getIndexByPage_wholeDay(t.page))},cellDrag_wholeDay:function(e,t){var i=e.retrieve("index");var a=this.getIndexByPage_wholeDay(t.page);if(!a)return;var s=this.getIndexListByRange_wholeDay(i,a);var n=this.todayIndex>-1;if(this.selectedIndexRange_wholeDay){var o=this.selectedIndexRange_wholeDay;this.selectedIndexRange_wholeDay.each(function(e){if(!s.contains(e)){this.wholeDayTdMap[e].setStyle("background-color",n&&e==this.todayIndex?"#F8FBFF":"#fff")}}.bind(this));s.each(function(e){if(!this.selectedIndexRange_wholeDay.contains(e)){this.wholeDayTdMap[e].setStyle("background-color","#fffdf2")}}.bind(this))}else{for(var r=0;r<s.length;r++){this.wholeDayTdMap[s[r]].setStyle("background-color","#fffdf2")}}this.selectedIndexRange_wholeDay=s},completeDrag_wholeDay:function(e,t){var i=this.todayIndex>-1;if(this.selectedIndexRange_wholeDay&&this.selectedIndexRange_wholeDay.length){this.selectedIndexRange_wholeDay.each(function(e){this.wholeDayTdMap[e].setStyle("background-color",i&&e==this.todayIndex?"#F8FBFF":"#fff")}.bind(this));var a=this.selectedIndexRange_wholeDay[0];var s=this.selectedIndexRange_wholeDay.getLast();var n=this.getDateByIndex(a);var o=this.getDateByIndex(s);var r=new MWF.xApplication.Calendar.EventForm(this,{},{startTime:n,endTime:o,isWholeday:true},{app:this.app});r.view=this;r.create();this.selectedIndexRange_wholeDay=null}}});MWFCalendarWeekView.Calendar.WholeDay=new Class({Implements:[Events],initialize:function(e,t,i){this.calendar=e;this.view=this.calendar.view;this.css=this.calendar.css;this.app=this.calendar.app;this.date=i.clone();this.data=t;this.load()},load:function(){this.weekStartTime=this.calendar.weekStartTime;this.weekEndTime=this.calendar.weekEndTime;this.rangeList=[];this.rangeObject={};this.data.each(function(e,t){var i=this.getTimeRange(e.startTime,e.endTime);if(!i)return null;e.range=i;e.range.id=e.id;e.range.data=e;this.rangeList.push(i);this.rangeObject[e.id]=i}.bind(this));var t={};this.rangeList.each(function(e){e.days.each(function(e){t[e]=t[e]?t[e]+1:1}.bind(this))}.bind(this));this.maxDayLength=0;for(var e in t){if(t[e]>this.maxDayLength)this.maxDayLength=t[e]}if(this.maxDayLength){this.calendar.titleTable.getElement("td:nth-child(1)").setStyle("height",24*this.maxDayLength)}this.usefulTdFlagArray=[];for(var i=0;i<this.maxDayLength;i++){var a=[];for(var s=0;s<7;s++){a.push(true)}this.usefulTdFlagArray.push(a)}this.sortRange();this.documentList=[];this.rangeList.each(function(e,t){var i=e.data;if(!i)return null;this.documentList.push(new MWFCalendarWeekView.Calendar.WholeDayDocument(this,i,e))}.bind(this))},sortRange:function(){this.rangeList.sort(function(e,t){if(e.days[0]>t.days[0])return 1;if(e.days[0]<t.days[0])return-1;return t.diff-e.diff}.bind(this))},getTimeRange:function(e,t){var i=Date.parse(e);var a=Date.parse(t);if(a<this.weekStartTime||i>this.weekEndDate)return null;if(i<this.weekStartTime)i=this.weekStartTime.clone();if(this.weekEndTime<a)a=this.weekEndTime.clone();var a=new Date(a.get("year"),a.get("month"),a.get("date"),23,59,59);var s=[];while(i<a){s.push(i.clone().format("%Y-%m-%d"));i.increment()}i=Date.parse(e);a=Date.parse(t);return{start:i,end:a,days:s,diff:a-i}},resize:function(){if(!this.documentList)return;this.documentList.each(function(e){e.resize()}.bind(this))},destroy:function(){if(!this.documentList)return;while(this.documentList.length){this.documentList.pop().destroy()}this.calendar.dataTd_WholeDay.empty()}});MWFCalendarWeekView.Calendar.WholeDayDocument=new Class({initialize:function(e,t,i){this.day=e;this.calendar=e.calendar;this.view=this.calendar.view;this.css=this.calendar.css;this.app=this.calendar.app;this.date=e.date.clone();this.data=t;this.range=i;this.load()},load:function(){this.container=this.calendar.dataTd_WholeDay;var e=this.items=[];this.data.timeStart=Date.parse(this.data.startTime);this.data.timeEnd=Date.parse(this.data.endTime);this.getUsefulTdYIndex();this.createNode()},getUsefulTdYIndex:function(){for(var e=0;e<this.day.maxDayLength;e++){var t=true;for(var i=0;i<this.range.days.length;i++){var a=this.calendar.getDateNumOfWeek(this.range.days[i]);if(!this.day.usefulTdFlagArray[e][a]){t=false;break}}if(t){this.yIndex=e;for(var i=0;i<this.range.days.length;i++){var a=this.calendar.getDateNumOfWeek(this.range.days[i]);this.day.usefulTdFlagArray[e][a]=false}break}}},createNode:function(){var e=this.lightColor=MWFCalendar.ColorOptions.getLightColor(this.data.color);var t=this.node=new Element("div",{styles:{position:"absolute","background-color":"#cae2ff",overflow:"hidden",height:"20px","line-height":"20px","border-top":"1px solid "+e,"border-bottom":"1px solid "+e},events:{click:function(){var e=new MWF.xApplication.Calendar.EventForm(this,this.data,{isFull:true},{app:this.app});e.view=this.view;e.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);t.setStyles(this.getCoordinate());if(!this.startTimeOutRange){t.setStyles({"border-left":"1px solid "+e,"border-top-left-radius":"10px","border-bottom-left-radius":"10px"})}if(!this.endTimeOutRange){t.setStyles({"border-right":"1px solid "+e,"border-top-right-radius":"10px","border-bottom-right-radius":"10px"})}var i=new Element("div",{styles:{"font-size":"10px","padding-left":"2px",float:"left"},text:this.data.timeStart.format("%m-%d %H:%M")+"至"+this.data.timeEnd.format("%m-%d %H:%M")}).inject(t);var a=new Element("div",{styles:{"padding-left":"5px","font-size":"12px",float:"left"},text:this.data.title}).inject(t);this.tooltip=new MWF.xApplication.Calendar.EventTooltip(this.app.content,this.node,this.app,this.data,{axis:"y",delay:350})},getCoordinate:function(){var e=this.data;var t=this.range;var i=this.yIndex*24;var a=this.day.weekStartTime;var s=this.day.weekEndTime;if(this.data.timeStart<a){this.startTimeOutRange=true}else{this.startTimeOutRange=false;a=this.data.timeStart}if(this.data.timeEnd>s){this.endTimeOutRange=true}else{this.endTimeOutRange=false;s=this.data.timeEnd}var n=s-a;var o=n/MWFCalendarWeekView.WeekMsec*MWFCalendarWeekView.WeekWidth-2;var r=(a-this.day.weekStartTime)/MWFCalendarWeekView.WeekMsec*MWFCalendarWeekView.WeekWidth+3;return{top:i+2,left:r,width:o}},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()}});MWFCalendarWeekView.Calendar.Day=new Class({Implements:[Events],initialize:function(e,t,i,a){this.container=e;this.calendar=i;this.view=this.calendar.view;this.css=this.calendar.css;this.app=this.calendar.app;this.date=t.clone();this.data=a;this.calendars=[];this.load()},load:function(){this.day=this.date.getDate();this.month=this.date.getMonth();this.year=this.date.getFullYear();this.startTime=new Date(this.year,this.month,this.day,0,0,0);this.endTime=new Date(this.year,this.month,this.day,23,59,59);this.rangeList=[];this.rangeObject={};this.data.each(function(e,t){var i=this.getTimeRange(e.startTime,e.endTime);if(!i)return null;e.range=i;e.range.id=e.id;this.rangeList.push(i);this.rangeObject[e.id]=i}.bind(this));this.sortRange();var a=this.data.length;this.documentList=[];this.data.each(function(e,t){var i=e.range;i.dayRangeCount=a;i.index=this.rangeList.indexOf(i);if(!i)return null;this.documentList.push(new MWFCalendarWeekView.Calendar.Document(this.container,this,e,i))}.bind(this))},sortRange:function(){this.rangeList.sort(function(e,t){return e.startTime-t.startTime})},getTimeRange:function(e,t){var i=typeOf(e)=="string"?Date.parse(e):e;var a=typeOf(t)=="string"?Date.parse(t):t;if(a<=this.startTime){return null}if(this.endTime<=i){return null}var s={start:i<=this.startTime?[0,0,0]:[i.get("hr"),i.get("min"),i.get("sec")],end:this.endTime<=a?[23,59,59]:[a.get("hr"),a.get("min"),a.get("sec")]};s.startTime=new Date(this.year,this.month,this.day,s.start[0],s.start[1],s.start[2]);s.endTime=new Date(this.year,this.month,this.day,s.end[0],s.end[1],s.end[2]);s.diff=s.endTime-s.startTime;return s},resize:function(){if(!this.documentList)return;this.documentList.each(function(e){e.resize()}.bind(this))},reload:function(){this.view.reload()},destroy:function(){while(this.documentList.length>0){this.documentList.pop().destroy()}this.container.empty()}});MWFCalendarWeekView.Calendar.Document=new Class({initialize:function(e,t,i,a,s){this.container=e;this.day=t;this.calendar=t.calendar;this.view=this.calendar.view;this.css=this.calendar.css;this.app=this.calendar.app;this.date=t.date.clone();this.data=i;this.range=a;this.coordinate=s;this.load()},load:function(){var e=this.lightColor=MWFCalendar.ColorOptions.getLightColor(this.data.color);var t=this.node=new Element("div",{styles:{position:"absolute",border:"1px solid "+e,"background-color":e,overflow:"hidden","border-radius":"5px"},events:{click:function(){var e=new MWF.xApplication.Calendar.EventForm(this,this.data,{isFull:true},{app:this.app});e.view=this.view;e.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);t.setStyles(this.getCoordinate());var i=new Element("div",{styles:{"font-size":"10px","padding-top":"2px","padding-left":"2px"},text:this.range.startTime.format("%H:%M")+"-"+this.range.endTime.format("%H:%M")}).inject(t);var a=new Element("div",{styles:{"padding-top":"10px","padding-left":"5px","font-size":"12px"},text:this.data.title}).inject(t);this.tooltip=new MWF.xApplication.Calendar.EventTooltip(this.app.content,this.node,this.app,this.data,{axis:"x",delay:350})},resize:function(){this.node.setStyles(this.getCoordinate())},getCoordinate:function(){var e=this.data;var t=this.range;var i=Math.floor((t.endTime-t.startTime)/MWFCalendarWeekView.DayMsec*MWFCalendarWeekView.DayHeight)-4;var a=Math.floor((t.startTime-this.day.startTime)/MWFCalendarWeekView.DayMsec*MWFCalendarWeekView.DayHeight)+2;var s=Math.floor(MWFCalendarWeekView.DayWidth/this.range.dayRangeCount)-5;var n=(s+5)*this.range.index+3;return{top:a,left:n,width:s,height:i}},reload:function(){if(this.tooltip)this.tooltip.destroy();this.view.reload()},destroy:function(){if(this.tooltip)this.tooltip.destroy();this.node.destroy()}});MWFCalendarWeekView.WeekCalendar=new Class({Extends:MWF.widget.Calendar,initialize:function(e,t){this.options.weekBegin="0";Locale.use("zh-CHS");this.options.defaultTime=""+this.options.baseDate.getHours()+":"+this.options.baseDate.getMinutes()+":"+this.options.baseDate.getSeconds();this.setOptions(t);this.path=MWF.defaultPath+"/widget/$Calendar/";this.cssPath=MWF.defaultPath+"/widget/$Calendar/"+this.options.style+"/css.wcss";this._loadCss();if(!this.options.format){if(this.options.isTime){if(this.options.timeOnly){this.options.format="%H:%M"}else{this.options.format=Locale.get("Date").shortDate+" "+"%H:%M"}}else{this.options.format=Locale.get("Date").shortDate}}this.options.containerPath=this.options.path+this.options.style+"/container.html";this.options.dayPath=this.options.path+this.options.style+"/day_week.html";this.options.monthPath=this.options.path+this.options.style+"/month.html";this.options.yearPath=this.options.path+this.options.style+"/year.html";this.options.timePath=this.options.path+this.options.style+"/time.html";this.today=new Date;this.currentView=this.options.defaultView;this.node=$(e);this.visible=false;this.container=this.createContainer();this.container.inject(this.options.target||$(document.body));this.contentTable=this.createContentTable();this.contentTable.inject(this.contentDateNode);this.addEvents();this.container.set({styles:{display:"none",opacity:1}});this.fireEvent("init")},showDay:function(e,t){this._setDayTitle(null,e,t);this._setDayWeekTitleTh();this._setDayDate(null,e,t)},_setDayTitle:function(e,t,i){var a=t!=undefined?t:this.options.baseDate.getFullYear();var s=i!=undefined?i:this.options.baseDate.getMonth();s++;var n=a+"年"+s+"月";var o=e||this.currentTextNode;o.set("text",n);o.store("year",a);o.store("month",s)},_setDayWeekTitleTh:function(e){var t=e||this.contentTable;var i=t.getElement("thead");var a=i.getElements("th");if(this.css.calendarDaysContentTh)a.setStyles(this.css.calendarDaysContentTh);var s=MWF.LP.widget.days_abbr;a.each(function(e,t){if(t==0){e.set("text","周")}else{var i=(t-1+parseInt(this.options.weekBegin))%7;e.set("text",s[i])}}.bind(this));return a},_setDayDate:function(e,t,i){var a=e||this.contentTable;var s=this.options.baseDate;if(t!=undefined&&i!=undefined){s=new Date;s.setDate(1);s.setFullYear(t);s.setMonth(i)}var n=a.getElement("tbody");var o=n.getElements("td");var r=s.clone();r.setDate(1);var h=(7+r.getDay()-parseInt(this.options.weekBegin))%7+1;var d=r.clone();for(var l=h-1;l>=0;l--){if(l%8==0){var c=this.getWeekNumber(d);o[l].set("text",c);o[l].setStyles(this.css.week);o[l].store("weekValue",c.toString());o[l].store("dateValue",d.toString());l--;if(l<0)break}d.increment("day",-1);o[l].set("text",d.getDate());o[l].addClass("gray_"+this.options.style);o[l].setStyles(this.css["gray_"+this.options.style]);o[l].store("dateValue",d.toString())}for(var l=h;l<o.length;l++){if(l%8==0){var c=this.getWeekNumber(r);o[l].set("text",c);o[l].setStyles(this.css.week);o[l].store("weekValue",c.toString());o[l].store("dateValue",r.toString());l++;if(l>=o.length)break}o[l].set("text",r.getDate());if(r.toString()==this.options.baseDate.toString()){o[l].addClass("current_"+this.options.style);o[l].setStyles(this.css["current_"+this.options.style]);o[l].removeClass("gray_"+this.options.style);o[l].setStyle("border","1px solid #FFF")}else if(r.getMonth()!=s.getMonth()){o[l].addClass("gray_"+this.options.style);o[l].setStyles(this.css["gray_"+this.options.style]);o[l].removeClass("current_"+this.options.style);o[l].setStyle("border","1px solid #FFF")}else{o[l].setStyles(this.css["normal_"+this.options.style]);o[l].removeClass("current_"+this.options.style);o[l].removeClass("gray_"+this.options.style);o[l].setStyle("border","1px solid #FFF")}var y=r.clone();if(y.clearTime().toString()==this.today.clearTime().toString()){o[l].setStyles(this.css["today_"+this.options.style]);o[l].setStyle("border","0px solid #AAA")}o[l].store("dateValue",r.toString());r.increment("day",1)}},getWeekNumber:function(e){var t=e.clone();var i=(7+e.getDay()-parseInt(this.options.weekBegin))%7;t.setDate(t.getDate()-i+3);var a=t.valueOf();t.setMonth(0,1);if(t.getDay()!=4){t.setMonth(0,1+(4-t.getDay()+7)%7)}return 1+Math.ceil((a-t)/6048e5)}});