var timeoutId = [];
var subMenus;

function showSubmenu(menuName){
	if(timeoutId[menuName]){
		clearTimeout(timeoutId[menuName]);
	}
	
	addClass(document.getElementById(menuName + "-link"), "focused");
	document.getElementById(menuName + "-menu").style.display = "block";
}

function keepSubmenu(menuName){
	if(timeoutId[menuName]){
		clearTimeout(timeoutId[menuName]);
	}
}

function hideSubmenu(menuName){
	timeoutId[menuName]=setTimeout('doHideSubmenu("' + menuName + '")', 200);
}

function doHideSubmenu(menuName) {
	document.getElementById(menuName + "-menu").style.display = "none";
	removeClass(document.getElementById(menuName + "-link"), "focused");
}

function hideAllMenus() {
	if(!subMenus) {
		subMenus = getElementsByClassName(document.getElementById("navigation"), "ul", "submenu");
	}
		
	for(var m = 0; m < subMenus.length; m++) {
		thisMenu = subMenus[m];
		doHideSubmenu(thisMenu.id.split("-")[0]);
	}
}

function removeClass(ele,cls){
	if(hasClass(ele,cls)){
		var reg=new RegExp('(\\s|^)'+cls+'(\\s|$)');
		ele.className = trimAll(ele.className.replace(reg,' '));
	}
}

function hasClass(ele,cls){
	if(ele.className){
		return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
	} else {
		return false;
	}
}

function addClass(ele,cls){
	if(!hasClass(ele,cls)) {
		ele.className += " " + cls;
		ele.className = trimAll(ele.className);
	}
}

function getElementsByClassName(oElm, strTagName, strClassName){
	var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }
    }
    return (arrReturnElements)
}

function trimAll(sString){
	while(sString.substring(0,1)==' ') { 
		sString=sString.substring(1,sString.length);
	}
	
	while (sString.substring(sString.length-1,sString.length)==' ') {
		sString=sString.substring(0,sString.length-1);
	}
	
	return sString;
}
