/*
SDSDM - Simple Dynamic Self Defined Menu

script created by WarBeast, the script may be changed/used/whatever you want , while this comment stays here.
every part of the tree have to have ^ so that the function would recognize it from other divs
every level is saperated with _ , you can name each level however you want , just saperate then with _
see example to be sure.
*/
var t;
OrColor = '#3366cc';
bColor = '#6699ee';
offsetX = -100;
offsetY = 2;
	function SetTreeOpacity(name , opa)
	{
		Base = GetBaseLevel(name);
		tree = document.getElementsByTagName("div"); // find all the divs properties
		
		for (i = 0; tree[i] ; i++)
			if ((tree[i].id.indexOf('^') == 0) && (tree[i].id != Base))
				tree[i].style.opacity=opa; // if the name doesn't have ^ at the begining, and isn't the base, continue	
	}
	function RaiseOpacity(name)
	{
		var obj = document.getElementById(name);
		curr = obj.style.opacity;

		for (i = curr ; i < 100 ; i++)
		{
			obj.style.opacity = i/10;
			setInterval('',200);
		}

		return curr;
	}
	function GetLastLevel(name)
	{
		var loc , level;
		loc = name.lastIndexOf("_"); //go to the current level
		if (loc == -1)	//if its the menu itself there won't be '_'
			loc=name.length-1;
			
		level = name.substring(0,loc); //the level is all the string to the last _
		return level;
	}
	function GetBaseLevel(name)
	{
		var loc , level;
		loc = name.indexOf("_"); //go to the first level
		if (loc == -1)	//if its the menu itself there won't be '_'
			return name; // return the name , its the base.
			
		level = name.substring(0,loc); //the level is all the string to the last _
		return level;
	}
	function CloseAllLevels(name) //function closes all the menu from the same level
	{
		Base = GetBaseLevel(name);
		tree = document.getElementsByTagName("div"); // find all the divs properties
		
		for (i = 0; tree[i] ; i++)
			if ((tree[i].id.indexOf('^') == 0) && (tree[i].id != Base))
				tree[i].style.visibility='hidden'; // if the name doesn't have ^ at the begining, and isn't the base, continue	
	}
	function CloseAllParentLevels(name) //for iframes
	{
		Base = GetBaseLevel(name);
		tree = parent.document.getElementsByTagName("div");

		for (i = 0; tree[i] ; i++)
			if ((tree[i].id.indexOf('^') == 0) && (tree[i].id != Base))
				tree[i].style.visibility='hidden';		
	}
	function OpenPathTo(name)
	{
		Base = GetBaseLevel(name); //find the base level
		level = name; //current level working on
		while(Base != level)
		{
			document.getElementById(level).style.visibility='visible'; //set current cell in the level visible

			level = GetLastLevel(level); //get the last level
		}
	}
	function RealOpenItem(name)
	{
		CloseAllLevels(name);
		OpenPathTo(name);
	}
	function OpenItem(name)
	{
		clearTimeout(t);
		t = setTimeout('RealOpenItem("'+name+'")',250);	
	}
	function OpenItemInterval(name , interval)
	{
		clearTimeout(t);
		t = setTimeout('RealOpenItem("'+name+'")',interval);	
	}
	function FrameGoToSrc(frame,loc)
	{
		var frames;
		frames=document.getElementsByTagName('iframe');

		frames[frame].src=loc;
	}
	function ChangeColOn(self)
	{
		self.style.backgroundColor=bColor;
	}
	function ChangeColOff(self)
	{	
		self.style.backgroundColor=OrColor;
	}
	function findPosX(obj)
	{
		var curleft = 0;
		if (obj.offsetParent)
		{
			while (obj.offsetParent)
			{
				curleft += obj.offsetLeft
				obj = obj.offsetParent;
			}
		}
		else if (obj.x)
			curleft += obj.x;
	return curleft;
	}
	function findPosY(obj)
	{
		var curtop = 0;
		if (obj.offsetParent)
		{
			while (obj.offsetParent)
			{
				curtop += obj.offsetTop
				obj = obj.offsetParent;
			}
		}
		else if (obj.y)
			curtop += obj.y;
	return curtop;
	}
	function DoOnOver(toOpen,self)
	{
		OpenItem(toOpen);
		ChangeColOn(self);
		document.getElementById(toOpen).style.left = findPosX(self)+offsetX;
		document.getElementById(toOpen).style.top = findPosY(self)+offsetY;
	}
	function DoOnOut(tree_base,self)
	{
		ChangeColOff(self);		
	}
