var dom = new Object();
dom.event = new Object();

//:::: Add Event Listener
dom.event.addEventListener = function (elm, type, func, useCapture) {
	if (!elm) {
		return false;
	}
	if (!useCapture) {
		useCapture = false;
	}
	if (elm.addEventListener) {
		elm.addEventListener (type, func, false);
	}
	else if (elm.attachEvent) {
		elm.attachEvent ('on'+type, func);
	}
	else {
		return false;
	}
	return true;
}

//:::: Remove Event Listener
dom.event.removeEventListener = function (elm, type, func, useCapture) {
	if (!elm) {
		return false;
	}
	if (!useCapture) {
		useCapture = false;
	}
	if (elm.removeEventListener) {
		box.removeEventListener (type, func, false);
	}
	else if (elm.detachEvent) {
		elm.detachEvent ('on'+type, func);
	}
	else {
		return false;
	}
	return true;
}

//:::: Get Target Property
dom.event.target = function (evt) {
	if (evt && evt.target) {
		if (evt.target.nodeType == 3) {
			return evt.target.parentNode;
		}
		else {
			return evt.target;
		}
	}
	else if (window.event && window.event.srcElement) {
		return window.event.srcElement;
	}
	else {
		return null;
	}
}

//:::: Cancel Default Action
dom.event.preventDefault = function (evt) {
	if (evt && evt.preventDefault) {
		evt.preventDefault();
		evt.currentTarget['on'+evt.type] = function () {
			return false;
		}
	}
	else if (window.event) {
		window.event.returnValue = false;
	}
}

//:::: Cancel Bubbling
dom.event.stopPropagation = function (evt) {
	if (evt && evt.stopPropagation) {
		evt.stopPropagation();
	}
	else if (window.event) {
		window.event.cancelBubble = true;
	}
}
