if ( !Array.prototype.contains ) {
	// add contains function to array
	Array.prototype.contains = function( arrElement ) {
		for ( var i=this.length-1; i>=0; i-- ) {
			if ( this[i] == arrElement ) {
				return true;
			}
		}
		
		return false;
	}
}

/** 
 * Checks if a given obj contains a specific className
 */
function CCUHasClass( obj, className ) {
	var objClasses = obj.className.split( " " );
	if ( Array.contains ) {
    	return objClasses.contains( className );
    } else {
    	var i;
    	for ( i=0; i<objClasses.length; i++ ) {
    		if ( objClasses[i] == className ) {
    			return true;
    		}
    	}
    }	
    return false;
}

/**
 * Adds a className to a given object
 */
function CCUAddClass( obj, newClassName ) {
	if ( !CCUHasClass( obj, newClassName ) ) {
		obj.className = obj.className + " " + newClassName;
	}
}

/**
 * Removes a className from a given object
 */
function CCURemoveClass( obj, newClassName ) {
	if ( CCUHasClass( obj, newClassName ) ) {
		var objClasses = obj.className.split( " " );
		for ( i=objClasses.length-1; i>=0; i-- ) {
			if ( objClasses[i] == newClassName ) {
				objClasses.splice( i, 1 );
			}
		}
		obj.className = objClasses.join( " " );
	}
}

/**
 * Finds all direct children of a given object containing
 * a specific className
 */
function CCUElementsByClassName( obj, className ) {
    var classChildren = new Array();
    
    var allChildren = obj.getElementsByTagName( "*" );
    
    for ( var i=0; i<allChildren.length; i++ ) {
        if ( allChildren[i].className && CCUHasClass( allChildren[i], className ) ) {
            classChildren[ classChildren.length ] = allChildren[i];
        }
    }
    
    return classChildren;
}

function CCUParentWithClass( obj, className ) {
	var searchObj = (obj.length && obj.length > 0) ? obj[0].parentNode : obj.parentNode;
	
	while ( searchObj && !CCUHasClass( searchObj, className ) ) {
		searchObj = searchObj.parentNode;
	}
	
	return searchObj;
}

/**
 * Show and Hide layers
 */
function showLayer(layerName)
{
    if (document.getElementById) // Netscape 6 and IE 5+
    {
        var targetElement = document.getElementById(layerName);
        targetElement.style.visibility = 'visible';
    }
}


function hideLayer(layerName)
{
    if (document.getElementById) 
    {
        var targetElement = document.getElementById(layerName);
        targetElement.style.visibility = 'hidden';
    }
}
