function initNavBar() {

/*	var allMenuLinks = document.getElementsByClassName("menuLink");
	
	for (var i = 0; i < allMenuLinks.length; i++) {
		allMenuLinks[i].onclick = retFalse;
		allMenuLinks[i].onmouseover = toggleMenu;
	} */
	
	var allMenuItems = document.getElementsByTagName("div");

	for (var i = 0; i < allMenuItems.length; i++)
		if(allMenuItems[i].className.indexOf("menuItem") > -1) {
			allMenuItems[i].onmouseover = toggleMenu;
			if(allMenuItems[i].className.indexOf("noClick") > -1)
				allMenuItems[i].onclick = retFalse;
			else
				allMenuItems[i].onclick = goToRef;
			if(allMenuItems[i].className.indexOf("subMenu") > -1)
				drawArrow(allMenuItems[i]);
		}

}

function toggleMenu(e) {

	var	startMenu,
		stopMenu = fChild(this).href.lastIndexOf("."),
		startMenuRef,
		stopMenuRef,
		thisMenuName,
		thisElement,
		childrenElements;

	if(!e)
		var e = window.event;

	startMenu = fChild(this).href.lastIndexOf("/") + 1,

	stopMenu = fChild(this).href.substr(startMenu).lastIndexOf(".");

	if(stopMenu == -1)
		stopMenu = fChild(this).href.substr(startMenu).length;

	thisMenuName = fChild(this).href.substring(startMenu, startMenu + stopMenu);

	startMenuRef = fChild(this).href.substr(startMenu).lastIndexOf("#");
	if(startMenuRef > -1) {
		++startMenuRef;
		stopMenuRef = fChild(this).href.substr(startMenu).length;
		thisMenuName += fChild(this).href.substr(startMenu).substring(startMenuRef, startMenuRef + stopMenuRef);
	}

	thisElement = document.getElementById(thisMenuName);
	/*// Get the element with id within children
	childrenElements = this.parentNode.childNodes;
	for(var i = 0; i < childrenElements.length; i++) {
		if(childrenElements[i].id == thisMenuName)
			thisElement = childrenElements[i];
	}*/

	if(thisElement)
		thisElement.style.display = "block";

	this.menuName = thisMenuName;

	this.onmouseover = retFalse;

	this.onmouseout = toggleDivOff;

	toggleDivOn(this);

//	e.cancelBubble = true;

//	if(e.stopPropagation)
//		e.stopPropagation();

}

function toggleDivOn(div) {

	var	thisElement = null,
		firstChild = fChild(div),
		menuPos;

	if(div.menuName)
		thisElement = document.getElementById(div.menuName);

	if(div.className)
		div.className += " over";
	else
		div.className = "over";

	if(firstChild.nodeName == "A")
		if(firstChild.className)
			firstChild.className += " over";
		else
			firstChild.className = "over";

	if(thisElement) {
		var	menuPos,
			menuDimensions,
			viewportDimensions;
//alert("on " + div.menuName);
		menuPos = getPosition(thisElement);
		menuDimensions = getDimensions(thisElement);
		viewportDimensions = getViewportWindowDimensions();
		if(menuPos[1] + menuDimensions[1] - document.documentElement.scrollTop > viewportDimensions[1] - 20) {
			var	visibleLength,
				hiddenLength,
				newTop;
			visibleLength = viewportDimensions[1] - menuPos[1] + document.documentElement.scrollTop;
			hiddenLength = menuDimensions[1] - visibleLength;
			newTop = - hiddenLength - 20;
			thisElement.newTop = hiddenLength;
if(thisElement.parentNode.parentNode.id != "top") {
			newTop += thisElement.parentNode.parentNode.newTop + 20;
}
			thisElement.style.top = newTop + "px";

		}
		thisElement.style.visibility = "visible";
	}

}

function toggleDivOff(e) {

	var	thisElement = null,
		firstChild = fChild(this),
		regexp;

	regexp = new RegExp("\s*over");

	if(this.menuName)
		thisElement = document.getElementById(this.menuName);

	if(firstChild.nodeName == "A") {
		firstChild.className = firstChild.className.replace(regexp, "");
	}

	if(thisElement) {
		thisElement.style.visibility = "hidden";
		thisElement.style.top = "-1px";
	}

	this.className = this.className.replace(regexp, "");

	this.menuName = null;

	this.onmouseover = toggleMenu;

}

function retFalse(e) {
	if (!e)
		e = window.event;

	e.cancelBubble = true;
	if (e.stopPropagation)
		e.stopPropagation();

	return false;
}

function goToRef(e) {

	resetMenu(this);

	if(fChild(this).target == "blank" || fChild(this).target == "_blank")
		window.open(fChild(this).href);
	else
		window.location = fChild(this).href;

	if (!e)
		e = window.event;

	e.cancelBubble = true;
	if (e.stopPropagation)
		e.stopPropagation();

}

function resetMenu(div) {

	var	parent = div.parentNode,
		divAnchor = fChild(div),
		regexp;

	regexp = new RegExp("\s*over"); 

	div.className = div.className.replace(regexp, "");
	divAnchor.className = divAnchor.className.replace(regexp, "");

	if(div.className.indexOf("subMenu") > -1) {
		var subMenu = nSibling(divAnchor);
		subMenu.style.display = "none";
	}

	if(parent) {
		if(parent.className == "navBar" && parent.id != "top") {
//			parent.style.display = "none";
			parent.style.visibility = "hidden";
			parent = parent.parentNode;
		}
		if(parent.nodeType == 1 && parent.nodeName == "DIV" && parent.id != "top") {
			resetMenu(parent);
		}
	}
	
}

function drawArrow(div) {

	var	arrowDiv,
		arrowImg;

	arrowDiv = document.createElement("div");
	arrowDiv.className = "arrow";
	div.appendChild(arrowDiv);

}

function getPosition(obj){

	var	yPos= 0,
		xPos= 0;
	while(obj){
		xPos += obj.offsetLeft;
		yPos += obj.offsetTop;
		obj = obj.offsetParent;
	}

	return [xPos, yPos];

}


function getViewportWindowDimensions() {

	var	width,
		height;

	if(typeof window.innerWidth != "undefined" && typeof window.innerHeight != "undefined") {
		width = window.innerWidth;
		height = window.innerHeight;
	}
	else if(typeof document.documentElement != "undefined" && typeof document.documentElement.clientHeight != "undefined" && typeof document.documentElement.clientWidth != "undefined") {
		width = document.documentElement.clientWidth;
		height = document.documentElement.clientHeight;
	}
	else {
		width = document.body.clientWidth;
		height = document.body.clientHeight;
	}

	return [width, height];

}

function getDimensions(obj) {

	var	width,
		height,
		originalVisibility,
		originalPosition,
		originalDisplay;

	originalVisibility = obj.visibility;
	originalPosition = obj.position;
	originalDisplay = obj.display;

	obj.visibility = "visible";
	obj.position = "relative";
	obj.display = "block";


	if(typeof obj.innerWidth != "undefined" && typeof obj.innerHeight != "undefined") {
		width = obj.innerWidth;
		height = obj.innerHeight;
	}
	else if(typeof obj.clientWidth != "undefined" && typeof obj.clientHeight != "undefined") {
		width = obj.clientWidth;
		height = obj.clientHeight;
	}

	obj.visibility = originalVisibility ;
	obj.position = originalPosition;
	obj.display = originalDisplay;

	return [width, height];

}

