// JavaScript Document
var EventUtil = new Object();

EventUtil.addEventHandler = function (oTarget, sEventType, fnHandler) {
	if (oTarget.addEventListener) { //for DOM-compliant browsers
		oTarget.addEventListener(sEventType, fnHandler, false);
	} else if (oTarget.attachEvent) { //for IE
		oTarget.attachEvent("on" + sEventType, fnHandler);
	} else { //for all others
		oTarget["on" + sEventType] = fnHandler;
	}
};

EventUtil.removeEventHandler = function (oTarget, sEventType, fnHandler) {
	if (oTarget.removeEventListener) { //for DOM-compliant browsers
		oTarget.removeEventListener(sEventType, fnHandler, false);
	} else if (oTarget.detachEvent) { //for IE
		oTarget.detachEvent("on" + sEventType, fnHandler);
	} else { //for all others
		oTarget["on" + sEventType] = null;
	}
};

function addEvent(obj,type,fn) {
	if (obj.addEventListener) {
		obj.addEventListener(type,fn,false);
	} else if (obj.attachEvent) {
		obj.attachEvent("on"+type,fn);
	} else {
		obj["on"+type] = null;
	}
}

function formatEvent(evt) {
	if (isIE && isWin) {
		evt.charCode = (evt.type=="keypress")?evt.keyCode:0;
		evt.eventPhase = 2;
		evt.isChar = (evt.charCode > 0);
		evt.pageX = evt.clientX + document.body.scrollLeft;
		evt.pageY = evt.clientY + document.body.scrollTop;
		/*
		oEvent.preventDefault = function () {
			this.returnvalue = false;
		};
		*/
		if (evt.type == "mouseout") {
			evt.relatedTarget = evt.toElement;
		} else if (evt.type == "mouseover") {
			evt.relatedTarget = evt.fromElement;
		}
		/*
		oEvent.stopPropagation = function () {
			this.cancelBubble = true;
		};
		*/
		evt.stopPropagation = function() {
			this.cancelBubble = true;
		};
		evt.target = evt.srcElement;
		evt.time = (new Date).getTime();
	}
	return evt;
}

function getEvent() {
	if (window.event) {
		return formatEvent(window.event);
	} else {
		return getEvent.caller.arguments[0];
	}
}

function removeEvent(obj,type,fn) {
	if (obj.removeEventListener) {
		obj.removeEventListener(type,fn,false);
	} else if (obj.detachEvent) {
		obj.detachEvent("on"+type,fn);
	} else {
		obj["on"+type] = null;
	}
}
