// menu functies
var menuItems=new Array();
var menuItemsO=new Array();
var menuItemsHR=new Array();
var sel=99;

function URLDecode(psEncodeString)
{
  // Create a regular expression to search all +s in the string
  var lsRegExp = /\+/g;
  // Return the decoded string
  return unescape(String(psEncodeString).replace(lsRegExp, " "));
}

function renderArticleMenu()
	{
	alert("menu?");
	//activateParent(2,'presentation-solutions','test2');
	}

//preload images
for (x=0;x<4;x++)
		{
		str="menuitem"+String(x);
		menuItems.push(document.getElementById(str));
		}

function activate(x)
	{
	str="menuitem"+String(x);
	i=document.getElementById(str);
	i.src="/images/menuitem"+String(x)+"o.gif";
	}

function deactivate()
	{
	for (x=0;x<4;x++)
		{
		str="menuitem"+String(x);
		i=document.getElementById(str);
		if (x!=sel) {i.src="/images/menuitem"+String(x)+".gif"}
		}
	}
function activateParent(i,name,cmsname)
	{
	for (x=0;x<4;x++)
		{
		ch=document.getElementById("treeMenu"+String(x));
		if (ch) {ch.style.display="none";}
		}

	//child menu
	ch=document.getElementById("treeMenu"+String(i))
	if (ch) {ch.style.display="";}

	if (name!=cmsname) 
		{
		//alert(cmsname);
		ac=document.getElementById(cmsname).firstChild; //H2
		
		if (ac) 
			{
			ac=ac.firstChild; //A
			ac.className="activeMenuItem";
			}
		
		}
	
	activate(i);
	sel=i;
	}

//zoeken
function search()
	{
	s=document.getElementById("searchbox");
	if (s)
		{
		if (s.value=="") {alert("Geef a.u.b. een zoekterm op");}
		else
			{
			f=document.getElementById("searchform");
			f.submit();
			}
		}
	
	}

//popups

PositionX = 100;
PositionY = 100;
defaultWidth  = 500;
defaultHeight = 500;


var AutoClose = true;

if (parseInt(navigator.appVersion.charAt(0))>=4){
var isNN=(navigator.appName=="Netscape")?1:0;
var isIE=(navigator.appName.indexOf("Microsoft")!=-1)?1:0;}
var optNN='scrollbars=no,width='+defaultWidth+',height='+defaultHeight+',left='+PositionX+',top='+PositionY;
var optIE='scrollbars=no,width=150,height=100,left='+PositionX+',top='+PositionY;

function popImage (imageURL, caption) {

if (caption=="NL") {caption="Uitvergroting";}
if (caption=="EN") {caption="Large image";}


  var windowTop = 100;                // Top position of popup
  var windowLeft = 100                // Left position of popup
  var defaultWidth = 730;             // Default width (for browsers that cannot resize)
  var defaultHeight = 532;            // Default height (for browsers that cannot resize)
  var onLoseFocusExit = true;         // Set if window to exit when it loses focus
  var undefined;

  // Set up the window open options
  var Options = "width=" + defaultWidth + ",height=" + defaultHeight + ",top=" + windowTop + ",left=" + windowLeft + ",resizable"
  
  // Now write the HTML markup to the new window, ensuring that we insert the 
  // parameter URL of the image and the parameter description of the image in 
  // the right place.
  var myScript = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n" +
    "<html>\n" + 
    "<head>\n" + 
    "<title>" + caption + "\</title>\n" +
    "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">\n" +
    "<meta http-equiv=\"Content-Language\" content=\"en-gb\">\n" +
    "<script language=\"JavaScript\" type=\"text/javascript\">\n" +
    "function resizewindow () {\n" +
    "  var width = document.myimage.width;\n" + 
    "  var height = document.myimage.height;\n";
  
  // Netscape  
  if (navigator.appName.indexOf("Netscape") != -1) {  
    myScript = myScript +  "  window.innerHeight = height;\n  window.innerWidth = width;\n"
  }
   
  // Opera 
  else if (navigator.appName.indexOf("Opera") != -1) {
    myScript = myScript +  "  window.resizeTo (width+12, height+31);\n"
  }
  
  // Microsoft 
  else if (navigator.appName.indexOf("Microsoft") != -1) { 
    myScript = myScript + "  window.resizeTo (width+12, height+31);\n" 
  }
  
  // Assume a frig factor for any other browsers
  else {
    myScript = myScript + "  window.resizeTo (width+14, height+34);\n"
  }
      
  myScript = myScript + "}\n" + "window.onload = resizewindow;\n" +
    "</script>\n</head>\n" + "<body ";
    
  // If the window is required to close when it loses focus.
  if (onLoseFocusExit) {myScript = myScript + "onblur=\"self.close()\" ";}
    
  myScript = myScript + "style=\"margin: 0px; padding: 0px;\">\n" +
    "<a href='javascript:window.close();'><img src=\"" + imageURL + "\" alt=\"" + caption + "\" title=\"" + caption + "\" name=\"myimage\" border='0'></a>\n" + 
    "</body>\n" +  "</html>\n";
        
  // Diagnostic - uncomment the next line if you wish to see the script generated.   
  //alert (myScript);
  
  // Create the popup window
  var imageWindow = window.open ("","imageWin",Options);
  imageWindow.document.write (myScript)
  imageWindow.document.close ();
  if (window.focus) imageWindow.focus();
  return false;
}

