window.onload = init;
var wh;

//variabelen voor routenet
var locatie = "";
var postcode = "";
var root = "";


function init(){
	//zetTab();
	activateNavigation();
	swMaxHeight();
	//wh = window.open('','x');
}

function activateNavigation() {
	var ul = document.getElementById("subNav");
	if(!ul) return;
	var lis = ul.getElementsByTagName("li");
	for (var i=0; i < lis.length; i++) {
		if (lis[i].parentNode == ul) {
			if (lis[i].className == "selected") lis[i].persistent = true;
			lis[i].submenu = lis[i].getElementsByTagName("ul")[0];
			lis[i].onmouseover = openMenu;
			lis[i].onmouseout = closeMenu;
			if (document.all && lis[i].submenu) {
				lis[i].iframe = addIFRAME(lis[i], lis[i].submenu);
			}
		}
	}
}

function openMenu(e) {
	if (this.className == "selected" && !this.persistent) return;
	if (this.submenu) {
		this.submenu.className = "visible";
	}	
	if (document.all && this.iframe) this.iframe.className = "visible";
	this.className = "selected";
	if (e) e.cancelBubble = true; else window.event.cancelBubble = true;
}
function closeMenu(e) {
	if (e) var dest = e.relatedTarget; else var dest = window.event.toElement;
	if (!isChild(this, dest)) {
		if (this.submenu) this.submenu.className = "";
		if (document.all && this.iframe) this.iframe.className = "";
		if (!this.persistent) this.className = "";
	}
	if (e) e.cancelBubble = true; else window.event.cancelBubble = true;
}
function isChild(ancestor, candidate) {
	while (candidate && candidate != ancestor.parentNode) {
		if (candidate == ancestor) return true;
		candidate = candidate.parentNode;
	}
	return false;
}
function addIFRAME(container, contents) {
	contents.className = "visible";
	var newNode = document.createElement("iframe");
	newNode.style.width = contents.offsetWidth+"px";
	newNode.style.height = contents.offsetHeight+"px";
	contents.className = "";
	return container.insertBefore(newNode, contents);
}
function toonSubNav(){
	if (!document.childNodes) return;
	var nav = document.getElementById('subNav');
	if (!nav) return;
	var navLi = nav.childNodes;
	for (var i=0;i<navLi.length;i++){
		if (navLi[i].tagName == 'LI'){
			var navA = navLi[i].childNodes;
			navLi[i].onmouseover = function(){
				showHide(this,1);
			}
			navLi[i].onmouseleave = function(e){
				if (e) var dest = e.relatedTarget; else var dest = window.event.toElement;
				if (!isChild(this, dest)) {
					showHide(this,0);
				}
				if (e) e.cancelBubble = true; else window.event.cancelBubble = true;
			}
			for (var j=0;j<navA.length;j++){
				//ga dieper op zoek naar de li's in de subnavigatie
				if (navA[j].tagName == 'UL'){
					var navUl = navA[j].childNodes;
					for(k=0;k<navUl.length;k++){
						if (navUl[k].tagName == 'LI'){
							navUl[k].onmouseover = function(){
								keepUp(this,1)
							}
							navUl[k].onmouseout = function(){
								keepUp(this,0)
							}
						}
					}
				}
			}
		}
	}
}

function showHide(dit,num){
	var IO = num == 1 ? 'block' : 'none';

	//wh.document.writeln('showhide: '+ IO);

	var ouder = dit.childNodes;
	for(var i=0;i<ouder.length;i++){
		if(ouder[i].tagName == 'UL'){
			ouder[i].style.display = IO;
		}
	}
}

function keepUp(dit,num){
	var IO = num == 1 ? 'block' : 'none';

	//wh.document.writeln('keepUp: '+ IO + '('+ dit.innerText +')');

	//alert('ku '+IO);
	var ouder = dit.parentNode;
	//alert(ouder.tagName)
	ouder.style.display = IO;
}

function zetTab(){
	var teller = 0;
	var tab = document.getElementById('blokTab');
	if(tab){
		tabNodes = tab.childNodes;
		for(i=0;i<tabNodes.length;i++){
			if (tabNodes[i].tagName == 'LI'){
				var divId = tabNodes[i].childNodes[0];
				if (teller==1){
					document.getElementById('blok'+divId.title).style.display = 'none';
				}
				teller++;
			}
		}
	}
}

