function openClose(e){
	var clickedLink=window.event ? window.event.srcElement : e ? e.target : null;
	if(!clickedLink) return;
	if(clickedLink.tagName.toLowerCase()!="a") clickedLink=clickedLink.parentNode;
	var section=clickedLink.nextSibling;
  	while(section.nodeType!=1){
    section = section.nextSibling;
  	}
	if(section.style.display=='block'){
	section.style.display='none';
	clickedLink.style.backgroundImage='url(Engine/Resources/Images/plus.gif)';
	}
	else{
	section.style.display='block';
	clickedLink.style.backgroundImage='url(Engine/Resources/Images/minus.gif)';
	}
	// to prevent page from jumping to top each time a link is clicked
	if(window.event) window.event.returnValue=false;
	if(e && e.preventDefault) e.preventDefault();	
}

function showHide(section){
	var parentLink=section.previousSibling;
	while(parentLink.nodeType!=1){
	parentLink=parentLink.previousSibling;
	}
	if(section.style.display=="block"){
	section.style.display="none";
	parentLink.style.backgroundImage='url(Engine/Resources/Images/plus.gif)';
	}
	else{
	section.style.display="block";
	parentLink.style.backgroundImage='url(Engine/Resources/Images/minus.gif)';
	}
}

function kleur(){  
	itemlist = document.getElementById("container").childNodes;
	//array van li's op niveau 1
	for(i=0; i<itemlist.length;  i++){
		if(!itemlist[i].innerHTML) continue;
		itemlist2 = itemlist[i].childNodes[1];
		//ul element
		itemlist3 = itemlist2.childNodes;
		//array van li's
		for(j=0; j<itemlist3.length; j++){
			if(!itemlist3[j].innerHTML) continue;
			itemlist4 = itemlist3[j].childNodes[1];
			//ul element
            itemlist5 = itemlist4.childNodes;
			//array van li's
            for(k=0; k<itemlist5.length; k++){
				if(!itemlist5[k].innerHTML) continue;
				itemlist6 = itemlist5[k].childNodes[1];
				//ul element
				itemlist7 = itemlist6.childNodes;
				//array van li's
				for(l=0; l<itemlist7.length; l++){
					if(!itemlist7[l].innerHTML) continue;
					itemlist8 = itemlist7[l].childNodes[1];
					//ul element
					itemlist9 = itemlist8.childNodes;
					//array van li's
					kleurteller=0;
					for(m=0; m<itemlist9.length; m++){
						if(kleurteller%2==0) itemlist9[m].style.backgroundColor = '#e5d7d7';
						else itemlist9[m].style.backgroundColor = '#f7f7f7';
						kleurteller++;
					}
				}
			}
		}
	}
	message.style.display="none";
}

// specific for antiwitwas
	// voor mozilla telt spatie ook als element dus + 1 tellen
	var isIE = navigator.appVersion.indexOf("MSIE")>0;
	if(isIE) mozup=0;
	else mozup=1;
function verwijder_calendar(){   
	itemlist3 = document.getElementById("container").childNodes;
	//array van li's op niveau 1
	for(j=0; j<itemlist3.length; j++){
		if(!itemlist3[j].innerHTML) continue;
		zichtbaarK = false; //lege items verwijderen
		itemlist4 = itemlist3[j].childNodes[2 + mozup];
		//ul element
           itemlist5 = itemlist4.childNodes;
		//array van li's
           for(k=0; k<itemlist5.length; k++){
			if(!itemlist5[k].innerHTML) continue;
			zichtbaarL = false; //lege items verwijderen
			itemlist6 = itemlist5[k].childNodes[2 + mozup];
			//ul element
			itemlist7 = itemlist6.childNodes;
			//array van li's
			kleurteller=0;
			for(l=0; l<itemlist7.length; l++){
				listitem = itemlist7[l].innerHTML;
				if(!listitem || listitem==""){
					//lege items verwijderen
					itemlist7[l].parentNode.removeChild(itemlist7[l]);
					l--;
				}
				else{
					zichtbaarL = true;
					if(kleurteller%2==0) itemlist7[l].style.backgroundColor = '#dbdbdb';
					else itemlist7[l].style.backgroundColor = '#f5f5f5';
					kleurteller++;
				}
			}
			 //lege items verwijderen
			if(!zichtbaarL) {
			itemlist5[k].parentNode.removeChild(itemlist5[k]);
			k--;
			}
			else{
			zichtbaarK = true;
			}
		}
		 //lege items verwijderen
		if(!zichtbaarK){
		itemlist3[j].parentNode.removeChild(itemlist3[j]);
		j--;
		}
		else{
		zichtbaarJ = true;
		}
	}
}
//end antiwitwas