//Form checks
function MM_validateFormEN() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateFormNL.arguments;

  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);hr=args[i+1];o=val;

   // if (String(val.type)=="undefined") {val=getElementsByTagName(val);}
    if (val) { nm=val.name;T=val.type;

    if(val.length>0 && val[0].type=="radio") {T="radio";}

if ((val=val.value)!="" && T!="checkbox" && T!="radio") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+URLDecode(hr)+' must contain a valid e-mail address.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+URLDecode(hr)+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+URLDecode(hr)+'must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') 
	{
	
	if (T=="checkbox" && o.checked==false) {errors += '- '+URLDecode(hr)+' is required\n'; }
	if (T=="radio" && getCheckedValue(o)==false) {errors += '- '+URLDecode(hr)+' is required\n'; }
	if (T!="checkbox" && T!="radio")
		{errors += '- '+URLDecode(hr)+' is required\n'; }
	}
}
  } if (errors) alert('The following information is incorrect:\n'+errors);

  document.MM_returnValue = (errors == '');
}

function MM_validateFormNL() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateFormNL.arguments;

  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);hr=args[i+1];o=val;

   // if (String(val.type)=="undefined") {val=getElementsByTagName(val);}
    if (val) { nm=val.name;T=val.type;

    if(val.length>0 && val[0].type=="radio") {T="radio";}

if ((val=val.value)!="" && T!="checkbox" && T!="radio") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+URLDecode(hr)+' moet een geldig e-mail adres bevatten.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+URLDecode(hr)+' moet een nummer bevatten.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+URLDecode(hr)+' moet een nummer tussen '+min+' en '+max+' bevatten.\n';
    } } } else if (test.charAt(0) == 'R') 
	{
	
	if (T=="checkbox" && o.checked==false) {errors += '- '+URLDecode(hr)+' is verplicht\n'; }
	if (T=="radio" && getCheckedValue(o)==false) {errors += '- '+URLDecode(hr)+' is verplicht!\n'; }
	if (T!="checkbox" && T!="radio")
		{errors += '- '+URLDecode(hr)+' ontbreekt\n'; }
	}
}
  } if (errors) alert('De volgende informatie is incorrect:\n'+errors);

  document.MM_returnValue = (errors == '');
}

