// SmartmenuTree by Gerhard from Lucrasoft (www.lucrasoft.nl) and eXploitation (www.exploitation.nl)

// MENU = 0
// PAGINA = 2
// MENU + PAGINA  = 1

// Ah.. NextSibling returned soms ook gewone text.
// Gelukkig dat ik daar nu achter ben...

Object.prototype.nextObject = function() {
  var n = this;
  do n = n.nextSibling;
  while (n && n.nodeType != 1);
  return n;
}

Object.prototype.previousObject = function() {
  var p = this;
  do p = p.previousSibling;
  while (p && p.nodeType != 1);
  return p;
}

/* Helaas. Door IE gemaakte objecten (EG div) doen user DOM gemaakte members niet overnemen */
/* Dus, i.p.v. htc fix, gebruik ik maar klassieke methode */

function getNextObject(obj) { do obj = obj.nextSibling; while (obj && obj.nodeType != 1); return obj; }
function getPreviousObject(obj) { do obj = obj.previousSibling; while (obj.nodeType != 1); return obj; }

mMenu = 0;
mMenuPage = 1;
mPage = 2;

strDomain = window.location.href;

if ((strDomain.indexOf('.nl') != -1) || (strDomain.indexOf('.com') != -1) || (strDomain.indexOf('.eu') != -1)) {
  var re = /(.*?)(\.nl|\.com|\.eu|\.org)/i;
	strDomain = strDomain.match(re)[0];
} else {
	arrDomain = strDomain.split('/');
	strDomain = 'http://' + arrDomain[2] + '/' + arrDomain[3];
}

var imgPlus = strDomain + '/Images/spacer.gif';
var imgMin = strDomain + '/Images/spacer.gif';
var imgSpace = strDomain + '/Images/spacer.gif';

var cssClassOut = "cssClassOut";
var cssClassSel = "cssClassSel";

varCSSPage = 'cssPage';
varCSSMenu = 'cssMenu';
varCSSMenuPage = 'cssMenuPage';

var arrMode = new Array();
arrMode[0] = 'cssDepth0';
arrMode[1] = 'cssDepth1';
arrMode[2] = 'cssDepth1';

var strAgent = navigator.userAgent.toLowerCase();
if (strAgent.indexOf("msie") != -1) {
  strAgent = 'IE';
} else {
  strAgent = 'MOZ';
}

// Initialize global variables
var objMenu = document.getElementById('menu');
var lstMenu = objMenu.getElementsByTagName('DIV'); // Mozilla has no support for children
var intMenu = lstMenu.length;
var strID, intDepth, intMode, strName, strHref, strOutput, strSpace, strIndent;
var intIndent = 10;
var strIndent = '';
var objExpand = '';

strOutput = '';
blnFindNull = false;
blnFindSub = false;
blnFirstRun = false;

function launch() {
  var blnFirstLaunch = true;
  var blnCondition = false;
	var blnFindNodes = false;
	var tmpDepth;
	var newDepth;

	for (i=intMenu - 1; i>=0; i--) {
		strID = lstMenu[i].id; //ID
		
		intDepth = parseInt(lstMenu[i].getAttribute('depth')); //DEPTH
		intMode = parseInt(lstMenu[i].getAttribute('mode')); //MODE

		strName = lstMenu[i].childNodes[0].childNodes[0].nodeValue;
		strHref = lstMenu[i].innerHTML;
		
		if (strHref !== 'undefined') {
			intHrefStart = strHref.indexOf('<a');
			intHrefStop = strHref.indexOf('>');
			strHrefTemp = strHref.substring(intHrefStart,intHrefStop + 1);
			
      if (intMode == 0) {
				strHrefTemp = strHrefTemp + '<img src="' + imgPlus + '" border="0">' + strName + '</a>';
			} else if (intMode == 1) {
				strHrefTemp = strHrefTemp + '<img src="' + imgPlus + '" border="0">' + strName + '</a>';
			} else {
				strHrefTemp = strHrefTemp + '<img src="' + imgSpace + '" border="0">' + strName + '</a>';
			}
			lstMenu[i].innerHTML = strHrefTemp; 
    }

		strIndent = intIndent + 'px';
		if (intDepth !== 1) {
			strIndent = (10 + (10 * intDepth)) + 'px';
		}
		
 		lstMenu[i].className = arrMode[intDepth] + 'out';
		
		lstMenu[i].style.textIndent = strIndent;   
    lstMenu[i].style.display = 'none';
		
		if (intDepth == 0) {
      lstMenu[i].style.display = '';
		}
		if (strID == strExpandID) {
      lstMenu[i].style.display = '';
			getExpandIDs(i);
			lstMenu[i].className = arrMode[intDepth] + 'sel';	
			tmpDepth = intDepth;
			if (intMode == 1) {
			  //Aha! This node has to expand...
				objExpand = document.getElementById(strID);
				
			}
    }
		if (intDepth == tmpDepth) {
      lstMenu[i].style.display = '';
    }
		if (intDepth < tmpDepth) {
      lstMenu[i].style.display = '';
		  tmpDepth -= 1;
			objImage = lstMenu[i].parentNode.getElementsByTagName('IMG');
			strImage = objImage[0].src.toString();
			if (objImage[0].src == imgPlus) {
				objImage[0].src = imgMin;
        //lstMenu[i].setAttribute('mode',0);
			} 
		}
	}
}

