function DOM(id) {
	element = false;
	if (document.getElementById) element = document.getElementById(id);
	if (document.all)            element = document.all[id];
	if (element) {
		var left = 0;
		var top = 0;
		var obj = element;
		if (obj.offsetParent) {
			do {
				left += obj.offsetLeft;
				top += obj.offsetTop;
			} while (obj = obj.offsetParent);
		}
		element.pos = {0:top,1:left};
		element.show = function() {
			this.style.visibility = 'visible';
		};
		element.hide = function() {
			this.style.visibility = 'hidden';
		};
		element.dump = function() {
			var child = null;
			var output = '';
			for (var item in this) {
				try	{ child = this[item]; }
				catch (e) {	child = '<Unable to Evaluate>'; }
				if (typeof child == 'object')
					output += '';
				else
					output += item + ': ' + child + '\n';
			}
			return output;	
		};
	}
	return element;
}

function get_object_size(id) {
	var width = 0;
	var height = 0;
	object = DOM(id);
	width = object.offsetWidth;
	height = object.offsetHeight;
	return {width:width,height:height};
}

function find_object_position(id) {
	var left = 0;
	var top = 0;
	object = DOM(id);
	if (object.offsetParent) {
		do {
			left += object.offsetLeft;
			top += object.offsetTop;
		} while (object = object.offsetParent);
	}
	return {left:left,top:top};
}

function get_window_size() {
	var width = 0;
	var height = 0;
	if (window.innerWidth || window.innerHeight) {
    	width = window.innerWidth;
  		height = window.innerHeight;
	}
	else {
    	width = document.body.offsetWidth;
  		height = document.body.offsetHeight;
	}
	return {width:width,height:height};
}

function get_mouse_xy(e) {
	var evt = e || window.event;
	x = parseInt(evt.clientX);
	y = parseInt(evt.clientY);
	return {x:x,y:y}
}

function event_add(object,event,fn) {
	if (object.addEventListener)
		object.addEventListener(event,fn,false);
	else if (object.attachEvent)
		object.attachEvent('on'+event,fn);
}

function event_remove(object,event,fn) {
	if (object.removeEventListener)
		object.removeEventListener(event,fn,false);
	else if (object.detachEvent)
		object.detachEvent('on'+event,fn);
}

