/* This script and many more are available free online at
The JavaScript Source :: http://javascript.internet.com
Created by: Travis Beckham :: http://www.squidfingers.com | http://www.podlob.com
version date: 06/02/03 :: If want to use this code, feel free to do so,
but please leave this message intact. (Travis Beckham) */

// Node Functions

if(!window.Node){
  var Node = {ELEMENT_NODE : 1, TEXT_NODE : 3};
}

function checkNode(node, filter){
  return (filter == null || node.nodeType == Node[filter] || node.nodeName.toUpperCase() == filter.toUpperCase());
}

function getChildren(node, filter){
  var result = new Array();
  var children = node.childNodes;
  for(var i = 0; i < children.length; i++){
    if(checkNode(children[i], filter)) result[result.length] = children[i];
  }
  return result;
}

function getChildrenByElement(node){
  return getChildren(node, "ELEMENT_NODE");
}

function getFirstChild(node, filter){
  var child;
  var children = node.childNodes;
  for(var i = 0; i < children.length; i++){
    child = children[i];
    if(checkNode(child, filter)) return child;
  }
  return null;
}

function getFirstChildByText(node){
  return getFirstChild(node, "TEXT_NODE");
}

function getNextSibling(node, filter){
  for(var sibling = node.nextSibling; sibling != null; sibling = sibling.nextSibling){
    if(checkNode(sibling, filter)) return sibling;
  }
  return null;
}
function getNextSiblingByElement(node){
        return getNextSibling(node, "ELEMENT_NODE");
}

// Menu Functions & Properties

var activeMenu = null;

function showMenu() {
  if(activeMenu){
    activeMenu.className = "";
    getNextSiblingByElement(activeMenu).style.display = "none";
  }
  if(this == activeMenu){
    activeMenu = null;
  } else {
    this.className = "active";
    getNextSiblingByElement(this).style.display = "block";
    activeMenu = this;
  }
  return false;
}

function initMenu(){
  var menus, menu, text, a, i;
  menus = getChildrenByElement(document.getElementById("menuside"));
  for(i = 0; i < menus.length; i++){
    menu = menus[i];
    text = getFirstChildByText(menu);
    a = document.createElement("a");
    menu.replaceChild(a, text);
    a.appendChild(text);
    a.href = "#";
    a.onclick = showMenu;
    a.onfocus = function(){this.blur()};
  }
}

//if(document.createElement) window.onload = initMenu;

function extractPageName(hrefString)
{
	var arr = hrefString.split('/');
	if (hrefString[hrefString.length-1] == "#")
	{
		return "#";
	}
//	return  (arr.length<2) ? hrefString : arr[arr.length-2].toLowerCase();		
//	return  (arr.length<2) ? hrefString : arr[arr.length-2].toLowerCase() + arr[arr.length-1].toLowerCase();
	// search for cf_newsite in the url. If found, then next element is directory or page
	// return that next element
	for (var j=0; j<arr.length-2; j++)
	{
		if (arr[j] == "cf_newsite")
		{
			return arr[j+1];
		}
	}
	// should never get here so return bad value
	return false;
}

function setActiveMenu(arr, crtPage)
{
	var chuckle;
	for (var i=0; i<arr.length; i++)
	{
		if(extractPageName(arr[i].href) == crtPage)
		{
			//if (arr[i].parentNode.tagName != "ul")
			if (arr[i].parentNode.id != "menuside")
			{
				//arr[i].className = "current";
				arr[i].parentNode.className = "current";
				//arr[i].parentNode.parentNode.parentNode.className = "current";
				var foo = getFirstChild(arr[i].parentNode.parentNode.parentNode, "ELEMENT_NODE");
				if (foo.tagName == "A") {
					foo.className = "active";
					getNextSiblingByElement(foo).style.display = "block";
					//getNextSiblingByElement(foo).className = "current";
					activeMenu = foo;
				}
			}
		}
	}
}

function setPage()
{
	hrefString = document.location.href ? document.location.href : document.location;

	if (document.getElementById("menuside")!=null) 
		setActiveMenu(document.getElementById("menuside").getElementsByTagName("a"), extractPageName(hrefString));
}

function doAll()
{
	initMenu();
	setPage();
}

if(document.createElement) window.onload = doAll;

