// Compacted by ScriptingMagic.com
/*!
 * Ext JS Library 3.3.0
 * Copyright(c) 2006-2010 Ext JS, Inc.
 * licensing@extjs.com
 * http://www.extjs.com/license
 */
Ext.ns("Ext.calendar");(function(){Ext.apply(Ext.calendar,{Date:{diffDays:function(a,b){day=1000*60*60*24;diff=b.clearTime(true).getTime()-a.clearTime(true).getTime();return Math.ceil(diff/day)},copyTime:function(a,b){var c=b.clone();c.setHours(a.getHours(),a.getMinutes(),a.getSeconds(),a.getMilliseconds());return c},compare:function(a,b,c){if(c!==true){a=a.clone();a.setMilliseconds(0);b=b.clone();b.setMilliseconds(0)}return b.getTime()-a.getTime()},maxOrMin:function(a){var b=(a?0:Number.MAX_VALUE),i=0,c=arguments[1],d=c.length;for(;i<d;i++){b=Math[a?"max":"min"](b,c[i].getTime())}return new Date(b)},max:function(){return this.maxOrMin.apply(this,[true,arguments])},min:function(){return this.maxOrMin.apply(this,[false,arguments])}}})})();Ext.calendar.DayHeaderTemplate=function(a){Ext.apply(this,a);this.allDayTpl=new Ext.calendar.BoxLayoutTemplate(a);this.allDayTpl.compile();Ext.calendar.DayHeaderTemplate.superclass.constructor.call(this,'<div class="ext-cal-hd-ct">','<table class="ext-cal-hd-days-tbl" cellspacing="0" cellpadding="0">',"<tbody>","<tr>",'<td class="ext-cal-gutter"></td>','<td class="ext-cal-hd-days-td"><div class="ext-cal-hd-ad-inner">{allDayTpl}</div></td>','<td class="ext-cal-gutter-rt"></td>',"</tr>","</tobdy>","</table>","</div>")};Ext.extend(Ext.calendar.DayHeaderTemplate,Ext.XTemplate,{applyTemplate:function(o){return Ext.calendar.DayHeaderTemplate.superclass.applyTemplate.call(this,{allDayTpl:this.allDayTpl.apply(o)})}});Ext.calendar.DayHeaderTemplate.prototype.apply=Ext.calendar.DayHeaderTemplate.prototype.applyTemplate;Ext.calendar.DayBodyTemplate=function(a){Ext.apply(this,a);Ext.calendar.DayBodyTemplate.superclass.constructor.call(this,'<table class="ext-cal-bg-tbl" cellspacing="0" cellpadding="0">',"<tbody>",'<tr height="1">','<td class="ext-cal-gutter"></td>','<td colspan="{dayCount}">','<div class="ext-cal-bg-rows">','<div class="ext-cal-bg-rows-inner">','<tpl for="times">','<div class="ext-cal-bg-row">','<div class="ext-cal-bg-row-div ext-row-{[xindex]}"></div>',"</div>","</tpl>","</div>","</div>","</td>","</tr>","<tr>",'<td class="ext-cal-day-times">','<tpl for="times">','<div class="ext-cal-bg-row">','<div class="ext-cal-day-time-inner">{.}</div>',"</div>","</tpl>","</td>",'<tpl for="days">','<td class="ext-cal-day-col">','<div class="ext-cal-day-col-inner">','<div id="{[this.id]}-day-col-{.:date("Ymd")}" class="ext-cal-day-col-gutter"></div>',"</div>","</td>","</tpl>","</tr>","</tbody>","</table>")};Ext.extend(Ext.calendar.DayBodyTemplate,Ext.XTemplate,{applyTemplate:function(o){this.today=new Date().clearTime();this.dayCount=this.dayCount||1;var i=0,a=[],b=o.viewStart.clone(),c;for(;i<this.dayCount;i++){a[i]=b.add(Date.DAY,i)}c=[];b=new Date().clearTime();for(i=0;i<24;i++){c.push(b.format("ga"));b=b.add(Date.HOUR,1)}return Ext.calendar.DayBodyTemplate.superclass.applyTemplate.call(this,{days:a,dayCount:a.length,times:c})}});Ext.calendar.DayBodyTemplate.prototype.apply=Ext.calendar.DayBodyTemplate.prototype.applyTemplate;Ext.calendar.DayViewTemplate=function(a){Ext.apply(this,a);this.headerTpl=new Ext.calendar.DayHeaderTemplate(a);this.headerTpl.compile();this.bodyTpl=new Ext.calendar.DayBodyTemplate(a);this.bodyTpl.compile();Ext.calendar.DayViewTemplate.superclass.constructor.call(this,'<div class="ext-cal-inner-ct">',"{headerTpl}","{bodyTpl}","</div>")};Ext.extend(Ext.calendar.DayViewTemplate,Ext.XTemplate,{applyTemplate:function(o){return Ext.calendar.DayViewTemplate.superclass.applyTemplate.call(this,{headerTpl:this.headerTpl.apply(o),bodyTpl:this.bodyTpl.apply(o)})}});Ext.calendar.DayViewTemplate.prototype.apply=Ext.calendar.DayViewTemplate.prototype.applyTemplate;Ext.calendar.BoxLayoutTemplate=function(a){Ext.apply(this,a);var b=this.showWeekLinks?'<div id="{weekLinkId}" class="ext-cal-week-link">{weekNum}</div>':"";Ext.calendar.BoxLayoutTemplate.superclass.constructor.call(this,'<tpl for="weeks">','<div id="{[this.id]}-wk-{[xindex-1]}" class="ext-cal-wk-ct" style="top:{[this.getRowTop(xindex, xcount)]}%; height:{[this.getRowHeight(xcount)]}%;">',b,'<table class="ext-cal-bg-tbl" cellpadding="0" cellspacing="0">',"<tbody>","<tr>",'<tpl for=".">','<td id="{[this.id]}-day-{date:date("Ymd")}" class="{cellCls}">&nbsp;</td>',"</tpl>","</tr>","</tbody>","</table>",'<table class="ext-cal-evt-tbl" cellpadding="0" cellspacing="0">',"<tbody>","<tr>",'<tpl for=".">','<td id="{[this.id]}-ev-day-{date:date("Ymd")}" class="{titleCls}"><div>{title}</div></td>',"</tpl>","</tr>","</tbody>","</table>","</div>","</tpl>",{getRowTop:function(i,c){return ((i-1)*(100/c))},getRowHeight:function(c){return 100/c}})};Ext.extend(Ext.calendar.BoxLayoutTemplate,Ext.XTemplate,{applyTemplate:function(o){Ext.apply(this,o);var w=0,a="",b=true,c=false,d=false,e=false,f=false,g=[[]],h=new Date().clearTime(),i=this.viewStart.clone(),j=this.startDate.getMonth();for(;w<this.weekCount||this.weekCount==-1;w++){if(i>this.viewEnd){break}g[w]=[];for(var k=0;k<this.dayCount;k++){c=i.getTime()===h.getTime();d=b||(i.getDate()==1);e=(i.getMonth()<j)&&this.weekCount==-1;f=(i.getMonth()>j)&&this.weekCount==-1;if(i.getDay()==1){g[w].weekNum=this.showWeekNumbers?i.format("W"):"&nbsp;";g[w].weekLinkId="ext-cal-week-"+i.format("Ymd")}if(d){if(c){a=this.getTodayText()}else{a=i.format(this.dayCount==1?"l, F j, Y":(b?"M j, Y":"M j"))}}else{var l=(w==0&&this.showHeader!==true)?"D j":"j";a=c?this.getTodayText():i.format(l)}g[w].push({title:a,date:i.clone(),titleCls:"ext-cal-dtitle "+(c?" ext-cal-dtitle-today":"")+(w==0?" ext-cal-dtitle-first":"")+(e?" ext-cal-dtitle-prev":"")+(f?" ext-cal-dtitle-next":""),cellCls:"ext-cal-day "+(c?" ext-cal-day-today":"")+(k==0?" ext-cal-day-first":"")+(e?" ext-cal-day-prev":"")+(f?" ext-cal-day-next":"")});i=i.add(Date.DAY,1);b=false}}return Ext.calendar.BoxLayoutTemplate.superclass.applyTemplate.call(this,{weeks:g})},getTodayText:function(){var a=new Date().format("l, F j, Y"),b=this.showTodayText!==false?this.todayText:"",c=this.showTime!==false?' <span id="'+this.id+'-clock" class="ext-cal-dtitle-time">'+new Date().format("g:i a")+"</span>":"",d=b.length>0||c.length>0?" &mdash; ":"";if(this.dayCount==1){return a+d+b+c}fmt=this.weekCount==1?"D j":"j";return b.length>0?b+c:new Date().format(fmt)+c}});Ext.calendar.BoxLayoutTemplate.prototype.apply=Ext.calendar.BoxLayoutTemplate.prototype.applyTemplate;Ext.calendar.MonthViewTemplate=function(a){Ext.apply(this,a);this.weekTpl=new Ext.calendar.BoxLayoutTemplate(a);this.weekTpl.compile();var b=this.showWeekLinks?'<div class="ext-cal-week-link-hd">&nbsp;</div>':"";Ext.calendar.MonthViewTemplate.superclass.constructor.call(this,'<div class="ext-cal-inner-ct {extraClasses}">','<div class="ext-cal-hd-ct ext-cal-month-hd">',b,'<table class="ext-cal-hd-days-tbl" cellpadding="0" cellspacing="0">',"<tbody>","<tr>",'<tpl for="days">','<th class="ext-cal-hd-day{[xindex==1 ? " ext-cal-day-first" : ""]}" title="{.:date("l, F j, Y")}">{.:date("D")}</th>',"</tpl>","</tr>","</tbody>","</table>","</div>",'<div class="ext-cal-body-ct">{weeks}</div>',"</div>")};Ext.extend(Ext.calendar.MonthViewTemplate,Ext.XTemplate,{applyTemplate:function(o){var a=[],b=this.weekTpl.apply(o),c=o.viewStart;for(var i=0;i<7;i++){a.push(c.add(Date.DAY,i))}var d=this.showHeader===true?"":"ext-cal-noheader";if(this.showWeekLinks){d+=" ext-cal-week-links"}return Ext.calendar.MonthViewTemplate.superclass.applyTemplate.call(this,{days:a,weeks:b,extraClasses:d})}});Ext.calendar.MonthViewTemplate.prototype.apply=Ext.calendar.MonthViewTemplate.prototype.applyTemplate;Ext.dd.ScrollManager=function(){var a=Ext.dd.DragDropMgr,b={},c=null,d={},e=function(f){c=null;g()},f=function(){if(a.dragCurrent){a.refreshCache(a.dragCurrent.groups)}},g=function(){if(a.dragCurrent){var h=Ext.dd.ScrollManager,i=d.el.ddScrollConfig?d.el.ddScrollConfig.increment:h.increment;if(!h.animate){if(d.el.scroll(d.dir,i)){f()}}else{d.el.scroll(d.dir,i,true,h.animDuration,f)}}},g=function(){if(d.id){clearInterval(d.id)}d.id=0;d.el=null;d.dir=""},h=function(i,j){g();d.el=i;d.dir=j;var k=(i.ddScrollConfig&&i.ddScrollConfig.frequency)?i.ddScrollConfig.frequency:Ext.dd.ScrollManager.frequency,l=i.ddScrollConfig?i.ddScrollConfig.ddGroup:undefined;if(l===undefined||a.dragCurrent.ddGroup==l){d.id=setInterval(g,k)}},i=function(j,k){if(k||!a.dragCurrent){return}var l=Ext.dd.ScrollManager;if(!c||c!=a.dragCurrent){c=a.dragCurrent;l.refreshCache()}var m=Ext.lib.Event.getXY(j),n=new Ext.lib.Point(m[0],m[1]),o,p,r,q;for(o in b){if(b.hasOwnProperty(o)){p=b[o];r=p._region;q=p.ddScrollConfig?p.ddScrollConfig:l;if(r&&r.contains(n)&&p.isScrollable()){if(r.bottom-n.y<=q.vthresh){if(d.el!=p){h(p,"down")}return}else{if(r.right-n.x<=q.hthresh){if(d.el!=p){h(p,"left")}return}else{if(n.y-r.top<=q.vthresh){if(d.el!=p){h(p,"up")}return}else{if(n.x-r.left<=q.hthresh){if(d.el!=p){h(p,"right")}return}}}}}}}g()};a.fireEvents=a.fireEvents.createSequence(i,a);a.stopDrag=a.stopDrag.createSequence(e,a);return {register:function(j){if(Ext.isArray(j)){var k=0,l=j.length;for(;k<l;k++){this.register(j[k])}}else{j=Ext.get(j);b[j.id]=j}},unregister:function(j){if(Ext.isArray(j)){var k=0,l=j.length;for(;k<l;k++){this.unregister(j[k])}}else{j=Ext.get(j);delete b[j.id]}},vthresh:25,hthresh:25,increment:100,frequency:500,animate:true,animDuration:0.4,refreshCache:function(){var j;for(j in b){if(b.hasOwnProperty(j)){if(typeof b[j]=="object"){b[j]._region=b[j].getRegion()}}}}}}();Ext.calendar.StatusProxy=function(a){Ext.apply(this,a);this.id=this.id||Ext.id();this.el=new Ext.Layer({dh:{id:this.id,cls:"ext-dd-drag-proxy x-dd-drag-proxy "+this.dropNotAllowed,cn:[{cls:"x-dd-drop-icon"},{cls:"ext-dd-ghost-ct",cn:[{cls:"x-dd-drag-ghost"},{cls:"ext-dd-msg"}]}]},shadow:!a||a.shadow!==false});this.ghost=Ext.get(this.el.dom.childNodes[1].childNodes[0]);this.message=Ext.get(this.el.dom.childNodes[1].childNodes[1]);this.dropStatus=this.dropNotAllowed};Ext.extend(Ext.calendar.StatusProxy,Ext.dd.StatusProxy,{moveEventCls:"ext-cal-dd-move",addEventCls:"ext-cal-dd-add",update:function(a){if(typeof a=="string"){this.ghost.update(a)}else{this.ghost.update("");a.style.margin="0";this.ghost.dom.appendChild(a)}var b=this.ghost.dom.firstChild;if(b){Ext.fly(b).setStyle("float","none").setHeight("auto");Ext.getDom(b).id+="-ddproxy"}},updateMsg:function(a){this.message.update(a)}});Ext.calendar.DragZone=Ext.extend(Ext.dd.DragZone,{ddGroup:"CalendarDD",eventSelector:".ext-cal-evt",constructor:function(a,b){if(!Ext.calendar._statusProxyInstance){Ext.calendar._statusProxyInstance=new Ext.calendar.StatusProxy()}this.proxy=Ext.calendar._statusProxyInstance;Ext.calendar.DragZone.superclass.constructor.call(this,a,b)},getDragData:function(e){var a=e.getTarget(null,null,true);var b=a.up(this.eventSelector);var t;if(b){t=b.dom}else{t=e.getTarget(this.eventSelector,3)}if(t){var c=this.view.getEventRecordFromEl(t);return {type:"eventdrag",ddel:t,eventStart:c.data[Ext.calendar.EventMappings.StartDate.name],eventEnd:c.data[Ext.calendar.EventMappings.EndDate.name],proxy:this.proxy}}t=this.view.getDayAt(e.getPageX(),e.getPageY());if(t.el){return {type:"caldrag",start:t.date,proxy:this.proxy}}return null},onInitDrag:function(x,y){if(this.dragData.ddel){var a=this.dragData.ddel.cloneNode(true),b=Ext.fly(a).child("dl");Ext.fly(a).setWidth("auto");if(b){b.setHeight("auto")}this.proxy.update(a);this.onStartDrag(x,y)}else{if(this.dragData.start){this.onStartDrag(x,y)}}this.view.onInitDrag();return true},afterRepair:function(){if(Ext.enableFx&&this.dragData.ddel){Ext.Element.fly(this.dragData.ddel).highlight(this.hlColor||"c3daf9")}this.dragging=false},getRepairXY:function(e){if(this.dragData.ddel){return Ext.Element.fly(this.dragData.ddel).getXY()}},afterInvalidDrop:function(e,a){Ext.select(".ext-dd-shim").hide()}});Ext.calendar.DropZone=Ext.extend(Ext.dd.DropZone,{ddGroup:"CalendarDD",eventSelector:".ext-cal-evt",shims:[],getTargetFromEvent:function(e){var a=this.dragOffset||0,y=e.getPageY()-a,d=this.view.getDayAt(e.getPageX(),y);return d.el?d:null},onNodeOver:function(n,a,e,b){var D=Ext.calendar.Date,c=b.type=="eventdrag"?n.date:D.min(b.start,n.date),d=b.type=="eventdrag"?n.date.add(Date.DAY,D.diffDays(b.eventStart,b.eventEnd)):D.max(b.start,n.date);if(!this.dragStartDate||!this.dragEndDate||(D.diffDays(c,this.dragStartDate)!=0)||(D.diffDays(d,this.dragEndDate)!=0)){this.dragStartDate=c;this.dragEndDate=d.clearTime().add(Date.DAY,1).add(Date.MILLI,-1);this.shim(c,d);var f=c.format("n/j");if(D.diffDays(c,d)>0){f+="-"+d.format("n/j")}var g=String.format(b.type=="eventdrag"?this.moveText:this.createText,f);b.proxy.updateMsg(g)}return this.dropAllowed},shim:function(a,b){this.currWeek=-1;var c=a.clone(),i=0,d,e,f=Ext.calendar.Date.diffDays(c,b)+1;Ext.each(this.shims,function(g){if(g){g.isActive=false}});while(i++<f){var g=this.view.getDayEl(c);if(g){var h=this.view.getWeekIndex(c);d=this.shims[h];if(!d){d=this.createShim();this.shims[h]=d}if(h!=this.currWeek){d.boxInfo=g.getBox();this.currWeek=h}else{e=g.getBox();d.boxInfo.right=e.right;d.boxInfo.width=e.right-d.boxInfo.x}d.isActive=true}c=c.add(Date.DAY,1)}Ext.each(this.shims,function(j){if(j){if(j.isActive){j.show();j.setBox(j.boxInfo)}else{if(j.isVisible()){j.hide()}}}})},createShim:function(){if(!this.shimCt){this.shimCt=Ext.get("ext-dd-shim-ct");if(!this.shimCt){this.shimCt=document.createElement("div");this.shimCt.id="ext-dd-shim-ct";Ext.getBody().appendChild(this.shimCt)}}var a=document.createElement("div");a.className="ext-dd-shim";this.shimCt.appendChild(a);return new Ext.Layer({shadow:false,useDisplay:true,constrain:false},a)},clearShims:function(){Ext.each(this.shims,function(a){if(a){a.hide()}})},onContainerOver:function(a,e,b){return this.dropAllowed},onCalendarDragComplete:function(){delete this.dragStartDate;delete this.dragEndDate;this.clearShims()},onNodeDrop:function(n,a,e,b){if(n&&b){if(b.type=="eventdrag"){var c=this.view.getEventRecordFromEl(b.ddel),d=Ext.calendar.Date.copyTime(c.data[Ext.calendar.EventMappings.StartDate.name],n.date);this.view.onEventDrop(c,d);this.onCalendarDragComplete();return true}if(b.type=="caldrag"){this.view.onCalendarEndDrag(this.dragStartDate,this.dragEndDate,this.onCalendarDragComplete.createDelegate(this));return true}}this.onCalendarDragComplete();return false},onContainerDrop:function(a,e,b){this.onCalendarDragComplete();return false},destroy:function(){Ext.calendar.DropZone.superclass.destroy.call(this);Ext.destroy(this.shimCt)}});Ext.calendar.DayViewDragZone=Ext.extend(Ext.calendar.DragZone,{ddGroup:"DayViewDD",resizeSelector:".ext-evt-rsz",getDragData:function(e){var t=e.getTarget(this.resizeSelector,2,true),p,a;if(t){p=t.parent(this.eventSelector);a=this.view.getEventRecordFromEl(p);return {type:"eventresize",ddel:p.dom,eventStart:a.data[Ext.calendar.EventMappings.StartDate.name],eventEnd:a.data[Ext.calendar.EventMappings.EndDate.name],proxy:this.proxy}}var b=e.getTarget(null,null,true);var c=b.up(this.eventSelector);if(c){t=c.dom}else{t=e.getTarget(this.eventSelector,3)}if(t){a=this.view.getEventRecordFromEl(t);return {type:"eventdrag",ddel:t,eventStart:a.data[Ext.calendar.EventMappings.StartDate.name],eventEnd:a.data[Ext.calendar.EventMappings.EndDate.name],proxy:this.proxy}}t=this.view.getDayAt(e.getPageX(),e.getPageY());if(t.el){return {type:"caldrag",dayInfo:t,proxy:this.proxy}}return null}});Ext.calendar.DayViewDropZone=Ext.extend(Ext.calendar.DropZone,{ddGroup:"DayViewDD",onNodeOver:function(n,a,e,b){var c,d,f,g=this.createText,h,i,j,k,l;if(b.type=="caldrag"){if(!this.dragStartMarker){this.dragStartMarker=n.el.parent().createChild({style:"position:absolute;"});this.dragStartMarker.setBox(n.timeBox);this.dragCreateDt=n.date}d=this.dragStartMarker.getBox();d.height=Math.ceil(Math.abs(e.xy[1]-d.y)/n.timeBox.height)*n.timeBox.height;if(e.xy[1]<d.y){d.height+=n.timeBox.height;d.y=d.y-d.height+n.timeBox.height;f=this.dragCreateDt.add(Date.MINUTE,30)}else{n.date=n.date.add(Date.MINUTE,30)}this.shim(this.dragCreateDt,d);h=Ext.calendar.Date.copyTime(n.date,this.dragCreateDt);this.dragStartDate=Ext.calendar.Date.min(this.dragCreateDt,h);this.dragEndDate=f||Ext.calendar.Date.max(this.dragCreateDt,h);c=this.dragStartDate.format("g:ia-")+this.dragEndDate.format("g:ia")}else{k=Ext.get(b.ddel);l=k.parent().parent();d=k.getBox();d.width=l.getWidth();if(b.type=="eventdrag"){if(this.dragOffset===undefined){this.dragOffset=n.timeBox.y-d.y;d.y=n.timeBox.y-this.dragOffset}else{d.y=n.timeBox.y}c=n.date.format("n/j g:ia");d.x=n.el.getLeft();this.shim(n.date,d);g=this.moveText}if(b.type=="eventresize"){if(!this.resizeDt){this.resizeDt=n.date}d.x=l.getLeft();d.height=Math.ceil(Math.abs(e.xy[1]-d.y)/n.timeBox.height)*n.timeBox.height;if(e.xy[1]<d.y){d.y-=d.height}else{n.date=n.date.add(Date.MINUTE,30)}this.shim(this.resizeDt,d);h=Ext.calendar.Date.copyTime(n.date,this.resizeDt);i=Ext.calendar.Date.min(b.eventStart,h);j=Ext.calendar.Date.max(b.eventStart,h);b.resizeDates={StartDate:i,EndDate:j};c=i.format("g:ia-")+j.format("g:ia");g=this.resizeText}}b.proxy.updateMsg(String.format(g,c));return this.dropAllowed},shim:function(a,b){Ext.each(this.shims,function(c){if(c){c.isActive=false;c.hide()}});var c=this.shims[0];if(!c){c=this.createShim();this.shims[0]=c}c.isActive=true;c.show();c.setBox(b)},onNodeDrop:function(n,a,e,b){var c;if(n&&b){if(b.type=="eventdrag"){c=this.view.getEventRecordFromEl(b.ddel);this.view.onEventDrop(c,n.date);this.onCalendarDragComplete();delete this.dragOffset;return true}if(b.type=="eventresize"){c=this.view.getEventRecordFromEl(b.ddel);this.view.onEventResize(c,b.resizeDates);this.onCalendarDragComplete();delete this.resizeDt;return true}if(b.type=="caldrag"){Ext.destroy(this.dragStartMarker);delete this.dragStartMarker;delete this.dragCreateDt;this.view.onCalendarEndDrag(this.dragStartDate,this.dragEndDate,this.onCalendarDragComplete.createDelegate(this));return true}}this.onCalendarDragComplete();return false}});Ext.calendar.EventMappings={EventId:{name:"EventId",mapping:"id",type:"int"},CalendarId:{name:"CalendarId",mapping:"cid",type:"int"},Title:{name:"Title",mapping:"title",type:"string"},StartDate:{name:"StartDate",mapping:"start",type:"date",dateFormat:"c"},EndDate:{name:"EndDate",mapping:"end",type:"date",dateFormat:"c"},Location:{name:"Location",mapping:"loc",type:"string"},Notes:{name:"Notes",mapping:"notes",type:"string"},Url:{name:"Url",mapping:"url",type:"string"},IsAllDay:{name:"IsAllDay",mapping:"ad",type:"boolean"},Reminder:{name:"Reminder",mapping:"rem",type:"string"},IsNew:{name:"IsNew",mapping:"n",type:"boolean"},Data:{name:"Data",mapping:"data",type:"array"}};(function(){var M=Ext.calendar.EventMappings;Ext.calendar.EventRecord=Ext.data.Record.create([M.EventId,M.CalendarId,M.Title,M.StartDate,M.EndDate,M.Location,M.Notes,M.Url,M.IsAllDay,M.Reminder,M.IsNew,M.Data]);Ext.calendar.EventRecord.reconfigure=function(){Ext.calendar.EventRecord=Ext.data.Record.create([M.EventId,M.CalendarId,M.Title,M.StartDate,M.EndDate,M.Location,M.Notes,M.Url,M.IsAllDay,M.Reminder,M.IsNew,M.Data])}})();Ext.calendar.MonthDayDetailView=Ext.extend(Ext.BoxComponent,{initComponent:function(){Ext.calendar.CalendarView.superclass.initComponent.call(this);this.addEvents({eventsrendered:true});if(!this.el){this.el=document.createElement("div")}},afterRender:function(){this.tpl=this.getTemplate();Ext.calendar.MonthDayDetailView.superclass.afterRender.call(this);this.el.on({"click":this.view.onClick,"mouseover":this.view.onMouseOver,"mouseout":this.view.onMouseOut,scope:this.view})},getTemplate:function(){if(!this.tpl){this.tpl=new Ext.XTemplate('<div class="ext-cal-mdv x-unselectable">','<table class="ext-cal-mvd-tbl" cellpadding="0" cellspacing="0">',"<tbody>",'<tpl for=".">','<tr><td class="ext-cal-ev">{markup}</td></tr>',"</tpl>","</tbody>","</table>","</div>")}this.tpl.compile();return this.tpl},update:function(a){this.date=a;this.refresh()},refresh:function(){if(!this.rendered){return}var a=this.view.getEventTemplate(),b=[];evts=this.store.queryBy(function(c){var d=this.date.clearTime(true).getTime(),e=c.data[Ext.calendar.EventMappings.StartDate.name].clearTime(true).getTime(),f=(d==e),g=false;if(!f){var h=c.data[Ext.calendar.EventMappings.EndDate.name].clearTime(true).getTime();g=e<d&&h>=d}return f||g},this);evts.each(function(c){var d=c.data,M=Ext.calendar.EventMappings;d._renderAsAllDay=d[M.IsAllDay.name]||Ext.calendar.Date.diffDays(d[M.StartDate.name],d[M.EndDate.name])>0;d.spanLeft=Ext.calendar.Date.diffDays(d[M.StartDate.name],this.date)>0;d.spanRight=Ext.calendar.Date.diffDays(this.date,d[M.EndDate.name])>0;d.spanCls=(d.spanLeft?(d.spanRight?"ext-cal-ev-spanboth":"ext-cal-ev-spanleft"):(d.spanRight?"ext-cal-ev-spanright":""));b.push({markup:a.apply(this.getTemplateEventData(d))})},this);this.tpl.overwrite(this.el,b);this.fireEvent("eventsrendered",this,this.date,evts.getCount())},getTemplateEventData:function(a){var b=this.view.getTemplateEventData(a);b._elId="dtl-"+b._elId;return b}});Ext.reg("monthdaydetailview",Ext.calendar.MonthDayDetailView);Ext.calendar.CalendarPicker=Ext.extend(Ext.form.ComboBox,{fieldLabel:"Calendar",valueField:"CalendarId",displayField:"Title",triggerAction:"all",mode:"local",forceSelection:true,width:200,initComponent:function(){Ext.calendar.CalendarPicker.superclass.initComponent.call(this);this.tpl=this.tpl||'<tpl for="."><div class="x-combo-list-item ext-color-{'+this.valueField+'}"><div class="ext-cal-picker-icon">&nbsp;</div>{'+this.displayField+"}</div></tpl>"},afterRender:function(){Ext.calendar.CalendarPicker.superclass.afterRender.call(this);this.wrap=this.el.up(".x-form-field-wrap");this.wrap.addClass("ext-calendar-picker");this.icon=Ext.DomHelper.append(this.wrap,{tag:"div",cls:"ext-cal-picker-icon ext-cal-picker-mainicon"})},setValue:function(a){this.wrap.removeClass("ext-color-"+this.getValue());if(!a&&this.store!==undefined){a=this.store.getAt(0).data.CalendarId}Ext.calendar.CalendarPicker.superclass.setValue.call(this,a);this.wrap.addClass("ext-color-"+a)}});Ext.reg("calendarpicker",Ext.calendar.CalendarPicker);Ext.calendar.WeekEventRenderer=function(){var a=function(b,c,d){var e=1,f,g=Ext.get(b+"-wk-"+c);if(g){var h=g.child(".ext-cal-evt-tbl",true);f=h.tBodies[0].childNodes[d+e];if(!f){f=Ext.DomHelper.append(h.tBodies[0],"<tr></tr>")}}return Ext.get(f)};return {render:function(o){var w=0,b=o.eventGrid,c=o.viewStart.clone(),d=o.tpl,e=o.maxEventsPerDay!=undefined?o.maxEventsPerDay:999,f=o.weekCount<1?6:o.weekCount,g=o.weekCount==1?o.dayCount:7,h;for(;w<f;w++){if(!b[w]||b[w].length==0){if(f==1){i=a(o.id,w,0);h={tag:"td",cls:"ext-cal-ev",id:o.id+"-empty-0-day-"+c.format("Ymd"),html:"&nbsp;"};if(g>1){h.colspan=g}Ext.DomHelper.append(i,h)}c=c.add(Date.DAY,7)}else{var i,j=0,k=b[w],l=c.clone(),m=l.add(Date.DAY,g).add(Date.MILLI,-1);for(;j<g;j++){if(k[j]){var n=emptyCells=skipped=0,p=k[j],q=p.length,r;for(;n<q;n++){if(!p[n]){emptyCells++;continue}if(emptyCells>0&&n-emptyCells<e){i=a(o.id,w,n-emptyCells);h={tag:"td",cls:"ext-cal-ev",id:o.id+"-empty-"+q+"-day-"+c.format("Ymd")};if(emptyCells>1&&e-n>emptyCells){h.rowspan=Math.min(emptyCells,e-n)}Ext.DomHelper.append(i,h);emptyCells=0}if(n>=e){skipped++;continue}r=p[n];if(!r.isSpan||r.isSpanStart){var s=r.data||r.event.data;s._weekIndex=w;s._renderAsAllDay=s[Ext.calendar.EventMappings.IsAllDay.name]||r.isSpanStart;s.spanLeft=s[Ext.calendar.EventMappings.StartDate.name].getTime()<l.getTime();s.spanRight=s[Ext.calendar.EventMappings.EndDate.name].getTime()>m.getTime();s.spanCls=(s.spanLeft?(s.spanRight?"ext-cal-ev-spanboth":"ext-cal-ev-spanleft"):(s.spanRight?"ext-cal-ev-spanright":""));i=a(o.id,w,n);h={tag:"td",cls:"ext-cal-ev",cn:d.apply(o.templateDataFn(s))};var t=Ext.calendar.Date.diffDays(c,s[Ext.calendar.EventMappings.EndDate.name])+1,u=Math.min(t,g-j);if(u>1){h.colspan=u}Ext.DomHelper.append(i,h)}}if(n>e){i=a(o.id,w,e);Ext.DomHelper.append(i,{tag:"td",cls:"ext-cal-ev-more",id:"ext-cal-ev-more-"+c.format("Ymd"),cn:{tag:"a",html:"+"+skipped+" more..."}})}if(q<o.evtMaxCount[w]){i=a(o.id,w,q);if(i){h={tag:"td",cls:"ext-cal-ev",id:o.id+"-empty-"+(q+1)+"-day-"+c.format("Ymd")};var v=o.evtMaxCount[w]-q;if(v>1){h.rowspan=v}Ext.DomHelper.append(i,h)}}}else{i=a(o.id,w,0);if(i){h={tag:"td",cls:"ext-cal-ev",id:o.id+"-empty-day-"+c.format("Ymd")};if(o.evtMaxCount[w]>1){h.rowSpan=o.evtMaxCount[w]}Ext.DomHelper.append(i,h)}}c=c.add(Date.DAY,1)}}}}}}();Ext.calendar.CalendarView=Ext.extend(Ext.BoxComponent,{startDay:1,spansHavePriority:false,trackMouseOver:true,enableFx:true,enableAddFx:true,enableUpdateFx:false,enableRemoveFx:true,enableDD:true,monitorResize:true,ddCreateEventText:"Create event for {0}",ddMoveEventText:"Move event to {0}",ddResizeEventText:"Update event to {0}",weekCount:1,dayCount:1,eventSelector:".ext-cal-evt",eventOverClass:"ext-evt-over",eventElIdDelimiter:"-evt-",dayElIdDelimiter:"-day-",getEventBodyMarkup:Ext.emptyFn,getEventTemplate:Ext.emptyFn,initComponent:function(){this.setStartDate(this.startDate||new Date());Ext.calendar.CalendarView.superclass.initComponent.call(this);this.addEvents({eventsrendered:true,eventclick:true,eventover:true,eventout:true,datechange:true,rangeselect:true,eventmove:true,initdrag:true,dayover:true,dayout:true})},afterRender:function(){Ext.calendar.CalendarView.superclass.afterRender.call(this);this.renderTemplate();if(this.store){this.setStore(this.store,true)}this.el.on({"mouseover":this.onMouseOver,"mouseout":this.onMouseOut,"click":this.onClick,"resize":this.onResize,scope:this});this.el.unselectable();if(this.enableDD&&this.initDD){this.initDD()}this.on("eventsrendered",this.forceSize);this.forceSize.defer(100,this)},forceSize:function(){if(this.el&&this.el.child){var a=this.el.child(".ext-cal-hd-ct"),b=this.el.child(".ext-cal-body-ct");if(b==null||a==null){return}var c=a.getHeight(),d=this.el.parent().getSize();b.setHeight(d.height-c)}},refresh:function(){this.prepareData();this.renderTemplate();this.renderItems()},getWeekCount:function(){var a=Ext.calendar.Date.diffDays(this.viewStart,this.viewEnd);return Math.ceil(a/this.dayCount)},prepareData:function(){var a=this.startDate.getLastDateOfMonth(),w=0,b=0,c=this.viewStart.clone(),e=this.weekCount<1?6:this.weekCount;this.eventGrid=[[]];this.allDayGrid=[[]];this.evtMaxCount=[];var f=0;var g=0;var h=[];while(g!=-1){g=this.store.findBy(function(i){return this.isEventVisible(i.data)},this,f);if(g!=-1){h.push(this.store.getAt(g));f=g+1}}var i=this.store.queryBy(function(j){return this.isEventVisible(j.data)},this);i.clear();i.addAll(h);for(;w<e;w++){this.evtMaxCount[w]=0;if(this.weekCount==-1&&c>a){break}this.eventGrid[w]=this.eventGrid[w]||[];this.allDayGrid[w]=this.allDayGrid[w]||[];for(d=0;d<this.dayCount;d++){if(i.getCount()>0){var j=i.filterBy(function(k){var l=(c.getTime()==k.data[Ext.calendar.EventMappings.StartDate.name].clearTime(true).getTime());var m=(w==0&&d==0&&(c>k.data[Ext.calendar.EventMappings.StartDate.name]));return l||m},this);this.sortEventRecordsForDay(j);this.prepareEventGrid(j,w,d)}c=c.add(Date.DAY,1)}}this.currentWeekCount=w},prepareEventGrid:function(a,w,d){var b=0,c=this.viewStart.clone(),e=this.maxEventsPerDay?this.maxEventsPerDay:999;a.each(function(f){var M=Ext.calendar.EventMappings,g=Ext.calendar.Date.diffDays(Ext.calendar.Date.max(this.viewStart,f.data[M.StartDate.name]),Ext.calendar.Date.min(this.viewEnd,f.data[M.EndDate.name]))+1;if(g>1||Ext.calendar.Date.diffDays(f.data[M.StartDate.name],f.data[M.EndDate.name])>1){this.prepareEventGridSpans(f,this.eventGrid,w,d,g);this.prepareEventGridSpans(f,this.allDayGrid,w,d,g,true)}else{b=this.findEmptyRowIndex(w,d);this.eventGrid[w][d]=this.eventGrid[w][d]||[];this.eventGrid[w][d][b]=f;if(f.data[M.IsAllDay.name]){b=this.findEmptyRowIndex(w,d,true);this.allDayGrid[w][d]=this.allDayGrid[w][d]||[];this.allDayGrid[w][d][b]=f}}if(this.evtMaxCount[w]<this.eventGrid[w][d].length){this.evtMaxCount[w]=Math.min(e+1,this.eventGrid[w][d].length)}return true},this)},prepareEventGridSpans:function(a,b,w,d,c,e){var f=w,g=d,h=this.findEmptyRowIndex(w,d,e),i=this.viewStart.clone();var j={event:a,isSpan:true,isSpanStart:true,spanLeft:false,spanRight:(d==6)};b[w][d]=b[w][d]||[];b[w][d][h]=j;while(--c){i=i.add(Date.DAY,1);if(i>this.viewEnd){break}if(++g>6){g=0;f++;h=this.findEmptyRowIndex(f,0)}b[f]=b[f]||[];b[f][g]=b[f][g]||[];b[f][g][h]={event:a,isSpan:true,isSpanStart:(g==0),spanLeft:(f>w)&&(g%7==0),spanRight:(g==6)&&(c>1)}}},findEmptyRowIndex:function(w,d,a){var b=a?this.allDayGrid:this.eventGrid,c=b[w]?b[w][d]||[]:[],i=0,e=c.length;for(;i<e;i++){if(c[i]==null){return i}}return e},renderTemplate:function(){if(this.tpl){this.tpl.overwrite(this.el,this.getParams());this.lastRenderStart=this.viewStart.clone();this.lastRenderEnd=this.viewEnd.clone()}},disableStoreEvents:function(){this.monitorStoreEvents=false},enableStoreEvents:function(a){this.monitorStoreEvents=true;if(a===true){this.refresh()}},onResize:function(){this.refresh()},onInitDrag:function(){this.fireEvent("initdrag",this)},onEventDrop:function(a,b){if(Ext.calendar.Date.compare(a.data[Ext.calendar.EventMappings.StartDate.name],b)===0){return}var c=b.getTime()-a.data[Ext.calendar.EventMappings.StartDate.name].getTime();a.set(Ext.calendar.EventMappings.StartDate.name,b);a.set(Ext.calendar.EventMappings.EndDate.name,a.data[Ext.calendar.EventMappings.EndDate.name].add(Date.MILLI,c));this.fireEvent("eventmove",this,a)},onCalendarEndDrag:function(a,b,c){this.dragPending=true;var o={};o[Ext.calendar.EventMappings.StartDate.name]=a;o[Ext.calendar.EventMappings.EndDate.name]=b;this.fireEvent("rangeselect",this,o,this.onCalendarEndDragComplete.createDelegate(this,[c]))},onCalendarEndDragComplete:function(a){a();this.dragPending=false},onUpdate:function(a,b,c){if(this.monitorStoreEvents===false){return}if(c==Ext.data.Record.COMMIT){this.refresh();if(this.enableFx&&this.enableUpdateFx){this.doUpdateFx(this.getEventEls(b.data[Ext.calendar.EventMappings.EventId.name]),{scope:this})}}},doUpdateFx:function(a,o){this.highlightEvent(a,null,o)},onAdd:function(a,b,c){if(this.monitorStoreEvents===false){return}var d=b[0];this.tempEventId=d.id;this.refresh();if(this.enableFx&&this.enableAddFx){this.doAddFx(this.getEventEls(d.data[Ext.calendar.EventMappings.EventId.name]),{scope:this})}},doAddFx:function(a,o){a.fadeIn(Ext.apply(o,{duration:2}))},onRemove:function(a,b){if(this.monitorStoreEvents===false){return}if(this.enableFx&&this.enableRemoveFx){this.doRemoveFx(this.getEventEls(b.data[Ext.calendar.EventMappings.EventId.name]),{remove:true,scope:this,callback:this.refresh})}else{this.getEventEls(b.data[Ext.calendar.EventMappings.EventId.name]).remove();this.refresh()}},doRemoveFx:function(a,o){a.fadeOut(o)},highlightEvent:function(a,b,o){if(this.enableFx){var c;!(Ext.isIE||Ext.isOpera)?a.highlight(b,o):a.each(function(d){d.highlight(b,Ext.applyIf({attr:"color"},o));c=d.child(".ext-cal-evm");if(c){c.highlight(b,o)}},this)}},getEventIdFromEl:function(a){a=Ext.get(a);var b=a.id.split(this.eventElIdDelimiter)[1];if(b.indexOf("-")>-1){b=b.split("-")[0]}return b},getEventId:function(a){if(a===undefined&&this.tempEventId){a=this.tempEventId}return a},getEventSelectorCls:function(a,b){var c=b?".":"";return c+this.id+this.eventElIdDelimiter+this.getEventId(a)},getEventEls:function(a){var b=Ext.select(this.getEventSelectorCls(this.getEventId(a),true),false,this.el.id);return new Ext.CompositeElement(b)},isToday:function(){var a=new Date().clearTime().getTime();return this.viewStart.getTime()<=a&&this.viewEnd.getTime()>=a},onDataChanged:function(a){this.refresh()},isEventVisible:function(a){var b=this.viewStart.getTime(),c=this.viewEnd.clearTime().add(Date.DAY,1).add(Date.SECOND,-1).getTime(),M=Ext.calendar.EventMappings,d=(a.data?a.data[M.StartDate.name]:a[M.StartDate.name]).getTime(),e=(a.data?a.data[M.EndDate.name]:a[M.EndDate.name]).add(Date.SECOND,-1).getTime(),f=(d>=b&&d<=c),g=(e>=b&&e<=c),h=(d<b&&e>c);return (f||g||h)},isOverlapping:function(a,b){var c=a.data?a.data:a,d=b.data?b.data:b,M=Ext.calendar.EventMappings,e=c[M.StartDate.name].getTime(),f=c[M.EndDate.name].add(Date.SECOND,-1).getTime(),g=d[M.StartDate.name].getTime(),h=d[M.EndDate.name].add(Date.SECOND,-1).getTime();if(f<e){f=e}if(h<g){h=g}var i=(e>=g&&e<=h),j=(f>=g&&f<=h),k=(e<g&&f>h);return (i||j||k)},getDayEl:function(a){return Ext.get(this.getDayId(a))},getDayId:function(a){if(Ext.isDate(a)){a=a.format("Ymd")}return this.id+this.dayElIdDelimiter+a},getStartDate:function(){return this.startDate},setStartDate:function(a,b,c){var d=new Date(this.startDate.getTime());var e=new Date(a.getTime());if(this.refreshStore!=undefined&&!c){this.refreshStore(e,d)}this.startDate=a.clearTime();this.setViewBounds(a);if(b===true){this.refresh()}this.fireEvent("datechange",this,this.startDate,this.viewStart,this.viewEnd)},refreshStore:function(a,b){var c;if(a&&b){var d=b.getFirstDateOfMonth();var e=b.getLastDateOfMonth();if(d.format("d-m-Y")!=""||e.format("d-m-Y")){if(d.getTime()<=a.getTime()&&e.getTime()>=a.getTime()){c=false}else{c=true}}else{c=true}}else{c=true}if(c){var f=new Date(a.getTime()).getFirstDateOfMonth().add(Date.DAY,-6);var g=new Date(a.getTime()).getLastDateOfMonth().add(Date.DAY,6);this.store.load({params:{start:f.format("d-m-Y"),end:g.format("d-m-Y")}})}},setViewBounds:function(a){var b=a||this.startDate,c=b.getDay()-this.startDay;c=(7+c)%7;switch(this.weekCount){case 0:case 1:this.viewStart=this.dayCount<7?b:b.add(Date.DAY,-c).clearTime(true);this.viewEnd=this.viewStart.add(Date.DAY,this.dayCount||7).add(Date.SECOND,-1);return;case -1:b=b.getFirstDateOfMonth();c=b.getDay()-this.startDay;c=(7+c)%7;this.viewStart=b.add(Date.DAY,-c).clearTime(true);var d=b.add(Date.MONTH,1).add(Date.SECOND,-1);c=d.getDay()-this.startDay;c=(7+c)%7;this.viewEnd=d.add(Date.DAY,6-c).add(Date.SECOND,-1);return;default:this.viewStart=b.add(Date.DAY,-c).clearTime(true);this.viewEnd=this.viewStart.add(Date.DAY,this.weekCount*7).add(Date.SECOND,-1)}},getViewBounds:function(){return {start:this.viewStart,end:this.viewEnd}},sortEventRecordsForDay:function(a){if(a.length<2){return}a.sort("ASC",function(b,c){var d=b.data,e=c.data,M=Ext.calendar.EventMappings;if(d[M.IsAllDay.name]){return -1}else{if(e[M.IsAllDay.name]){return 1}}if(this.spansHavePriority){var f=Ext.calendar.Date.diffDays;if(f(d[M.StartDate.name],d[M.EndDate.name])>0){if(f(e[M.StartDate.name],e[M.EndDate.name])>0){if(d[M.StartDate.name].getTime()==e[M.StartDate.name].getTime()){return e[M.EndDate.name].getTime()-d[M.EndDate.name].getTime()}return d[M.StartDate.name].getTime()-e[M.StartDate.name].getTime()}return -1}else{if(f(e[M.StartDate.name],e[M.EndDate.name])>0){return 1}}return d[M.StartDate.name].getTime()-e[M.StartDate.name].getTime()}else{return d[M.StartDate.name].getTime()-e[M.StartDate.name].getTime()}}.createDelegate(this))},moveTo:function(a,b,c){if(Ext.isDate(a)){this.setStartDate.call(this,a,true,c);if(b!==false){this.refresh()}return this.startDate}return a},moveNext:function(a,b){return this.moveTo(this.viewEnd.add(Date.DAY,1),a,b)},movePrev:function(a,b){var c=Ext.calendar.Date.diffDays(this.viewStart,this.viewEnd)+1;return this.moveDays(-c,a,b)},moveMonths:function(a,b){return this.moveTo(this.startDate.add(Date.MONTH,a),b,false)},moveWeeks:function(a,b){return this.moveTo(this.startDate.add(Date.DAY,a*7),b)},moveDays:function(a,b,c){return this.moveTo(this.startDate.add(Date.DAY,a),b,c)},moveToday:function(a){return this.moveTo(new Date(),a,true)},setStore:function(a,b){if(!b&&this.store){this.store.un("datachanged",this.onDataChanged,this);this.store.un("add",this.onAdd,this);this.store.un("remove",this.onRemove,this);this.store.un("update",this.onUpdate,this);this.store.un("clear",this.refresh,this)}if(a){a.on("datachanged",this.onDataChanged,this);a.on("add",this.onAdd,this);a.on("remove",this.onRemove,this);a.on("update",this.onUpdate,this);a.on("clear",this.refresh,this)}this.store=a;if(a&&a.getCount()>0){this.refresh()}},getEventRecord:function(a){var b=this.store.find(Ext.calendar.EventMappings.EventId.name,a);return this.store.getAt(b)},getEventRecordFromEl:function(a){return this.getEventRecord(this.getEventIdFromEl(a))},getParams:function(){return {viewStart:this.viewStart,viewEnd:this.viewEnd,startDate:this.startDate,dayCount:this.dayCount,weekCount:this.weekCount,title:this.getTitle()}},getTitle:function(){return this.startDate.format("F Y")},onClick:function(e,t){var a=e.getTarget(this.eventSelector,5);var b=e.getTarget(null,null,true);var c=b.up(this.eventSelector);if(c){t=c.dom}else{t=e.getTarget(this.eventSelector,5)}if(t){var d=this.getEventIdFromEl(t);this.fireEvent("eventclick",this,this.getEventRecord(d),t);return true}},onMouseOver:function(e,t){if(this.trackMouseOver!==false&&(this.dragZone==undefined||!this.dragZone.dragging)){if(!this.handleEventMouseEvent(e,t,"over")){this.handleDayMouseEvent(e,t,"over")}}},onMouseOut:function(e,t){if(this.trackMouseOver!==false&&(this.dragZone==undefined||!this.dragZone.dragging)){if(!this.handleEventMouseEvent(e,t,"out")){this.handleDayMouseEvent(e,t,"out")}}},handleEventMouseEvent:function(e,t,a){var b=e.getTarget(this.eventSelector,5,true),c,d,f;if(b){c=Ext.get(e.getRelatedTarget());if(b==c||b.contains(c)){return true}f=this.getEventIdFromEl(b);if(this.eventOverClass!=""){d=this.getEventEls(f);d[a=="over"?"addClass":"removeClass"](this.eventOverClass)}this.fireEvent("event"+a,this,this.getEventRecord(f),b);return true}return false},getDateFromId:function(a,b){var c=a.split(b);return c[c.length-1]},handleDayMouseEvent:function(e,t,a){t=e.getTarget("td",3);if(t){if(t.id&&t.id.indexOf(this.dayElIdDelimiter)>-1){var b=this.getDateFromId(t.id,this.dayElIdDelimiter),c=Ext.get(e.getRelatedTarget()),d,f;if(c){d=c.is("td")?c:c.up("td",3);f=d&&d.id?this.getDateFromId(d.id,this.dayElIdDelimiter):""}if(!c||b!=f){var g=this.getDayEl(b);if(g&&this.dayOverClass!=""){g[a=="over"?"addClass":"removeClass"](this.dayOverClass)}this.fireEvent("day"+a,this,Date.parseDate(b,"Ymd"),g)}}}},renderItems:function(){throw "This method must be implemented by a subclass"}});Ext.calendar.MonthView=Ext.extend(Ext.calendar.CalendarView,{showTime:true,showTodayText:true,todayText:"Today",showHeader:false,showWeekLinks:false,showWeekNumbers:false,weekLinkOverClass:"ext-week-link-over",daySelector:".ext-cal-day",moreSelector:".ext-cal-ev-more",weekLinkSelector:".ext-cal-week-link",weekCount:-1,dayCount:7,moreElIdDelimiter:"-more-",weekLinkIdDelimiter:"ext-cal-week-",initComponent:function(){Ext.calendar.MonthView.superclass.initComponent.call(this);this.addEvents({dayclick:true,weekclick:true,dayover:true,dayout:true})},initDD:function(){var a={view:this,createText:this.ddCreateEventText,moveText:this.ddMoveEventText,ddGroup:"MonthViewDD"};this.dragZone=new Ext.calendar.DragZone(this.el,a);this.dropZone=new Ext.calendar.DropZone(this.el,a)},onDestroy:function(){Ext.destroy(this.ddSelector);Ext.destroy(this.dragZone);Ext.destroy(this.dropZone);Ext.calendar.MonthView.superclass.onDestroy.call(this)},afterRender:function(){if(!this.tpl){this.tpl=new Ext.calendar.MonthViewTemplate({id:this.id,showTodayText:this.showTodayText,todayText:this.todayText,showTime:this.showTime,showHeader:this.showHeader,showWeekLinks:this.showWeekLinks,showWeekNumbers:this.showWeekNumbers})}this.tpl.compile();this.addClass("ext-cal-monthview ext-cal-ct");Ext.calendar.MonthView.superclass.afterRender.call(this)},onResize:function(){if(this.monitorResize){this.maxEventsPerDay=this.getMaxEventsPerDay();this.refresh()}},forceSize:function(){if(this.showWeekLinks&&this.el&&this.el.child){var a=this.el.select(".ext-cal-hd-days-tbl"),b=this.el.select(".ext-cal-bg-tbl"),c=this.el.select(".ext-cal-evt-tbl"),d=this.el.child(".ext-cal-week-link").getWidth(),w=this.el.getWidth()-d;a.setWidth(w);b.setWidth(w);c.setWidth(w)}Ext.calendar.MonthView.superclass.forceSize.call(this)},initClock:function(){if(Ext.fly(this.id+"-clock")!==null){this.prevClockDay=new Date().getDay();if(this.clockTask){Ext.TaskMgr.stop(this.clockTask)}this.clockTask=Ext.TaskMgr.start({run:function(){var a=Ext.fly(this.id+"-clock"),t=new Date();if(t.getDay()==this.prevClockDay){if(a){a.update(t.format("g:i a"))}}else{this.prevClockDay=t.getDay();this.moveTo(t)}},scope:this,interval:1000})}},getEventBodyMarkup:function(){if(!this.eventBodyMarkup){this.eventBodyMarkup=["{Title}",'<div class="evt-notifications"><tpl if="_isReminder">','<i class="ext-cal-ic ext-cal-ic-rem">&nbsp;</i>',"</tpl>",'<tpl if="_isRecurring">','<i class="ext-cal-ic ext-cal-ic-rcr">&nbsp;</i>',"</tpl>",'<tpl if="spanLeft">','<i class="ext-cal-spl">&nbsp;</i>',"</tpl>",'<tpl if="spanRight">','<i class="ext-cal-spr">&nbsp;</i>',"</tpl></div>"].join("")}return this.eventBodyMarkup},getEventTemplate:function(){if(!this.eventTpl){var a,b=this.getEventBodyMarkup();a=!(Ext.isIE||Ext.isOpera)?new Ext.XTemplate('<div id="{_elId}" class="{_selectorCls} {_colorCls} {values.spanCls} ext-cal-evt ext-cal-evr">',b,"</div>"):new Ext.XTemplate('<div class="{_colorCls} ext-cal-evb">&nbsp;</div>','<tpl if="_renderAsAllDay">','<div id="{_elId}" class="{_selectorCls} {values.spanCls} {_colorCls} ext-cal-evt ext-cal-evo">','<div class="ext-cal-evm">','<div class="ext-cal-evi">',"</tpl>",'<tpl if="!_renderAsAllDay">','<div id="{_elId}" class="{_selectorCls} {_colorCls} ext-cal-evt ext-cal-evr">',"</tpl>",b,'<tpl if="_renderAsAllDay">',"</div>","</div>","</tpl>","</div>",'<div class="{_colorCls} ext-cal-evb">&nbsp;</div>');a.compile();this.eventTpl=a}return this.eventTpl},getTemplateEventData:function(a){var M=Ext.calendar.EventMappings,b=this.getEventSelectorCls(a[M.EventId.name]),c=a[M.Title.name];var d=(a[M.Data.name]["classname"]?a[M.Data.name]["classname"]:"eintrag_default")+(a._renderAsAllDay?"-ad":"");if(c.length>15){c=c.substr(0,13)+"..."}var e=parseInt(this.getWidth()/7)-20;title_html='<table id="calendar-event-'+a[M.CalendarId.name]+"-"+a[M.EventId.name]+'" class="'+d+'" style="width: '+e+'px">'+(typeof (a[M.Data.name]["calendar"]["title"])!="undefined"?"<tr class=\"calendar-event-row\"><td class='evt-table-left'>&nbsp;</td><td class='evt-table-right evt-table-title'>"+a[M.Data.name]["calendar"]["title"]+"</td></tr>":"")+'<tr class="calendar-event-row">'+(a[M.IsAllDay.name]?"<td class='evt-table-ad evt-table-data' coltd='2'>"+(!c||c.length==0?"(No title)":c)+"</td>":"<td class='evt-table-left evt-table-time'>"+a[M.StartDate.name].format("H:i")+"</td><td class='evt-table-right evt-table-data'>"+(!c||c.length==0?"(No title)":c)+"</td>")+"</tr></table>";return Ext.applyIf({_selectorCls:b,_colorCls:d,_elId:b+"-"+a._weekIndex,_isRecurring:a.Recurrence&&a.Recurrence!="",_isReminder:a[M.Reminder.name]&&a[M.Reminder.name]!="",Title:title_html},a)},refresh:function(){if(this.detailPanel){this.detailPanel.hide()}Ext.calendar.MonthView.superclass.refresh.call(this);if(this.showTime!==false){this.initClock()}},renderItems:function(){Ext.calendar.WeekEventRenderer.render({eventGrid:this.allDayOnly?this.allDayGrid:this.eventGrid,viewStart:this.viewStart,tpl:this.getEventTemplate(),maxEventsPerDay:this.maxEventsPerDay,id:this.id,templateDataFn:this.getTemplateEventData.createDelegate(this),evtMaxCount:this.evtMaxCount,weekCount:this.weekCount,dayCount:this.dayCount});this.fireEvent("eventsrendered",this)},getDayEl:function(a){return Ext.get(this.getDayId(a))},getDayId:function(a){if(Ext.isDate(a)){a=a.format("Ymd")}return this.id+this.dayElIdDelimiter+a},getWeekIndex:function(a){var b=this.getDayEl(a).up(".ext-cal-wk-ct");return parseInt(b.id.split("-wk-")[1],10)},getDaySize:function(a){var b=this.el.getBox(),w=b.width/this.dayCount,h=b.height/this.getWeekCount();if(a){var c=this.el.select(".ext-cal-dtitle").first().parent("tr");h=c?h-c.getHeight(true):h}return {height:h,width:w}},getEventHeight:function(){if(!this.eventHeight){var a=this.el.select(".ext-cal-evt").first();this.eventHeight=a?a.parent("tr").getHeight():37}return this.eventHeight},getMaxEventsPerDay:function(){var a=this.getDaySize(true).height,h=this.getEventHeight(),b=Math.max(Math.floor((a-h)/h),0);return b},getDayAt:function(x,y){var a=this.el.getBox(),b=this.getDaySize(),c=Math.floor(((x-a.x)/b.width)),d=Math.floor(((y-a.y)/b.height)),e=(d*7)+c,f=this.viewStart.add(Date.DAY,e);return {date:f,el:this.getDayEl(f)}},moveNext:function(){return this.moveMonths(1)},movePrev:function(){return this.moveMonths(-1)},onInitDrag:function(){Ext.calendar.MonthView.superclass.onInitDrag.call(this);Ext.select(this.daySelector).removeClass(this.dayOverClass);if(this.detailPanel){this.detailPanel.hide()}},onMoreClick:function(a){if(!this.detailPanel){this.detailPanel=new Ext.Panel({id:this.id+"-details-panel",title:a.format("F j"),layout:"fit",floating:true,renderTo:Ext.getBody(),tools:[{id:"close",handler:function(e,t,p){p.hide()}}],items:{xtype:"monthdaydetailview",id:this.id+"-details-view",date:a,view:this,store:this.store,listeners:{"eventsrendered":this.onDetailViewUpdated.createDelegate(this)}}})}else{this.detailPanel.setTitle(a.format("F j"))}this.detailPanel.getComponent(this.id+"-details-view").update(a)},onDetailViewUpdated:function(a,b,c){var p=this.detailPanel,d=p.getFrameHeight(),e=this.getEventHeight(),f=d+(c*e)+3,g=this.getDayEl(b),h=g.getBox();p.updateBox(h);p.setHeight(f);p.setWidth(Math.max(h.width,220));p.show();p.getPositionEl().alignTo(g,"t-t?")},onHide:function(){Ext.calendar.MonthView.superclass.onHide.call(this);if(this.detailPanel){this.detailPanel.hide()}},onClick:function(e,t){if(this.detailPanel){this.detailPanel.hide()}if(Ext.calendar.MonthView.superclass.onClick.apply(this,arguments)){return}if(this.dropZone){this.dropZone.clearShims()}var a=e.getTarget(this.weekLinkSelector,3),b,c;if(a){b=a.id.split(this.weekLinkIdDelimiter)[1];this.fireEvent("weekclick",this,Date.parseDate(b,"Ymd"));return}a=e.getTarget(this.moreSelector,3);if(a){b=a.id.split(this.moreElIdDelimiter)[1];this.onMoreClick(Date.parseDate(b,"Ymd"));return}a=e.getTarget("td",3);if(a){if(a.id&&a.id.indexOf(this.dayElIdDelimiter)>-1){c=a.id.split(this.dayElIdDelimiter);b=c[c.length-1];this.fireEvent("dayclick",this,Date.parseDate(b,"Ymd"),false,Ext.get(this.getDayId(b)));return}}},handleDayMouseEvent:function(e,t,a){var b=e.getTarget(this.weekLinkSelector,3,true);if(b){b[a=="over"?"addClass":"removeClass"](this.weekLinkOverClass);return}Ext.calendar.MonthView.superclass.handleDayMouseEvent.apply(this,arguments)}});Ext.reg("monthview",Ext.calendar.MonthView);Ext.calendar.DayHeaderView=Ext.extend(Ext.calendar.MonthView,{weekCount:1,dayCount:1,allDayOnly:true,monitorResize:false,afterRender:function(){if(!this.tpl){this.tpl=new Ext.calendar.DayHeaderTemplate({id:this.id,showTodayText:this.showTodayText,todayText:this.todayText,showTime:this.showTime})}this.tpl.compile();this.addClass("ext-cal-day-header");Ext.calendar.DayHeaderView.superclass.afterRender.call(this)},forceSize:Ext.emptyFn,refresh:function(){Ext.calendar.DayHeaderView.superclass.refresh.call(this);this.recalcHeaderBox()},recalcHeaderBox:function(){var a=this.el.child(".ext-cal-evt-tbl"),h=a.getHeight();this.el.setHeight(h+7);if(Ext.isIE&&Ext.isStrict){this.el.child(".ext-cal-hd-ad-inner").setHeight(h+4)}if(Ext.isOpera){}},moveNext:function(a,b){this.moveDays(this.dayCount,a,b)},movePrev:function(a,b){this.moveDays(-this.dayCount,a,b)},onClick:function(e,t){var a=e.getTarget("td",3),b,c;if(a){if(a.id&&a.id.indexOf(this.dayElIdDelimiter)>-1){b=a.id.split(this.dayElIdDelimiter);c=b[b.length-1];this.fireEvent("dayclick",this,Date.parseDate(c,"Ymd"),true,Ext.get(this.getDayId(c)));return}}Ext.calendar.DayHeaderView.superclass.onClick.apply(this,arguments)}});Ext.reg("dayheaderview",Ext.calendar.DayHeaderView);Ext.calendar.DayBodyView=Ext.extend(Ext.calendar.CalendarView,{dayColumnElIdDelimiter:"-day-col-",initComponent:function(){Ext.calendar.DayBodyView.superclass.initComponent.call(this);this.addEvents({eventresize:true,dayclick:true})},initDD:function(){var a={createText:this.ddCreateEventText,moveText:this.ddMoveEventText,resizeText:this.ddResizeEventText};this.el.ddScrollConfig={vthresh:Ext.isIE||Ext.isOpera?100:40,hthresh:-1,frequency:50,increment:100,ddGroup:"DayViewDD"};this.dragZone=new Ext.calendar.DayViewDragZone(this.el,Ext.apply({view:this,containerScroll:true},a));this.dropZone=new Ext.calendar.DayViewDropZone(this.el,Ext.apply({view:this},a))},refresh:function(){var a=this.el.getScroll().top;this.prepareData();this.renderTemplate();this.renderItems();if(this.scrollReady){this.scrollTo(a)}},scrollTo:function(y,a){a=a||(Ext.isIE||Ext.isOpera);if(a){(function(){this.el.scrollTo("top",y);this.scrollReady=true}).defer(10,this)}else{this.el.scrollTo("top",y);this.scrollReady=true}},afterRender:function(){if(!this.tpl){this.tpl=new Ext.calendar.DayBodyTemplate({id:this.id,dayCount:this.dayCount,showTodayText:this.showTodayText,todayText:this.todayText,showTime:this.showTime})}this.tpl.compile();this.addClass("ext-cal-body-ct");Ext.calendar.DayBodyView.superclass.afterRender.call(this);this.scrollTo(7*42)},forceSize:Ext.emptyFn,onEventResize:function(a,b){var D=Ext.calendar.Date,c=Ext.calendar.EventMappings.StartDate.name,d=Ext.calendar.EventMappings.EndDate.name;if(D.compare(a.data[c],b.StartDate)===0&&D.compare(a.data[d],b.EndDate)===0){return}a.set(c,b.StartDate);a.set(d,b.EndDate);this.fireEvent("eventresize",this,a)},getEventBodyMarkup:function(){if(!this.eventBodyMarkup){this.eventBodyMarkup=["{Title}",'<tpl if="_isReminder">','<i class="ext-cal-ic ext-cal-ic-rem">&nbsp;</i>',"</tpl>",'<tpl if="_isRecurring">','<i class="ext-cal-ic ext-cal-ic-rcr">&nbsp;</i>',"</tpl>"].join("")}return this.eventBodyMarkup},getEventTemplate:function(){if(!this.eventTpl){this.eventTpl=!(Ext.isIE||Ext.isOpera)?new Ext.XTemplate('<div id="{_elId}" class="{_selectorCls} {_colorCls} ext-cal-evt ext-cal-evr" style="left: {_left}%; width: {_width}%; top: {_top}px; height: {_height}px;">','<div class="ext-evt-bd">',this.getEventBodyMarkup(),"</div>",'<div class="ext-evt-rsz"><div class="ext-evt-rsz-h">&nbsp;</div></div>',"</div>"):new Ext.XTemplate('<div id="{_elId}" class="ext-cal-evt {_selectorCls} {_colorCls}-x" style="left: {_left}%; width: {_width}%; top: {_top}px;">','<div class="{_colorCls} ext-cal-evb">&nbsp;</div>','<dl style="height: {_height}px;" class="ext-cal-evdm {_colorCls}">','<dd class="ext-evt-bd">',this.getEventBodyMarkup(),"</dd>",'<div class="ext-evt-rsz"><div class="ext-evt-rsz-h">&nbsp;</div></div>',"</dl>",'<div class="{_colorCls} ext-cal-evb">&nbsp;</div>',"</div>");this.eventTpl.compile()}return this.eventTpl},getEventAllDayTemplate:function(){if(!this.eventAllDayTpl){var a,b=this.getEventBodyMarkup();a=!(Ext.isIE||Ext.isOpera)?new Ext.XTemplate('<div id="{_elId}" class="{_selectorCls} {_colorCls} {values.spanCls} ext-cal-evt ext-cal-evr" style="left: {_left}%; width: {_width}%; top: {_top}px; height: {_height}px;">',b,"</div>"):new Ext.XTemplate('<div id="{_elId}" class="ext-cal-evt" style="left: {_left}%; width: {_width}%; top: {_top}px; height: {_height}px;">','<div class="{_selectorCls} {values.spanCls} {_colorCls} ext-cal-evo">','<div class="ext-cal-evm">','<div class="ext-cal-evi">',b,"</div>","</div>","</div></div>");a.compile();this.eventAllDayTpl=a}return this.eventAllDayTpl},getTemplateEventData:function(a){var b=this.getEventSelectorCls(a[Ext.calendar.EventMappings.EventId.name]),c={},M=Ext.calendar.EventMappings;this.getTemplateEventBox(a);var d=(a[M.Data.name]["classname"]?a[M.Data.name]["classname"]:"eintrag_default")+(a._renderAsAllDay?"-ad":"");c._selectorCls=b;c._colorCls=d;c._elId=b+(a._weekIndex?"-"+a._weekIndex:"");c._isRecurring=a.Recurrence&&a.Recurrence!="";c._isReminder=a[M.Reminder.name]&&a[M.Reminder.name]!="";var e=a[M.Title.name];var f=parseInt(this.getWidth()/7)-20;var g=parseInt(f/120);if(e.length>g&&(g-3>0)){e=e.substr(0,(g-3))+"..."}title_html='<table id="calendar-event-'+a[M.CalendarId.name]+"-"+a[M.EventId.name]+'" class="'+d+'" style="width: '+f+'px">'+(typeof (a[M.Data.name]["calendar"]["title"])!="undefined"?"<tr class=\"calendar-event-row\"><td class='evt-table-right evt-table-title'>"+a[M.Data.name]["calendar"]["title"]+"</td></tr>":"")+"<tr class=\"calendar-event-row\"><td class='evt-table-right evt-table-data'>"+(!e||e.length==0?"(No title)":e)+"</td></tr></table>";c.Title=title_html;return Ext.applyIf(c,a)},getTemplateEventBox:function(a){var b=0.7,c=a[Ext.calendar.EventMappings.StartDate.name],d=a[Ext.calendar.EventMappings.EndDate.name],e=c.getHours()*60+c.getMinutes(),f=d.getHours()*60+d.getMinutes(),g=f-e;a._left=0;if(Ext.isChrome){a._width=97.5}else{a._width=100}a._top=Math.round(e*b)+1;a._height=Math.max((g*b)-2,30)},renderItems:function(){var a=0,b=[],c,d,e,f,i,j,l,g,h,k,m,n,o;for(;a<this.dayCount;a++){c=emptyCells=skipped=0;d=this.eventGrid[0][a];e=d?d.length:0;for(;c<e;c++){evt=d[c];if(!evt){continue}f=evt.data||evt.event.data;if(f._renderAsAllDay){continue}Ext.apply(f,{cls:"ext-cal-ev",_positioned:true});b.push({data:this.getTemplateEventData(f),date:this.viewStart.add(Date.DAY,a)})}}i=j=g=h=0;l=b.length;for(;i<l;i++){evt=b[i].data;evt2=null;h=g;for(j=0;j<l;j++){if(i==j){continue}evt2=b[j].data;if(this.isOverlapping(evt,evt2)){evt._overlap=evt._overlap==undefined?1:evt._overlap+1;if(i<j){if(evt._overcol===undefined){evt._overcol=0}evt2._overcol=evt._overcol+1;g=Math.max(g,evt2._overcol)}}}}for(i=0;i<l;i++){evt=b[i].data;if(evt._overlap!==undefined){k=100/(g+1);m=100-(k*evt._overlap);evt._width=k;evt._left=k*evt._overcol}n=this.getEventTemplate().apply(evt);o=this.id+"-day-col-"+b[i].date.format("Ymd");Ext.DomHelper.append(o,n)}this.fireEvent("eventsrendered",this)},getDayEl:function(a){return Ext.get(this.getDayId(a))},getDayId:function(a){if(Ext.isDate(a)){a=a.format("Ymd")}return this.id+this.dayColumnElIdDelimiter+a},getDaySize:function(){var a=this.el.child(".ext-cal-day-col-inner").getBox();return {height:a.height,width:a.width}},getDayAt:function(x,y){var a=".ext-cal-body-ct",b=this.el.child(".ext-cal-day-times").getWidth(),c=this.el.getBox(),d=this.getDaySize(false),e=x-c.x-b,f=Math.floor(e/d.width),g=this.el.getScroll(),h=this.el.child(".ext-cal-bg-row"),i=h.getHeight()/2,j=y-c.y-i+g.top,k=Math.max(0,Math.ceil(j/i)),l=k*30,m=this.viewStart.add(Date.DAY,f).add(Date.MINUTE,l),n=this.getDayEl(m),o=x;if(n){o=n.getLeft()}return {date:m,el:n,timeBox:{x:o,y:(k*21)+c.y-g.top,width:d.width,height:i}}},onClick:function(e,t){if(this.dragPending||Ext.calendar.DayBodyView.superclass.onClick.apply(this,arguments)){return}if(e.getTarget(".ext-cal-day-times",3)!==null){return}var a=e.getTarget("td",3);if(a){if(a.id&&a.id.indexOf(this.dayElIdDelimiter)>-1){var b=this.getDateFromId(a.id,this.dayElIdDelimiter);this.fireEvent("dayclick",this,Date.parseDate(b,"Ymd"),true,Ext.get(this.getDayId(b,true)));return}}var c=this.getDayAt(e.xy[0],e.xy[1]);if(c&&c.date){this.fireEvent("dayclick",this,c.date,false,null)}}});Ext.reg("daybodyview",Ext.calendar.DayBodyView);Ext.calendar.DayView=Ext.extend(Ext.Container,{showTime:true,showTodayText:true,todayText:"Today",ddCreateEventText:"Create event for {0}",ddMoveEventText:"Move event to {0}",dayCount:1,initComponent:function(){this.dayCount=this.dayCount>7?7:this.dayCount;var a=Ext.apply({},this.initialConfig);a.showTime=this.showTime;a.showTodatText=this.showTodayText;a.todayText=this.todayText;a.dayCount=this.dayCount;a.wekkCount=1;var b=Ext.applyIf({xtype:"dayheaderview",id:this.id+"-hd"},a);var c=Ext.applyIf({xtype:"daybodyview",id:this.id+"-bd"},a);this.items=[b,c];this.addClass("ext-cal-dayview ext-cal-ct");Ext.calendar.DayView.superclass.initComponent.call(this)},afterRender:function(){Ext.calendar.DayView.superclass.afterRender.call(this);this.header=Ext.getCmp(this.id+"-hd");this.body=Ext.getCmp(this.id+"-bd");this.body.on("eventsrendered",this.forceSize,this)},refresh:function(){this.header.refresh();this.body.refresh()},forceSize:function(){(function(){var a=this.el.up(".x-panel-body"),b=this.el.child(".ext-cal-day-header"),h=a.getHeight()-b.getHeight();this.el.child(".ext-cal-body-ct").setHeight(h)}).defer(10,this)},onResize:function(){this.forceSize()},getViewBounds:function(){return this.header.getViewBounds()},getStartDate:function(){return this.header.getStartDate()},setStartDate:function(a,b,c){this.header.setStartDate(a,true,c);this.body.setStartDate(a,true,c)},renderItems:function(){this.header.renderItems();this.body.renderItems()},isToday:function(){return this.header.isToday()},moveTo:function(a,b){this.header.moveTo(a,b,false);this.body.moveTo(a,b,true)},moveNext:function(a){this.header.moveNext(a,false);this.body.moveNext(a,true)},movePrev:function(a){this.header.movePrev(a,false);this.body.movePrev(a,true)},moveDays:function(a,b){this.header.moveDays(a,b,false);this.body.moveDays(a,b,true)},moveToday:function(a){this.header.moveToday(a,false);this.body.moveToday(a,true)}});Ext.reg("dayview",Ext.calendar.DayView);Ext.calendar.WeekView=Ext.extend(Ext.calendar.DayView,{dayCount:7});Ext.reg("weekview",Ext.calendar.WeekView);Ext.calendar.DateRangeField=Ext.extend(Ext.form.Field,{toText:"to",allDayText:"All day",onRender:function(a,b){if(!this.el){this.startDate=new Ext.form.DateField({id:this.id+"-start-date",format:"n/j/Y",width:100,listeners:{"change":{fn:function(){this.checkDates("date","start")},scope:this}}});this.startTime=new Ext.form.TimeField({id:this.id+"-start-time",hidden:this.showTimes===false,labelWidth:0,hideLabel:true,width:90,listeners:{"select":{fn:function(){this.checkDates("time","start")},scope:this}}});this.endTime=new Ext.form.TimeField({id:this.id+"-end-time",hidden:this.showTimes===false,labelWidth:0,hideLabel:true,width:90,listeners:{"select":{fn:function(){this.checkDates("time","end")},scope:this}}});this.endDate=new Ext.form.DateField({id:this.id+"-end-date",format:"n/j/Y",hideLabel:true,width:100,listeners:{"change":{fn:function(){this.checkDates("date","end")},scope:this}}});this.allDay=new Ext.form.Checkbox({id:this.id+"-allday",hidden:this.showTimes===false||this.showAllDay===false,boxLabel:this.allDayText,handler:function(c,d){this.startTime.setVisible(!d);this.endTime.setVisible(!d)},scope:this});this.toLabel=new Ext.form.Label({xtype:"label",id:this.id+"-to-label",text:this.toText});this.fieldCt=new Ext.Container({autoEl:{id:this.id},cls:"ext-dt-range",renderTo:a,layout:"table",layoutConfig:{columns:6},defaults:{hideParent:true},items:[this.startDate,this.startTime,this.toLabel,this.endTime,this.endDate,this.allDay]});this.fieldCt.ownerCt=this;this.el=this.fieldCt.getEl();this.items=new Ext.util.MixedCollection();this.items.addAll([this.startDate,this.endDate,this.toLabel,this.startTime,this.endTime,this.allDay])}Ext.calendar.DateRangeField.superclass.onRender.call(this,a,b)},checkDates:function(a,b){var c=Ext.getCmp(this.id+"-start-"+a),d=Ext.getCmp(this.id+"-end-"+a),e=this.getDT("start"),f=this.getDT("end");if(e>f){if(b=="start"){d.setValue(e)}else{c.setValue(f);this.checkDates(a,"start")}}if(a=="date"){this.checkDates("time",b)}},getValue:function(){return [this.getDT("start"),this.getDT("end"),this.allDay.getValue()]},getDT:function(a){var b=this[a+"Time"].getValue(),c=this[a+"Date"].getValue();if(Ext.isDate(c)){c=c.format(this[a+"Date"].format)}else{return null}if(b!=""&&this[a+"Time"].isVisible()){return Date.parseDate(c+" "+b,this[a+"Date"].format+" "+this[a+"Time"].format)}return Date.parseDate(c,this[a+"Date"].format)},setValue:function(v){if(Ext.isArray(v)){this.setDT(v[0],"start");this.setDT(v[1],"end");this.allDay.setValue(!!v[2])}else{if(Ext.isDate(v)){this.setDT(v,"start");this.setDT(v,"end");this.allDay.setValue(false)}else{if(v[Ext.calendar.EventMappings.StartDate.name]){this.setDT(v[Ext.calendar.EventMappings.StartDate.name],"start");if(!this.setDT(v[Ext.calendar.EventMappings.EndDate.name],"end")){this.setDT(v[Ext.calendar.EventMappings.StartDate.name],"end")}this.allDay.setValue(!!v[Ext.calendar.EventMappings.IsAllDay.name])}}}},setDT:function(a,b){if(a&&Ext.isDate(a)){this[b+"Date"].setValue(a);this[b+"Time"].setValue(a.format(this[b+"Time"].format));return true}},isDirty:function(){var a=false;if(this.rendered&&!this.disabled){this.items.each(function(b){if(b.isDirty()){a=true;return false}})}return a},onDisable:function(){this.delegateFn("disable")},onEnable:function(){this.delegateFn("enable")},reset:function(){this.delegateFn("reset")},delegateFn:function(a){this.items.each(function(b){if(b[a]){b[a]()}})},beforeDestroy:function(){Ext.destroy(this.fieldCt);Ext.calendar.DateRangeField.superclass.beforeDestroy.call(this)},getRawValue:Ext.emptyFn,setRawValue:Ext.emptyFn});Ext.reg("daterangefield",Ext.calendar.DateRangeField);Ext.calendar.ReminderField=Ext.extend(Ext.form.ComboBox,{width:200,fieldLabel:"Reminder",mode:"local",triggerAction:"all",forceSelection:true,displayField:"desc",valueField:"value",initComponent:function(){Ext.calendar.ReminderField.superclass.initComponent.call(this);this.store=this.store||new Ext.data.ArrayStore({fields:["value","desc"],idIndex:0,data:[["","None"],["0","At start time"],["5","5 minutes before start"],["15","15 minutes before start"],["30","30 minutes before start"],["60","1 hour before start"],["90","1.5 hours before start"],["120","2 hours before start"],["180","3 hours before start"],["360","6 hours before start"],["720","12 hours before start"],["1440","1 day before start"],["2880","2 days before start"],["4320","3 days before start"],["5760","4 days before start"],["7200","5 days before start"],["10080","1 week before start"],["20160","2 weeks before start"]]})},initValue:function(){if(this.value!==undefined){this.setValue(this.value)}else{this.setValue("")}this.originalValue=this.getValue()}});Ext.reg("reminderfield",Ext.calendar.ReminderField);Ext.calendar.EventEditForm=Ext.extend(Ext.form.FormPanel,{labelWidth:65,title:"Event Form",titleTextAdd:"Add Event",titleTextEdit:"Edit Event",bodyStyle:"background:transparent;padding:20px 20px 10px;",border:false,buttonAlign:"center",autoHeight:true,cls:"ext-evt-edit-form",newId:10000,layout:"column",initComponent:function(){this.addEvents({eventadd:true,eventupdate:true,eventdelete:true,eventcancel:true});this.titleField=new Ext.form.TextField({fieldLabel:"Title",name:Ext.calendar.EventMappings.Title.name,anchor:"90%"});this.dateRangeField=new Ext.calendar.DateRangeField({fieldLabel:"When",anchor:"90%"});this.reminderField=new Ext.calendar.ReminderField({name:"Reminder"});this.notesField=new Ext.form.TextArea({fieldLabel:"Notes",name:Ext.calendar.EventMappings.Notes.name,grow:true,growMax:150,anchor:"100%"});this.locationField=new Ext.form.TextField({fieldLabel:"Location",name:Ext.calendar.EventMappings.Location.name,anchor:"100%"});this.urlField=new Ext.form.TextField({fieldLabel:"Web Link",name:Ext.calendar.EventMappings.Url.name,anchor:"100%"});var a=[this.titleField,this.dateRangeField,this.reminderField],b=[this.notesField,this.locationField,this.urlField];if(this.calendarStore){this.calendarField=new Ext.calendar.CalendarPicker({store:this.calendarStore,name:Ext.calendar.EventMappings.CalendarId.name});a.splice(2,0,this.calendarField)}this.items=[{id:"left-col",columnWidth:0.65,layout:"form",border:false,items:a},{id:"right-col",columnWidth:0.35,layout:"form",border:false,items:b}];this.fbar=[{text:"Save",scope:this,handler:this.onSave},{cls:"ext-del-btn",text:"Delete",scope:this,handler:this.onDelete},{text:"Cancel",scope:this,handler:this.onCancel}];Ext.calendar.EventEditForm.superclass.initComponent.call(this)},loadRecord:function(a){this.form.loadRecord.apply(this.form,arguments);this.activeRecord=a;this.dateRangeField.setValue(a.data);if(this.calendarStore){this.form.setValues({"calendar":a.data[Ext.calendar.EventMappings.CalendarId.name]})}this.isAdd=!!a.data[Ext.calendar.EventMappings.IsNew.name];if(this.isAdd){a.markDirty();this.setTitle(this.titleTextAdd);Ext.select(".ext-del-btn").setDisplayed(false)}else{this.setTitle(this.titleTextEdit);Ext.select(".ext-del-btn").setDisplayed(true)}this.titleField.focus()},updateRecord:function(){var a=this.dateRangeField.getValue();this.form.updateRecord(this.activeRecord);this.activeRecord.set(Ext.calendar.EventMappings.StartDate.name,a[0]);this.activeRecord.set(Ext.calendar.EventMappings.EndDate.name,a[1]);this.activeRecord.set(Ext.calendar.EventMappings.IsAllDay.name,a[2])},onCancel:function(){this.cleanup(true);this.fireEvent("eventcancel",this,this.activeRecord)},cleanup:function(a){if(this.activeRecord&&this.activeRecord.dirty){this.activeRecord.reject()}delete this.activeRecord;if(this.form.isDirty()){this.form.reset()}},onSave:function(){if(!this.form.isValid()){return}this.updateRecord();if(!this.activeRecord.dirty){this.onCancel();return}this.fireEvent(this.isAdd?"eventadd":"eventupdate",this,this.activeRecord)},onDelete:function(){this.fireEvent("eventdelete",this,this.activeRecord)}});Ext.reg("eventeditform",Ext.calendar.EventEditForm);Ext.calendar.EventEditWindow=function(a){var b={xtype:"form",labelWidth:65,frame:false,bodyStyle:"background:transparent;padding:5px 10px 10px;",bodyBorder:false,border:false,items:[{id:"title",name:Ext.calendar.EventMappings.Title.name,fieldLabel:"Title",xtype:"textfield",anchor:"100%"},{xtype:"daterangefield",id:"date-range",anchor:"100%",fieldLabel:"When"}]};if(a.calendarStore){this.calendarStore=a.calendarStore;delete a.calendarStore;b.items.push({xtype:"calendarpicker",id:"calendar",name:"calendar",anchor:"100%",store:this.calendarStore})}Ext.calendar.EventEditWindow.superclass.constructor.call(this,Ext.apply({titleTextAdd:"Add Event",titleTextEdit:"Edit Event",width:600,autocreate:true,border:true,closeAction:"hide",modal:false,resizable:false,buttonAlign:"left",savingMessage:"Saving changes...",deletingMessage:"Deleting event...",fbar:[{xtype:"tbtext",text:'<a href="#" id="tblink">Edit Details...</a>'},"->",{text:"Save",disabled:false,handler:this.onSave,scope:this},{id:"delete-btn",text:"Delete",disabled:false,handler:this.onDelete,scope:this,hideMode:"offsets"},{text:"Cancel",disabled:false,handler:this.onCancel,scope:this}],items:b},a))};Ext.extend(Ext.calendar.EventEditWindow,Ext.Window,{newId:10000,initComponent:function(){Ext.calendar.EventEditWindow.superclass.initComponent.call(this);this.formPanel=this.items.items[0];this.addEvents({eventadd:true,eventupdate:true,eventdelete:true,eventcancel:true,editdetails:true})},afterRender:function(){Ext.calendar.EventEditWindow.superclass.afterRender.call(this);this.el.addClass("ext-cal-event-win");Ext.get("tblink").on("click",function(e){e.stopEvent();this.updateRecord();this.fireEvent("editdetails",this,this.activeRecord)},this)},show:function(o,a){var b=(Ext.isIE8&&Ext.isStrict)?null:a;Ext.calendar.EventEditWindow.superclass.show.call(this,b,function(){Ext.getCmp("title").focus(false,100)});Ext.getCmp("delete-btn")[o.data&&o.data[Ext.calendar.EventMappings.EventId.name]?"show":"hide"]();var c,f=this.formPanel.form;if(o.data){c=o;this.isAdd=!!c.data[Ext.calendar.EventMappings.IsNew.name];if(this.isAdd){c.markDirty();this.setTitle(this.titleTextAdd)}else{this.setTitle(this.titleTextEdit)}f.loadRecord(c)}else{this.isAdd=true;this.setTitle(this.titleTextAdd);var M=Ext.calendar.EventMappings,d=M.EventId.name,e=o[M.StartDate.name],g=o[M.EndDate.name]||e.add("h",1);c=new Ext.calendar.EventRecord();c.data[M.EventId.name]=this.newId++;c.data[M.StartDate.name]=e;c.data[M.EndDate.name]=g;c.data[M.IsAllDay.name]=!!o[M.IsAllDay.name]||e.getDate()!=g.clone().add(Date.MILLI,1).getDate();c.data[M.IsNew.name]=true;f.reset();f.loadRecord(c)}if(this.calendarStore){Ext.getCmp("calendar").setValue(c.data[Ext.calendar.EventMappings.CalendarId.name])}Ext.getCmp("date-range").setValue(c.data);this.activeRecord=c;return this},roundTime:function(a,b){b=b||15;var m=parseInt(a.getMinutes(),10);return a.add("mi",b-(m%b))},onCancel:function(){this.cleanup(true);this.fireEvent("eventcancel",this)},cleanup:function(a){if(this.activeRecord&&this.activeRecord.dirty){this.activeRecord.reject()}delete this.activeRecord;if(a===true){this.hide()}},updateRecord:function(){var f=this.formPanel.form,a=Ext.getCmp("date-range").getValue(),M=Ext.calendar.EventMappings;f.updateRecord(this.activeRecord);this.activeRecord.set(M.StartDate.name,a[0]);this.activeRecord.set(M.EndDate.name,a[1]);this.activeRecord.set(M.IsAllDay.name,a[2]);this.activeRecord.set(M.CalendarId.name,this.formPanel.form.findField("calendar").getValue())},onSave:function(){if(!this.formPanel.form.isValid()){return}this.updateRecord();if(!this.activeRecord.dirty){this.onCancel();return}this.fireEvent(this.isAdd?"eventadd":"eventupdate",this,this.activeRecord)},onDelete:function(){this.fireEvent("eventdelete",this,this.activeRecord)}});Ext.calendar.CalendarPanel=Ext.extend(Ext.Panel,{showDayView:true,showWeekView:true,showMonthView:true,showNavBar:true,todayText:"Today",showTodayButton:true,showDateRange:true,showTodayText:true,showTime:true,dayText:"Day",weekText:"Week",monthText:"Month",messageContainer:null,instance:null,layoutConfig:{layoutOnCardChange:true,deferredRender:true},startDate:new Date(),initComponent:function(a){this.instance=this;this.tbar={cls:"ext-cal-toolbar",border:true,buttonAlign:"center",items:[]};if(this.showTodayButton){this.tbar.items.push({id:this.id+"-tb-today",text:"[ "+this.todayText+" ]",handler:this.onTodayButton,scope:this})}this.tbar.items.push({id:this.id+"-tb-prev",handler:this.onPrevClick,scope:this,iconCls:"x-tbar-page-prev"});this.viewCount=0;if(this.showDayView){this.tbar.items.push({id:this.id+"-tb-day",text:this.dayText,handler:this.onDayClick,scope:this,toggleGroup:"tb-views"});this.viewCount++}if(this.showWeekView){this.tbar.items.push({id:this.id+"-tb-week",text:this.weekText,handler:this.onWeekClick,scope:this,toggleGroup:"tb-views"});this.viewCount++}if(this.showMonthView||this.viewCount==0){this.tbar.items.push({id:this.id+"-tb-month",text:this.monthText,handler:this.onMonthClick,scope:this,toggleGroup:"tb-views"});this.viewCount++;this.showMonthView=true}this.tbar.items.push({id:this.id+"-tb-next",handler:this.onNextClick,scope:this,iconCls:"x-tbar-page-next"});this.tbar.items.push("->");var b=this.viewCount-1;this.activeItem=this.activeItem===undefined?b:(this.activeItem>b?b:this.activeItem);if(this.showNavBar===false){delete this.tbar;this.addClass("x-calendar-nonav")}Ext.calendar.CalendarPanel.superclass.initComponent.call(this);this.addEvents({eventadd:true,eventupdate:true,eventdelete:true,eventcancel:true,viewchange:true});this.layout="card";if(this.showDayView){var c=Ext.apply({xtype:"dayview",title:this.dayText,showToday:this.showToday,showTodayText:this.showTodayText,todayText:this.todayText,showTime:this.showTime,startDate:this.startDate,panelInstance:this},this.dayViewCfg);c.id=this.id+"-day";c.store=c.store||this.eventStore;this.initEventRelay(c);this.add(c)}if(this.showWeekView){var d=Ext.applyIf({xtype:"weekview",title:this.weekText,showToday:this.showToday,showTodayText:this.showTodayText,todayText:this.todayText,showTime:this.showTime,startDate:this.startDate,panelInstance:this},this.weekViewCfg);d.id=this.id+"-week";d.store=d.store||this.eventStore;this.initEventRelay(d);this.add(d)}if(this.showMonthView){var e=Ext.applyIf({xtype:"monthview",title:this.monthText,showToday:this.showToday,showTodayText:this.showTodayText,showTime:this.showTime,startDate:this.startDate,todayText:this.todayText,panelInstance:this,listeners:{"weekclick":{fn:function(f,g){this.showWeek(g)},scope:this}}},this.monthViewCfg);e.id=this.id+"-month";e.store=e.store||this.eventStore;this.initEventRelay(e);this.add(e)}this.add(Ext.applyIf({xtype:"eventeditform",id:this.id+"-edit",calendarStore:this.calendarStore,listeners:{"eventadd":{scope:this,fn:this.onEventAdd},"eventupdate":{scope:this,fn:this.onEventUpdate},"eventdelete":{scope:this,fn:this.onEventDelete},"eventcancel":{scope:this,fn:this.onEventCancel}}},this.editViewCfg))},initEventRelay:function(a){a.listeners=a.listeners||{};a.listeners.afterrender={fn:function(c){this.relayEvents(c,["eventsrendered","eventclick","eventover","eventout","dayclick","eventmove","datechange","rangeselect","eventdelete","eventresize","initdrag"])},scope:this,single:true}},afterRender:function(){Ext.calendar.CalendarPanel.superclass.afterRender.call(this);if(this.stateful){this.getActiveView().setStartDate(this.startDate,true,true)}Ext.calendar.MonthView.superclass.refreshStore.call(this.getActiveView(),this.getActiveView().getStartDate());this.fireViewChange()},onLayout:function(){Ext.calendar.CalendarPanel.superclass.onLayout.call(this);if(!this.navInitComplete){this.updateNavState();this.navInitComplete=true}},onEventAdd:function(a,b){b.data[Ext.calendar.EventMappings.IsNew.name]=false;this.eventStore.add(b);this.hideEditForm();this.fireEvent("eventadd",this,b)},onEventUpdate:function(a,b){this.hideEditForm();this.fireEvent("eventupdate",this,b)},onEventDelete:function(a,b){this.eventStore.remove(b);this.hideEditForm();this.fireEvent("eventdelete",this,b)},onEventCancel:function(a,b){this.hideEditForm();this.fireEvent("eventcancel",this,b)},showEditForm:function(a){this.preEditView=this.layout.activeItem.id;this.setActiveView(this.id+"-edit");this.layout.activeItem.loadRecord(a);return this},hideEditForm:function(){if(this.preEditView){this.setActiveView(this.preEditView);delete this.preEditView}return this},setActiveView:function(a){this.activeItem=a;var l=this.layout;var b=l.activeItem.getStartDate();l.setActiveItem(a);if(a==this.id+"-edit"){this.getTopToolbar().hide();this.doLayout()}else{l.activeItem.refresh();this.getTopToolbar().show();this.updateNavState()}this.activeView=l.activeItem;this.activeView.setStartDate(b);this.fireViewChange()},fireViewChange:function(){var a=null,b=this.layout.activeItem;if(b.getViewBounds){vb=b.getViewBounds();a={activeDate:b.getStartDate(),viewStart:vb.start,viewEnd:vb.end}}this.fireEvent("viewchange",this,b,a)},updateNavState:function(){if(this.showNavBar!==false){var a=this.layout.activeItem,b=a.id.split(this.id+"-")[1];var c=Ext.getCmp(this.id+"-tb-"+b);c.toggle(true)}},setStartDate:function(a){this.getActiveView().setStartDate(a,true,false);this.startDate=a;this.updateNavState();this.fireViewChange()},showWeek:function(a){this.setActiveView(this.id+"-week");this.setStartDate(a)},onPrevClick:function(){this.startDate=this.layout.activeItem.movePrev();this.updateNavState();this.fireViewChange()},onNextClick:function(){this.startDate=this.layout.activeItem.moveNext();this.updateNavState();this.fireViewChange()},onDayClick:function(){this.setActiveView(this.id+"-day");this.getActiveView().moveTo(this.startDate)},onWeekClick:function(){this.setActiveView(this.id+"-week");this.getActiveView().moveTo(this.startDate)},onMonthClick:function(){this.setActiveView(this.id+"-month");this.getActiveView().moveTo(this.startDate)},onTodayButton:function(){this.setStartDate(new Date().clearTime())},getActiveView:function(){return this.layout.activeItem},toastmsg:function(a,b){var c=String.format.apply(String,Array.prototype.slice.call(arguments,1));var d=new Ext.ux.Notification({bodyCssClass:"calender-toast-notification",title:a,html:c,autoDestroy:true,hideDelay:1500});d.show(document)},getState:function(){return {activeItem:this.activeItem||2,startDate:this.startDate}},applyState:function(a){if(a){Ext.apply(this,a)}}});Ext.reg("calendarpanel",Ext.calendar.CalendarPanel);Ext.override(Ext.DatePicker,{getState:function(){return {value:this.value}},applyState:function(a){if(a){Ext.apply(this,a)}},initComponent:function(){Ext.DatePicker.superclass.initComponent.call(this);this.value=this.value?this.value.clearTime(true):new Date().clearTime();this.addEvents("select");if(this.handler){this.on("select",this.handler,this.scope||this)}if(this.highlightStore){this.highlightStore.addListener("load",this.onStoreUpdate,this)}this.initDisabledDays()},handleDateClick:function(e,t){e.stopEvent();if(!this.disabled&&t.dateValue&&!Ext.fly(t.parentNode).hasClass("x-date-disabled")){this.cancelFocus=this.focusOnSelect===false;var a=this.getValue();this.setValue(new Date(t.dateValue));if(a.format("m-Y")!=this.getValue().format("m-Y")){this.onMonthChange()}delete this.cancelFocus;this.fireEvent("select",this,this.value)}},setDate:function(a){if(a){var b=this.getValue();this.setValue(new Date(a.getTime()));if(b.format("m-Y")!=this.getValue().format("m-Y")){this.onMonthChange()}}},selectToday:function(){if(this.todayBtn&&!this.todayBtn.disabled){var a=this.getValue();this.setValue(new Date().clearTime());if(a.format("m-Y")!=this.getValue().format("m-Y")){this.onMonthChange()}this.fireEvent("select",this,this.value)}},hideMonthPicker:function(a){if(this.monthPicker){if(a===true){this.monthPicker.hide()}else{this.monthPicker.slideOut("t",{duration:0.2})}}this.onMonthChange()},showPrevMonth:function(e){this.update(this.activeDate.add("mo",-1));this.onMonthChange()},showNextMonth:function(e){this.update(this.activeDate.add("mo",1));this.onMonthChange()},onMonthChange:function(){if(this.activeDate!=undefined){var a=new Date(this.activeDate.getTime());var b=a.getDaysInMonth(),c=a.getFirstDateOfMonth(),d=c.getDay()-this.startDay;var e=a.add("mo",-1);var f=e.getDaysInMonth()-d;var g=new Date(e.getFullYear(),e.getMonth(),f,0);var h=new Date(g.getTime()).add(Date.DAY,42);if(this.highlightStore){this.highlightStore.load({params:{start:g.format("d-m-Y"),end:h.format("d-m-Y")}})}this.fireEvent("monthchange",this,this.value)}},onStoreUpdate:function(a,b){var c=[];for(var i=0;i<a.data.items.length;i++){var d=a.data.items[i];var e=Date.parseDate(d.json.start,"Y-m-d h:i:s").clearTime();var f=Date.parseDate(d.json.end,"Y-m-d h:i:s").clearTime();if(e.format(this.format)==f.format(this.format)){c.push(e.format(this.format))}else{for(var g=e.getTime();g<=f.clearTime().add(Date.DAY,1).add(Date.SECOND,-1).getTime();g=g+(24*3600)){c.push((new Date(g)).format(this.format))}}}this.highlightDates=c;this.update(this.activeDate,true)},update:function(a,b){if(this.rendered){var c=this.activeDate,d=this.isVisible();this.activeDate=a;if(!b&&c&&this.el){var t=a.getTime();if(c.getMonth()==a.getMonth()&&c.getFullYear()==a.getFullYear()){this.cells.removeClass("x-date-selected");this.cells.each(function(e){if(e.dom.firstChild.dateValue==t){e.addClass("x-date-selected");if(d&&!this.cancelFocus){Ext.fly(e.dom.firstChild).focus(50)}return false}},this);return}}var e=a.getDaysInMonth(),f=a.getFirstDateOfMonth(),g=f.getDay()-this.startDay;if(g<0){g+=7}e+=g;var h=a.add("mo",-1),i=h.getDaysInMonth()-g,j=this.cells.elements,k=this.textNodes,l=(new Date(h.getFullYear(),h.getMonth(),i,this.initHour)),m=new Date().clearTime().getTime(),n=a.clearTime(true).getTime(),o=this.minDate?this.minDate.clearTime(true):Number.NEGATIVE_INFINITY,p=this.maxDate?this.maxDate.clearTime(true):Number.POSITIVE_INFINITY,q=this.disabledDatesRE,r=this.disabledDatesText,s=this.disabledDays?this.disabledDays.join(""):false,u=this.disabledDaysText,v=this.format,w=this.highlightDates?";"+this.highlightDates.join(";")+";":false;if(this.showToday){var x=new Date().clearTime(),y=(x<o||x>p||(q&&v&&q.test(x.dateFormat(v)))||(s&&s.indexOf(x.getDay())!=-1));if(!this.disabled){this.todayBtn.setDisabled(y);this.todayKeyListener[y?"disable":"enable"]()}}var z=function(A,B){B.title="";var C=l.clearTime(true).getTime();B.firstChild.dateValue=C;if(C==m){B.className+=" x-date-today";B.title=A.todayText}if(C==n){B.className+=" x-date-selected";if(d){Ext.fly(B.firstChild).focus(50)}}if(C<o){B.className=" x-date-disabled";B.title=A.minText;return}if(C>p){B.className=" x-date-disabled";B.title=A.maxText;return}if(s){if(s.indexOf(l.getDay())!=-1){B.title=u;B.className=" x-date-disabled"}}if(q&&v){var D=l.dateFormat(v);if(q.test(D)){B.title=r.replace("%0",D);B.className=" x-date-disabled"}}if(w){var D=l.dateFormat(v);if(w.indexOf(";"+D+";")!=-1){B.className+=" x-date-highlight"}}};var A=0;for(;A<g;A++){k[A].innerHTML=(++i);l.setDate(l.getDate()+1);j[A].className="x-date-prevday";z(this,j[A])}for(;A<e;A++){var B=A-g+1;k[A].innerHTML=(B);l.setDate(l.getDate()+1);j[A].className="x-date-active";z(this,j[A])}var C=0;for(;A<42;A++){k[A].innerHTML=(++C);l.setDate(l.getDate()+1);j[A].className="x-date-nextday";z(this,j[A])}this.mbtn.setText(this.monthNames[a.getMonth()]+" "+a.getFullYear());if(!this.internalRender){var D=this.el.dom.firstChild,E=D.offsetWidth;this.el.setWidth(E+this.el.getBorderWidth("lr"));Ext.fly(D).setWidth(E);this.internalRender=true;if(Ext.isOpera&&!this.secondPass){D.rows[0].cells[1].style.width=(E-(D.rows[0].cells[0].offsetWidth+D.rows[0].cells[2].offsetWidth))+"px";this.secondPass=true;this.update.defer(10,this,[a])}}}}});function dump(a,b){var c="";if(!b){b=0}var d="";for(var j=0;j<b+1;j++){d+="    "}if(typeof (a)=="object"){for(var e in a){var f=a[e];if(typeof (f)=="object"){c+=d+"'"+e+"' ...\n";c+=dump(f,b+1)}else{c+=d+"'"+e+"' => \""+f+'"\n'}}}else{c="===>"+a+"<===("+typeof (a)+")"}return c}
