/******************************************************
 *
 * This script was written for
 * http://other.lookstrike.com
 *
 * If you plan to use it for your own, you can but you
 * MUST leave this whole comment intact in each file.
 *
 * Copyright		: (C) Jean-Sébastien Goupil - 2006-2008
 * Website		: http://other.lookstrike.com
 *
 ******************************************************/

ToolBox._Events = {
	get: function(e) {
		if(!e) {
			e = window.event;
		}
		if (e.target && (e.target.nodeType == 3 || e.target.nodeType == 4)) { // Safari + Konqueror
			e.target = e.target.parentNode;
		} else if (e.srcElement && !e.target) { // IE (!e.target = prevent opera exception)
			e.target = e.srcElement;
		}

		return e;
	},

	register : function(element, type, func, useCapture) {
		if (element.addEventListener) { // Mozilla
			element.addEventListener(type, func, useCapture);
		} else if (element.attachEvent) { // IE
			if (!element._listeners) element._listeners = new Array();
			if (!element._listeners[type]) element._listeners[type] = new Array();
			var workaroundFunc = function() {
				func.apply(element, new Array());
			}
			element._listeners[type][func] = workaroundFunc;
			element.attachEvent('on' + type, workaroundFunc);
		}
	},

	unregister : function(element, type, func, useCapture) {
		if (element.removeEventListener) { // Mozilla
			element.removeEventListener(type, func, useCapture);
		} else if (element.detachEvent) { // IE
			if (element._listeners && element._listeners[type] && element._listeners[type][func]) {
				element.detachEvent('on' + type, element._listeners[type][func]);
			}
		}
	},

	stopPropagation: function( e ) {
		if(e != null && e.stopPropagation) {
			e.stopPropagation();
		} else {
			window.event.cancelBubble = true;
		}
	},

	preventDefault: function( e ) {
		if(e.preventDefault)
			e.preventDefault();
		else
			e.returnValue = false;
	},

	FireEvent: function(obj, strEvent) {
		if( document.createEvent ) { // Mozilla
			var evObj = document.createEvent('MouseEvents');
			evObj.initEvent( strEvent, true, true );
			obj.dispatchEvent(evObj);
		} else if( document.createEventObject ) { // IE
			obj.fireEvent('on' + strEvent);
		}
	}
}