function $(element)
{
	if (typeof element == 'string') {
		element = document.getElementById(element);
	}
	
	return element;
}

function setCssOpacity(element, opacity)
{
	element.style.filter = 'alpha(opacity=' + Math.round(opacity * 100) + ')';
	element.style.opacity = opacity;
}

function getChildElementsByTagName(element, tagName)
{
	tagName = tagName.toUpperCase();
	
	var elements = new Array();
	for (var i = 0; i < element.childNodes.length; i++) {
		if (element.childNodes[i].nodeType == 1 && element.childNodes[i].tagName == tagName) {
			elements[elements.length] = element.childNodes[i];
		}
	}
	
	return elements;
}

function attachListener(element, eventType, eventHandler)
{
	if (element.addEventListener) {
		element.addEventListener(eventType, eventHandler, false);
	} else if (element.attachEvent) {
		element.attachEvent('on' + eventType, eventHandler);
	}
}

function addClassName(element, className)
{
	var classNames = element.className.split(/\s+/);
	for (var i = 0; i < classNames.length; i++) {
		if (classNames[i] == className) {
			return;
		}
	}
	
	classNames[classNames.length] = className;
	
	element.className = classNames.join(' ');
}

function removeClassName(element, className)
{
	var classNames = element.className.split(/\s+/);
	var newClassNames = [];
	for (var i = 0; i < classNames.length; i++) {
		if (classNames[i] != className) {
			newClassNames[newClassNames.length] = classNames[i];
		}
	}
	
	element.className = newClassNames.join(' ');
}

function elementHasClassName(element, className)
{
	var classNames = element.className.split(/\s+/);
	for (var i = 0; i < classNames.length; i++) {
		if (classNames[i] == className) {
			return true;
		}
	}
	return false;
}
