function DocumentProperties()
{this.onMouseMove=new REvent(this);this.onMouseDown=new REvent(this);this.onMouseUp=new REvent(this);this.onKeyPress=new REvent(this);this.onKeyDown=new REvent(this);this.document=document;this.document.onmousemove=DocumentProperties.statics.onMouseMove;this.document.onmousedown=DocumentProperties.statics.onMouseDown;this.document.onmouseup=DocumentProperties.statics.onMouseUp;this.document.onkeypress=DocumentProperties.statics.onKeyPress;this.document.onkeydown=DocumentProperties.statics.onKeyDown;}
DocumentProperties.statics=new Object();DocumentProperties.statics.onMouseMove=function(e)
{var doc=DocumentProperties.statics.getInstance();doc.updateMousePos(e);doc.onMouseMove.trigger(doc.getMouseX(),doc.getMouseY());}
DocumentProperties.statics.onMouseDown=function(e)
{var doc=DocumentProperties.statics.getInstance();doc.onMouseDown.trigger(e);}
DocumentProperties.statics.onMouseUp=function(e)
{var doc=DocumentProperties.statics.getInstance();doc.onMouseUp.trigger();}
DocumentProperties.statics.getInstance=function()
{if(DocumentProperties.statics.instance==null)
DocumentProperties.statics.instance=new DocumentProperties();return DocumentProperties.statics.instance;}
DocumentProperties.statics.getAbsoluteOffsetLeft=function(o)
{var offset=0;for(;o;o=o.parentNode)
if(o.offsetLeft)
offset+=o.offsetLeft;return offset;}
DocumentProperties.statics.getAbsoluteOffsetTop=function(o)
{var offset=0;for(;o;o=o.parentNode)
if(o.offsetTop)
offset+=o.offsetTop;return offset;}
DocumentProperties.statics.cursor={Default:"",Move:"move",MoveLeftOrRight:"e-resize",MoveUpOrDown:"n-resize"}
DocumentProperties.prototype.setCursor=function(c)
{this.document.documentElement.style.cursor=c;}
DocumentProperties.prototype.getMouseX=function()
{return this.mouseX;}
DocumentProperties.prototype.getMouseY=function()
{return this.mouseY;}
DocumentProperties.prototype.updateMousePos=function(e)
{var x,y;if(document.all)
{x=event.x;y=event.y;}
else
{x=e.pageX;y=e.pageY;}
this.mouseX=x;this.mouseY=y;}
DocumentProperties.statics.onKeyPress=function(e){return DocumentProperties.statics.keyEventDispatch("onKeyPress",e);}
DocumentProperties.statics.onKeyDown=function(e){return DocumentProperties.statics.keyEventDispatch("onKeyDown",e);}
DocumentProperties.statics.keyEventDispatch=function(eventName,e)
{var doc=DocumentProperties.statics.getInstance();if(!e)
e=window.event;var key=null;if(window.event)
key=e.keyCode
else if(e.which)
key=e.which
if(null!=key)
return doc[eventName].trigger(key,e);return true;}