// ************************************************************************
// Test Script Library
// File: Menu.js
// Created 2001/12/14
// Copyright: Vogone Systems 2001
// Desc: TreeView Menu / Frame-Version
//		 creates a global obj 'theMenu' to perform a tree-structure
// ************************************************************************

var itemIntent=15;
var itemLeftMargin=3;
var itemTopMargin=165;
var curHeight=0;
var itemColor="#3333cc";
var itemSize=12;
var menuMarkImg="";
var markImgHeight=10;
var markImgWidth=8;
var selectedID = "";

var curItem = "";
var curOpen = "";

function accessItemStyle(itemID)
{
	var ret=null;
	if(window.document.getElementById)
		ret=window.document.getElementById(itemID).style;
	else if(window.document.all)
		ret = window.document.all(itemID).style;
	else if(window.document.layers)
		ret = window.document.layers[itemID];
	return ret;
}

function setMenuImage(itemID, imagePath)
{
	try
	{
		if(window.document.getElementById)
		{
			window.document.getElementById('menumarker' + itemID).src = imagePath;
			window.document.getElementById('menumarker' + itemID).width = markImgWidth;
		}
		else if(window.document.all)
		{
			window.document.all('menumarker' + itemID).src=imagePath;
			window.document.all('menumarker' + itemID).width=markImgWidth;
		}
		else if(window.document.layers)
		{
			window.document.layers['menumarker' + itemID].src = imagePath;
			window.document.layers['menumarker' + itemID].width = markImgWidth;
		}
	}
	catch (e)
	{
	}
}


//**************  Menu  ******************************************************************
function menu()
{
	this.id="";
	this.items=null;
	this.lastOpen="";
	this.lastMark="";
	this.belowMenu="";
	this.addRootItem=addRootItem;
	this.onClickItem=onClickItem;
	this.drawMenu=drawMenu;
	this.openItem=openItem;
	this.closeItem=closeItem;
	this.markItem=markItem;
	this.getStatus=getStatus;
	this.getStatusEx=getStatusEx;
}

function addRootItem(name, cmd, height)
{
	if(this.items == null)
		this.items = new Array();
		
	var newItem = new item(name, cmd, height);
//	newItem.id = " " + this.items.length;
	newItem.id = this.items.length;
	newItem.level = 0;
	this.items[this.items.length] = newItem;
	return newItem;
}

function drawMenu(currentID)
{
	this.selectedID = currentID;
	var i = 0;

	if(this.items != null)
	{
		for(i=0; i<this.items.length; i++)
		{

			this.items[i].drawItem("root");	
		}
	}
}

function onClickItem(itemID)
{
	if(!itemID.length) return;
	if(!itemID.split ) return;

	var itemIDs = itemID.split(".");

	var target = this;
	for(var i=0; i<itemIDs.length; i++)
	{
		if(parseInt(itemIDs[i]) > target.items.length)
			return;
			
		target = target.items[parseInt(itemIDs[i])];
	}
	if (target.isOpen == true)
	{
		closeItem(itemID);
	}
	else
	{
		openItem(itemID);
	}
}


function closeItem(itemID)
{
	if(!itemID.length) return;
	if(!itemID.split ) return;

	var itemIDs = itemID.split(".");

	try
	{
		accessItemStyle(itemID).display = 'none';
	}
	catch (e)
	{}
	
	var target = theMenu;
	for(var i=0; i<itemIDs.length; i++)
	{
		if(parseInt(itemIDs[i]) > target.items.length)
			return;
			
		target = target.items[parseInt(itemIDs[i])];
	}
	target.isOpen=false;

			setMenuImage(selectedID,menuBlankImg);
			setMenuImage(itemID,menuMarkImg);
			sidemenuCurrentItem = selectedID;

}


function openItem(itemID)
{
	if(!itemID.length) return;
	if(!itemID.split ) return;

	var itemIDs = itemID.split(".");

	for (var i = itemIDs.length; i > 0; i--)
	{
		var expandItem = "";
		for (var j = 0; j < i; j++)
		{
			expandItem += itemIDs[j];
			if (j < i-1)
				expandItem += ".";
		}

		try
		{
			accessItemStyle(expandItem).display = 'inline';
		}
		catch (e)
		{}
	}

	var target = theMenu;
	for(var i=0; i<itemIDs.length; i++)
	{
		if(parseInt(itemIDs[i]) > target.items.length)
			return;
			
		target = target.items[parseInt(itemIDs[i])];
		target.isOpen=true;
	}

	if (itemID != theMenu.selectedID)
	{
		setMenuImage(theMenu.selectedID, menuBlankImg);
		setMenuImage(itemID, menuMarkImg);
		sidemenuCurrentItem = itemID;
	}
	
}

