function wp_Event( mcfg ) {
    
    var cfg = mcfg || {};
    var self = this;
	
	this.add = function(obj,event,handler) {

		if( !obj )
			return false;
						
		if( document.addEventListener ) {
			obj.addEventListener( event, handler, false );
		} else if( document.attachEvent  ) {
			obj.attachEvent("on"+event, handler );
		} else {
			obj["on"+event] = handler;
		}
	}
	
	this.remove = function(obj,event,handler) {

		if( !obj )
			return false;
						
		if( document.removeEventListener ) {
			obj.removeEventListener( event, handler, false );
		} else if( document.detachEvent  ) {
			obj.detachEvent("on"+event, handler );
		} else {
			obj["on"+event] = null;
		}
	}
	
	this.get = function( e ) {
		var data = new Object();
		e = e?e:window.event;
		
		data["event"] = e;
		data["type"] = e.type;
		data["keycode"] = e.keyCode;
		data["keyctrl"] = e.ctrlKey;
		data["element"] = e.target?e.target:e.srcElement;
		
		var scrolltop = document.documentElement ? document.documentElement.scrollTop : document.body.scrollTop;
		var scrollleft = document.documentElement ? document.documentElement.scrollLeft : document.body.scrollLeft;
		var clienttop = document.documentElement ? document.documentElement.clientTop : document.body.clientTop;
		var clientleft = document.documentElement ? document.documentElement.clientLeft : document.body.clientLeft;
		
		/*
		var layersscrolltop = 0;
		var tmp = data["element"];
		var lc = 0;
		var text = "";
		
		while( tmp ) {
		    lc++;
			layersscrolltop += tmp.scrollTop;
			text += tmp.tagName+ " ";
			
			tmp = tmp.offsetParent;
		}
		window.status = "layers: "+lc+", scroll: "+layersscrolltop+", obj: "+tmp + ", text: "+text;
		*/
		
		data["mousetop"] = e.pageY ? e.pageY : e.clientY + scrolltop - clienttop;
		data["mouseleft"] = e.pageX ? e.pageX : e.clientX + scrollleft - clientleft;
				
		return data;
	}
	
	this.clear = function() {
	    if( cfg.element && cfg.event && cfg.handler ) {
            self.remove(cfg.element, cfg.event, cfg.handler);
        } 
	}
    
    if( cfg.element && cfg.event && cfg.handler ) {
        self.add(cfg.element, cfg.event, cfg.handler);
    } 
}
