/*
	void debug(String)
	- logged een debug message naar de browser console (als deze beschikbaar is)
*/
function debug(msg) {
	if (window.console) {
		window.console.debug(msg);
	}
}

/*
	Object ele(String)
	- Shortcut functie voor document.getElementById(id)
*/
function ele(id) {
	return document.getElementById(id);
}

/*
	void doSelect(Object)
	- navigeert volgens geselecteerde optie uit het gegeven <select> (DOM) object
 */
function doHrefSelect(selectbox) {
	document.location.href = selectbox.options[selectbox.selectedIndex].value;
}

/*
	void popupPDF(String)
	- roept popupCentered() aan met specifieke grootte voor PDF files
 */
function popupPDF(url) {
	popupCentered(url, 'info', screen.width - 40, screen.height - 140);
}

/*
	void popupTrinicom(String, String)
	- roept popupCentered() aan met specifieke grootte voor trinicom popups
*/
function popupTrinicom(url, winName) {
	popupCentered(url, winName, 655, 700);
}

/*
	void popupCentered(String, String, Number, Number)
 */
function popupCentered(theURL, winName, myWidth, myHeight){
	var myLeft = (screen.width - myWidth) / 2;
	var myTop = (screen.height - myHeight) / 2;
	var features = "left=" + myLeft + ",top=" + myTop;
	window.open(theURL, winName, features + ',width=' + myWidth + ',height=' + myHeight);
}

/*
	void setGlobalAnchorText()
	- pakt *alle* anchors (hyperlinks) en configureert de mouseovers met de FBTO slogan text
*/
function setGlobalAnchorText() {
	// alle anchors configureren met juiste mouseovers
	var anchors = document.getElementsByTagName("a");
	for (var entry in anchors) {
		setFBTOText(anchors[entry]);
	}
}

/*
	Object getAbsolutePosition(Object)
		- geeft de absolute positie terug van het gegeven element
		- geeft de positie terug in een Object met propertien .x en .y
*/
function getAbsolutePosition(ele) {
	var offsetTop = ele.offsetTop;
	var offsetLeft = ele.offsetLeft;
	while((ele = ele.offsetParent) != null) {
		offsetTop += ele.offsetTop;
		offsetLeft += ele.offsetLeft;
	}
	// offset won't take scrollbar into account, so let's do that ourselves
	var page = document.getElementById("page");
	return {x:offsetLeft, y:offsetTop - (page != null ? page.scrollTop : 0)};	
}

/*
	void setFBTOText(Object)
	- zet de FBTO tekst voor mouseover etc.
	- wordt meestal gebruik voor hyperlinks (anchors)
*/
function setFBTOText(ele) {
	setEventHandler(ele, "onmouseover", function() { window.status = "FBTO. Verzekeren kan je zelf."; return true; });
	setEventHandler(ele, "onmouseout", function() { window.status = ""; });
}

/*
	void setFBTOClickhandler(Object, Function)
	- shortcut methode om een functie toe te wijzen aan een element
*/
function setFBTOClickhandler(ele, func) {
	setEventHandler(ele, "onclick", func);
}

/*
	void onWindowLoad(Function)
		- voert een windows.onload uit, maar overschrijft de bestaande daarbij niet (functioneel gezien)
*/
function onWindowLoad(newHandler) {
	setEventHandler(window, "onload", newHandler);
}

/*
	void setEventHandler(Object, string, Function)
		- registreert een nieuwe handler voor een event op een object
		- houdt daarbij rekening dat er misschien al eentje geregistreerd is
		- alle bestaande handlers worden dus ook nog uitgevoerd
*/
function setEventHandler(ele, event, handler) {
	if (ele != null) {
		// unbtrusive behavior addition:
		var oldHandler = ele[event] != null ? ele[event] : function() { return true; };
		ele[event] = function() { return oldHandler() & handler(); }
	}
}