function getElementsByClassName(oElm, strTagName, strClassName){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.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)
}


var hover_timer = null;
var hover_delay = 250; //time to delay before highlight navi, make sure "slice" wont change highlight menu
var hover_out_delay = 5000; //time to delay hide after mouse-out

function navHover(){
	if (!document.getElementById('footer')){
		setTimeout(navHover, 10);
		return;
	}
	var alllis = document.getElementById('navi').getElementsByTagName('LI');
	var lis = [];
	var active_li = null;//alllis[0];

	//find which menu should be highlighted
	function getLink(rawlink){
		if (rawlink.indexOf("?") > 0){
			rawlink = rawlink.substring(0, rawlink.indexOf("?"));
		}
		if (rawlink.indexOf("//") > 0){
			rawlink = rawlink.substring(rawlink.indexOf("//")+2);
		}
		if (rawlink.indexOf("/") > 0){
			rawlink = rawlink.substring(rawlink.indexOf("/"));
		}
		
		if (rawlink.indexOf("/index.php") >= 0){
			rawlink = rawlink.replace("/index.php", "/");
		}
		
		if (rawlink.indexOf(".php") >= 0){
			rawlink = rawlink.replace(".php", "");
		}
		
		if (rawlink.indexOf("/", 1) != rawlink.lastIndexOf("/")){
		    rawlink = rawlink.substring(0, rawlink.lastIndexOf("/"));
		}

		return rawlink;
	}
	function getCurrentLi(){
		var loc = getLink(location.toString());
		if (loc){
			for(var i=0; i< alllis.length; i++){
				var li_link = getLink(alllis[i].getElementsByTagName("A")[0].href);
				if (loc == li_link){
					if (alllis[i].parentNode.id != "navi"){
						active_li = alllis[i].parentNode.parentNode;
						alllis[i].className = "currentsub";
						break;
					}else{
						active_li = alllis[i];
					}
				}
			}
		}
		active_navi(active_li);
		active_subbarnavi();
	}
	
	function active_subbarnavi(){
	    if (!document.getElementById("sidebar")){
	        return;
	    }
	    var sidebarnavi = document.getElementById("sidebar").getElementsByTagName("li");
	    for (var i = 0; i < sidebarnavi.length; i++){
	        var sidebarnavi_links = sidebarnavi[i].getElementsByTagName("a");
	        if (sidebarnavi_links.length == 1 && sidebarnavi_links[0].href == location.toString()){
	            sidebarnavi[i].className = "selected";
	        }
	    }
	}

	function init(){
		if (!document.getElementById('subnaviin')){
			setTimeout(init, 100);
			return;
		}
		for(var i=0; i<alllis.length; i++){
			if (alllis[i].parentNode.id != "navi"){
				continue;
			}
			lis.push(alllis[i]);
			alllis[i].onmouseover = function(){
				window.clearTimeout(hover_timer);
				var that = this;
				hover_timer = window.setTimeout(function(){active_navi(that);}, hover_delay);
			};
			alllis[i].onmouseout = function(){
				window.clearTimeout(hover_timer);
				var that = this;
				hover_timer = window.setTimeout(function(){deactive_navi();}, hover_out_delay);
			};
			document.getElementById('subnaviin').onmouseover = function(){
				window.clearTimeout(hover_timer);
			}
			document.getElementById('subnaviin').onmouseout = function(){
				window.clearTimeout(hover_timer);
				hover_timer = window.setTimeout(function(){deactive_navi();}, hover_out_delay);
			}
		}

		getCurrentLi();
	}

	function active_navi(that){
		//hide all, if no "that" passed
		if (!that){
			document.getElementById('subnavi').style.visibility = "hidden";
		}

		for (var i = 0; i < lis.length; i++){
			if (lis[i] == that){
				lis[i].className = "current";
				//copy sub list to navi sub
				var uls = lis[i].getElementsByTagName('UL');
				if (uls.length > 0){
					jQuery('#subnavi').html(uls[0].innerHTML);
					document.getElementById('subnavi').style.visibility = "visible";
				}else{
					jQuery('#subnavi').html('<li><a href="#">null</a></li>');
					document.getElementById('subnavi').style.visibility = "hidden";
				}
			}else{
				lis[i].className = "";
			}
		}
	}

	function deactive_navi(){
		/*for (var i = 0; i < lis.length; i++){
		lis[i].className = "";
		}*/
		active_navi(active_li);
	}

	init();
}

navHover();