/*	Author: Scott Andrew LePera
	http://www.scottandrew.com/weblog/articles/cbs-events
	Default value for useCapture has been set to false because: "If it is true,
	the event listener should not fire for any element the event listener is
	registered on." */

// void addEvent(HTMLElement elm, string eventName, function eventHandler, bool useCapture)
// Registers an event handler for a event type to an element.
function addEvent(obj,evType,fn,useCapture){
	if(obj.addEventListener){
		if(isNaN(useCapture)) useCapture=false;
		obj.addEventListener(evType,fn,useCapture);
		return true;
	}else if(obj.attachEvent){
		var r=obj.attachEvent("on"+evType,fn);
		return r;
	}else{
		alert("Handler could not be attached.");
		return false;
	}
}

// void removeEvent(HTMLElement elm, string eventName, function eventHandler, bool useCapture)
// Unregisters the event handler for a event type from an element.
function removeEvent(obj,evType,fn,useCapture){
	if(isNaN(useCapture)) useCapture=false;
	if(obj.removeEventListener){
		obj.removeEventListener(evType,fn,useCapture);
		return true;
	}else if (obj.detachEvent){
		var r=obj.detachEvent("on"+evType,fn);
		return r;
	}else{
		alert("Handler could not be removed.");
	}
}

// Returns the source element of the event.
function getEventSourceElement(e){
	if(window.event){
		return window.event.srcElement;
	}else if(e.target){
		return e.target;
	}else{
		return;
	}
}