// JavaScript Document

var css = {
	getElementsByClass : function( node, searchClass, tag ) {
		var classElements = new Array();
		var els = node.getElementsByTagName( tag );
		var pattern = new RegExp( "(^|\\s)" + searchClass + "(\\s|$)" );

		for(var i=0, j=0; i<els.length; i++)
		{
			if( this.elementHasClass(els[i], searchClass) )
			{
				classElements[j] = els[i];
				j++;
			}
		}
		return classElements;
	},

	privateGetClassArray: function( el ) {
		return el.className.split(' '); 
	},

	privateCreateClassString: function( classArray ) {
		return classArray.join(' ');
	},

	elementHasClass: function( el, classString ) {
		if ( !el ) return false;
		var re = new RegExp( '\\b' + classString + '\\b' );
		return el.className.match( re );
	},

	addClassToId: function( id, classString ) {
		this.addClassToElement( document.getElementById( id ), classString );
	},

	addClassToElement: function( el, classString ) {
		var classArray = this.privateGetClassArray( el );

		if (this.elementHasClass( el, classString) ) return;

		classArray.push( classString );

		el.className = this.privateCreateClassString( classArray );
	},

	removeClassFromId: function(id, classString ) {
		this.removeClassFromElement( document.getElementById( id ), classString );
	},

	removeClassFromElement: function(el, classString) {
		var classArray = this.privateGetClassArray( el );

		for (i in classArray)
		{
			if (classString == classArray[i])
			{
				classArray[i] = '';
				break;
			}
		}

		el.className = this.privateCreateClassString( classArray );
	},

	toggle: function(el, classString) {
		if (typeof(classString) == "undefined") classString = "hidden";

		if (this.elementHasClass(el, classString)) this.removeClassFromElement(el, classString);
		else this.addClassToElement(el, classString);
	}
}
