/* Vlaanderen.be - Unobtrusive Javascript */

/* The Ultimate getElementsByClassName by Jonathan Snook & Robert Nyman */

function getElementsByClassName(oElm, strTagName, oClassNames){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	var arrRegExpClassNames = new Array();
	if(typeof oClassNames == "object"){
		for(var i=0; i<oClassNames.length; i++){
			arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)"));
		}
	}
	else{
		arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)"));
	}
	var oElement;
	var bMatchesAll;
	for(var j=0; j<arrElements.length; j++){
		oElement = arrElements[j];
		bMatchesAll = true;
		for(var k=0; k<arrRegExpClassNames.length; k++){
			if(!arrRegExpClassNames[k].test(oElement.className)){
				bMatchesAll = false;
				break;
			}
		}
		if(bMatchesAll){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}

/* Script om het rollover effect te verbeteren */
/* Ook script om rollover effect toe te voegen aan IE6 op het li element */

// Deze functie zoekt alle links met class = roll en voegt effecten toe aan parent element, in dit geval het li-item
function findlinks()
{
	var lilinks,i;
	lilinks=document.getElementsByTagName('a');
	for(i=0;i<lilinks.length;i++)
	{
		if(/roll/.test(lilinks[i].className))
		{
			lilinks[i].parentNode.onmouseover=function(){roll(this);};
			lilinks[i].parentNode.onmouseout=function(){roll(this);};
			lilinks[i].parentNode.onfocus=function(){roll(this);};
			lilinks[i].parentNode.onblur=function(){roll(this);};
		}
	}
}

// Deze functie op het niveau van de list item gaat eerst de class aanpassen van de li naar 'mover' als de class leeg is, en naar leeg als de class 'mover' is
// Daarna doet hij hetzelfde voor het link die in de list item genest zit (childnode)
function roll(o)
{
	var i,isnode,currentclass,newclass,nownode;

	currentliclass = o.className;
	if(/mover/.test(currentliclass))
	{ newliclass = currentliclass.replace('mover','');
	} else { 
	newliclass = currentliclass.replace('','mover');
	}
	o.className=newliclass;
	for (i=0;i<o.childNodes.length;i++)
	{
		nownode=o.childNodes[i];
		if(nownode.nodeType==1 && /a/i.test(nownode.nodeName))
		{
			isnode=i;
			break;
		}
	}
	currentclass = o.childNodes[isnode].className;
	if(/mover/.test(currentclass))
	{ newclass = currentclass.replace('mover','roll');
	} else { 
	newclass = currentclass.replace('roll','mover');
	}
	o.childNodes[isnode].className=newclass;
}

// Deze functie zoekt alle div's met class "show" en gaat ze hiden, wijzigt alle a's met class expanded naar collapsed
// en past de class van de content container aan van standaard9 naar standaard0

function hidecontacts()
{
	var contactshowlink, content, i, detailpagecontact, contactId, contactdetailNode;
	var j = 0;
	var subcontactlinks = new Array();
	contactshowlink = document.getElementsByTagName("a");
	for(i=0;i<contactshowlink.length;i++)
		{
		if(/contactshowlink/.test(contactshowlink[i].className))
			{
			subcontactlinks[j]=contactshowlink[i];
			j++;
			}
			else {}
		}
		
	for(i=0;i<subcontactlinks.length;i++)
		{
		if(subcontactlinks.length==1)
			{
			//niets uitvoeren	
			}
			else 
				{
				contactId = subcontactlinks[i].id.substring('contactlink-'.length);	
				contactdetailNode = document.getElementById('contactdetail-' + contactId);
				contactdetailNode.className=contactdetailNode.className.replace('show','hide');
	
				subcontactlinks[i].firstChild.className=subcontactlinks[i].firstChild.className.replace('expanded','collapsed');	
				}
		}
			
}
// Deze functie zoekt alle links met class = contactshowlink en voegt effecten toe aan zichzelf
// Functie geeft aantal als parameter door
function findhides(aantalshow)
{
	var ahides,i;
	ahides=document.getElementsByTagName('a');
	for(i=0;i<ahides.length;i++)
	{
		if(/contactshowlink/.test(ahides[i].className))
		{
			ahides[i].onclick=function(){contactroll(this, aantalshow);};
		}
	}
}

// Deze functie wijzigt de klasse van alle eerste childs die volgen op een a met klasse contactshowlink, en gaan de div met een matching ID
// van klasse wijzigen naar show

function contactroll(o, aantalshow)
{
	var currenticoonclass,newicoonclass;
	
	//Klasse icoon div wijzigen
	currenticoonclass = o.firstChild.className;
	if(/collapsed/.test(currenticoonclass))
	{ newicoonclass = currenticoonclass.replace('collapsed','expanded');
	} else { 
	newicoonclass = currenticoonclass.replace('expanded','collapsed');
	}
	o.firstChild.className = newicoonclass;

	//Klasse div wijzigen
	var newclass;
	var contactId = o.id.substring('contactlink-'.length);	

	var contactdetailNode = document.getElementById('contactdetail-' + contactId);
	
	var currentdivclass = contactdetailNode.className;
	
	if(/hide/.test(currentdivclass))
		{
		newclass = currentdivclass.replace('hide','show');
		aantalshow++;
		}
		else 
			{ 
			newclass = currentdivclass.replace('show','hide');
			aantalshow--;
			}
	contactdetailNode.className=newclass;
	
	//class content wijzigen
	
	var content;
	content = document.getElementById('contentdetailpage');
	
	findhides(aantalshow);
} 


// Zoeken naar radiobuttons feedbackform, radiobuttons afgaan en functie toevoegen onclick
// checken op waarde en indien 1 of 2 class van niettevreden naar show zetten
// en class van voorgaand element h2 op show zetten, indien 3, 4 of 5 naar hide zetten

function hidefeedbackniettevreden () {
	var niettevreden;
	niettevreden = document.getElementById('niettevreden');
	var feedback = document.getElementById('feedback');
	if (feedback != null) {		
		var showh2 = getElementsByClassName(feedback, "h2", "showh2");
		if (niettevreden != null)
		{		
			niettevreden.className = niettevreden.className.replace('show','hide');
			if (showh2 != null) {
				if (showh2[0] != null) {
					showh2[0].className = showh2[0].className.replace('showh2','hide');
				} else {} }
			else {}
		}
		else {}
	} else {}
}

function findfeedbackradiobuttons ()
{

hidefeedbackniettevreden ();

var feedbackform;
feedbackform = document.getElementById('feedbackform');

if (feedbackform != null)
	{
	for (i=0;i<document.feedbackform.info_geholpen.length;i++)
		{ 
		document.feedbackform.info_geholpen[i].onclick=function(){changefeedbackradiobuttons(this);};
		}
	}
	else {}
		
}

function changefeedbackradiobuttons(o)
{
	switch(parseInt(o.value))
	{	
		case 1: 
		case 2: 
		var niettevreden;
		niettevreden = document.getElementById('niettevreden');
		if(/hide/.test(niettevreden.className))
			{niettevreden.className = niettevreden.className.replace('hide','show');
			} 
		else {}
		
		var feedback = document.getElementById('feedback');
		var showh2 = getElementsByClassName(feedback, "h2", "hide");
		if (showh2 != null) 
			{ 	if (showh2[0] != null)
				{showh2[0].className = showh2[0].className.replace('hide','showh2');
				} else {}
			} 
		else {}

		break;
		
		default: 
		hidefeedbackniettevreden ();
	}	
	
}

// Enkel voor IE: als de link niet overeenkomt met het domein en enkel als de link begint met http of https
// wordt functie toegevoegd die image in de code toevoegt.

function ShowExternalLinkIconsInIEOnly () {
	
	if(navigator.appName == "Microsoft Internet Explorer") {
		var links=document.getElementsByTagName('a');
		var htmltag=document.getElementsByTagName('html');
		for (i=0;i<links.length;i++)
			{
			var ahref=links[i].href;
			if(ahref.indexOf(window.location.hostname+"/servlet") == -1 && (ahref.substr(0, 7) == "http://" || ahref.substr(0, 8) == "https://"))
				{
				var newimg = document.createElement('img');
				newimg.src = "/w3vlaanderen/info_site/img/externallink10.png";
				newimg.className = "externallinkicon";
				if (htmltag[0].lang == 'nl-be')
					{newimg.alt = "Link naar een andere website";}
				if (htmltag[0].lang == 'fr')
					{newimg.alt = "Lien à un site externe";}
				if (htmltag[0].lang == 'en')
					{newimg.alt = "Link to an external website";}
				if (htmltag[0].lang == 'de')
					{newimg.alt = "Link auf externe Webseite";}	
				else {}
				links[i].appendChild(newimg);
				
				//Functie toevoegen
				links[i].onmouseover=function(){ExternalLinkSwitchIcon(this);};
				links[i].onfocus=function(){ExternalLinkSwitchIcon(this);};
				
				links[i].onmouseout=function(){ExternalLinkSwitchIcon(this);};
				links[i].onblur=function(){ExternalLinkSwitchIcon(this);};
				}
				else {}
			}
	}
	else {}
}

function ExternalLinkSwitchIcon (ilink)
	{
	var o_linkicon = getElementsByClassName(ilink, "img", "externallinkicon");
	if(/externallink10.png/.test(o_linkicon[0].src))
		o_linkicon[0].src = o_linkicon[0].src.replace(/externallink10.png/, "externallink10_red.png");
		else o_linkicon[0].src = o_linkicon[0].src.replace(/externallink10_red.png/, "externallink10.png");
}


// Bij laden van de pagina moet de eerste functie uitgevoerd worden
window.onload=function(){
	hidecontacts();
	findlinks();
	findhides(0);
	findfeedbackradiobuttons();
	ShowExternalLinkIconsInIEOnly ();
}
