var Event = {
	/**
	 * Adds a DOM event directly without the caching, cleanup, scope adj, etc
	 *
	 * @method add
	 * @param {HTMLElement} el      the element to bind the handler to
	 * @param {string}      sType   the type of event handler
	 * @param {function}    fn      the callback to invoke
	 * @param {boolen}      capture capture or bubble phase
	 * @static
	 * @public
	 */
	add: function () {
		if (window.addEventListener) {
			return function(el, sType, fn, capture) {
				el.addEventListener(sType, fn, (capture));
			};
		} else if (window.attachEvent) {
			return function(el, sType, fn, capture) {
				el.attachEvent("on" + sType, fn);
			};
		} else {
			return function() {};
		}
	}(),

	/**
	 * Basic remove listener
	 *
	 * @method remove
	 * @param {HTMLElement} el      the element to bind the handler to
	 * @param {string}      sType   the type of event handler
	 * @param {function}    fn      the callback to invoke
	 * @param {boolen}      capture capture or bubble phase
	 * @static
	 * @public
	 */
	remove: function() {
		if (window.removeEventListener) {
			return function (el, sType, fn, capture) {
				el.removeEventListener(sType, fn, (capture));
			};
		} else if (window.detachEvent) {
			return function (el, sType, fn) {
				el.detachEvent("on" + sType, fn);
			};
		} else {
			return function() {};
		}
	}(),

	stopPropagation: function(ev) {
		if (ev.stopPropagation) {
			ev.stopPropagation();
		} else {
			ev.cancelBubble = true;
		}
	}

}
