
function Item(desc, llink, target)
{
	this.desc = desc;
	this.hreference = llink;
	this.target = target;

	this.parentid = 0;
	
	this.id = -1;
	this.obj = 0;
	this.nodeImg = 0;
	this.islastItem = 0;
 
	this.isOpen = true;
	this.children = new Array();
	this.childCount = 0;
 
	this.drawItem = drawItem;

	this.setState = setState;
	this.initialize = initItem;
	this.hide = hideItem;
	this.addItem = addItem;
	this.getNewIndex = getNewIndex;
	this.showItem = showItem;
	this.childHeight = childHeight;
	this.childItemCount = childItemCount;
	this.outputLink = outputFolderLink;
	this.blockStart = blockStart;
	this.blockEnd = blockEnd;
	this.colorItem = colorItem;
}

function initItem(level, lastItem, leftStuff, parentid)
{
	var j=0,i=0,nc,auxEv = "";

	nc = this.childCount;
	this.parentid = parentid;
	
	this.getNewIndex();

	// Folder
	if (nc > 0)
	{
		if (dabBV > 0 && level>0)
			auxEv = "<td width='1%'><a href='#' onClick=clickOnItem("+this.id+")>";
		else
			auxEv = "<td><a>";
	 
		if (level>0)
		{
			if (lastItem)
			{
				this.drawItem(leftStuff + auxEv + "<img name='nodeIcon" + this.id + "' id='nodeIcon" + this.id + "' src='images/menu/lastitem_minus.gif' width=16 height=16 border=0 align=absmiddle></a></td>",level);
				leftStuff = leftStuff + "<td width='1%'><img src='images/menu/leer.gif' width=16 height=16 align=absmiddle></td>";
				this.islastItem = 1;
			}
			else
			{
				this.drawItem(leftStuff + auxEv + "<img name='nodeIcon" + this.id + "' id='nodeIcon" + this.id + "' src='images/menu/cross_minus.gif' width=16 height=16 border=0 align=absmiddle></a></td>", level);
				leftStuff = leftStuff + "<td width='1%'><img src='images/menu/vertline.gif' width=16 height=16 align=absmiddle></td>";
				this.islastItem = 0;
			}
		}
		else
		{
			this.drawItem("", level);
		}
	
		if (nc > 0)
		{
			level = level + 1;
			for (i=0 ; i < this.childCount; i++)
			{
				if (i == this.childCount-1)
					this.children[i].initialize(level, 1, leftStuff, this.id);
				else
					this.children[i].initialize(level, 0, leftStuff, this.id);
			}
		}
	}
	// Item
	else
	{
		if (level>0)
		{
			if (lastItem)
			{
				this.drawItem(leftStuff + "<td width='1%'><img src='images/menu/lastitem.gif' width=16 height=16 align=absmiddle></td>", level);
				leftStuff = leftStuff + "<td width='1%'><img src='images/menu/leer.gif' width=16 height=16 align=absmiddle></td>";
			}
			else
			{
				this.drawItem(leftStuff + "<td width='1%'><img src='images/menu/cross.gif' width=16 height=16 align=absmiddle></td>", level);
				leftStuff = leftStuff + "<td width='1%'><img src='images/menu/vertline.gif' width=16 height=16 align=absmiddle></td>";
			}
		}
		else
			this.drawItem("", level);
	}
}

function hideItem()
{
	if (dabBV == 1 || dabBV == 3)
	{
		if (this.obj.style.display != "none")
			this.obj.style.display = "none";
	}
	else
	{
		if (this.obj.visibility != "hidden")
			this.obj.visibility = "hidden";
	}
	if (this.childCount)
		this.setState(0);
}
function addItem(item)
{
	this.children[this.childCount++] = item;
	return item;
}
function getNewIndex()
{
	this.id = nEntries;
	indexOfEntries[nEntries++] = this;
}
function setState(isOpen)
{
	var childItemCount;
	var childHeight;
	var fIt = 0;
	var i=0;

	if (isOpen == this.isOpen)
		return;
 
	if (dabBV == 2)
	{
		childHeight = 0;
		for (i=0; i < this.childCount; i++)
			childHeight = childHeight + this.children[i].obj.clip.height;
		childItemCount = this.childItemCount();
		if (this.isOpen)
			childHeight = 0 - childHeight;
		for (fIt = this.id + childItemCount + 1; fIt < nEntries; fIt++)
			indexOfEntries[fIt].obj.moveBy(0, childHeight);
	}
	this.isOpen = isOpen;
	changeGifs(this);
}
function childItemCount()
{
	var n = this.childCount;
	for (var i=0; i < this.childCount; i++)
	{
		if (this.children[i].children)
			n+=this.children[i].childItemCount();
	}
	return n;
}

