/**
 * Adds a class to an object.
 */
function addClass(object, className) {
	// make sure the class isn't present
	removeClass(object, className);

	// add the class
	object.className += (object.className.length > 0 ? " " : "") + className;
}

/**
 * Removes a class from an object.
 */
function removeClass(object, className) {
	// remove the class (if it exists)
	object.className = object.className.replace(new RegExp("^" + className + "\\b\\s*|\\s*\\b" + 
className + "\\b", 'g'), "");
}

/**
 * Returns true if the object has the class className, otherwise false.
 */
function hasClass(object, className) {
	return (new RegExp("\\b" + className + "\\b")).test(object.className);
}

/**
 * Changes the class of an object by its id.
 */
function setClassById(id, className) {
	document.getElementById(id).className = className;
}

/**
 * Changes the class of multiple objects by their common name.
 */
function setClassByName(name, className) {
	var elements = document.getElementsByName(name);
	
	if (elements) {
		for (var i = 0; i < elements.length; i++) {
			elements[i].className = className;
		}
	}
}

/**
 * Adds a class by id.
 */
function addClassById(id, className) {
	addClass(document.getElementById(id), className);
}

/**
 * Adds a class by name.
 */
function addClassByName(name, className) {
	var elements = document.getElementsByName(name);
	
	if (elements) {
		for (var i = 0; i < elements.length; i++) {
			addClass(elements[i], classname);
		}
	}
}

/**
 * Removes a class by id.
 */
function removeClassById(id, className) {
	removeClass(document.getElementById(id), className);
}

/**
 * Removes a class by name.
 */
function removeClassByName(name, className) {
	var elements = document.getElementsByName(name);
	
	if (elements) {
		for (var i = 0; i < elements.length; i++) {
			removeClass(elements[i], classname);
		}
	}
}


