/**
 * Util
 *
 * Jordan Bach <jordanbach at gmail dot com>
 * http://www.jordansmusicstudio.com/dynamic-web-design/
 * September 2008
 *
 * A collection of common, cross-browser functions to make custom JavaScript
 * development a little easier.
 */

var Util;
if (typeof Util == "undefined") 
	Util = {};

/**
 * DOM
 */

Util.addClass = function(el, cname) {
	el.className = el.className + " " + cname;
}

Util.removeClass = function(el, cname) {
	el.className = el.className.replace(new RegExp(" ?" + cname), "");
}

/**
 * Event
 */

Util.addEventListener = function(eventType, el, func) {
	if (el.addEventListener)
		el.addEventListener(eventType, func, false);
	else if (el.attachEvent)
		el.attachEvent('on' + eventType, func);
}

Util.removeEventListener = function(eventType, el, func) {
	if (el.removeEventListener)
		el.removeEventListener(eventType, func, false);
	else if (el.detachEvent)
		el.detachEvent('on' + eventType, func);
}

/**
 * Other
 */

Util.getScrollPosition = function() {
	var pos = {x:0,y:0};
	pos.x = window.pageXOffset ? window.pageXOffset : document.documentElement.scrollLeft;
	pos.y = window.pageYOffset ? window.pageYOffset : document.documentElement.scrollTop;
	return pos;
}

Util.getElementDimensions = function(el) {
	var dim = {width:0, height:0};
	dim.width = el.offsetWidth;
	dim.height = el.offsetHeight;
	return dim;
}

Util.getElementPosition = function(el) {
	var pos = {x:0, y:0};
	pos.x = el.offsetLeft;
	pos.y = el.offsetTop;
	return pos;
}

Util.getMouseCoordinates = function(e) {
	var pos = { x:0, y:0 };
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) 	{
		pos.x = e.pageX;
		pos.y = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		pos.x = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		pos.y = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}
	return pos;
}

Util.getViewport = function() {
	var v = {width:0, height:0};
	if (window.innerHeight) {
		v.height = window.innerHeight;
		v.width = window.innerWidth;
	} else if (document.documentElement.clientHeight) {
		v.height = document.documentElement.clientHeight;
		v.width = document.documentElement.clientWidth;
	} else {
		v.height = document.body.clientHeight;
		v.width = document.body.clientWidth;
	}
	return v;
}