function changeGifs(item)
{
	var i=0;
	if (item.isOpen)
	{
		if (item.nodeImg)
		{
			if (item.islastItem)
				item.nodeImg.src = "images/menu/lastitem_minus.gif";
			else
				item.nodeImg.src = "images/menu/cross_minus.gif";
		}
		for (i=0; i<item.childCount; i++)
			item.children[i].showItem();
	}
	else
	{
		if (item.nodeImg)
		{
			if (item.islastItem)
				item.nodeImg.src = "images/menu/lastitem_plus.gif";
			else
				item.nodeImg.src = "images/menu/cross_plus.gif";
		}
		for (i=0; i<item.childCount; i++)
			item.children[i].hide();
	}
}


function outputFolderLink()
{
	if (this.hreference)
	{
		doc.write("<a href=javascript:gotoLink("+this.id+",'" + this.hreference + "','" + this.target + "'); class=naviMenu><span id='menuID"+this.id+"'><nobr>"+this.desc+"</nobr></span></A>");
	}
	else
		doc.write("<span id='menuID"+this.id+"'><nobr>"+this.desc+"</nobr></span>");
} 

function gotoLink(id, hreference, target)
{
	var f = 0;
	var target2 = "content";
	if (target!="")
		target2 = target;
	f = indexOfEntries[id];

	if (f.childCount)
		menuPos = id-1; // vorher ohne -1
	else
		menuPos = id-1;


	if (f.id > 0)
		clickOnItem(id);
	var hreference2 = webshopBaseLink+hreference;
//	window.open("index.html?menuPos="+(id-1),target2);
	window.open(hreference2,target2);

}
 
function drawItem(leftStuff, level)
{
	var colspan = maxLevel - level;
	// Folder
	if (this.childCount > 0)
	{
		var idParam = "id='folder" + this.id + "'";
		if (dabBV == 2)
		{
			if (!doc.yPos)
				doc.yPos=0;
		}

		this.blockStart("folder");

		doc.write("<tr>");
		doc.write(leftStuff);
		doc.write("<td height=\"16\" colspan=\""+colspan+"\">");
		this.outputLink();
		doc.write("</td>");

		this.blockEnd();

		if (dabBV == 1)
		{
			this.obj = doc.all["folder"+this.id];
			this.nodeImg = doc.all["nodeIcon"+this.id];
		}
		else if (dabBV == 2)
		{
			this.obj = doc.layers["folder"+this.id];
			this.nodeImg = this.obj.document.images["nodeIcon"+this.id];
			doc.yPos=doc.yPos+this.obj.clip.height;
		}
		else if (dabBV == 3)
		{
			this.obj = doc.getElementById("folder"+this.id);
			this.nodeImg = doc.getElementById("nodeIcon"+this.id);
		}
	}
	// Item
	else
	{
		if (this.target != "special" || dabBV != 2)
		{
			this.blockStart("item");
	
			doc.write("<tr>");
			doc.write(leftStuff);
			doc.write("<td height=\"16\" colspan=\""+colspan+"\">");
			this.outputLink();
			doc.write("</td>");
	
			this.blockEnd();
		}
		else
		{
			return;
		}		
	
		if (dabBV == 1)
		{
			this.obj = doc.all["item"+this.id];
		}
		else if (dabBV == 2)
		{
			this.obj = doc.layers["item"+this.id];
			doc.yPos=doc.yPos+this.obj.clip.height;
		}
		else if (dabBV == 3) 
		{ 
			this.obj = doc.getElementById("item"+this.id);
		}
	}
}
 
