var open_close = true 		// true or false, false = close the previous item_panel first when opening a new one 

var height = 30; 			// height of the menu headers
var iheight = 20; 			// height of the menu_items

var bgc = "ee7777" 			// item bg color 
var tc = "white" 			// item text color 

var over_bgc = "aa4444";	// item bgcolor while hover
var over_tc = "white";		// item text color while hover

var speed = 1; 				// time between changing heigth of the item_panel
var steps = 5; 				// changing heigth in steps of
var timerID = "";
var N = (document.all) ? 0 : 1;
var width = 170

var self_menu = new Array();

function write_menu()
{	smc = 0; // count the position of the self_menu
	document.write("<div style='position:absolute'>");
	mn = 0;
	mni = 1;
	start = -1;
	for(i=0;i<Link.length;i++)
	{	la = Link[i].split("|");
		if (la[0] == "0")	// TOP	--------------------------
			{	if(start == 0) 
					{	document.write("</div>");
						h = csmc * iheight;
						tmn = mn;
						self_menu[smc] = new Array(tmn,h,0,-2);
						smc++;
						mn--;
					}
				csmc = 0;
				document.write("<a href='"+la[2]+"'");
				if (la[3] != "") document.write(" target='" + la[3] + "' style='text-decoration:none'");
				document.write("><div class='menu' style='top:"+mn+";height:"+height+"' id='down"+smc+"' onclick='prepare("+smc+","+mni+")'>&nbsp;"+ la[1] + "</div></a>");
				self_menu[smc] = new Array(mn,height,0,mni);
				smc++;
				mni++;
				mn+=height;
				start = 1;
			}
		else			// SUB	--------------------------
			{	if(start == 1) 
				{	if(N)mn+=2;
					document.write("<div class='item_panel' id='down"+smc+"' style='top:"+mn+"'>");
					start = 0;
				}
				document.write("<a href='"+la[2]+"'");
				if (la[3] != "") document.write(" target='" + la[3] + "' style='text-decoration:none'");
				document.write("><div class='item' id='d"+i+"' style='height:"+iheight);
				if (N) document.write(";width:150");
				document.write("' onmouseover='color(this.id)' onmouseout='uncolor(this.id)'>&nbsp;&nbsp;&nbsp;&nbsp;"+ la[1] + "</div></a>");
				csmc++;
			}
	}
	if (start == 0) 
	{	document.write("</div>");
		h = csmc * iheight;
		tmn = mn + 5; 
		self_menu[smc] = new Array(tmn,h,0,-2);
		name = "down" + (self_menu.length-1);
		obj = document.getElementById(name);
		obj.style.borderBottomColor = "dddddd";
		obj.style.borderBottomWidth = 1;
		obj.style.borderBottomStyle = "solid";
	}
	document.write("</div>");
}


function color(obj)
{	document.getElementById(obj).style.backgroundColor = over_bgc;
	document.getElementById(obj).style.color = over_tc
}

function uncolor(obj)
{	document.getElementById(obj).style.backgroundColor = bgc;
	document.getElementById(obj).style.color = tc
}

var prevnr = -1;
var prevc = -1;
var vprepare = "stop";
var step = 0;

function prepare(nr,c)
{	if (open_close)
	{	if(prevnr == -1)		// Es wurde kein Menü geöffnet
			{	if(self_menu[nr+1][2] == 0)	{	prevnr = nr; prevc = c; }
				else						{	prevnr = -1; prevc = -1;}
				step = 0;
				pull_down(nr,c);
			}
		else
			{	if((step == 0) && (prevnr != -1))
					{	if (self_menu[nr+1][2] == 1)	{	step = 0;
															prevnr = -1;	
															prevc = -1;
															pull_down(nr,c);	}
						else							{	step = 1;
															pull_down(prevnr,prevc);
															prevnr = nr;
															prevc = c;			}
					}
				else	{	step = 0;
							pull_down(prevnr,prevc); }
			}
	}
	else {pull_down(nr,c);vprepare = "stop"}
}

function end_prepare()
{	if (step == 1) prepare();
	else {if (timerID != "") clearTimeout(timerID);}
}

function pull_down(nr,c)
{	if (timerID == "")
	{	to = self_menu[nr+1][1]
		begin = nr + 2;
		if (timerID != "") clearTimeout(timerID);

		if (self_menu[nr+1][2] == 0)
		{	self_menu[nr+1][2] = 1;
			if(nr == self_menu.length-2) {to++;}
			epull_down(begin,to,0);	}
		else
		{	to = 0;
			self_menu[nr+1][2] = 0;
			name = "down"+(nr+2);
			open_item = 0;
			for(i=0;i<nr;i++)
			{	if(self_menu[i][2] == 1) 
				{	open_item += self_menu[i][1];}
			}
			if (N == false) {open_item-= (c*1)};
			if (nr== self_menu.length-2) {val = self_menu[self_menu.length-1][1];to=-1;}
			else val = parseInt(document.getElementById(name).style.top) -(open_item)-(c*height);
			epull_up(begin,to,val);
		}
	}
}

function epull_down(nr,to,nowv)
	{
	if((nowv + steps) >= to) {vsteps = to - nowv;}
	else {vsteps = steps;}
	name = "down" + (nr-1);
	obj = document.getElementById(name).style.clip = "rect(0,"+width+","+(nowv+vsteps)+",0)";
	for (i=nr;i<self_menu.length;i++)
		{	name = "down" + i;
			obj = document.getElementById(name);
			obj.style.top = parseInt(obj.style.top)+vsteps;
		}
	nowv+=vsteps;
	if(nowv < to) timerID = setTimeout("epull_down("+nr+","+to+","+nowv+")",speed);
	else {timerID = "";if(startid != "stop") open_all(); else end_prepare()}
	}

function epull_up(nr,to,nowv)
	{
	if((nowv-steps) <= to) {vsteps = nowv-to;nowv = 0;if(to == -1) vstep = nowv}
	else {vsteps = steps;}
	name = "down" + (nr-1);
	obj = document.getElementById(name).style.clip = "rect(0,"+width+","+nowv+",0)";
	for (i=nr;i<self_menu.length;i++)
		{	name = "down" + i;
			obj = document.getElementById(name);
			obj.style.top = parseInt(obj.style.top)-vsteps;
		}
	nowv-=vsteps;
	if(nowv > to) timerID = setTimeout("epull_up("+nr+","+to+","+nowv+")",speed);
	else {timerID = "";end_prepare();}
	}

var lb = new Array();

function startup(nr)
	{
	write_menu();
	if(nr)
		{
		if(((nr.indexOf("|") != -1) || (nr.indexOf("all") != -1)) && (open_close == true)) alert("Error: the open_close property can only be used with a maximum of 1 default item.");
		if (nr == "all")
			{	j = 0;
				for(i=0;i<self_menu.length;i++)
					{	if(self_menu[i][3] != -2) {lb[j] = self_menu[i][3];j++;} }
			}
		else
			{	lb = nr.split("|"); }
		open_all();
		}
	else startid = "stop";
	}

//free JavaScripts on http://www.ScriptBreaker.com
var startid = 0;
var open_part = 0;

function open_all()
	{	startid = lb[open_part];
		for(i=0;i<self_menu.length;i++)
			{
			if(self_menu[i][3] == startid) 
				{	prevnr = i;
					prevc = startid;
					pull_down(i,startid);
					i==self_menu.length;
					open_part++;}
			}
		if(open_part == lb.length) startid = "stop";
	}
