function $() {
	var list = [];

	for (var i = 0, len = arguments.length, el; i < len; i++) {
		el = arguments[i];
		if (typeof(el) == 'string') el = document.getElementById(el);
		if (len == 1) return el;
		list.push(el);
	}

	return list;
}

/* EVENT FUNCTIONS */
function addEvent(el, evt, handler) {
	if (!el) return;
	if (el.addEventListener) {
		el.addEventListener(evt, handler, false);
	} else if (el.attachEvent) {
		el.detachEvent('on' + evt, handler);
		el.attachEvent('on' + evt, handler);
	} else {
		el['on' + evt] = handler;
	}
}

function delEvent(el, evt, handler) {
	if (!el) return;
	if (el.removeEventListener) {
		el.removeEventListener(evt, handler, false);
	} else if (el.detachEvent) {
		el.detachEvent('on' + evt, handler);
	} else {
		el['on' + evt] = null;
	}
}

function haltEvent(evt) {
	if (evt) {
		evt.returnValue = false;
		if (evt.preventDefault) evt.preventDefault();
	}
}
/* END OF EVENT FUNCTIONS */


/* CLASS SETTING FUNCTIONS */
function hasClass(el, name) {
	return el && new RegExp('(?:^|\\s)' + name + '(?:\\s|$)').test(el.className);
}
function addClass(el, name) {
	if (!hasClass(el, name)) el.className += (el.className ? ' ' : '') + name;
}
function delClass(el, name) {
	if (hasClass(el, name)) el.className = el.className.replace(new RegExp('^(?:' + name + '(?:\\s+|$))+|\\s+' + name + '\\s*(?=\\s|$)', 'g'), '');
}
function setClass(el, name, add) {
	if (add) {
		addClass(el, name);
	} else {
		delClass(el, name);
	}
}
/* END OF CLASS SETTING FUNCTIONS */

if (document.documentElement) document.documentElement.className += ' js';