function overloop(uitklap){ 
	itemlist = document.getElementById("container").childNodes;
	dropdownitems = document.getElementsByTagName("select");
	//array van li's op niveau 1
	for(i=0; i<itemlist.length;  i++){
		if(!itemlist[i].innerHTML) continue;
		zichtbaarJ = false; // verbergen niet-opgevraagde items
		itemlist2 = itemlist[i].childNodes[1];
		//ul element
		itemlist3 = itemlist2.childNodes;
		//array van li's
		// voorwaarde zoekmotor
		if(dropdownitems[0].value == itemlist[i].childNodes[0].innerHTML || 
		dropdownitems[0].value == "Alles" || dropdownitems[0].value == "Tout"){
			
			for(j=0; j<itemlist3.length; j++){
				if(!itemlist3[j].innerHTML) continue;
				zichtbaarK = false; // verbergen niet-opgevraagde items
				itemlist4 = itemlist3[j].childNodes[1];
				//ul element
				itemlist5 = itemlist4.childNodes;
				//array van li's
				// voorwaarde zoekmotor
				if(dropdownitems[1].value == itemlist3[j].childNodes[0].innerHTML || 
				dropdownitems[1].value == "Alles" || dropdownitems[1].value == "Tout"){
					
					for(k=0; k<itemlist5.length; k++){
						if(!itemlist5[k].innerHTML) continue;
						zichtbaarL = false; // verbergen niet-opgevraagde items				
						itemlist6 = itemlist5[k].childNodes[1];
						//ul element
						itemlist7 = itemlist6.childNodes;
						//array van li's
						// voorwaarde zoekmotor
						if(dropdownitems[2].value == itemlist5[k].childNodes[0].innerHTML || 
						dropdownitems[2].value == "Alles" || dropdownitems[2].value == "Tout"){
				
							for(l=0; l<itemlist7.length; l++){
								if(!itemlist7[l].innerHTML) continue;
								zichtbaarM = false; // verbergen niet-opgevraagde items
								itemlist8 = itemlist7[l].childNodes[1];
								//ul element
								itemlist9 = itemlist8.childNodes;
								//array van li's
								//voorwaarde zoekmotor
								if(dropdownitems[3].value == itemlist7[l].childNodes[0].innerHTML || 
								dropdownitems[3].value == "Alles" || dropdownitems[3].value == "Tout"){
									
									for(m=0; m<itemlist9.length; m++){
										itemlist9[m].style.display='block';
										zichtbaarM = true;
									}
								}
								if(!zichtbaarM) itemlist7[l].style.display='none';
								else{
									itemlist7[l].style.display='block';
									zichtbaarL = true;
								}
								if (uitklap && zichtbaarM && itemlist8.style.display!="block") showHide(itemlist8); // openklappen bij Zoekdoc
								if(!uitklap && itemlist8.style.display=="block") showHide(itemlist8); //dichtklappen van open secties
							}
						}
						if(!zichtbaarL) itemlist5[k].style.display='none';
						else{ 
						itemlist5[k].style.display='block';
						zichtbaarK = true;
						}
						if (uitklap && zichtbaarL && itemlist6.style.display!="block") showHide(itemlist6); // openklappen bij Zoekdoc
						if(!uitklap && itemlist6.style.display=="block") showHide(itemlist6); //dichtklappen van open secties
					}
				}
				if(!zichtbaarK) itemlist3[j].style.display='none';
				else{
				itemlist3[j].style.display='block'
				zichtbaarJ = true;
				}
				if (uitklap && zichtbaarK && itemlist4.style.display!="block") showHide(itemlist4); // openklappen bij Zoekdoc
				if(!uitklap && itemlist4.style.display=="block") showHide(itemlist4); //dichtklappen van open secties
			}
		}
		if(!zichtbaarJ) itemlist[i].style.display='none';
		else itemlist[i].style.display='block';
		if (uitklap && zichtbaarJ && itemlist2.style.display!="block") showHide(itemlist2); // openklappen bij Zoekdoc
		if(!uitklap && itemlist2.style.display=="block") showHide(itemlist2); //dichtklappen van open secties
	}
	message.style.display="none";
	var nothingFound=true;
	for(i=0;i<itemlist.length;i++){
	if(itemlist[i].style.display=='block') nothingFound=false;
	}
	if(nothingFound) document.getElementById("nothing_found").style.display='block';
	else document.getElementById("nothing_found").style.display='none';
}