function activeerTab(nWelke) {
	if (nWelke==1) {
		document.getElementById('blokitem1').style.display = 'inline';
		document.getElementById('pos1').className = 'pos1Actief';
		document.getElementById('blokitem2').style.display = 'none';
		document.getElementById('pos2').className = 'pos2Passief';
		
	} else {
		document.getElementById('blokitem2').style.display = 'inline';
		document.getElementById('pos2').className = 'pos2Actief';
		document.getElementById('blokitem1').style.display = 'none';
		document.getElementById('pos1').className = 'pos1Passief';
	}

}

function swMaxHeight() {
    var maxHeight = 0;
    var entries = document.getElementById('swMaxHeight');

    if (entries) {
	    var blokken = entries.getElementsByTagName('div');

	    for (var j = 0; j < blokken.length; j++) {
	    	if (blokken[j].className == 'swLokatie') {
	    		if (blokken[j].offsetHeight > maxHeight)
		    		 maxHeight = blokken[j].offsetHeight
	    	}
	    }

	    for (var j = 0; j < blokken.length; j++) {
	    	if (blokken[j].className == 'swLokatie') 
		    	blokken[j].style.height = '' + maxHeight + 'px';
	    }
    } 
}



//functie om een nieuw browserwindow gecentreerd in het scherm aan te roepen
function NewWindow(mypage,myname,w,h,scroll)
{
	if (mypage == ""){return;}
	var extra="";
	if (myname=="applicatie"){extra=",toolbar=1,status=1,menubar=1,location=1"}
	var win = null;
	LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
	TopPosition = (screen.height) ? (screen.height-h)/2 : 0;
	settings =
	'height='+h+',width='+w+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',resizable'+extra
	
	win = window.open(mypage,myname,settings)
}


//functie om routenetpagina te openen
function OpenRouteNet()
{

if (locatie == "" || postcode == "") {return};

var url = "/" + root + "/getroute.aspx?locatie=" + locatie + "&postcode=" + postcode;
NewWindow(url,'route','650','480','yes')

}


// *********************
// De Suggest Code v3 **
// *********************
//Julian Robichaux
//http://www.nsftools.com/tips/ZipLookupTest.htm


var letter = "";
var _entiteit = "";
var _doelgroep = "";
var objDoc;
var doc;
var txt;
var olst;
var zoek;

var queryField;
var lookupURL;
var divName;
var ifName;
var lastVal = "";
var val = ""
var xmlHttp;

var searching = false;
var globalDiv;
var divFormatted = false;
var DIV_BG_COLOR = "#ffffff";
var DIV_HIGHLIGHT_COLOR = "#3366cc";
var FONT_COLOR = "#000000";
var FONT_HOVER_COLOR = "#ffffff";


///////////////////////////////////////////////////
// Genereer het lijstje met sugesties. 
// Heel veel uitgecommentarieerd omdat we terug moesten grijpen naar een oudere versie
// van xmlDomDocument en die ondersteund minder XPath contstructies.
function Setval(doelgroep, entiteit)
{
var nds,pts, node;
try {
try {
	nds = doc.documentElement.getElementsByTagName('Naam');
	pts = doc.documentElement.getElementsByTagName('Path');
} catch (e) {
	// alert("getElementByTagName error!:" + e.message);
}

	var div = getDiv("suggest");
  
	var x = queryField.offsetLeft;
	var y = queryField.offsetTop + queryField.offsetHeight;
	var width = queryField.offsetWidth;

	var parent = queryField;
	while (parent.offsetParent) {
		parent = parent.offsetParent;
		x += parent.offsetLeft;
		y += parent.offsetTop;
	}
	
	globalDiv.style.left = x + "px";
	globalDiv.style.top = y + "px";
	globalDiv.style.width = width + "px";
  
	zoek = zoek.toLowerCase();
	var regExp = new RegExp(createAccentInsensitiveRegExpForInput(zoek));
	
	while (div.childNodes.length > 0)
		div.removeChild(div.childNodes[0]);
	for (var i = 0; i < nds.length; i++)
	{
	 // alert(nds[i].firstChild.nodeValue);
	if (nds[i].firstChild.nodeValue.toLowerCase().match(regExp)) {
		// each result will be contained within its own div
		var result = document.createElement("div");
		result.style.cursor = "pointer";
		result.style.padding = "0px 3px 0px 3px";
		result.style.overflow = "hidden"; 
		_unhighlightResult(result);
		result.onmousedown = selectResult;
		result.onmouseover = highlightResult;
		result.onmouseout = unhighlightResult;

		var result1 = document.createElement("span");
		result1.className = "result1";
		result1.style.textAlign = "left";
		result1.style.width = width + "px";
		result1.style.overflow = "hidden";
		result1.style.fontWeight = "normal";
		result1.innerHTML = nds[i].firstChild.nodeValue;
	    
		var result2 = document.createElement("span");
		result2.className = "result2";
		result2.style.display = "none";
		result2.style.textAlign = "right";
		result2.style.paddingLeft = "20px";
		result2.innerHTML = pts[i].firstChild.nodeValue;
	    // alert(pts[i].firstChild.nodeValue);
		result.appendChild(result1);
		result.appendChild(result2);
		div.appendChild(result);
		
		
	}
	showDiv(nds.length > 0);
}
} catch (e) {
// alert(e.message);
	// leeg xml document. Niks doen
}

}


