/*
    tested on :
    ie 5.00.2614.3500 (nl)
    ie 6.0.2900.2180 (enu)
    ie 7.0.57.30.13 (enu)

    ff 1.5 (nl)
    ff 2.0.0.9 (nl)
    ff 3.0.3 (en-vs)

    safari 2.0 (412)

    mozilla 1.4
    mozilla firebird 0.6
    opera 7.11
    opera 8.52
    netscape 8.1
	

*/

  var previousItem = '';
  var previousLevel = -1;
  var prevLevel0 = '';
  var prevLevel1 = '';
  var prevLevel2 = '';
  var previousClickItem = '0';
  
    		
	function foldoutbypath(pth) {
  
		if (pth) {
			if (pth.indexOf('.') > -1)  {
				
				var arrpath = pth.split('.');
				var i;
				
				for(i = 0; i < arrpath.length; i++){
				  
					expandbyid (arrpath[i]);
				}
			} else {
				expandbyid (pth);
			}
				
		}
	}
  
  function bubblecancel(e)
	{
		if (!e) var e = window.event;
		e.cancelBubble = true;
		if (e.stopPropagation) e.stopPropagation();
	}

  
  function left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
	}


	function right(str, n){
			if (n <= 0)
				return "";
			else if (n > String(str).length)
				return str;
			else {
				var iLen = String(str).length;
				return String(str).substring(iLen, iLen - n);
			}
	}
	
	
	function initMenu (element) {
			var obj;
			var childIndex = 0;  
      var obj = element.childNodes[ childIndex ];  
            
      while (obj != null)  
      {  
        initMenu(obj);  
        obj = element.childNodes[ childIndex ];  
        
         if (obj && obj.tagName == "DIV"){
         
						if ( left(obj.className,5)=="level") {
							//obj.style.cursor = 'pointer'; werkt niet op ie5
							//alert(obj.className + ":" + obj.id); 				
							//initMenu(obj);
							obj.onclick					= exp;
						}
				}
				 childIndex++;  
      }  
	}

	
	function initFoldMenu() {
			
			var menu = document.getElementById("foldmenu");
			if (menu) {
				initMenu(menu);
			}
	}
				 
				 
  function changestate(element,state) {
  	var i;
	  var obj;
		
		var _elementList = element.childNodes;
	   
	   for ( i = 0; i < _elementList.length; i++ ) {
				obj = _elementList[i];
				
				if (obj && obj.tagName == "DIV"){						
						obj.style.display = state;	
				}   
	   }
  }
  
  
  function collapsebyid(id) {

		if (id) {
			var element = document.getElementById(id);

			if (element) {
				changestate(element,"none")
			}
		}
  }
 
  
 function expandbyid(id) {
		if (id) {
			var element = document.getElementById(id);

			if (element) {
				expand(element)
			}
		}
  }

  
 function exp(e) {
		var element = this;
				
		if (element.id != previousItem ) {
			expand(element);
		}
		
		bubblecancel(e);
	}

  
 function expand(element) {
  
	if (left(element.className,5)!='level') {
		return false;
	}
	
	if (previousClickItem != element.id) {	
		element.style.fontWeight = 'bold';
		var prevElement = document.getElementById(previousClickItem);
		if (prevElement) {
			prevElement.style.fontWeight = 'normal';
		}
		previousClickItem = element.id;
	}
	
	var currentLevel = right(element.className,1);
	
	if (currentLevel > 2) {
		return false;
	}
	
	if (currentLevel<previousLevel) {
		// we gaan een niveau omhoog
		
		switch (previousLevel)
		{
		case "0":
			collapsebyid(prevLevel2);
			collapsebyid(prevLevel1);
			collapsebyid(prevLevel0);
			break
		case "1":
			//collapsebyid(prevLevel2);
			collapsebyid(prevLevel1);
			collapsebyid(prevLevel0);
			break
		case "2":
			collapsebyid(prevLevel2);
			collapsebyid(prevLevel1);
			
			if (currentLevel=='0') {
				collapsebyid(prevLevel0);
			}
			
			break
		}
	}
	
	if (currentLevel==previousLevel) {
		//alert("samelevel: " + currentLevel);
	
		switch (previousLevel)
		{
		case "0":
			collapsebyid(prevLevel2);
			collapsebyid(prevLevel1);
			collapsebyid(prevLevel0);
			break
		case "1":
			collapsebyid(prevLevel2);
			collapsebyid(prevLevel1);
			//collapsebyid(prevLevel0);
			break
		case "2":
			collapsebyid(prevLevel2);
			//collapsebyid(prevLevel1);
			//collapsebyid(prevLevel0);
			break
		}
	}
	
	previousLevel = currentLevel;
	previousItem = element.id;
	
	switch (currentLevel)
	{
	case "0":
		prevLevel0 = element.id;
		break
	case "1":
		prevLevel1 = element.id;
		break
	case "2":
		prevLevel2 = element.id;
		break
	}
	
	changestate(element,"block")
}


