/*	***********************************************************
 *
 *	CONVENANT OVERGEWICHT
 *	
 *	JavaScript voor Flash header, style switcher en
 *	nieuwskolom/submenu mouseovers.
 *	
 *	V2.0 - eend - 3 juli 2006
 *
 *	Inhoud:
 *	- UFO v3.20 script voor toegankelijke integratie Flash object.
 *	- Dispatch om DOM compatible scripts aan events te hangen.
 *	- Diverse scripts om gedrag aan website te koppelen.
 *
 *	Locatie:
 *	- root/scripts/all.js
 *	
 *	*********************************************************** */


/*	Unobtrusive Flash Objects (UFO) v3.20 <http://www.bobbyvandersluis.com/ufo/>
	Copyright 2005, 2006 Bobby van der Sluis
	This software is licensed under the CC-GNU LGPL <http://creativecommons.org/licenses/LGPL/2.1/>
*/

var UFO = {
	req: ["movie", "width", "height", "majorversion", "build"],
	opt: ["play", "loop", "menu", "quality", "scale", "salign", "wmode", "bgcolor", "base", "flashvars", "devicefont", "allowscriptaccess", "seamlesstabbing"],
	optAtt: ["id", "name", "align"],
	optExc: ["swliveconnect"],
	ximovie: "ufo.swf",
	xiwidth: "215",
	xiheight: "138",
	ua: navigator.userAgent.toLowerCase(),
	pluginType: "",
	fv: [0,0],
	foList: [],
		
	create: function(FO, id) {
		if (!UFO.uaHas("w3cdom") || UFO.uaHas("ieMac")) return;
		UFO.getFlashVersion();
		UFO.foList[id] = UFO.updateFO(FO);
		UFO.createCSS("#" + id, "visibility:hidden;");
		UFO.domLoad(id);
	},

	updateFO: function(FO) {
		if (typeof FO.xi != "undefined" && FO.xi == "true") {
			if (typeof FO.ximovie == "undefined") FO.ximovie = UFO.ximovie;
			if (typeof FO.xiwidth == "undefined") FO.xiwidth = UFO.xiwidth;
			if (typeof FO.xiheight == "undefined") FO.xiheight = UFO.xiheight;
		}
		FO.mainCalled = false;
		return FO;
	},

	domLoad: function(id) {
		var _t = setInterval(function() {
			if ((document.getElementsByTagName("body")[0] != null || document.body != null) && document.getElementById(id) != null) {
				UFO.main(id);
				clearInterval(_t);
			}
		}, 250);
		if (typeof document.addEventListener != "undefined") {
			document.addEventListener("DOMContentLoaded", function() { UFO.main(id); clearInterval(_t); } , null); // Gecko, Opera 9+
		}
	},

	main: function(id) {
		var _fo = UFO.foList[id];
		if (_fo.mainCalled) return;
		UFO.foList[id].mainCalled = true;
		document.getElementById(id).style.visibility = "hidden";
		if (UFO.hasRequired(id)) {
			if (UFO.hasFlashVersion(parseInt(_fo.majorversion, 10), parseInt(_fo.build, 10))) {
				if (typeof _fo.setcontainercss != "undefined" && _fo.setcontainercss == "true") UFO.setContainerCSS(id);
				UFO.writeSWF(id);
			}
			else if (_fo.xi == "true" && UFO.hasFlashVersion(6, 65)) {
				UFO.createDialog(id);
			}
		}
		document.getElementById(id).style.visibility = "visible";
	},
	
	createCSS: function(selector, declaration) {
		var _h = document.getElementsByTagName("head")[0]; 
		var _s = UFO.createElement("style");
		if (!UFO.uaHas("ieWin")) _s.appendChild(document.createTextNode(selector + " {" + declaration + "}")); // bugs in IE/Win
		_s.setAttribute("type", "text/css");
		_s.setAttribute("media", "screen"); 
		_h.appendChild(_s);
		if (UFO.uaHas("ieWin") && document.styleSheets && document.styleSheets.length > 0) {
			var _ls = document.styleSheets[document.styleSheets.length - 1];
			if (typeof _ls.addRule == "object") _ls.addRule(selector, declaration);
		}
	},
	
	setContainerCSS: function(id) {
		var _fo = UFO.foList[id];
		var _w = /%/.test(_fo.width) ? "" : "px";
		var _h = /%/.test(_fo.height) ? "" : "px";
		UFO.createCSS("#" + id, "width:" + _fo.width + _w +"; height:" + _fo.height + _h +";");
		if (_fo.width == "100%") {
			UFO.createCSS("body", "margin-left:0; margin-right:0; padding-left:0; padding-right:0;");
		}
		if (_fo.height == "100%") {
			UFO.createCSS("html", "height:100%; overflow:hidden;");
			UFO.createCSS("body", "margin-top:0; margin-bottom:0; padding-top:0; padding-bottom:0; height:100%;");
		}
	},

	createElement: function(el) {
		return (UFO.uaHas("xml") && typeof document.createElementNS != "undefined") ?  document.createElementNS("http://www.w3.org/1999/xhtml", el) : document.createElement(el);
	},

	createObjParam: function(el, aName, aValue) {
		var _p = UFO.createElement("param");
		_p.setAttribute("name", aName);	
		_p.setAttribute("value", aValue);
		el.appendChild(_p);
	},

	uaHas: function(ft) {
		var _u = UFO.ua;
		switch(ft) {
			case "w3cdom":
				return (typeof document.getElementById != "undefined" && typeof document.getElementsByTagName != "undefined" && (typeof document.createElement != "undefined" || typeof document.createElementNS != "undefined"));
			case "xml":
				var _m = document.getElementsByTagName("meta");
				var _l = _m.length;
				for (var i = 0; i < _l; i++) {
					if (/content-type/i.test(_m[i].getAttribute("http-equiv")) && /xml/i.test(_m[i].getAttribute("content"))) return true;
				}
				return false;
			case "ieMac":
				return /msie/.test(_u) && !/opera/.test(_u) && /mac/.test(_u);
			case "ieWin":
				return /msie/.test(_u) && !/opera/.test(_u) && /win/.test(_u);
			case "gecko":
				return /gecko/.test(_u) && !/applewebkit/.test(_u);
			case "opera":
				return /opera/.test(_u);
			case "safari":
				return /applewebkit/.test(_u);
			default:
				return false;
		}
	},
	
	getFlashVersion: function() {
		if (UFO.fv[0] != 0) return;  
		if (navigator.plugins && typeof navigator.plugins["Shockwave Flash"] == "object") {
			UFO.pluginType = "npapi";
			var _d = navigator.plugins["Shockwave Flash"].description;
			if (typeof _d != "undefined") {
				_d = _d.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
				var _m = parseInt(_d.replace(/^(.*)\..*$/, "$1"), 10);
				var _r = /r/.test(_d) ? parseInt(_d.replace(/^.*r(.*)$/, "$1"), 10) : 0;
				UFO.fv = [_m, _r];
			}
		}
		else if (window.ActiveXObject) {
			UFO.pluginType = "ax";
			try { // avoid fp 6 crashes
				var _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
			}
			catch(e) {
				try { 
					var _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
					UFO.fv = [6, 0];
					_a.AllowScriptAccess = "always"; // throws if fp < 6.47 
				}
				catch(e) {
					if (UFO.fv[0] == 6) return;
				}
				try {
					var _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
				}
				catch(e) {}
			}
			if (typeof _a == "object") {
				var _d = _a.GetVariable("$version"); // bugs in fp 6.21/6.23
				if (typeof _d != "undefined") {
					_d = _d.replace(/^\S+\s+(.*)$/, "$1").split(",");
					UFO.fv = [parseInt(_d[0], 10), parseInt(_d[2], 10)];
				}
			}
		}
	},

	hasRequired: function(id) {
		var _l = UFO.req.length;
		for (var i = 0; i < _l; i++) {
			if (typeof UFO.foList[id][UFO.req[i]] == "undefined") return false;
		}
		return true;
	},
	
	hasFlashVersion: function(major, release) {
		return (UFO.fv[0] > major || (UFO.fv[0] == major && UFO.fv[1] >= release)) ? true : false;
	},

	writeSWF: function(id) {
		var _fo = UFO.foList[id];
		var _e = document.getElementById(id);
		if (UFO.pluginType == "npapi") {
			if (UFO.uaHas("gecko") || UFO.uaHas("xml")) {
				while(_e.hasChildNodes()) {
					_e.removeChild(_e.firstChild);
				}
				var _obj = UFO.createElement("object");
				_obj.setAttribute("type", "application/x-shockwave-flash");
				_obj.setAttribute("data", _fo.movie);
				_obj.setAttribute("width", _fo.width);
				_obj.setAttribute("height", _fo.height);
				var _l = UFO.optAtt.length;
				for (var i = 0; i < _l; i++) {
					if (typeof _fo[UFO.optAtt[i]] != "undefined") _obj.setAttribute(UFO.optAtt[i], _fo[UFO.optAtt[i]]);
				}
				var _o = UFO.opt.concat(UFO.optExc);
				var _l = _o.length;
				for (var i = 0; i < _l; i++) {
					if (typeof _fo[_o[i]] != "undefined") UFO.createObjParam(_obj, _o[i], _fo[_o[i]]);
				}
				_e.appendChild(_obj);
			}
			else {
				var _emb = "";
				var _o = UFO.opt.concat(UFO.optAtt).concat(UFO.optExc);
				var _l = _o.length;
				for (var i = 0; i < _l; i++) {
					if (typeof _fo[_o[i]] != "undefined") _emb += ' ' + _o[i] + '="' + _fo[_o[i]] + '"';
				}
				_e.innerHTML = '<embed type="application/x-shockwave-flash" src="' + _fo.movie + '" width="' + _fo.width + '" height="' + _fo.height + '" pluginspage="http://www.macromedia.com/go/getflashplayer"' + _emb + '></embed>';
			}
		}
		else if (UFO.pluginType == "ax") {
			var _objAtt = "";
			var _l = UFO.optAtt.length;
			for (var i = 0; i < _l; i++) {
				if (typeof _fo[UFO.optAtt[i]] != "undefined") _objAtt += ' ' + UFO.optAtt[i] + '="' + _fo[UFO.optAtt[i]] + '"';
			}
			var _objPar = "";
			var _l = UFO.opt.length;
			for (var i = 0; i < _l; i++) {
				if (typeof _fo[UFO.opt[i]] != "undefined") _objPar += '<param name="' + UFO.opt[i] + '" value="' + _fo[UFO.opt[i]] + '" />';
			}
			var _p = window.location.protocol == "https:" ? "https:" : "http:";
			_e.innerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + _objAtt + ' width="' + _fo.width + '" height="' + _fo.height + '" codebase="' + _p + '//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=' + _fo.majorversion + ',0,' + _fo.build + ',0"><param name="movie" value="' + _fo.movie + '" />' + _objPar + '</object>';
		}
	},
		
	createDialog: function(id) {
		var _fo = UFO.foList[id];
		UFO.createCSS("html", "height:100%; overflow:hidden;");
		UFO.createCSS("body", "height:100%; overflow:hidden;");
		UFO.createCSS("#xi-con", "position:absolute; left:0; top:0; z-index:1000; width:100%; height:100%; background-color:#fff; filter:alpha(opacity:75); opacity:0.75;");
		UFO.createCSS("#xi-dia", "position:absolute; left:50%; top:50%; margin-left: -" + Math.round(parseInt(_fo.xiwidth, 10) / 2) + "px; margin-top: -" + Math.round(parseInt(_fo.xiheight, 10) / 2) + "px; width:" + _fo.xiwidth + "px; height:" + _fo.xiheight + "px;");
		var _b = document.getElementsByTagName("body")[0];
		var _c = UFO.createElement("div");
		_c.setAttribute("id", "xi-con");
		var _d = UFO.createElement("div");
		_d.setAttribute("id", "xi-dia");
		_c.appendChild(_d);
		_b.appendChild(_c);
		var _mmu = window.location;
		if (UFO.uaHas("xml") && UFO.uaHas("safari")) {
			var _mmd = document.getElementsByTagName("title")[0].firstChild.nodeValue = document.getElementsByTagName("title")[0].firstChild.nodeValue.slice(0, 47) + " - Flash Player Installation";
		}
		else {
			var _mmd = document.title = document.title.slice(0, 47) + " - Flash Player Installation";
		}
		var _mmp = UFO.pluginType == "ax" ? "ActiveX" : "PlugIn";
		var _uc = typeof _fo.xiurlcancel != "undefined" ? "&xiUrlCancel=" + _fo.xiurlcancel : "";
		var _uf = typeof _fo.xiurlfailed != "undefined" ? "&xiUrlFailed=" + _fo.xiurlfailed : "";
		UFO.foList["xi-dia"] = { movie:_fo.ximovie, width:_fo.xiwidth, height:_fo.xiheight, majorversion:"6", build:"65", flashvars:"MMredirectURL=" + _mmu + "&MMplayerType=" + _mmp + "&MMdoctitle=" + _mmd + _uc + _uf };
		UFO.writeSWF("xi-dia");
	},

	expressInstallCallback: function() {
		var _b = document.getElementsByTagName("body")[0];
		var _c = document.getElementById("xi-con");
		_b.removeChild(_c);
		UFO.createCSS("body", "height:auto; overflow:auto;");
		UFO.createCSS("html", "height:auto; overflow:auto;");
	},

	cleanupIELeaks: function() {
		var _o = document.getElementsByTagName("object");
		var _l = _o.length
		for (var i = 0; i < _l; i++) {
			_o[i].style.display = "none";
			for (var x in _o[i]) {
				if (typeof _o[i][x] == "function") {
					_o[i][x] = null;
				}
			}
		}
	}

};

