var disappeardelay=250  //menu disappear speed onMouseout (in miliseconds)
var enableanchorlink=1 //Enable or disable the anchor link when clicked on? (1=e, 0=d)
var hidemenu_onclick=1 //hide menu when user clicks within menu? (1=yes, 0=no)
var menu_left_offset = -25;
var menu_ie5_offset_correction = -25;

var dropmenuobjs = [];	// alle dropmenuobjects
var menu_current_level = -1;

/////No further editting needed

var ie5=document.all
var ns6=document.getElementById&&!document.all

function Is() {
    agent  = navigator.userAgent.toLowerCase();
    this.major = parseInt(navigator.appVersion);
    this.minor = parseFloat(navigator.appVersion);
    this.ns    = ((agent.indexOf('mozilla') != -1) && 
      ((agent.indexOf('spoofer')  ==   -1) && (agent.indexOf('compatible') == -1)));
    this.ns4   = (this.ns && (this.major == 4));
    this.ns6   = (this.ns && (this.major >= 5));
    this.ie    = (agent.indexOf("msie") != -1);
    this.ie3   = (this.ie && (this.major  < 4));
    this.ie4   = (this.ie && (this.major == 4) && (agent.indexOf("msie 5.0") == -1));
    this.ie5   = (this.ie && (this.major == 4) && (agent.indexOf("msie 5.0") != -1));
    this.ie55  = (this.ie && (this.major == 4) && (agent.indexOf("msie 5.5") != -1));
    this.ie6  = (this.ie && (agent.indexOf("msie 6.0")!=-1) );
}
var is = new Is();
/*
function debug( txt )
{
	document.getElementById('debugdiv').innerHTML += txt +"\r\n";
}
*/

function getposOffset(what, offsettype, maxcount){
	var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
	
// STUPID IE5
if( is.ie5 && offsettype=="left" ) totaloffset += menu_ie5_offset_correction;	// stupid correction!!
		
	var parentEl=what.offsetParent;
	var counter = 1;
	while (parentEl!=null)
	{
		if( maxcount && ( counter++ >= maxcount ) ) break;
		totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
		
		parentEl=parentEl.offsetParent;
	}
	return totaloffset;
}

function iecompattest(){
	return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function clearbrowseredge(dropmenuobj, obj, whichedge){
	var edgeoffset=0
	if (whichedge=="rightedge"){
		var windowedge=ie5 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15
		dropmenuobj.contentmeasure=dropmenuobj.offsetWidth
		if (windowedge-dropmenuobj.x < dropmenuobj.contentmeasure)
		edgeoffset=dropmenuobj.contentmeasure-obj.offsetWidth
	}
	else{
		var topedge=ie5 && !window.opera? iecompattest().scrollTop : window.pageYOffset
		var windowedge=ie5 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18
		dropmenuobj.contentmeasure=dropmenuobj.offsetHeight
		if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure){ //move up?
			edgeoffset=dropmenuobj.contentmeasure+obj.offsetHeight
			if ((dropmenuobj.y-topedge)<dropmenuobj.contentmeasure) //up no good either?
			edgeoffset=dropmenuobj.y+obj.offsetHeight-topedge
		}
	}
	return edgeoffset
}


function hideMenuFromLevel( level )
{
	// alle levels na dit level worden verborgen
	for( var lev = level; lev < dropmenuobjs.length; lev++ )
	{
	
		if( dropmenuobjs[ lev ] )
		{
			dropmenuobjs[ lev ].style.visibility = 'hidden';
			dropmenuobjs[ lev ] = false;	// hide :)
		}
	}
	
}


function hideMenusNotInArray()
{

	var containerDiv = document.getElementById( 'menu_container'); 
	var divIds = containerDiv.getElementsByTagName("DIV");
	for( var i=0; i < divIds.length; i++ )
	{
		if( String(divIds[i].id).indexOf( "menu" ) === 0 )
		{
			// not in array then hide this item
			var found = false;
			for( var j=0; j < dropmenuobjs.length && !found ; j++ )
			{
				if( dropmenuobjs[j] && dropmenuobjs[j].id == divIds[i].id ) 
				{
					found = true;
				}
			}  			
			
			if( !found )
			{
				divIds[i].style.visibility = 'hidden';	// hide it!
			}
		}	
	}
}


