/**
 * rDom Lite - based on rDom v0.5
 *
 * Functions:
 * ~~~~~~~~~~
 * Object bindToObj(el,obj) - binds a function to an object
 * bool   addEvent(el,ev,f,bindObj[optional]) - adds an event handler to an element
 * bool   cssClassAdd(el,c)   - adds a css class
 * bool   cssClassCheck(el,c) - check whether a class is in an lement
 * bool   setInitHandler(obj) - Sets a handler for the onload event of window
 * String trim(s) - not dom related but used to trim a string
 * stopEvent (e)	- stops an event bubbling
 * $			 - an alias to document.getElementById()
 */
var rDomLite = {	
	bindToObj : function (f, obj) {
		return function() {f.apply(obj, arguments)};
	},
	
	addEvent : function (el,ev,f,bindObj)
	{
		if (typeof el == 'string') {
			el = document.getElementById(el);
		}
		if(el === null || typeof el == 'undefined') return false;
		var func = f;
		
		if (typeof bindObj != 'undefined' 
		    && typeof func.apply == 'function') {
				func = this.bindToObj(f, bindObj);
		}

		if (el.attachEvent) {
			el.attachEvent('on' + ev, func);
		} else if (el.addEventListener) {
			el.addEventListener(ev, func, false);
		} else {
		
			el['on' + ev] = func;
		}
		return true;
	},
	
	
	trim : function (s)
	{
		while (s.substring(0,1) == ' ')
			s = s.substring(1, s.length - 1);
		while (s.substring(s.length - 1, 1) == ' ')
			s = s.substring(0, s.length - 1);
			
		return s;
	},
	
	cssClassAdd : function (el,c) {
		if (!el) return false;
		if (!this.cssClassCheck(el,c)) {
			if (el.className.length) 
				el.className += (' ' + c);
			else
				el.className = c;
		}
		return true;
	},
	
	cssClassCheck : function (el,c) {
		if (!el || !el.className) return;
		var regex = new RegExp("\\b" + c +"\\b");
		return regex.test(el.className);
	},
	
	setInitHandler : function(obj) {
		this.addEvent(window, 'load', obj.init, obj);
	},
		
	stopEvent : function (e)
	{
		if (!e && !window.event) return;
		if (!e) e = window.event;
		(e.stopPropagation) ? e.stopPropagation() : (e.stopBubble = true);
		(e.preventDefault) ? e.preventDefault() : e.returnValue = false;
	},
	
	$ : function(s) {
		return document.getElementById(s);
	}
}


