// Adds an event to an object.
function AddEvent(Obj, Event, Callback)
{
	if (!document.getElementById || !Obj) return;

	if (Obj.addEventListener)
	{
		// Standards compliant browsers.
		Obj.addEventListener(Event, Callback, false);
	}
	else
	{
		// IE-based.
		Obj.attachEvent('on' + Event, Callback);
	}
}

function GetEventSrc(Evt)
{
	if (!Evt) return;
	if (Evt.srcElement) return Evt.srcElement;
	else if (Evt.currentTarget) return Evt.currentTarget;
	return false;
}

function GetEventKey(Evt)
{
	if (!Evt) return;
	if (Evt.which) return Evt.which;
	else if (Evt.keyCode) return Evt.keyCode;
	return false;
}

function EventEx(evt)
{
	if (window.event && !evt)
	{
		evt = window.event;
	}

	this.Event = evt;
	this.Source = GetEventSrc(evt);
	this.Key = GetEventKey(evt);

	this.X = 0;
	this.Y = 0;

	if (evt.pageX || evt.pageY)
	{
		this.X = evt.pageX;
		this.Y = evt.pageY;
	}
	else if (evt.clientX || evt.clientY)
	{
		this.X = evt.clientX + document.body.scrollLeft;
		this.Y = evt.clientY + document.body.scrollTop;
	}
}