function showItem()
{
	if (dabBV == 1 || dabBV == 3)
		this.obj.style.display = "block";
	else
		this.obj.visibility = "show";
}


function blockStart(idprefix)
{
	var idParam = "id='" + idprefix + this.id + "'";
	if (dabBV == 2)
		doc.write("<layer "+ idParam + " top=" + doc.yPos + " visibility=show width=\"170\" bgColor="+menuColor1+">");

	if (dabBV == 3) //N6 has bug on display property with tables
	    doc.write("<div " + idParam + " style='display:block; width:100%; position:block;background-color:"+menuColor1+"' >");

	doc.write("<table border=0 cellspacing=0 cellpadding=0 width=100%  ");

	if (dabBV == 1)
		doc.write(idParam + " style='display:block; position:block; background-color:"+menuColor1+"'>");
	else
		doc.write(">");
}

function blockEnd()
{
	doc.write("</table>\n");
	if (dabBV == 2)
		doc.write("</layer>\n");
	if (dabBV == 3)
		doc.write("</div>\n");
}
 

function childHeight()
{ 
	var h = this.obj.clip.height;
	var i = 0;
	if (this.isOpen)
	{
		for (i=0 ; i < this.childCount; i++)
			h = h + this.children[i].childHeight();
	}
	return h;
}


// Alles außer akt. Folderid
function hideAll(folderId)
{
	var f = 0;

	f = indexOfEntries[0];
	f.colorItem(menuColor1,0);
	for(x=0;x<f.childCount;x++)
	{
		f.children[x].setState(0);
	}
}

function colorItem(farbe,showhide)
{
	colorItem2(this.obj, farbe, this.id);
	for(var x=0;x<this.childCount;x++)
	{
		if (this.children[x].childCount)
			this.children[x].colorItem(farbe,showhide);
		colorItem2(this.children[x].obj, farbe, this.children[x].id);
	}
}

function colorItem2(curobj, farbe, curid)
{
	if (indexOfEntries[curid].target=="special")
	{
		return;
	}
	if (dabBV == 1 || dabBV == 3)
	{
		var obj = document.getElementById("menuID"+curid);
		if (curid == (menuPos+1))
		{
			curobj.style.background=menuColor2;
			obj.style.fontWeight= "bold";
		}
		else
		{
			if (curid == 0)
			{
				curobj.style.background=menuColorFirstEntry;
				curobj.style.borderBottom="1px solid "+naviBorder;
			}
			else
				curobj.style.background=farbe;
			obj.style.fontWeight= "";
		}
	}
	else
	{
		if (curid == (menuPos+1))
			curobj.bgColor=menuColor2;
		else
			curobj.bgColor=farbe;
	}
}
/*function clickOnFolder(folderId)
{
	var clicked = indexOfEntries[folderId];

	if (!clicked.isOpen)
		clickOnItem(folderId);
	return;
}*/

function clickOnItem(folderId)
{
	var clickedFolder = 0;
	var state = 0;

	clickedFolder = indexOfEntries[folderId];
	state = clickedFolder.isOpen;
	hideAll(folderId);
	if (folderId==0)
		clickedFolder.setState(1); //open<->close
	else
		clickedFolder.setState(!state); //open<->close
	clickedFolder.colorItem(menuColor3,1);
	while(clickedFolder.parentid!=0)
	{
		clickedFolder = indexOfEntries[clickedFolder.parentid];
		state = clickedFolder.isOpen;
		clickedFolder.setState(1); //open
		clickedFolder.colorItem(menuColor3,1);
	}
}

function getLinkString(target, description, linkData)
{
	linkItem = new Item(description, linkData, target);
	return linkItem;
}




indexOfEntries = new Array();
nEntries = 0;
doc = document;
dabBV = 0;
selectedFolder=0;

function writeMenu(x,hauptnavi,menuPos)
{ 
	if (document.all)
		dabBV = 1; // IE
	else if (document.layers)
		dabBV = 2; // NS4
	else if (document.getElementById)
		dabBV = 3; // NS6
	else
		dabBV = 0; // other
	
  
	if (dabBV==2)
	{
		foldersTree.addItem(getLinkString("special", "Hallo", ""))
	}

	foldersTree.initialize(0, 1, "",0);
	
} 