function markItem(itemID)
{
	if(!itemID.length)
		return;
	
	if(menuMarkImg.length)
	{
		var top = parseInt(accessItemStyle(itemID).top);
		top += parseInt(accessItemStyle(itemID).height)/2;
		top -= markImgHeight/2;
		accessItemStyle("markImg").top=top;
		accessItemStyle("markImg").visibility="visible";
	}
	
	this.lastMark = itemID;
}

function getStatus()
{
	return 'openItem=' + escape(this.lastOpen) + '&lastMark=' + escape(this.lastMark);
}

function getStatusEx(lastOpen, lastMark)
{
	return 'openItem=' + escape(lastOpen) + '&lastMark=' + escape(lastMark);
}

//********************  MenuItem  **************************************************
function item(name, cmd, height)
{
	this.name=name;
	this.cmd=cmd;
	this.id="";
	this.height=height;
	this.level=0;
	this.isOpen=false;
	this.mark=false;
	this.items=null;
	this.addSubItem=addSubItem;
	this.drawItem=drawItem;
	this.setItem=setItem;
	this.hideChildItems=hideChildItems;
}

function addSubItem(name, cmd, height)
{
	if(this.items == null)
		this.items = new Array();

	var newItem = new item(name, cmd, height);
	newItem.id = this.id + "." + this.items.length;
	newItem.level = this.level + 1;
	this.items[this.items.length] = newItem;
	return newItem;
}

function drawItem(className)
{
	var currentID = theMenu.selectedID.toString();
	var thisID = this.id.toString();

	var strItem="";
	strItem  = '<div class="sidemenu_entry" id="' + this.id + '_root">';
	strItem += '<table border="0" cellpadding="0" cellspacing="0"><tr>';


	if (currentID == thisID)
	{
		strItem += '<td width="10" align="center" valign="middle"><img src="' + menuMarkImg + '" width="' + markImgWidth + '" height="' + markImgHeight + '" alt="" border="0" id="menumarker' + this.id + '"></td>';
		this.selectedID = this.id;
	}
	else
	{
		strItem += '<td width="10" align="center" valign="middle"><img src="' + menuBlankImg + '" width="' + markImgWidth + '" height="' + markImgHeight + '" alt="" border="0" id="menumarker' + this.id + '"></td>';
	}

	strItem += '<td class="sidemenu_level' + this.level + '">';
	if(this.items != null || this.cmd.length)
		strItem += '<a class="menuLink" href="#" onMouseOver="status=\'' + this.name.replace('<br>', ' ') + '\'; return true;" onClick="theMenu.onClickItem(\'' + this.id + '\'); return false;">' + this.name + '</a>';
	else
		strItem += this.name;

	strItem += '</td></tr></table>';

	strItem += '</div>';
	window.document.writeln(strItem);
	
	if(this.items != null)
	{
		if (currentID.substring(0,thisID.length) == thisID)
		{
			window.document.writeln ('<div style="display: inline;" id="' + this.id + '">');
		}
		else
		{
			window.document.writeln ('<div style="display: none;" id="' + this.id + '">');
		}

		for(var i=0; i<this.items.length; i++)
			this.items[i].drawItem("subItem");	
		window.document.writeln ('</div>');

	}
}

function setItem()
{
	accessItemStyle(this.id).top=curHeight;
	curHeight += this.height;
	accessItemStyle(this.id).visibility="visible";

	if(!this.isOpen)
		this.hideChildItems();
	else if(this.items != null)
	{
		for(var i=0; i<this.items.length; i++)
			this.items[i].setItem();
	}
}

function hideChildItems()
{
	if(this.items != null)
	{
		for(var i=0; i<this.items.length; i++)
		{
			accessItemStyle(this.items[i].id).visibility="hidden";
			this.items[i].hideChildItems();
		}
	}
}

var theMenu = new menu();
