//Nested Side Bar Menu (Mar 20th, 09)
//By Dynamic Drive: http://www.dynamicdrive.com/style/

var menuids=["sidebarmenu1"] //Enter id(s) of each Side Bar Menu's main UL, separated by commas
function getY( oElement )
{
	var iReturnValue = 0;
	while( oElement != null ) {
		iReturnValue += oElement.offsetTop;
		oElement = oElement.offsetParent;
	}
	return iReturnValue;
}

function calcTop(elem) {
	elem.parentNode.parentNode.style.display="block"
	elem.style.display="block"
	//alert(elem.style.top);
	if(elem.style.top != '' && elem.style.top != '0px')
		return parseInt(elem.style.top);		
	var parentTop;
	if(elem.parentNode.parentNode.parentNode.parentNode.id == menuids[0])
		parentTop = calcTop(elem.parentNode.parentNode) + getY(elem.parentNode);
	else
		parentTop = getY(elem.parentNode);
	if(elem.offsetHeight < document.documentElement.clientHeight)
	{
		var scrollTop;
		if(typeof window.pageYOffset == 'undefined')
			scrollTop = document.documentElement.scrollTop;
		else
			scrollTop = window.pageYOffset;
		var h1 = elem.offsetHeight + parentTop - scrollTop;
		var h2 = document.documentElement.clientHeight;
		var h3 = document.documentElement.clientHeight + scrollTop - elem.offsetHeight - parentTop;
		//if(elem.parentNode.parentNode.parentNode.parentNode.id == menuids[0])
		//alert(elem.offsetHeight + ' + ' + parentTop + ' - ' + scrollTop + ' = ' + h1 + '\n' + h2 + '\n' + document.documentElement.clientHeight + ' + ' + scrollTop + ' - ' + elem.offsetHeight + ' = ' + h3);
		if(h1 > h2)	// если нижний край подменю не умещается в окне
			return h3;
		else
			return 0;
	}
	else
	{
		return 0;//elem.style.borderColor="#ff0000";//window.pageYOffset - parentTop;
	}
}
function initsidebarmenu(){
	for (var i=0; i<menuids.length; i++){
		var ultags=document.getElementById(menuids[i]).getElementsByTagName("ul")
		for (var t=0; t<ultags.length; t++){
			//alert(ultags[t].offsetHeight+'\n'+ultags[t].innerHTML);
			ultags[t].parentNode.getElementsByTagName("a")[0].className+=" subfolderstyle"
			if (ultags[t].parentNode.parentNode.id==menuids[i]) //if this is a first level submenu
				ultags[t].style.left=ultags[t].parentNode.offsetWidth+"px" //dynamically position first level submenus to be width of main menu item
			else //else if this is a sub level submenu (ul)
			{
				ultags[t].style.left=ultags[t-1].getElementsByTagName("a")[0].offsetWidth+"px" //position menu to the right of menu item that activated it
					//alert(ultags[t].offsetHeight + ' ' + ultags[t].style.top);
			}
			ultags[t].parentNode.onmouseover=function(){
				var childUL = this.getElementsByTagName("ul")[0];
				var top = calcTop(childUL);
				childUL.style.top = top + "px";
				childUL.style.zIndex = 100;
				if(this.parentNode.parentNode.parentNode.id==menuids[0]) {
					var topLevelParent = this.parentNode.parentNode.getElementsByTagName("a")[0];
					if(topLevelParent.style.backgroundColor != 'rgb(212, 212, 212)' && topLevelParent.style.backgroundColor.toLowerCase() != '#d4d4d4') {
						topLevelParent.style.backgroundColor="#E4E4E4";
						topLevelParent.style.MozBorderRadius="7px";
						topLevelParent.style.WebkitBorderRadius="7px";
					}
					var parent = this.getElementsByTagName("a")[0];
					if(parent.style.backgroundColor != 'rgb(212, 212, 212)' && parent.style.backgroundColor.toLowerCase() != '#d4d4d4') {
						parent.style.backgroundColor="#E4E4E4";
						parent.style.MozBorderRadius="7px";
						parent.style.WebkitBorderRadius="7px";
					}
				}
			}
			
			ultags[t].parentNode.onmouseout=function(){
				var childUL = this.getElementsByTagName("ul")[0];
				childUL.style.display="none"
				childUL.style.top = 0 + "px";
				if(this.parentNode.parentNode.parentNode.id==menuids[0])
				{
					var topLevelParent = this.parentNode.parentNode.getElementsByTagName("a")[0];
					if(topLevelParent.style.backgroundColor != 'rgb(212, 212, 212)' && topLevelParent.style.backgroundColor.toLowerCase() != '#d4d4d4') {
						topLevelParent.backgroundColor="white";
						topLevelParent.style.MozBorderRadius="0px";
						topLevelParent.style.WebkitBorderRadius="0px";
					}
					var parent = this.getElementsByTagName("a")[0];
					if(parent.style.backgroundColor != 'rgb(212, 212, 212)' && parent.style.backgroundColor.toLowerCase() != '#d4d4d4') {
						parent.style.backgroundColor="";
						parent.style.MozBorderRadius="";
						parent.style.WebkitBorderRadius="";
					}
				}
				if(this.parentNode.id==menuids[0])
				{
					var parent = this.getElementsByTagName("a")[0];
					if(parent.style.backgroundColor != 'rgb(212, 212, 212)' && parent.style.backgroundColor.toLowerCase() != '#d4d4d4') {
						parent.style.backgroundColor="";
						parent.style.MozBorderRadius="";
						parent.style.WebkitBorderRadius="";
					}
				}
			}
		}
		for (var t=ultags.length-1; t>-1; t--){ //loop through all sub menus again, and use "display:none" to hide menus (to prevent possible page scrollbars
			ultags[t].style.visibility="visible"
			ultags[t].style.display="none"
		}
	}
}

if (window.addEventListener)
	window.addEventListener("load", initsidebarmenu, false)
else if (window.attachEvent)
	window.attachEvent("onload", initsidebarmenu)


