﻿/*

	events
	event listener functions

*/
var Events = {

	Add: function(obj, type, fn, removeEvent)
	{
		if (removeEvent) Events.Remove(obj, type, fn); //make sure listener doesn't exist already
		
		//add the event listener
		if (obj.addEventListener)
			obj.addEventListener(type, fn, false);
		else if (obj.attachEvent) {
			obj["e"+type+fn] = fn;
			obj[type+fn] = function() {
				obj["e"+type+fn](window.event);
			};
			obj.attachEvent("on"+type, obj[type+fn]);
		}
	},
	
	Remove: function(obj, type, fn)
	{
		if (obj.removeEventListener)
			obj.removeEventListener(type, fn, false);
		else if (obj.detachEvent && obj[type+fn]) {
			obj.detachEvent("on"+type, obj[type+fn]);
			obj[type+fn] = null;
			obj["e"+type+fn] = null;
		}
	},
	
	GetElement: function(e)
	{
		var element;
		if (!e) var e = window.event;
		if (e.target) element = e.target;
		else if (e.srcElement) element = e.srcElement;
		if (element.nodeType == 3) // defeat Safari bug
			element = element.parentNode;
		
		return element;
	},
	
	GetKeyCode: function(e)
	{
		var keycode;
		if (!e) var e = window.event;
		if (e.keyCode) keycode = e.keyCode;
		else if (e.which) keycode = e.which;
		var character = String.fromCharCode(keycode);
		
		return keycode;
	},
	
	GetMouseX: function(e)
	{	
		if (!e) var e = window.event;
		if (e.pageX) 
			return e.pageX;
		else if (e.clientX)
			return e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
		else
			return 0;
	},
	
	GetMouseY: function(e)
	{	
		if (!e) var e = window.event;
		if (e.pageY) 
			return e.pageY;
		else if (e.clientY)
			return e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
		else
			return 0;
	}
	
};