function herzet(){ 
	message.style.display="block";
	document.getElementById("sort1").selectedIndex = 0;
	document.getElementById("sort2").selectedIndex = 0;
	document.getElementById("sort3").selectedIndex = 0;
	document.getElementById("sortSub").selectedIndex = 0;
	setTimeout('overloop(false)',1);
}

function zoekDoc(){	
	message.style.display="block";
	if((document.getElementById("Category").value == "Alles" && document.getElementById("Company").value == "Alles" && 
	document.getElementById("Product").value == "Alles" && document.getElementById("SubCategory").value == "Alles")||
	(document.getElementById("Category").value == "Tout" && document.getElementById("Company").value == "Tout" && 
	document.getElementById("Product").value == "Tout" && document.getElementById("SubCategory").value == "Tout"))
	{
		herzet();
	}
	else 
	{
		setTimeout('overloop(true)',1);
	}
}

function addListeners() {
	if(!document.getElementById("compdocstree")) return;
	if(!document.getElementsByTagName) return;
	var all_links=document.getElementsByTagName('a');
	for(var i=0; i<all_links.length; i++){
	if(all_links[i].className=="openClose"){
	addEvent(all_links[i], 'click', openClose, false)
	}
	if(all_links[i].className=="searchButton"){
	addEvent(all_links[i], 'click', zoekDoc, false)
	}
	}
}

function maakOnzichtbaar(){	
	if(!document.getElementById("compdocstree")) return;
	if(document.getElementById("load_message")) message=document.getElementById("load_message");
	if(!document.getElementById("calendar")) kleur();
	else verwijder_calendar();
}

function addEvent(elm, evType, fn, useCapture){
	if(elm.addEventListener){
		elm.addEventListener(evType, fn, useCapture);
		return true;
	}
	else if(elm.attachEvent){
		var r=elm.attachEvent('on' + evType, fn);	
		return r;
	}
	else{
		elm['on' + evType]=fn;
	}
}
addEvent(window, 'load', maakOnzichtbaar, false);
addEvent(window, 'load', addListeners, false);

//new functions for 4th level search

var url = 'SiteResources/Data/Options.xml';

function makeRequest() {
	var lang;
    var allText;
    var httpRequest;

    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		httpRequest = new XMLHttpRequest();
		if (httpRequest.overrideMimeType) {
			httpRequest.overrideMimeType('text/xml');
        }
    } 
    else if (window.ActiveXObject) { // IE
        try {
            httpRequest = new ActiveXObject('Msxml2.XMLHTTP');
        } 
        catch (e) {
			try {
				httpRequest = new ActiveXObject('Microsoft.XMLHTTP');
            } 
            catch (e) {}
		}
	}

	if (!httpRequest) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
    }
    httpRequest.onreadystatechange = function() { fillDynamicDropDownList(httpRequest); };
    httpRequest.open('GET', url, true);
    httpRequest.send(null);

}
    
function fillDynamicDropDownList(httpRequest)
{
	if (httpRequest.readyState == 4) {
        if (httpRequest.status == 200) {
            var xmldoc = null;
            xmldoc = httpRequest.responseXML;
			var nodeList = xmldoc.getElementsByTagName('Item');
			
			for(h=document.getElementById('SubCategory').length-1; h>=0; h--) deleteOption(h, 'SubCategory');
			addOption(allText, 'SubCategory');
			for(i=0; i<nodeList.length; i++) {
				var type = nodeList.item(i).getAttribute('type');
				var language = nodeList.item(i).getAttribute('lang');
				var category = nodeList.item(i).parentNode.getAttribute('value');
				if(type == 'SubCategory' && language == lang && category == document.getElementById('Category').value) {
					var theValue = nodeList.item(i).getAttribute('value');
					addOption(theValue, 'SubCategory');
				}
			}
        }
        else {
            alert('There was a problem with the request.');
        }
    }
}
    
