//
// Pointer on hover.js
//
// Versie 1.0, 12 februari 2009
//
// Copyright: Roger Jolly, 2009
// This work is licensed under a Creative Commons Attribution-Noncommercial 3.0 Unported License
// http://creativecommons.org/licenses/by-nc/3.0/
//
// Op de site worden li-elementen gebruikt als tabs in de navigatie. Hierin zijn links opgenomen.
// De gebruiker al doorgaans verwachten dat hij niet alleen op de link zelf kan klikken, maar
// dat de hele "tab" als knop functioneert. Dit script zorgt hiervoor door te kijken naar de
// link en het adres in de onclick van de li te plaatsen. Om te voorkomen dat bij links naar
// een ander frame of window ook in hetzelfde frame opent, wordt de event bubble gestopt
// via een onclick bij de link.
// Deze functie gaat ervan uit dat een link naar een ander frame of window een class "external"
// heeft of een target="_blank".
// De functie is zeer specifiek voor de site.

(function() {

	function init() {

		// Pak alle li's van het element met id "hoofdmenu"
		var theLiElements = document.getElementById("hoofdmenu").getElementsByTagName("li");

		var i; // een tellertje
		var theAElements;

		// Doorloop de li's.
		for (i=0 ; i< theLiElements.length; i++) {
			// Pak van elke li de eerste link.
			theAElements = theLiElements[i].getElementsByTagName("a");
			if (theAElements.length > 0) {
				
				// Zet de classname zodanig dat er een eventuele pointer getoond wordt.
				theLiElements[i].className = "showPointer";
				
				// Maak een functiestring aan, die afhankelijk van een link naar een 
				// eventueel extern doel ook de link van de li daarnaar laat verwijzen.
				// Stop daarbij de event bubble.
				var functionString = "if (!e) var e = window.event;"
										+ "e.cancelBubble = true;"
										+ "if (e.stopPropagation) e.stopPropagation();"
				
				if (theAElements[0].className == "external" 
					|| theAElements[0].target == "_blank") {
					functionString += "window.open('"	
										+ theAElements[0].href
										+ "')";
				} else {
					functionString += "window.location='"
										+ theAElements[0].href
										+ "'";
				}

				// Hang de functie aan de onclick van de li. Dat moet op deze manier om het
				// ook in internet explorer te laten werken.
				theLiElements[i]["onclick"]= new Function("e", functionString);

				// Stop de event bubble op een manier die het ook in internet explorer doet.
				theAElements[0]["onclick"]= new Function("e",
				"if (!e) var e = window.event;" +
				"e.cancelBubble = true;" +
				"if (e.stopPropagation) e.stopPropagation();");
			}
		}
	}
	
	// Zorg dat dit script na het laden van de pagina wordt uitgevoerd. 
	if (window.addEventListener) {
		window.addEventListener("load", init, false);
	} else if (window.attachEvent) {
		window.attachEvent("onload", init);
	}

})(); // Roep de functie aan nu hij gedefinieerd is, zodat hij ingevuld wordt.