function SetvalNotClickable(doelgroep, entiteit)
{
var nds,pts, node;
try {
try {
	nds = doc.documentElement.getElementsByTagName('Naam');
	pts = doc.documentElement.getElementsByTagName('Path');
} catch (e) {
	// alert("getElementByTagName error!:" + e.message);
}

	var div = getDiv("suggest");
  
	var x = queryField.offsetLeft;
	var y = queryField.offsetTop + queryField.offsetHeight;
	var width = queryField.offsetWidth;

	var parent = queryField;
	while (parent.offsetParent) {
		parent = parent.offsetParent;
		x += parent.offsetLeft;
		y += parent.offsetTop;
	}
	
	globalDiv.style.left = x + "px";
	globalDiv.style.top = y + "px";
	globalDiv.style.width = width + "px";
  
	zoek = zoek.toLowerCase();
	var regExp = new RegExp(createAccentInsensitiveRegExpForInput(zoek));
	
	while (div.childNodes.length > 0)
		div.removeChild(div.childNodes[0]);
	for (var i = 0; i < nds.length; i++)
	{
	 // alert(nds[i].firstChild.nodeValue);
	if (nds[i].firstChild.nodeValue.toLowerCase().match(regExp)) {
		// each result will be contained within its own div
		var result = document.createElement("div");
		result.style.cursor = "pointer";
		result.style.padding = "0px 3px 0px 3px";
		result.style.overflow = "hidden"; 
		_unhighlightResult(result);
		result.onmousedown = selectResult;
		result.onmouseover = highlightResult;
		result.onmouseout = unhighlightResult;

		var result1 = document.createElement("span");
		result1.className = "result1";
		result1.style.textAlign = "left";
		result1.style.width = width + "px";
		result1.style.overflow = "hidden";
		result1.style.fontWeight = "normal";
		result1.innerHTML = nds[i].firstChild.nodeValue.slice(0,1).toUpperCase() + nds[i].firstChild.nodeValue.slice(1);
	    result.appendChild(result1);
		result.appendChild(result1);
		div.appendChild(result);
		
		
	}
	showDiv(nds.length > 0);
}
} catch (e) {
// alert(e.message);
	// leeg xml document. Niks doen
}

}



function createAccentInsensitiveRegExpForInput(input) {
	var expression = input;	
	expression = expression.replace(/e/g, "[\u0065\u00e9\u00e8\u00ea\u00eb\u0045\u00c9\u00c8\u00ca\u00cb]"); //eéèêëEÉÈÊË
	expression = expression.replace(/o/g, "[\u006f\u00f4\u00f6\u00f2\u004f\u00d4\u00d6\u00d2]"); //oôöòOÔÖÒ
	expression = expression.replace(/a/g, "[\u0061\u00E0\u00E2\u00E4\u0041\u00C0\u00C2\u00C4]"); //aàâäAÀÂÄ
	expression = expression.replace(/i/g, "[\u0069\u00EF\u00EE\u00EC\u0049\u00CF\u00CE\u00CC]"); //iïîìIÏÎÌ
	// dit werkt alleen met utf-8 encoding van de file, maar dit werkt niet goed met ms visual sourcesafe
	//expression = expression.replace(/e/g, "[eéèêëEÉÈÊË]"); //eéèêëEÉÈÊË	
	//expression = expression.replace(/o/g, "[oôöòOÔÖÒ]"); //oôöòOÔÖÒ	
	//expression = expression.replace(/a/g, "[aàâäAÀÂÄ]"); //aàâäAÀÂÄ
	//expression = expression.replace(/i/g, "[iïîìIÏÎÌ]"); //iïîìIÏÎÌ	
	expression = "^" + expression + ".*";
	//alert(expression);
	return expression;
}




