/* Add a class to a string */
String.prototype.addClass = function(theClass)
{
	if (this != "")
	{
		if (!this.classExists(theClass))
		{
			return this + " " + theClass;
		}
	}
	else
	{
		return theClass;
	}
	
	return this;
}


/* Check if a class exists in a string */
String.prototype.classExists = function(theClass)
{
	var regString = "(^| )" + theClass + "\W*";
	var regExpression = new RegExp(regString);
	
	if (regExpression.test(this))
	{
		return true;
	}
	
	return false;
}


/* Remove a class from a string */
String.prototype.removeClass = function(theClass)
{
	var regString = "(^| )" + theClass + "\W*";
	var regExpression = new RegExp(regString);
	
	return this.replace(regExpression, "");
}


/*==========================================
  String functions
==========================================*/
String.prototype.trim = function() {
    return this.replace( /^\s+|\s+$/, "" );
}


/*==========================================
  Class Manipulation
==========================================*/

function hasClassName( elem, className ) {
	if ( !elem.className ) return false;
	var pattern = new RegExp("(^|\\s)"+className+"(\\s|$)");
	return pattern.test(elem.className);
}

function removeClassName( elem, className ) {
	var pattern = new RegExp("(^|\\s)"+className+"(\\s|$)");
    elem.className = elem.className.replace( pattern, "" ).trim();
}

function addClassName( elem, className ) {
    removeClassName( elem, className );
    elem.className = ( elem.className + " " + className ).trim();
}


/*==========================================
  Add event
==========================================*/
  
function addEvent(elm, evType, fn, useCapture)
// addEvent
// cross-browser event handling for IE5+,  NS6 and Mozilla
// By Scott Andrew
{
  if (elm.addEventListener){
    elm.addEventListener(evType, fn, useCapture);
    return true;
  } else if (elm.attachEvent){
    var r = elm.attachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be added");
  }
}