if (document.layers){
	document.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP | Event.MOUSEDOWN | Event.DBLCLICK | Event.KEYDOWN | Event.KEYPRESS | Event.KEYUP);
	document.captureEvents(Event.RESIZE);
}

// EventHandler Objekt
// -------------------------------------------------------------------------------------------
EventHandler = {
	// Startvariablen
	// -------------------------------------------------------------------------------------------
	arrMouseMoveHandler      : [],
	arrMouseUpHandler        : [],
	arrMouseDownHandler      : [],
	arrMouseDownRightHandler : [],
	arrDblClickHandler       : [],
	arrKeyDownHandler        : [],
	arrKeyUpHandler          : [],
	arrResizeHandler         : [],
	arrHidePopUpHandler      : [],
	arrKeyDownAscii          : [],
	jsIncludes               : {},
	
	mouseType : "",
	mouseX    : 0,
	mouseY    : 0,
	klickX    : 0,
	klickY    : 0,
	// -------------------------------------------------------------------------------------------
	
	// Eventhandler bei MouseUp
	// -------------------------------------------------------------------------------------------
	mouseUpHandler : function(e){
		if (!e) e = window.event;
		var srcID = (e.target)?e.target.id:e.srcElement.id;
		
		mouseType = "";
		for(iMUH=0;iMUH<EventHandler.arrMouseUpHandler.length;iMUH++){
			eval(EventHandler.arrMouseUpHandler[iMUH]);
		}
	},
	// -------------------------------------------------------------------------------------------
	
	// Eventhandler bei MouseDown
	// -------------------------------------------------------------------------------------------
	mouseDownHandler : function(e){
		if (!e) e = window.event;
		var srcID = (e.target)?e.target.id:e.srcElement.id;
		
		if (!document.layers){
			this.klickX = e.clientX + getScrollLeft();
			this.klickY = e.clientY + getScrollTop();
		} else {  
			this.klickX = e.pageX;
			this.klickY = e.pageY;
		}
		
		if ((e.type && e.type == "contextmenu") || (! e.type && e.button && e.button == 2) || (! e.type && e.which && e.which == 3)) {
			// Rechtsklick
			mouseType = "right";
			for(iMDRH=0;iMDRH<EventHandler.arrMouseDownRightHandler.length;iMDRH++){
				eval(EventHandler.arrMouseDownRightHandler[iMDRH]);
			}
			//return false;
		} else {
			// Linksklick
			if(!(e.type && e.button && e.button == 2)){
				mouseType = "left";
				for(iMDH=0;iMDH<EventHandler.arrMouseDownHandler.length;iMDH++){
					eval(EventHandler.arrMouseDownHandler[iMDH]);
				}
			}
		}
	},
	// -------------------------------------------------------------------------------------------
	
	// Eventhandler bei Doppelklick
	// -------------------------------------------------------------------------------------------
	dblClickHandler : function(e){
		if (!e) e = window.event;
		var srcID = (e.target)?e.target.id:e.srcElement.id;
		
		if (!document.layers){
			this.klickX = e.clientX + getScrollLeft();
			this.klickY = e.clientY + getScrollTop();
		} else {  
			this.klickX = e.pageX;
			this.klickY = e.pageY;
		}
		
		for(iDCH=0;iDCH<EventHandler.arrDblClickHandler.length;iDCH++){
			eval(EventHandler.arrDblClickHandler[iDCH]);
		}
	},
	// -------------------------------------------------------------------------------------------
	
	// Eventhandler der Mausbewegung
	// -------------------------------------------------------------------------------------------
	mouseMoveHandler : function(e){
		if (!e) e = window.event;
		var srcID = (e.target)?e.target.id:e.srcElement.id;
		
		if(EventHandler.arrMouseMoveHandler.length > 0){
			if (!document.layers){
				this.mouseX = e.clientX + getScrollLeft();
				this.mouseY = e.clientY + getScrollTop();
			} else {  
				this.mouseX = e.pageX;
				this.mouseY = e.pageY;
			} 
		}
		
		for(iMMH=0;iMMH<EventHandler.arrMouseMoveHandler.length;iMMH++){
			eval(EventHandler.arrMouseMoveHandler[iMMH]);
		}
		return false;
	},
	// -------------------------------------------------------------------------------------------
	
	// Eventhandler bei Drücken einer Taste
	// -------------------------------------------------------------------------------------------
	keyDownHandler : function(e){
		if (!e) e = window.event;
		
		if (window.Event) ascii = e.which;
		else ascii = e.keyCode;
	
		EventHandler.arrKeyDownAscii[EventHandler.arrKeyDownAscii.length] = ascii;
		
		for(iKDH=0;iKDH<EventHandler.arrKeyDownHandler.length;iKDH++){
			eval(EventHandler.arrKeyDownHandler[iKDH]);
		}
	},
	// -------------------------------------------------------------------------------------------
	
	// Eventhandler bei Loslassen einer Taste
	// -------------------------------------------------------------------------------------------
	keyUpHandler : function(e){
		if (!e) e = window.event;
		
		if (window.Event) ascii = e.which;
		else ascii = e.keyCode;
	
		this.arrKeyDownAscii = ArrayFunction.deleteValue(EventHandler.arrKeyDownAscii,ascii);
	
		for(iKUH=0;iKUH<EventHandler.arrKeyUpHandler.length;iKUH++){
			eval(EventHandler.arrKeyUpHandler[iKUH]);
		}
	},
	// -------------------------------------------------------------------------------------------
	
	// Eventhandler bei Verändern der Festergröße
	// -------------------------------------------------------------------------------------------
	resizeHandler : function(e){
		if (!e) e = window.event;
			
		for(iRH=0;iRH<EventHandler.arrResizeHandler.length;iRH++){
			eval(EventHandler.arrResizeHandler[iRH]);
		}
	},
	// -------------------------------------------------------------------------------------------
	
	// Event binden
	// -------------------------------------------------------------------------------------------
	add : function(type,code){
		switch(type){
			case "MouseMove": ArrayFunction.add(this.arrMouseMoveHandler,code); break;
			case "MouseUp"  : ArrayFunction.add(this.arrMouseUpHandler,code);   break;
			case "MouseDown": ArrayFunction.add(this.arrMouseDownHandler,code); break;
			case "DblClick" : ArrayFunction.add(this.arrDblClickHandler,code);  break;
			case "KeyDown"  : ArrayFunction.add(this.arrKeyDownHandler,code);   break;
			case "KeyUp"    : ArrayFunction.add(this.arrKeyUpHandler,code);     break;
			case "Resize"   : ArrayFunction.add(this.arrResizeHandler,code);    break;
		}
	}
	// -------------------------------------------------------------------------------------------
};
// -------------------------------------------------------------------------------------------

document.onmousemove   = EventHandler.mouseMoveHandler;
document.onmouseup     = EventHandler.mouseUpHandler;
document.onmousedown   = EventHandler.mouseDownHandler;
document.ondblclick    = EventHandler.dblClickHandler;
document.onkeydown     = EventHandler.keyDownHandler;
document.onkeyup       = EventHandler.keyUpHandler;
document.oncontextmenu = EventHandler.mouseDownHandler;
window.onresize        = EventHandler.resizeHandler;