function prepare()
{
	// code for IE
	if (window.ActiveXObject)
	{
	try {
		if (typeof(doc) == 'undefined') {
			doc = new ActiveXObject("MSXML2.DOMDocument");
		}
		
		if(typeof(objDoc) == 'undefined') {
			objDoc = new ActiveXObject("MSXML2.XMLHTTP");
		}
	} catch (e) {
		alert("IE: new ActiveXObject Error!");
	}
	}
	// code for Mozilla, etc.
	else if (document.implementation && document.implementation.createDocument)
	{
	try {
	if (typeof(doc) == 'undefined') {
		doc = document.implementation.createDocument("","root",null);
	}
	if (typeof(objDoc) == 'undefined') {
		objDoc = new XMLHttpRequest();
	}
	} catch (e) {
		alert("Moz: new XMLHttpRequest Error!");
	}
	}
		
}

function DoCall(doelgroep, entiteit, clickable)
{
	if (zoek.length == 0)
		return;
	letter = zoek.substring(0, 1);
	zoek = letter + zoek.substring(1);
	_entiteit = entiteit;
	_doelgroep = doelgroep;
	objDoc.open("GET", "/internet_cms/suggest.aspx?sleutel=" + letter + "&doelgroep=" + doelgroep + "&entiteit=" + entiteit, true);
	if(clickable)
	{
	    objDoc.onreadystatechange = MyCallBack;
	}
	else
	{
	    objDoc.onreadystatechange = MyCallBackNotClickable;
	}	
	objDoc.send("");
}


function MyCallBack()
{
	if (objDoc.readyState == 4)
	{
		// Voor IE
		if (window.ActiveXObject) {
			doc.loadXML(objDoc.responseText);
		// Voor Firefox
		} else if (document.implementation.createDocument) {
			var vParser = new DOMParser();
			doc = vParser.parseFromString(objDoc.responseText, "text/xml");
		}
		
		//alert(doc.getElementByTagName("root"));
		Setval();
	}
}

function MyCallBackNotClickable()
{
	if (objDoc.readyState == 4)
	{
		// Voor IE
		if (window.ActiveXObject) {
			doc.loadXML(objDoc.responseText);
		// Voor Firefox
		} else if (document.implementation.createDocument) {
			var vParser = new DOMParser();
			doc = vParser.parseFromString(objDoc.responseText, "text/xml");
		}
		
		//alert(doc.getElementByTagName("root"));
		SetvalNotClickable();
	}
}




function DoZoek(what, doelgroep, entiteit, clickable)
{
	prepare();
	if ((typeof(doc) != 'undefined') | (typeof(objDoc) != 'undefined')) {
		queryField =what;
		queryField.onblur = hideDiv;
		queryField.autocomplete = "off"; 
		
		zoek = what.value.toLowerCase();
		if ((letter != zoek.substring(0, 1)) | (entiteit != _entiteit) | (doelgroep != _doelgroep))
		{
			DoCall(doelgroep, entiteit, clickable);
		}
		else
		{
		    if(clickable)
		    {
			    Setval(doelgroep, entiteit);
			}
			else
			{
			    SetvalNotClickable(doelgroep, entiteit);
			}
			   
		}
	}
}


function getDiv (divID)
{
  if (!globalDiv) {
    if (!document.getElementById(divID)) {
      var newNode = document.createElement("div");
      newNode.setAttribute("id", divID);
      document.body.appendChild(newNode);
    }
   
    globalDiv = document.getElementById(divID);
    var x = queryField.offsetLeft;
    var y = queryField.offsetTop + queryField.offsetHeight;
    var parent = queryField;
    while (parent.offsetParent) {
      parent = parent.offsetParent;
      x += parent.offsetLeft;
      y += parent.offsetTop;
    }

    if (!divFormatted) {
      globalDiv.style.backgroundColor = DIV_BG_COLOR;
      globalDiv.style.fontFamily = "Verdana, Arial, Helvetica, sans-serif";
      globalDiv.style.border = "1px solid #91C3E4";
      globalDiv.style.fontSize = "12px";
      
      globalDiv.style.width = queryField.offsetWidth;
  
      globalDiv.style.textAlign = "left";
      globalDiv.style.position = "absolute";
      globalDiv.style.left = x + "px";
      globalDiv.style.top = y + "px";
      globalDiv.style.visibility = "hidden";
      globalDiv.style.zIndex = 10000;     
        
    }
  }
  
  return globalDiv;
}

function selectResult()
{
  _selectResult(this);
}