function getExpandIDs(intI) {
	// Vind de nodes op hetzelfde niveau en display ze waar nodig
	var blnXFirstLaunch = true;
  var blnXCondition = false;
	var blnXFindNodes = false;
	var tmpXDepth;
	var newXDepth;
	var x = parseInt(intI);
	tmpXDepth = parseInt(lstMenu[x].getAttribute('depth'));
  
	blnXFirstLaunch = true;
 
	for (j=x; j<intMenu; j++) {
    strXID = lstMenu[j].id; //ID
		
		intXDepth = parseInt(lstMenu[j].getAttribute('depth')); //DEPTH
		intXMode = parseInt(lstMenu[j].getAttribute('mode')); //MODE
		strXName = lstMenu[j].childNodes[0].childNodes[0].nodeValue;
		strXHref = lstMenu[j].innerHTML;
		
   // PROCESS
	
		blnXFindNodes = true;
		//blnFindSub = true;
	 
	 //deze regelcode is fix!!!
		if (intXDepth < tmpXDepth - 1) {
		  break;
		}
		
		if (intXDepth == tmpXDepth) {
			if (blnXFirstLaunch == true) {
  			lstMenu[j].style.display = '';	
			}
		} 
		if ((intXDepth + 1) == tmpXDepth) {
			blnXFirstLaunch = false;
 			lstMenu[j].style.display = '';	
		}
  }
}


function handleClick(e,objExpand) {
	var srcTarget;
	var doExpand = false;
	
  if (objExpand) {
		// Werkt, maar is niet goede manier...
		// FUCK FIREFOX BTW
	  srcTarget = objExpand.getElementsByTagName('IMG');
		srcTarget = srcTarget[0].parentNode;
		srcTarget.parentNode.setAttribute('mode',0);
		doExpand = true;
	} else {
		if (!e) var e = window.event;
		
		if (e.target) {
			srcTarget = e.target;
		} else if (e.srcElement) {
			srcTarget = e.srcElement;
		}
		if (srcTarget.nodeType == 3) {
			 // Safari Stinkt
			srcTarget = srcTarget.parentNode;
		}
		
		if (srcTarget.tagName == 'IMG') {
			srcTarget = srcTarget.parentNode;
		}
	}
	
  // WERKT alert(srcTarget.tagName);
	intDepth = parseInt(srcTarget.parentNode.getAttribute('depth'));
	intNextDepth = intDepth + 1;
	intMode = parseInt(srcTarget.parentNode.getAttribute('mode'));
	
	
	var objMenu = srcTarget.parentNode;
	var objTempMenu = objMenu;
	var objTestMenu = objMenu;
	var intCurrentDepth = -1;
  var strMode = '';
  var objImage;
	var strImage;

  objImage = srcTarget.parentNode.getElementsByTagName('IMG');
	strImage = objImage[0].src.toString();

	if (getNextObject(objTempMenu) !== null) {
  	if (getNextObject(objTempMenu).style.display == 'none') {
		  strMode = 'expand';
		} else {
		  strMode = 'collapse';
		}
	}
	
	if (intMode == 0 || doExpand == true) {
		objImage = objTempMenu.getElementsByTagName('IMG');
		
		if (objImage[0].src == imgPlus) {
  		objImage[0].src = imgMin;
		} else {
  		objImage[0].src = imgPlus;
		}
  }
	
	if (intMode == 0 || doExpand == true) {
	  // UITKLAPMENU
    var i = 1;
		while (intDepth !== intCurrentDepth) {
			if (getNextObject(objTempMenu) == null) {
			  break;
			}
      
      objTempMenu = getNextObject(objTempMenu);
		
			intCurrentDepth = parseInt(objTempMenu.getAttribute('depth'));
			intCurrentMode = parseInt(objTempMenu.getAttribute('mode'));

			if (strMode == 'expand') {
				if (intCurrentDepth == intNextDepth) {
					 if (strMode == 'expand') {
						 if (strAgent == 'IE') {
							 objTempMenu.style.display = '';
							 objTempMenu.style.visibility='hidden'; 
							 objTempMenu.style.filter = 'blendTrans(duration=0.2)';
							 objTempMenu.filters[0].apply();
							 objTempMenu.style.visibility='visible';
							 objTempMenu.filters[0].Play();
            } else {
							 objTempMenu.style.display = '';
						 }
					 } else {
						 objTempMenu.style.display = 'none';
					 }
				} 
			} else {
				if (intCurrentDepth >= intNextDepth) {
					 if (strMode == 'expand') {
						 if (strAgent == 'IE') {
							 objTempMenu.style.display = '';
							 objTempMenu.style.visibility='hidden'; 
							 objTempMenu.style.filter = 'blendTrans(duration=0.2)';
							 objTempMenu.filters[0].apply();
							 objTempMenu.style.visibility='visible';
							 objTempMenu.filters[0].Play();
						 } else {
							 objTempMenu.style.display = '';
						 }
					 } else {
						 objTempMenu.style.display = 'none';
						 if (intCurrentMode == 0) {
							 objImage = objTempMenu.getElementsByTagName('IMG');
							 objImage[0].src = imgPlus;
						 }
          }
				} 
			}
			
			if ((intCurrentDepth <= intDepth) || (intCurrentDepth == intDepth)) {
				break;
			} 

      i+=1;
			if (i == 100) {
			   alert('hardbreak');
				 break;
			}
   	}

  	return false;
    // FUNCTIE UITKLAPPEN OF INKLAPPEN
	} else {
	 	return true;
 }
}

objMenu.onclick = handleClick;
launch();
if (objExpand !== '') {
	handleClick('',objExpand);
}

document.getElementById('menu').style.display = '';