function fillStaticDropDownLists()
{
	if(!document.getElementById("filterwrapper")) return;
	if (document.implementation && document.implementation.createDocument) {
		xmlDoc = document.implementation.createDocument('', '', null);
		xmlDoc.onload = createOptions;
	}
	else if (window.ActiveXObject) {
		xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
		xmlDoc.onreadystatechange = function () {
			if (xmlDoc.readyState == 4) createOptions();
		};
	}
	else {
		alert('The browser can\'t handle this script');
		return;
	}
	xmlDoc.load(url);
}

    
function createOptions()
{        
	lang = window.location.search;
	if(lang.length > 0) {
		lang = lang.charAt(lang.indexOf("&lang=")+6);
		if(lang != 'N' && lang != 'F') lang = 'N';
	}
	else lang = 'N';
		var nodeList = xmlDoc.getElementsByTagName('Item');
	
	if(lang == 'N') allText = 'Alles';
	else allText = 'Tout';
	addOption(allText, 'Category');
	addOption(allText, 'Company');
	addOption(allText, 'Product');
	addOption(allText, 'SubCategory');
	
	for(i=0; i<nodeList.length;  i++) {
		var type = nodeList.item(i).getAttribute('type');
		var language = nodeList.item(i).getAttribute('lang');
		if(type == 'Category' && language == lang) addOption(nodeList.item(i).getAttribute('value'), 'Category');
		if(type == 'Company' && language == lang) addOption(nodeList.item(i).getAttribute('value'), 'Company');
		if(type == 'Product' && language == lang) addOption(nodeList.item(i).getAttribute('value'), 'Product');
	}		
}
    
function deleteOption(number, object)
{
	document.getElementById(object).options[number] = null;
}

function addOption(text, object)
{
	var optionName = new Option(text,text, false, false);
	var length = document.getElementById(object).length;
	document.getElementById(object).options[length] = optionName;
}

addEvent(window, 'load', fillStaticDropDownLists, false);

function filter()
{
	document.getElementById("footerText").style.display="none";
	document.getElementById("results").style.display="none";
	document.getElementById("nothingFound").style.display="none";
	resultVisible = false;
	
	var rowList = document.getElementById("resultTable").getElementsByTagName("tr");
	
	selectedCompany = document.getElementById("Company").value;
	selectedCategory = document.getElementById("Category").value;
	selectedSubCategory = document.getElementById("SubCategory").value;
	selectedProduct = document.getElementById("Product").value;
	
	colourCounter = 0;
	
	for(i=2; i<rowList.length; i+=2)
	{
		isValid = true;
		
		company = rowList[i+1].getElementsByTagName("td")[0].getElementsByTagName("span")[0].innerHTML;
		category = rowList[i+1].getElementsByTagName("td")[1].getElementsByTagName("span")[0].innerHTML;
		subCategory = rowList[i+1].getElementsByTagName("td")[2].getElementsByTagName("span")[0].innerHTML;
		product = rowList[i+1].getElementsByTagName("td")[3].getElementsByTagName("span")[0].innerHTML;
		
		
		if(selectedCompany != allText && selectedCompany != company) isValid = false;
		if(selectedCategory != allText && selectedCategory != category) isValid = false;
		if(selectedSubCategory != allText && selectedSubCategory != subCategory) isValid = false;
		if(selectedProduct != allText && selectedProduct != product) isValid = false;
		
		if(resultVisible == false && isValid) resultVisible = true;
		if(isValid)
		{
			if(colourCounter%2==0)
			{
				rowList[i].style.backgroundColor = '#dbdbdb';
				rowList[i+1].style.backgroundColor = '#dbdbdb';
			}
			else
			{
				rowList[i].style.backgroundColor = '#f5f5f5';
				rowList[i+1].style.backgroundColor = '#f5f5f5';
			}
			colourCounter++;
			
			var isIE=navigator.appVersion.indexOf("MSIE")>0;
			if(isIE) //IE
			{
				rowList[i].style.display="block";
				rowList[i+1].style.display="block";
			}
			else //FF
			{
				rowList[i].style.display="table-row";
				rowList[i+1].style.display="table-row";
			}
		}
		else
		{
			rowList[i].style.display="none";
			rowList[i+1].style.display="none";
		}
	}
	
	if(resultVisible) document.getElementById("results").style.display="block";
	else document.getElementById("nothingFound").style.display="block";
}

function delayFilter()
{
	document.getElementById("load_message").style.display="block";
	setTimeout('filter()',1);
	setTimeout('document.getElementById("load_message").style.display="none"',1);
}