
function getElementsByClass(searchClass,node,tag){
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';

	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function addListener(element, type, expression, bubbling){

	bubbling = bubbling || false;
	if(window.addEventListener) {
		element.addEventListener(type, expression, bubbling);
		return true;
	} else if(window.attachEvent) {
		element.attachEvent('on' + type, expression);
		return true;
	} else return false;
}