var nsfkRoot = "http://www.nsfk.org/";
if (location.href.indexOf("preview.slashx.se") >= 0)
	nsfkRoot = "http://preview.slashx.se/nsfk/";
else if (location.href.indexOf("file:///C:/NEWPROJECTS/NSFK") >= 0)
	nsfkRoot = "file:///C:/NEWPROJECTS/NSFK/";

var nsfkTree = [];

function
makeRelativeToRoot(href)
{
	
	if (href.indexOf(nsfkRoot) == 0) {
		var relRoot = document.location.href;
		relRoot = relRoot.substr(0, relRoot.lastIndexOf("/")+1);
		href = href.substr(relRoot.length);
	}

	return href;
}

function
TreeItem(node)
{
	if (node.firstChild && node.firstChild.nodeName.toLowerCase() == "a") {
		this.display = node.firstChild.firstChild.data;
		this.URL = makeRelativeToRoot(node.firstChild.href);
		this.subTree = buildSubTree(node.firstChild.nextSibling);
	} else {
		this.display = node.firstChild.data;
		this.URL = "";
		this.subTree = buildSubTree(node.nextSibling);
	}
}

function
buildSubTree(node)
{
	var subNodes = [];
	
	if (node) {
		if (node.nodeName == "#text") {
			node = node.nextSibling;
		}
		if (node) {
			if (node.hasChildNodes()) {
				for (var i = 0; i < node.childNodes.length; i++) {
					if (node.childNodes.item(i).nodeName != "#text") {
						subNodes[subNodes.length] = new TreeItem(node.childNodes.item(i));
					}
				}
			}
		}
	}

	return subNodes;
}


function
buildMenu(menuId)
{
	var root = document.getElementById(menuId);
	nsfkTree = buildSubTree(root);
}

function
displayMenu1()
{
	var i = 0;
	while (i < nsfkTree.length) {
		displayMenu1Item(i, nsfkTree[i]);
		i++;
	}
}

var iActiveSubmenu = -1;

function
displayMenu1Item(id, item)
{
	var className = "Menu1";
	if (document.location.href.indexOf(item.URL.substr(0, item.URL.lastIndexOf("/")+1)) >= 0) {
		className = "Menu1Active";
		if (item.subTree.length > 0) {
			iActiveSubmenu = id;
		}
	}
	document.write("<td class=\""+className+"\" onmouseover=\"overMenu1(this, '"+id+"')\" onmouseout=\"outMenu1(this, '"+id+"')\">");
	displayLink(item.URL, item.display.toUpperCase());
	document.write("</td>");
}

function
displayMenu1Submenues()
{
	var i = 0;
	while (i < nsfkTree.length) {
		if (i != iActiveSubmenu && nsfkTree[i].subTree.length > 0)
			displayMenu1ItemSubmenu(i, nsfkTree[i]);
		i++;
	}
}

var bShowLevel3 = true;

function
displayMenu1ItemSubmenu(id, item)
{
	document.write("<div id=\"DropDown"+id+"\" class=\"DropDown\" onmouseover=\"overDropDown()\" onmouseout=\"outDropDown()\">");
	bShowLevel3 = false; 
	displayMenu2(item.subTree);
	bShowLevel3 = true;
	document.write("</div>");
}

function
displayMenu2(aItems)
{
	if (!aItems && iActiveSubmenu >= 0) {
		aItems = nsfkTree[iActiveSubmenu].subTree;
	}
	if (aItems) {
		document.write("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">");
		for (var i = 0; i < aItems.length; i++) {
			displayMenu2Item(aItems[i]);
			if (bShowLevel3 && aItems[i].subTree.length > 0) {
				displayMenu3(aItems[i].subTree);
			}
		}
		document.write("</table>");
	}
}

function
displayMenu2Item(item)
{
	var className = "Menu2";
	if (document.location.href.indexOf(item.URL) >= 0) className = "Menu2Active";
	document.write("<tr><td class=\""+className+"\" onmouseover=\"overMenu2(this)\" onmouseout=\"outMenu2(this)\">")
	displayLink(item.URL, item.display);
	document.write("</td></tr>");
}

function
displayMenu3(aItems)
{
	for (var i = 0; i < aItems.length; i++) {
		displayMenu3Item(aItems[i]);
	}
}

function
displayMenu3Item(item)
{
	var className = "Menu3";
	if (document.location.href.indexOf(item.URL) >= 0) className = "Menu3Active";
	document.write("<tr><td class=\""+className+"\" onmouseover=\"overMenu3(this)\" onmouseout=\"outMenu3(this)\">")
	document.write("&middot;");
	displayLink(item.URL, item.display);
	document.write("</td></tr>");
}

function
displayLink(relURL, display)
{
	if (relURL.indexOf("://") >= 0) {
		document.write("<a href=\""+relURL+"\" target=\"_blank\">");
	} else {
		document.write("<a href=\""+nsfkRoot+relURL+"\">");
	}
	document.write(display);
	document.write("</a>");
}
var savedOverMenu1ClassName = "Menu1";
var visibleDropDown = null;

function
absoluteLeft(el)
{
	if (el.offsetParent)
		return el.offsetLeft+absoluteLeft(el.offsetParent);
	else
		return el.offsetLeft;
}

function
absoluteTop(el)
{
	if (el.offsetParent)
		return el.offsetTop+absoluteTop(el.offsetParent);
	else
		return el.offsetTop;
}

function
overMenu1(el, id)
{
	if (outMenu1Timeout) {
		clearTimeout(outMenu1Timeout);
		outMenu1Effect();
	}
	savedOverMenu1ClassName = el.className;
	el.className = "Menu1Over";
	visibleDropDown = document.getElementById("DropDown"+id);
	if (visibleDropDown) {
		visibleDropDown.style.visibility = "visible";
		visibleDropDown.style.left = absoluteLeft(el)+"px";
		visibleDropDown.style.top = absoluteTop(el)+el.offsetHeight+"px";
	}
}

var outMenu1Element = null;
var outMenu1Timeout = 0;

function
outMenu1(el, id)
{
	outMenu1Element = el;
	outMenu1Timeout = setTimeout("outMenu1Effect()", 400);
}

function
outMenu1Effect()
{
	outMenu1Element.className = savedOverMenu1ClassName;
	outMenu1Element = null;
	if (visibleDropDown) {
		visibleDropDown.style.visibility = "hidden";
		visibleDropDown = null;
	}
	outMenu1Timeout = 0;
}

function
clickMenu1(el, id)
{
	alert("URL: "+el.href+"\nLeft: "+absoluteLeft(el.offsetParent));
	return false;
}

var savedOverMenu2ClassName = "Menu2";

function
overMenu2(el)
{
	overDropDown();
	savedOverMenu2ClassName = el.className;
	el.className = "Menu2Over";
}

function
outMenu2(el)
{
	el.className = savedOverMenu2ClassName;
}

var savedOverMenu3ClassName = "Menu3";

function
overMenu3(el)
{
	overDropDown();
	savedOverMenu3ClassName = el.className;
	el.className = "Menu3Over";
}

function
outMenu3(el)
{
	el.className = savedOverMenu3ClassName;
}

function
overDropDown()
{
	if (outMenu1Timeout) {
		clearTimeout(outMenu1Timeout);
		outMenu1Timeout = 0;
	}
}

function
outDropDown()
{
	outMenu1Timeout = setTimeout("outMenu1Effect()", 400);
}
