var g_images_bullet = 'images/doc.gif';
var g_images_expand = 'images/plus.gif';
var g_images_collapse = 'images/min.gif';
var g_images_separator = 'images/separator.gif';
var g_images_space = 'images/pixel.gif';
var g_numlevels = 6;
var g_colwidth = 10;
var g_defaultexpanded = false;
var g_hiliteparents = true;
var g_expandparents = true;
var g_scrollsize = 10;

function LSMenuItem(id,parent,caption,link,target,bctrail,sep)
{
	this.expand = g_defaultexpanded;
	this.id = id;
	this.parent = parent;
	this.caption = caption;
	this.link = link;
	this.target = target;
	this.bctrail = bctrail;
	this.hilite = false;
	this.active = false;
	this.sep = sep;
	this.next = null;
	this.subtree = null;
	
	this.addChild = menuitemAddChild;
	this.addNext = menuitemAddNext;
	this.render = menuitemRender;
}

function menuitemAddChild(menuitem)
{
	var runner = null;
	if (this.subtree == null)
		this.subtree = menuitem;
	else
	{
		runner = this.subtree;
		while (runner.next != null)
			runner = runner.next;
		runner.next = menuitem;
	}
	
}

function menuitemAddNext(menuitem)
{
	var runner = this;
	while (runner.next != null)
		runner = runner.next;
	runner.next = menuitem;
}

function writeDynContent(divname,html)
{
	var mydiv = document.all[divname];
	mydiv.innerHTML = html;
	//alert(html);
}

function displayMenu()
{
	var html = '<table border="0">\n';
	html += menu.render(0);
	html += '</table>';
	writeDynContent('menudiv',html);
}

function menuitemRender(level)
{
	var html = '';
	var extcaption;
	var extlink;
	var activenode;
	var finished = false;
	var menuitem = this;
	do
	{
		switch(menuitem.sep)
		{
			case 1://item
				html += '<tr>';
				for (i = 0; i < level; i++)
					html += '<td width="' + g_colwidth + '"><img src="' + g_images_space + '" border="0" width="' + g_colwidth + '" height="1"></td>';

				if (menuitem.active)
					activenode = 'id="activenode"';
				else
					activenode = ''

				if (menuitem.hilite)
					extcaption = '<b>' + menuitem.caption + '</b>';
				else
					extcaption = menuitem.caption;

				if (menuitem.link != null)
					extlink = '<a class="NavTable" href="javascript:loadItem(\'' + menuitem.id + '\',null,0);">'  + extcaption + '</a>';
				else
					extlink = extcaption;
					
				if (menuitem.subtree != null)
				{
					if (menuitem.expand)
					{
						html += '<td ' + activenode + ' colspan="' + (g_numlevels - level) + '">';
						html += '<table border="0">';
						html += '<tr valign="top"><td><a href="javascript:collapseItem(\'' + menuitem.id + '\');"><img border="0" src="' + g_images_collapse + '"></a></td><td>' + extlink + '</td></tr>';
						html += '</table>';
						html +='</tr>';
						html += menuitem.subtree.render(level + 1);
					}
					else
					{
						html += '<td ' + activenode + ' colspan="' + (g_numlevels - level) + '">';
						html += '<table border="0">';
						html += '<tr valign="top"><td><a href="javascript:expandItem(\'' + menuitem.id + '\');"><img border="0" src="' + g_images_expand + '"></a></td><td>' + extlink + '</td></tr>';
						html += '</table>';
						html +='</tr>';
					}

				}
				else
				{
					html += '<td ' + activenode + ' colspan="' + (g_numlevels - level) + '">';
					html += '<table border="0">';
					html += '<tr valign="top"><td><img src="' + g_images_bullet + '"></td><td>' + extlink + '</td></tr>';
					html += '</table>';
					html +='</tr>';
				}

				break;
			case 2://space sep
				html += '<tr><td colspan="' + (g_numlevels) + '">&nbsp;</td></tr>';
				break;
			case 3://rule sep
				//html += '<tr><td colspan="' + (g_numlevels) + '"><img src="' + g_images_separator + '" border="0" width="200" height="1"></td></tr>';
				html += '<tr><td background="' + g_images_separator + '" colspan="' + (g_numlevels) + '"></td></tr>';
				break;
		}
		menuitem = menuitem.next;	
	}
	while (menuitem != null)
	return html;
}


function buildMenu(arrMenu)
{
	var menu = null;
	var item = null
	var parentitem = null;
	var parentid;
	for (var i = 0; i < arrMenu.length; i++)
	{
		item = 	arrMenu[i];
		if (menu == null) //no menu present
			menu = item;
		else
			if (item.parent == null)
				menu.addNext(item);
			else
			{
				parentitem = findMenuItem(item.parent);
				if (parentitem != null)
					parentitem.addChild(item);
			}
	}
	return menu;
}

function findMenuItem(id)
{
	for (var i = 0; i < arrMenu.length; i++)
	{
		if (arrMenu[i].id == id)
			return arrMenu[i];
	}
	return 0;
}

function findMenuItemIndex(id)
{
	for (var i = 0; i < arrMenu.length; i++)
	{
		if (arrMenu[i].id == id)
			return i;
	}
	return null;
}

function expandItem(id)
{
	var item = findMenuItem(id);
	item.expand = true;
	displayMenu();
}

function collapseItem(id)
{
	var item = findMenuItem(id);
	item.expand = false;
	displayMenu();
}

function loadFirstItem()
{
	var i = 0;
	var id = 0;
	var found = false;
	while(!found && (i < arrMenu.length))
	{
		if (arrMenu[i].link != null)
		{
			id = arrMenu[i].id;
			found = true;
		}
		i++;
	}
	loadItem(id,null,0);
}

function loadItem(id,overrideurl,tries)
{
	var parentitem, url;
	for (i = 0; i < arrMenu.length; i++)
	{
		arrMenu[i].hilite = false;
		arrMenu[i].expand = false;
	}
	var item = findMenuItem(id);
	item.active = true;
	item.hilite = true;
	if (item.link != null)
	{
		if (overrideurl == null)
			url = item.link;
		else
			url = overrideurl;
		top.fTop.setBCTrail(item.bctrail);
		parent.fContent.location.href = url;
	}
	if (g_expandparents)
		while (item.parent != null)
		{
			item = findMenuItem(item.parent);
			item.expand = true;
			if (g_hiliteparents)
				item.hilite = true;
		}
	determinePrevNext(id);
	displayMenu();
    var activenode = document.all['activenode'];
    if (activenode)
    {
		var scrollpos = activenode.offsetTop;
		if (activenode.offsetParent)
			scrollpos += activenode.offsetParent.offsetTop;
		self.scrollTo(0,scrollpos);
	}
}


function determinePrevNext(id)
{
	var runner = null, prev = null, next = null, found = false;

	//prev
	found = false;
	i = findMenuItemIndex(id) - 1;
	while(!found && (i >= 0))
	{
		runner = arrMenu[i--];
		if (runner.link != null)
		{
			found = true;
			prev = runner.id;
		}
	}
	//alert(prev);
	top.fTop.setPrev(prev);

	//next
	found = false;
	i = findMenuItemIndex(id) + 1;
	while(!found && (i < arrMenu.length))
	{
		runner = arrMenu[i++];
		if (runner.link != null)
		{
			found = true;
			next = runner.id;
		}
	}
	//alert(next);
	top.fTop.setNext(next);

}





