/****************************************************************************
	Client Script
	Zac Hester
	2009-02-09
****************************************************************************/


/**
 * add_listener
 * Assigns DOM events even for browsers with a loose definition of "DOM."
 *
 * @param elem The DOM element to attach an event
 * @param type The even type
 * @param callback The callback function
 */
function add_listener(elem, type, callback) {
	if(elem.addEventListener) {
		elem.addEventListener(type, callback, false);
	}
	else if(elem.attachEvent) {
		elem['e'+type+callback] = callback;
		elem[type+callback]=function(){elem['e'+type+callback](window.event);}
		elem.attachEvent('on'+type, elem[type+callback]);
	}
}

/*
//Example event catching:
function callback_function(e) {
	if(!e.target) { e.target = e.srcElement; }
	if(e.target.nodeType == 3) { e.target = e.target.parentNode; }
}
*/


/**
 * String.trim
 * Trims all whitespace from either side of a string.
 *
 * @return Trimmed string
 */
if(!String.prototype.trim) {
	String.prototype.trim = function() {
		var str = this.replace(/^\s+/g, '');
		str = str.replace(/\s+$/g, '');
		return(str);
	}
}
