function $() {
	var elements = new Array();
	
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		
		if (typeof element == "string") {
			if (document.getElementById) {
				element = document.getElementById(element);
			}
			else {			
				if (document.all) {
					element = document.all[element];
				}
				else {
					element = null;
				}
			}
		}
		
		if (arguments.length == 1) {
			return element;
		}
		
		elements.push(element);
	}
	
	return elements;
}

function addEvent(elem, type, func) {
	if (elem) {
		oldFunc = elem["on" + type];
		
		if (typeof oldFunc == "function") {
			elem["on" + type] = function(event) {
				if (oldFunc) {
					oldFunc(event);
				}
				
				func(event);
			}
		}
		else {
			elem["on" + type] = func;
		}
	}
}

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 (var i = 0, j = 0; i < elsLen; i++) {
		if (pattern.test(els[i].className)) {
			classElements[j] = els[i];
			j++;
		}
	}
	
	return classElements;
}