if (typeof window.attachEvent != "undefined" && UFO.uaHas("ieWin")) {
	window.attachEvent("onunload", UFO.cleanupIELeaks);
}

//	Maak het Flash object aan ter vervanging van de titel.
//	
var FO = { movie:"/movies/logo.swf", width:"500", height:"57", majorversion:"6", build:"0" };
UFO.create(FO, "ufo");




/*	***********************************************************
 *
 *	DISPATCH: haak routines in het DOM event model
 *
 */
function dispatch(targetElement,eventName,handlerName)
{ 
	if (targetElement.addEventListener) { 
		targetElement.addEventListener(eventName, function() { return targetElement[handlerName](); }, false);
	} else if (targetElement.attachEvent) { 
		targetElement.attachEvent("on" + eventName, function() { return targetElement[handlerName](); });
	} else { 
		var originalHandler = targetElement["on" + eventName]; 
		if (originalHandler) { 
			targetElement["on" + eventName] = function() { originalHandler(); return targetElement[handlerName](); }
		} else { 
			targetElement["on" + eventName] = function() { return targetElement[handlerName](e); } 
		} 
	}
}




/*	***********************************************************
 *
 *	STYLESWITCHER: wissel makkelijk van tekstgrootte
 *
 */
var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);


//	Init de switch: bepaal keuze uit cookie of 
//
function initStyleSwitcher()
{ 
	var cookie = readCookie("style");
	var pref_style = getPreferredStyleSheet();
	var title = cookie ? cookie : (pref_style ? pref_style : 'lettergrootte: klein');
	var huidige_corps = title.substring(15,title.length);

	// Preload de zes afbeeldingen van de knopjes.
	var prefetch_ko = new Image(); prefetch_ko.src = '/img/button_klein_oranje.gif';
	var prefetch_kg = new Image(); prefetch_kg.src = '/img/button_klein_groen.gif';
	var prefetch_mo = new Image(); prefetch_mo.src = '/img/button_middel_oranje.gif';
	var prefetch_mg = new Image(); prefetch_mg.src = '/img/button_middel_groen.gif';
	var prefetch_go = new Image(); prefetch_go.src = '/img/button_groot_oranje.gif';
	var prefetch_gg = new Image(); prefetch_gg.src = '/img/button_groot_groen.gif';
	
		
	setActiveStyleSheet(title);
	
	// voeg de drie knopjes in door middel van DOM elementen.
	var logo_elem = document.getElementById('logo');

	// Bepaal uitgangskleuren buttons.
	var kleine_button_src      = (huidige_corps == 'klein')  ? prefetch_kg.src : prefetch_ko.src;
	var middelgrote_button_src = (huidige_corps == 'middel') ? prefetch_mg.src : prefetch_mo.src;
	var grote_button_src       = (huidige_corps == 'groot')  ? prefetch_gg.src : prefetch_go.src;

	// Klein
	kleine_button = document.createElement('img');
	kleine_button.setAttribute('src',kleine_button_src);
	kleine_button.setAttribute('id','klein');
	kleine_button.setAttribute('alt','kleine letters');
	kleine_button.setAttribute('width','17');
	kleine_button.setAttribute('height','17');
		
	kleine_button_dom = logo_elem.appendChild(kleine_button);

	// Middel
	middelgrote_button = document.createElement('img');
	middelgrote_button.setAttribute('src',middelgrote_button_src);
	middelgrote_button.setAttribute('id','middel');
	middelgrote_button.setAttribute('alt','middelgrote letters');
	middelgrote_button.setAttribute('width','17');
	middelgrote_button.setAttribute('height','17');
	
	middelgrote_button_dom = logo_elem.appendChild(middelgrote_button);

	// Groot
	grote_button = document.createElement('img');
	grote_button.setAttribute('src',grote_button_src);
	grote_button.setAttribute('id','groot');
	grote_button.setAttribute('alt','grote letters');
	grote_button.setAttribute('width','17');
	grote_button.setAttribute('height','17');
	
	grote_button_dom = logo_elem.appendChild(grote_button);


	kleine_button_dom.targetClickHandler = kiesCorps;
	dispatch(kleine_button_dom, "click", "targetClickHandler");
	middelgrote_button_dom.targetClickHandler = kiesCorps;
	dispatch(middelgrote_button_dom, "click", "targetClickHandler");
	grote_button_dom.targetClickHandler = kiesCorps;
	dispatch(grote_button_dom, "click", "targetClickHandler");
}