function getCheckedValue(radioObj) {
	if(!radioObj)
		return false;
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return false;
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return false;
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function go(url)
	{
	url+="?menu="+String(sel);
	document.location=url;
	}







/* **********************************************************************************************8 */

	function getExtensionLess(inp)
		{
		if (inp==null) {return "";}
		uri = inp.split("/");
		filename =uri[uri.length-1];
		chunks=filename.split(".")
		extension =chunks[chunks.length-1];
		if(chunks.length==1) {return inp;}
		else
			{
			chunks.pop()
			without=chunks.join(".")
	
			uri.pop()
			uri.push(without)
			//alert(uri.join("/"));
			return uri.join("/");
			}
		}

	var aTreeMenu = new Array();
	var makeMenuParentsOpenMenu = true;
	var toAlter;
	var targetItem;

	var toAlter=location.href
		
		if (toAlter.indexOf("#")!=-1)
			{var toAlter= toAlter.substring(0,toAlter.indexOf("#"));}
		if (toAlter.indexOf("?")!=-1)
			{var toAlter= toAlter.substring(0,toAlter.indexOf("?"));}
			
		reg=new RegExp("-artikel-[0-9]{1,4}");
		b=toAlter.match(reg);
		reg2=new RegExp("-reactie-[0-9]{1,4}");
		b2=toAlter.match(reg2);
		
		if (b!=null)
			{var toAlter=toAlter.replace(b,"");}
		else if (b2!=null)
			{var toAlter=toAlter.replace(b2,"");}
		else
			{var toAlter=location.href;}
		
		//kap extensie eraf? -> JA!!!
		toAlter = getExtensionLess(toAlter)

	/**
	 * Run through the given list and check if a li node contains a ul node. 
	 * If this is true, create a clickable node to expand the ul
	 * @param object oTree
	 */
	function makeMenu(oTree){
		if (!oTree) {return true;}
		var oChilds = oTree.childNodes;
		
		var bLast = false;
		var aLastState = "";
		
		//dit is een hack om het menu goed te laten werken als er named href tags in de location.href zitten
		//er moet ook een check in voor -artikel-nr !!
		//en ook checken of het matcht ZONDER exensie (die choppen we er in de module af!)
		//volgorde is hier belangrijk!
		
		//alert(toAlter)
		// Iterate through every child
		
		for (var i=oChilds.length-1; i >= 0; i--){
		
			
			//alert(getExtensionLess(String(oChilds[i].firstChild)));
			//alert(getExtensionLess(String(oChilds[i].firstChild))+":::"+toAlter);
// 			if (getExtensionLess(String(oChilds[i].firstChild))==toAlter )
// 				{
// 				targetItem=oChilds[i];
// 				if(oChilds[i].firstChild.href.indexOf("#")==-1) //als dit niet gebeurt kleurt een pagina die niet in het menu voorkomt totaal blauw
// 					{oChilds[i].className='activeMenuItem';}
// 				} //hack om het actieve menu item weer te kunnen geven
			// Create a new submenu when the li element contains a ul element
			if(oChilds[i].nodeName == "LI" && hasSubmenu(oChilds[i])){
				
				// If this is the last node, give it a different class
				var sClassName = (arrayContains(aLastState, aTreeMenu.length))? " itemClose" : " itemClose";
				if(!bLast){
					oChilds[i].className += sClassName + "End";
					bLast = true;
				} else
					oChilds[i].className += sClassName;
				
				aTreeMenu[aTreeMenu.length] = oChilds[i];
					
				// If the boolean is set and the href of the firstChild A is '#'
				// the item opens and closes the menu
				
				
// 				alert(oChilds[i].firstChild.firstChild.nodeName);
				if(makeMenuParentsOpenMenu && oChilds[i].firstChild.firstChild.nodeName == "A"){
					
					if(oChilds[i].firstChild.firstChild.href == location.href.replace("#","")+"#"){ //dit is de boosdoener
						
						oChilds[i].firstChild.firstChild.href="javascript:void(0);";
						oChilds[i].firstChild.firstChild.onclick = function(event){
							if(!event){
								//parentNode.parentNode omdat er h2 en h1 binnen de <a> zitten
								event = window.event;
								oObj = event.srcElement.parentNode.parentNode;
							} else
								oObj = event.target.parentNode.parentNode;
								
							event.cancelBubble = true;
							//gooi hier het menu dicht!
							//alert(oObj);
							closeMenu(oTree,oObj);
							switchClassname(oObj);
						};
					}
				}
				
				// Register the event handler for this node
				oChilds[i].onclick = function(event){ 
					if(!event){
						event = window.event;
						oObj = event.srcElement;
					} else
						oObj = event.target;
						
					event.cancelBubble = true;
					switchClassname(oObj);
				};
			} else if(oChilds[i].nodeName == "LI") {
				
				oChilds[i].className = "item " + oChilds[i].className;
				// If this is the last node, give it an extra class
				if(!bLast){
					oChilds[i].className += " endItem";
					bLast = true;
				}
			}
		}
		
	//if (openAt) {openParentNode(openAt);}
	}
	
	function closeMenu(menu,openItem)
		{
		//alert(openItem);
		var oChilds = menu.childNodes;
		
		for (var i=oChilds.length-1; i >= 0; i--)
			{
			if(oChilds[i])
				{
				//alert(oChilds[i]);
				if(oChilds[i].nodeName=="LI" && oChilds[i]!=openItem )
					{
					oChilds[i].className = oChilds[i].className.replace("itemOpen", "itemClose");
					//oObj.className = oObj.className.replace("itemOpen", "itemClose");
					}
				}
			}
		}
		
	/**
	 * Switch the classname of an object
	 * @param object oObj
	 */
	function switchClassname(oObj){
		
		if(oObj.className.indexOf("itemOpen") != -1){
			oObj.className = oObj.className.replace("itemOpen", "itemClose");
		} else if(oObj.className.indexOf("itemClose") != -1) {
			oObj.className = oObj.className.replace("itemClose", "itemOpen");
		}			
	
	}
	
	/**
	 * Checks if a list object contains a ul object
	 * @param object oList
	 * @return boolean
	 */
	function hasSubmenu(oList){
		var oMenuChilds = oList.childNodes;
		var bHasList = false;
		
		// Iterate through all the child nodes and search for a ul tag
		for(var j = 0; j < oMenuChilds.length; j++){
			if(oMenuChilds[j].nodeName == "UL") {
				makeMenu(oMenuChilds[j]);
				bHasList = true;
			}
		}
		return bHasList;
	}
	
	/**
	 * Finds the parent menu in which this item is placed and opens the menu
	 * @param object oItem
	 */
	function openParentNode(oItem,def){
		oItem=document.getElementById(oItem);
		if (!oItem && def) {oItem=document.getElementById(def);}
		//if(!oItem) {oItem=targetItem;}
		if(!oItem) {return;}

		if(oItem.parentNode.nodeName == "UL" && oItem.parentNode.parentNode.nodeName == "LI"){ //submenu open
		
			oMenu = oItem.parentNode.parentNode;
			oMenu.className = oMenu.className.replace("itemClose", "itemOpen");
			oItem.className='activeMenuItem';
			openParentNode(oMenu);
			return;
		}
		else if (oItem.parentNode.nodeName == "UL") //hoofditem
			{
			a=oItem.childNodes[0]; //link
			oItem.className = oItem.className.replace("itemClose", "itemOpen");
			
			oItem.className=oItem.className + ' activeMenuItem';
			return;
			//alert(oItem.className);
			
			}
	
	//alert(document.getElementById("treeMenu").innerHTML);
	}
	
	
    
    /**
     * Checks if the needle exists in the haystack
     * @param array aSrc
     * @param string sNeedle
     * @return boolean
     */
    function arrayContains(aHayStack, sNeedle){
        for (var i = 0; i < aHayStack.length; i++) {
            if (aHayStack[i] == sNeedle)
            	return true;
        }
        return false;    	
    }


/* modal popup */

function getBrowserWindowSize() {
    var winW = 630, winH = 460;

    if (parseInt(navigator.appVersion)>3) {
        if (navigator.appName=="Netscape") {
            winW = window.innerWidth;
            winH = window.innerHeight;
        }
        if (navigator.appName.indexOf("Microsoft")!=-1) {
            winW = document.body.offsetWidth;
            winH = document.body.offsetHeight;
        }
    }

    var rval = {
        width: winW,
        height: winH
    };

    return rval;
}

function createRequestObject() {
    var tmpXmlHttpObject;
    
    //depending on what the browser supports, use the right way to create the XMLHttpRequest object
    if (window.XMLHttpRequest) { 
        // Mozilla, Safari would use this method ...
        tmpXmlHttpObject = new XMLHttpRequest();
	
    } else if (window.ActiveXObject) { 
        // IE would use this method ...
        tmpXmlHttpObject = new ActiveXObject("Microsoft.XMLHTTP");
    }
    
    return tmpXmlHttpObject;
}

var http = createRequestObject();

function makeGetRequest(popupNr) {
    ti=new Date();
    http.open("get", "getpopup.php?reden=" + popupNr+"&date="+ti.getTime());
    http.onreadystatechange = processResponse;
    http.send(null);
}

function processResponse() {
    if(http.readyState == 4){
        var response = http.responseText;
        document.getElementById("popup").innerHTML = response;

        sz=getBrowserWindowSize();
        bg=document.getElementById("modalBackgroundDiv");
        bg.style.width=String(sz.width)+"px";
        bg.style.height=String(sz.height)+"px";
        bg.style.display="";
    }
}

function getPopup(nr) {
    d=document.getElementById('popup');
    d.style.display = "block";
    makeGetRequest(nr)
}

function hidePopup()
	{
	bg=document.getElementById("modalBackgroundDiv");
	bg.style.display="none";
	d=document.getElementById('popup');
	d.style.display='none';
	}
