/* function to manage css classes

Note: this is to be used for presentation only. do not use to invoke behavior !!

*/

/* Replace class if either is present */
function classSwitch(element, class1, class2) {
	var classes = element.getAttribute("class");

	classes = !classExists(element, class1)?classes.replace(class2, class1):classes.replace(class1, class2);

	element.setAttribute("class", classes);
}

/* Check if class is assigned to element */
function classExists(element, class) {
	var classes = element.getAttribute("class")
	if (classes) {
		return new RegExp('\\b'+class+'\\b').test(classes);
	} else {
		return false;
	}
}

/* Add class to element */
function classAdd(element, class) {
	if(!classExists(element, class)){
		var classes = element.getAttribute("class");

		classes = classes?classes + ' ' + class:class;
		element.setAttribute("class", classes);
	}
	return true;
}

/* Remove class from element */
function classRemove(element, class) {

	var classes = element.className;
	if (classes) {
		var classFound = classes.match(' '+class)?' '+class:class;
		var newClasses = classes.replace(classFound, '');
		element.setAttribute("class", newClasses);
	}
	return true;
}

/* Find child elements by tag and class name */
function getElementsByTagAndClass(element, tag_name, class_name) {
	if (!element.getElementsByTagName) return false;
	var elements = element.getElementsByTagName(tag_name);
	var found = new Array();
	for (var i=0; i < elements.length ; i++) {
		if (classExists(elements[i], class_name)) {
			found.push(elements[i]);
		}
	}
	return found;
}


/* Toggle "hidden" css class on element */
function toggleHidden(element) {
	if (classExists(element, "hidden")) {
		classRemove(element, "hidden");
	} else {
		classAdd(element, "hidden");
	}
}
