var dom_supported = (document.getElementById && document.createElement && true);

function dom_removeClass(o_element, s_className){
	var a_classes = dom_getClasses(o_element);
	var i = array_find(s_className, a_classes);
	if(i >= 0){
		a_classes.splice(i, 1);
	}
	
	dom_setClasses(o_element, a_classes);
}

function dom_addClass(o_element, s_className){
	if(!dom_hasClass(o_element, s_className)){
		var a_classes = dom_getClasses(o_element);
		a_classes[a_classes.length] = s_className;
		dom_setClasses(o_element, a_classes);
	}
}

function dom_hasClass(o_element, s_className){
	var a_classes = dom_getClasses(o_element);
	var i = array_find(s_className, a_classes);
	return (i < 0)?false:true;
}

function dom_setClasses(o_element, a_classes){
	o_element.className = a_classes.join(" ");
}

function dom_getClasses(o_element){
	var s_classes = o_element.className;
	if(!s_classes.length)
		return new Array();
		
	// We split at every space
	return s_classes.split(/\s+/);
}

/*function dom_getChildNodesFromTagName(root, elementName, recursive){
	if(dom_supported){
		var nodes = new Array();
		for(var i=0; i<root.childNodes.length; i++){
			var elem = root.childNodes[i];
			if(elem.tagName && elem.tagName == elementName){
				nodes[nodes.length] = elem;
			}
			if(recursive){
				var subelems = dom_getChildNodesFromTagName(elem, elementName, true);
				if(subelems !== false) nodes = nodes.concat(subelems);
			}
		}
		return nodes;
	}
	return false;
}*/

function array_find(what, array){
	for(i in array){
		if(array[i] == what){
			return i;
		}
	}
	return -1;
}