﻿function addEvent(elm, evType, fn, useCapture)
// cross-browser event handling for IE5+, NS6+ and Mozilla/Gecko
// By Scott Andrew
{
	
	//Gecko-based browsers
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	} else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	} else {
		elm['on' + evType] = fn;
	}
}//addEvent

function getEventTarget(e)
{
	var evt = getEvent(e);
	return evt.srcElement ? evt.srcElement : evt.target;
}//getEventTarget

function getEvent(e)
{
	return window.event ? window.event : e;
}//getEvent

function traceUp(elm, tagName)
{
	tagName = tagName.toUpperCase();
	while(elm.tagName != tagName
			&& elm.tagName != 'BODY')
		elm = elm.parentNode;
	return elm;
}//traceUp

function stopPropagation(e)
{
	if(e.stopPropagation)
		e.stopPropagation();
	else	e.cancelBubble = false;
}//stopPropagation

function preventDefault(e)
{
	if(e.preventDefault)
	e.preventDefault();
	else	e.returnValue = false;
}//preventDefault
