(function(){var A=new Class({initialize:function(B){this._calendarDayBox=B;this._calendarDayBoxCoordinates=null;this._eventBox=B.getElement(".event");this._eventBoxSize=null;this._windowSize=null;this._windowScroll=null;this._parentCalendarBox=null;this._mouseMoveEventFunc=null;this._hover=false;this._offsetX=16;this._offsetY=16;if(this._eventBox){B.addEvents({mouseover:this._onMouseOver.bind(this),mouseout:this._onMouseOut.bind(this)});this._parentCalendarBox=this._getParentCalendarBox();this._setMouseMoveEvent()}},_getParentCalendarBox:function(){var B=$(this._calendarDayBox.parentNode);while(B&&!B.hasClass("calendar")){B=$(B.parentNode)}return B},_setMouseMoveEvent:function(){if(this._parentCalendarBox){this._mouseMoveEventFunc=this._onMouseMove.bind(this);this._parentCalendarBox.addEvent("mousemove",this._mouseMoveEventFunc)}},_removeMouseMoveEvent:function(){if(this._parentCalendarBox){this._parentCalendarBox.removeEvent("mousemove",this._mouseMoveEventFunc);this._mouseMoveEventFunc=null}},_onMouseOver:function(B){if(!this._hover){this._hover=true;this._eventBox.setStyle("display","block");this._calendarDayBoxCoordinates=this._calendarDayBox.getCoordinates();this._eventBoxSize=this._eventBox.getSize();this._windowScroll=window.getScroll();this._windowSize=window.getSize();this._moveEventBox(B);this._setMouseMoveEvent()}},_onMouseMove:function(B){if(this._isInsideCalendarDayBox(B)){this._moveEventBox(B)}else{this._hideEventBox()}},_moveEventBox:function(H){var C=H.page.x;var B=H.page.y;var G=this._windowScroll.x+this._windowSize.x;var D=this._windowScroll.y+this._windowSize.y;var F;if(C+this._offsetX+this._eventBoxSize.x>G){F=G-this._eventBoxSize.x}else{F=C+this._offsetX}var E;if(B+this._offsetY+this._eventBoxSize.y>D){E=D-this._eventBoxSize.y}else{E=B+this._offsetY}this._eventBox.setStyles({top:E,left:F})},_onMouseOut:function(B){if(!this._isInsideCalendarDayBox(B)){this._hideEventBox()}},_isInsideCalendarDayBox:function(D){var B=D.page.x;var E=D.page.y;var C=this._calendarDayBoxCoordinates;if(C){return(C.left<B&&B<C.right&&C.top<E&&E<C.bottom)}return false},_hideEventBox:function(){this._removeMouseMoveEvent();this._hover=false;this._eventBox.setStyle("display","none")}});window.addEvent("domready",function(){$$(".calendar .day").forEach(function(B){new A(B)})})})();