function hasClassName(el, name)
{
	var re = new RegExp("(^| )" + name + "( |$)");
	if(re.test(el.className))
	{
		return true;
	}
	return false;
}


  function findPosX(obj)
  {
    var curleft = 0;
    if(obj.offsetParent)
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
  }

	function findPosY(obj)
  {
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
  }



function level(object)
{
	var levelNr=0;
	var i = 0;
	while (object.parentNode.id != "websitetopmenu")
	{
		object = object.parentNode;
		i++;
		if (object.parentNode == null){
			break;
		}
	}

	levelNr = ((i+1)/2);
	return levelNr;
}

function checkLevel(obj)
{
	var occ = obj.className.indexOf('level');
	var levelNr = 0;
	if(occ > -1)
	{
		var numPos = occ+5;
		var classStr = obj.className.toString();
		levelNr = parseInt(classStr.charAt(numPos));
		return levelNr;
	}
	else 
	{
	return -1;
	}
}

function resetMenu(inx)
{
	var allULs = document.getElementsByTagName("ul");
	var targetULs = new Array()
	for (var i=0; i<allULs.length; i++)
	{
		if( checkLevel(allULs[i]) > (inx) )
		{
			targetULs.push(allULs[i]);
		}
	}
	for (var i=0; i<targetULs.length; i++)
	{
		targetULs[i].style.left = "-9999px";
	}
}

function eventHandler(e) {
	if (e.srcElement)
	{
		var obj = e.srcElement;
		resetMenu(checkLevel(obj.parentNode.parentNode));
		var leftPos = findPosX(obj.parentNode.parentNode);
		//alert(leftPos);		
		if (checkLevel(obj.parentNode.parentNode)==0)
		{
		obj.parentNode.childNodes[1].style.left = (leftPos+230)+"px";
		}
		else
		{
		obj.parentNode.childNodes[1].style.left = "230px";
		}
		//obj.parentNode.childNodes[0].className = "active";		
	}
	else
	{
		resetMenu(checkLevel(this.parentNode.parentNode));
		var leftPos = findPosX(this.parentNode.parentNode);
		//alert(leftPos);		
		if (checkLevel(this.parentNode.parentNode)==0)
		{
		this.parentNode.childNodes[1].style.left = (leftPos+230)+"px";
		}
		else
		{
		this.parentNode.childNodes[1].style.left = "230px";
		}
		//this.parentNode.childNodes[1].style.left = "260px";
		//this.parentNode.childNodes[0].className = "active";
	}
}

function showSub()
{
	var showSubLink = document.createElement('a');
	showSubLink.setAttribute('class', 'showMenu');
	showSubLink.setAttribute('className', 'showMenu');
	showSubLink.innerHTML = "&raquo;";
	return showSubLink;
}


function isRoot(el)
{
	if (el.id=="websitetopmenu"){
		return true;
	}
}

function findAncestor( el, comparisonFunc ) {
if (comparisonFunc(el) == true) return el.id;
else if (el.parentNode) {
return arguments.callee(el.parentNode, comparisonFunc);
}
else return false;
}

function doMenu()
{
	var allLIs = document.getElementsByTagName("li");
	var LIwithULChild = new Array();
	// set className level0
	var rootUL = document.getElementById("websitetopmenu").childNodes[0];
	rootUL.className = "level0";
	//
	for (var i=0; i<allLIs.length; i++)
	{
		if (allLIs[i].childNodes.length > 1)
		{
			if (findAncestor(allLIs[i],isRoot)=="websitetopmenu")
			{
				LIwithULChild.push(allLIs[i]);
			}
		}
	}
	for (var i=0; i<LIwithULChild.length; i++)
	{
		LIwithULChild[i].childNodes[1].className = "level"+level(LIwithULChild[i]);
		//append button
		LIwithULChild[i].appendChild(showSub());
		//handle onclick event
		if( LIwithULChild[i].lastChild.addEventListener ) 
		{
			LIwithULChild[i].lastChild.addEventListener('click',eventHandler,false);
		} 
		else if( LIwithULChild[i].lastChild.attachEvent ) 
		{
			LIwithULChild[i].lastChild.attachEvent('onclick',eventHandler);
		}
	}
}