function _selectResult(item)
{
  var spans = item.getElementsByTagName("span");
  if (spans) {
    for (var i = 0; i < spans.length; i++) {
      if (spans[i].className == "result1") {
        queryField.value = spans[i].innerHTML;
        lastVal = val = escape(queryField.value);
        searching = false;
        queryField.focus();
        showDiv(false); 
      }
      if (spans[i].className == "result2") { 
        //Bepaal het basispad van de huidige locatie
        //Basispad van "http://umcutrecht.nl/basispad/is/hier/doc.aspx"
        //zal "http://umcutrecht.nl/basispad/is/hier/" worden.
        var re = /^(.*\/)[^\/]*$/g;
        var ar = re.exec(document.location);
        var href = "" + document.location;
        
        if (spans[i].innerHTML.charAt(0) == "/") {
			href = spans[i].innerHTML;
		} else {
			href = ar[1] + spans[i].innerHTML;
		}
		
        window.location = href; 
        return;
      }
      
    }
  }
}

//
// Allerlei functies voor de weergave.
//
function highlightResult()
{
  _highlightResult(this);
}

function _highlightResult(item)
{
  item.style.backgroundColor = DIV_HIGHLIGHT_COLOR;
  item.style.color= FONT_HOVER_COLOR
}

function unhighlightResult()
{
  _unhighlightResult(this);
}

function _unhighlightResult(item)
{
  item.style.backgroundColor = DIV_BG_COLOR;
  item.style.color= FONT_COLOR
}

function showDiv (show)
{
  var div = getDiv(divName);
  if (show)
    div.style.visibility = "visible";
  else
    div.style.visibility = "hidden";
}

function hideDiv ()
{
  showDiv(false);
}

// Zoeken
function zoekscript(qf, url, pijler, language) 
{
	var zoekbox = document.getElementById(qf);

	if (zoekbox == null) return false;
	var zoekstring = zoekbox.value;
	if (zoekstring == "") return false;
	document.forms['Form1'].onsubmit = function(){ return false; };
	var zoekurl = url+"?query=" + zoekstring + "&pijler=" + pijler + "&lang=" + language;
		
	var checkbox_zorg = document.getElementById(qf + "_zorg");
	if (checkbox_zorg != null) {
		if (checkbox_zorg.checked) {
			zoekurl = zoekurl + "&zorg=1";
		}
	}

	var checkbox_onderwijs = document.getElementById(qf + "_onderwijs");
	if (checkbox_onderwijs != null) {
		if (checkbox_onderwijs.checked) {
			zoekurl = zoekurl + "&onderwijs=1";
		}
	}

	var checkbox_research = document.getElementById(qf + "_research");
	if (checkbox_research != null) {
		if (checkbox_research.checked) {
			zoekurl = zoekurl + "&research=1";
		}
	}

	var checkbox_nieuwsagenda = document.getElementById(qf + "_nieuwsagenda");
	if (checkbox_nieuwsagenda != null) {
		if (checkbox_nieuwsagenda.checked) {
			zoekurl = zoekurl + "&nieuwsagenda=1";
		}
	}
	var checkbox_subsite = document.getElementById(qf + "_subsite");
	if (checkbox_subsite != null) {
		if ((checkbox_subsite.checked) || (checkbox_subsite.value == "1")) {
			zoekurl = zoekurl + "&subsite=1";
		}
	}
	
	var subsitename = document.getElementById(qf + "_subsitename");
	if (subsitename != null) {
		if (subsitename != "") {
			zoekurl = zoekurl + "&subsitename=" + subsitename.value;
		}
	}
	
	document.location.href = zoekurl;
	return false;
}
function zoekenter(e, qf, url, pijler) 
{
	if (window.event)
	{
		if(e.keyCode == 13) zoekscript(qf, url, pijler)
	}
	else
	{
		if (e.which == 13) zoekscript(qf, url, pijler)
	}
	return false;
}

function setMaxLength() {
	var x = document.getElementsByTagName('textarea');
	var counter = document.createElement('div');
	counter.className = 'counter';
	for (var i=0;i<x.length;i++) {
		if (x[i].getAttribute('maxlength')) {
			var counterClone = counter.cloneNode(true);
			counterClone.relatedElement = x[i];
			counterClone.innerHTML = '<span>0</span>/'+x[i].getAttribute('maxlength');
			x[i].parentNode.insertBefore(counterClone,x[i].nextSibling);
			x[i].relatedElement = counterClone.getElementsByTagName('span')[0];

			x[i].onkeyup = x[i].onchange = checkMaxLength;
			x[i].onkeyup();
		}
	}
}

function checkMaxLength() {
	var maxLength = this.getAttribute('maxlength');
	var currentLength = this.value.length;
	if (currentLength > maxLength) {
		this.relatedElement.className = 'toomuch';
	} else {
		this.relatedElement.className = '';
	}
	this.relatedElement.firstChild.nodeValue = currentLength;
	// not innerHTML
}