//	Helper functie: bouw een element op en retourneer als object.
//
function createNode(elem_type,attrs) {
	newNode = document.createElement(elem_type);

	for (var key in attrs)
	{
		alert(key + ' = ' + attrs[key]);
		//newNode.setAttribute(key,attrs[key]);
	}

	return newNode;
}


//	Bewaar huidige keuze in cookie.
//
function saveStyleState()
{
	var title = getActiveStyleSheet();
	createCookie("style", title, 365);
}


//	Zet een bepaalde stijl aan.
//
function setActiveStyleSheet(title) {
	var i, a, main;
	for (i=0; (a = document.getElementsByTagName("link")[i]); i++)
	{
		if (a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) 
		{
			a.disabled = true;
			if(a.getAttribute("title") == title) a.disabled = false;
		}
	}
	return false;
}


// Haal huidige stijlblad op.
//
function getActiveStyleSheet() {
	var i, a;
	for (i=0; (a = document.getElementsByTagName("link")[i]); i++)
	{
		if (a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
	}
	return null;
}

function getPreferredStyleSheet() {
	var i, a;
	for (i=0; (a = document.getElementsByTagName("link")[i]); i++)
	{
		if (a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("rel").indexOf("alt") == -1 && a.getAttribute("title")) return a.getAttribute("title");
	}
	return null;
}


//	Zet cookie.
//
function createCookie(name,value,days) {
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else
	{
		expires = "";
	}
	document.cookie = name+"="+value+expires+"; path=/";
}

//	Lees cookie.
//
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for (var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}


//	Helper functie: kies een tekstgrootte en zet betreffende icoontje aan.
//
function kiesCorps() {
	var grootte = this.id.toString();

	document.getElementById('klein').src = sourceReplace(document.getElementById('klein'),'oranje');
	document.getElementById('middel').src = sourceReplace(document.getElementById('middel'),'oranje');
	document.getElementById('groot').src = sourceReplace(document.getElementById('groot'),'oranje');

	document.getElementById(grootte).src = sourceReplace(document.getElementById(grootte),'groen');

	return setActiveStyleSheet('lettergrootte: '+ grootte);
}

function sourceReplace(image,state) {
	var image_source = image.src;
	var image_basepoint = image_source.lastIndexOf('_');
	var image_basesource = image_source.substring(0,image_basepoint+1);
	var image_extension = image_source.substr(image_source.length-4,4);

	return image_basesource + state + image_extension;
}


//	Hang de switcher in het DOM.
//
window.targetStyleSwitcherHandler = initStyleSwitcher;
window.targetSaveStateHandler = saveStyleState;
dispatch(window, "load", "targetStyleSwitcherHandler");
dispatch(window, "unload", "targetSaveStateHandler");




/*	***********************************************************
 *
 *	NIEUWSITEMS & SUBMENU VORMGEVER: combineer inline/blok
 *
 */

//	Init script: bepaal nieuwsitems en pas vormgeving aan.
//
function initItemFormatter()
{
	// Check of er een 'extra' div op de pagina staat.
	var extra_div = (document.getElementById('extra')) ? document.getElementById('extra') : null;

	if (extra_div)
	{
		// Haal extra items op.
		var extra_items = extra_div.getElementsByTagName('li');
		
		for (var i=0; i < extra_items.length; i++)
		{
			// Geen script aan item hangen als betreffende listitem geselecteerd is.
			if (extra_items[i].className.indexOf('huidig') > -1) continue;
			
			// Hang het hover- en clickscript aan de extra items.
			extra_items[i].targetMouseoverHandler = itemHoverOn;
			extra_items[i].targetMouseoutHandler = itemHoverOff;
			extra_items[i].targetClickHandler = itemClick;
			dispatch(extra_items[i], "mouseover", "targetMouseoverHandler");
			dispatch(extra_items[i], "mouseout", "targetMouseoutHandler");
			dispatch(extra_items[i], "click", "targetClickHandler");
		}
	}
}


// Feitelijke functie: hoveren over item.
//
function itemHoverOn()
{
	this.className = 'onstatus';
}


// Feitelijke functie: hoveren over item.
//
function itemHoverOff()
{
	this.className = '';
}


// Feitelijke functie: klikken op (nieuws)item.
//
function itemClick()
{
	location.href = this.getElementsByTagName('a')[0].href;
}


//	Helper functie: home of niet?
//
function isHome()
{
	return (document.getElementById('convenantovergewicht').className == 'home');
}


//	Hang de handler in het DOM.
//
window.targetItemFormatterHandler = initItemFormatter;
dispatch(window, "load", "targetItemFormatterHandler");




/*	***********************************************************
 *
 *	TITEL VORMGEVER: eerste woord uit titel (h1/h2) groen.
 *
 */

// Regexp om titel te splitsen in het eerste woord, al dan niet met lidwoord, en de resterende woorden 
// met trailing space. De regexp splitst de titel in een array met op plek 0 het gezochte woord (evt met 
// lidwoord) en met op plek 1 de overige woorden in de titel.
var titel_regexp = /^(?:\s*)((de|het|een)?\s?\S*[\s]?){1}|(\S*\s?)*(?:\s*)$/ig;


//	Init script: haal titel op en pas vormgeving aan.
//
function initTitelFormatter(e)
{
	if (document.getElementById('convenantovergewicht').className != 'home')
	{
		// Alleen in kern div, dus uitgaan van die div.
		var kern_div = document.getElementById('kern');
		if (kern_div) {
			// Haal h1 op en vervang door nieuwe.
			var kern_titel = kern_div.getElementsByTagName('h1')[0];
			kern_div.getElementsByTagName('h1')[0].parentNode.replaceChild(titelOmkat(kern_titel), kern_div.getElementsByTagName('h1')[0]);

			// Haal alle h2's op en vervang die ook.
			var kern_kopjes = kern_div.getElementsByTagName('h2');

			for (var j=0; j < kern_kopjes.length; j++)
			{
				var kern_kopje_ouder = kern_kopjes[j].parentNode;

				// Enkele uitzonderingen: h2 staat in li op zoekresultatenpagina, h2 is kind van div met class 'item' of id 'resultaatnav'.
				if (kern_kopje_ouder.nodeName.toLowerCase() == "li" || 
				    kern_kopje_ouder.className.indexOf('item') != -1 || 
				    kern_kopje_ouder.id == 'resultaatnav') continue;

				//    kern_kopjes[j].className.indexOf('volgende') != -1 || 
				var res = titelOmkat(kern_kopjes[j]);
				
				if (res) kern_kopje_ouder.replaceChild(res, kern_kopjes[j]);
			}
		}
	}
}

//	Eigenlijke functie: vervang element door versie met span rond eerste woord en retourneer nieuw element
//
function titelOmkat(kern_elem) {
	// Haal de tekst uit het element.
	var kern_titel = kern_elem.cloneNode(true);
	var kern_titel_id = (kern_elem.id) ? kern_elem.id : "";                   // Onthoud id van element indien aanwezig.
	var kern_titel_class = (kern_elem.className) ? kern_elem.className : "";  // Onthoud class van element indien aanwezig.
	var kern_titel_tekst = kern_titel.childNodes[0].nodeValue;
	
	if (kern_titel_tekst) {
		
		// Bepaal niveau van kopje: h1 of h2.
		var kern_titel_type = kern_titel.nodeName;

		// Splits de titel middels regexp.
		var kern_titel_woorden = kern_titel_tekst.match(titel_regexp);

		// alert(kern_titel_type + " " + kern_titel_tekst + "\n\n" + kern_titel_woorden);

		// Bouw het nieuwe element op...
		// Eerst h1/h2 element
		var kern_titel_nw = document.createElement(kern_titel_type);
		kern_titel_nw.setAttribute('id',kern_titel_id);                           // Geef oude id terug aan nieuwe element.
		kern_titel_nw.setAttribute('class',kern_titel_class);                     // Geef oude class terug aan nieuwe element.

			// Dan span voor kleur
		var kern_titel_nw_groen = kern_titel_nw.appendChild(document.createElement('span'));
		kern_titel_nw_groen.setAttribute('id','greenspan');

		// Tekst in de span: eerste woord titel
		var kern_titel_nw_groen_txt = kern_titel_nw_groen.appendChild(document.createTextNode(kern_titel_woorden[0]));

		// Hang de overige woorden in de titel erachter.
		var kern_titel_nw_zwart_txt = kern_titel_nw.appendChild(document.createTextNode(kern_titel_woorden[1]));

		// En retourneer het nieuwe element.
		return kern_titel_nw;
	}
	return false;
}



//	Hang de handler in het DOM.
//
window.targetTitelFormatterHandler = initTitelFormatter;
dispatch(window, "load", "targetTitelFormatterHandler");




/*	***********************************************************
 *
 *	SMOOTH SCROLLER: vraag&antwoord lijst soepel doorscrollen.
 *
 */
var fade_elem_id = ''; // Id van element dat wordt gefade.
var fade_timeout = 0;  // Zet vlag om de timeout bij te houden.
var fade_delay = 150;   // Achtergrond is 540px breed; verplaatsen in 18 stappen van 30px / 50 milliseconden.
var fade_step = 30;    // Stapgrootte dus 30px.
var fade_max = -540;   // Maximale scroll.

//	Init script: haal lijst op en vang klikken af.
//
function initSmoothScroller()
{
	// Haal eerste lijst op uit document.
	var pagina_nav = (document.getElementById('pagnav')) ? document.getElementById('pagnav') : null;

	if (pagina_nav)
	{
		var pagina_nav_links = pagina_nav.getElementsByTagName('a');
		
		for (var i=0; i < pagina_nav_links.length; i++)
		{
			// Hang in DOM event model.
			pagina_nav_links[i].targetClickHandler = scrollStart;
			dispatch(pagina_nav_links[i], "click", "targetClickHandler");
		}
	}

	// Haal tweede lijst op uit document.
	var pagina_nav_2 = (document.getElementById('pagnav02')) ? document.getElementById('pagnav02') : null;

	if (pagina_nav_2)
	{
		var pagina_nav_links = pagina_nav_2.getElementsByTagName('a');
		
		for (var i=0; i < pagina_nav_links.length; i++)
		{
			// Hang in DOM event model.
			pagina_nav_links[i].targetClickHandler = scrollStart;
			dispatch(pagina_nav_links[i], "click", "targetClickHandler");
		}
	}

}


//	Eigenlijke functie: scroll naar element toe en zet achtergrond.
//
function scrollStart()
{
	// Bepaal doel van link.
	var link_target = this.href.substr(this.href.length-4,4);
	var link_target_elem = document.getElementById(link_target);

	//alert(link_target + "::" + link_target_elem + "::");

	var useragent = navigator.userAgent.toLowerCase();
	var is_safari = (useragent.indexOf('safari') > 0); 

	// Scroll naar de goede plek.
	if (!is_safari) link_target_elem.scrollIntoView();

	// Zet achtergrond van doel.
	link_target_elem.fadeposx = 0;
	link_target_elem.style.marginLeft = "-78px";
	link_target_elem.style.paddingLeft = "78px";
	
	fade_elem_id = link_target;

	// Reset alle kopjes (voorkomen dat eventuele afgebroken fades in beeld blijven staan).
	fadeClear();

	// Start faden gekozen kopje.
	fadeOut();

	return is_safari;
}


//	Eigenlijke functie: reset alle fades.
//
function fadeClear()
{
	// Haal alle h2 kopjes op.
	var fade_elems_h2 = document.getElementById('kern').getElementsByTagName('h2');
	
	for (var i=0; i < fade_elems_h2.length; i++)
	{
		fade_elems_h2[i].style.backgroundPosition = "-540px 0";
	}

	// Haal alle h3 kopjes op.
	var fade_elems_h3 = document.getElementById('kern').getElementsByTagName('h3');
	
	for (var i=0; i < fade_elems_h3.length; i++)
	{
		fade_elems_h3[i].style.backgroundPosition = "-540px 0";
	}
}


//	Eigenlijke functie: fade de achtergrond uit door uit beeld schuiven.
//
function fadeOut()
{
	// Haal element op op basis van global 'fade_elem_id'.
	fade_elem = document.getElementById(fade_elem_id);
	
	if (fade_elem.fadeposx > fade_max)
	{
		fade_elem.style.backgroundPosition = fade_elem.fadeposx + "px 0";
		
		fade_elem.fadeposx -= 30;

		//alert(fade_elem.fadeposx + " : " + fade_max);
		
		if (fade_timeout) clearTimeout(fade_timeout);
		fade_timeout = setTimeout(fadeOut, fade_delay);
	}
	else
	{
		if (fade_timeout) clearTimeout(fade_timeout);
	}
}

function adduploadedfile(uploadedfilename) {
  //$('#piv_comment').val();      
  if ($('#piv_comment')) {
    var text = $('#piv_comment').val();
    $("#piv_comment").val(text + "\n" + uploadedfilename);
  } else {
    alert(uploadedfilename);
  }
}
//	Hang de handler in het DOM.
//
window.targetSmoothScrollerHandler = initSmoothScroller;
dispatch(window, "load", "targetSmoothScrollerHandler");