function showMenu( dropmenuobj, level )
{
	dropmenuobj.style.visibility='visible';
	dropmenuobjs[level] = dropmenuobj;
	menu_current_level	= level;
}

/*
function showhide(dropmenuobj, obj, e, visible, hidden, level ){

	if (ie5||ns6)
		dropmenuobj.style.left=dropmenuobj.style.top=-500
	if (e.type=="click" && obj.visibility==hidden || e.type=="mouseover")
	{
		obj.visibility=visible
		
		dropmenuobjs[level] = dropmenuobj;
		menu_current_level	= level;
	}
	else if (e.type=="click")
	{
		obj.visibility=hidden
	}
}
*/


function dropdownmenu(obj, e, dropmenuID, level)
{
	if (window.event) event.cancelBubble=true
	else if (e.stopPropagation) e.stopPropagation()
	/*
	if (typeof dropmenuobj!="undefined") //hide previous menu
		dropmenuobj.style.visibility="hidden"
	*/
	//checkHideMenu( level );
	//hideMenuFromLevel( level+ 1 );		

	if (ie5||ns6)
	{
//		obj.onmouseout=delayhidemenu
		dropmenuobj= document.getElementById(dropmenuID)
//		if (hidemenu_onclick) dropmenuobj.onclick=function(){dropmenuobj.style.visibility='hidden'}
//		dropmenuobj.onmouseover=clearhidemenu
		dropmenuobj.onmouseout=ie5? function(){ dynamichide(event)} : function(event){ dynamichide(event)}
		dropmenuobj.level		= level;


//		showhide(dropmenuobj, dropmenuobj.style, e, "visible", "hidden", level)
		showMenu( dropmenuobj, level );

		// de locatie is altijd rechts naast de links
		dropmenuobj.x= (getposOffset(obj, "left", 1) + menu_left_offset); 
		dropmenuobj.y= getposOffset(obj, "top", 1);
		var menuwidth = obj.offsetWidth; // :: Werkt niet correct in IE5		
		//dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(dropmenuobj, obj, "rightedge")+menuwidth+"px"
		//dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(dropmenuobj, obj, "bottomedge")+"px"
		dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(dropmenuobj, obj, "rightedge")+menuwidth+"px"
		dropmenuobj.style.top=dropmenuobj.y +"px"


/*
		dropmenuobj.x=getposOffset(obj, "left"); 
		dropmenuobj.y=getposOffset(obj, "top")
		dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+"px"
		dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+obj.offsetHeight+"px"
*/

		hideMenusNotInArray();
	}
	return clickreturnvalue()
}

function clickreturnvalue(){
	if ((ie5||ns6) && !enableanchorlink) return false
	else return true
}

function contains_ns6(a, b) {
	while (b.parentNode)
	if ((b = b.parentNode) == a)
	return true;
	return false;
}

/** checks if the given parentNode is a parentNode of the childNode */
function isParent( parentNode, childNode )
{
	if( childNode == parentNode ) return false;
	while( parentNode && parentNode != childNode )
	{
		parentNode = parentNode.parentNode;
	}
	if( !parentNode ) return false;
	return true;
}

/** checks if the given item is part of the menu */
function isPartOfMenu( node )
{
	var containerDiv = document.getElementById( 'menu_container'); 
	while( node != null)
	{
		if( node == containerDiv ) return true;
		node = node.parentNode;
	}
	return false;
}



function dynamichide(e){
	/*
	if (ie5&&!dropmenuobj.contains(e.toElement))
	delayhidemenu()
	else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
	delayhidemenu()
	*/

	var fromTarget	= e.srcElement ? e.srcElement : e.currentTarget;
	var toTarget	= e.toElement ? e.toElement : e.relatedTarget;
	
	if ( !isPartOfMenu( toTarget ) )
	{
		dropmenuobjs = []; // leeg maken	
		hideMenusNotInArray();
	} 
	
}

function delayhidemenu(){
	//delayhide=setTimeout("dropmenuobj.style.visibility='hidden'",disappeardelay)
	//delayhide=setTimeout("hideMenuFromLevel( menu_current_level )",disappeardelay);
	//debug( "delayhidemenu()" );
	//hideMenuFromLevel( 0 );
	//delayhide=setTimeout("hideMenusNotInArray()",disappeardelay);
	hideMenusNotInArray();
}


