function xmlHttpRequest() {
	var xmlHttp;

	// create xml Http request object
	try {
		xmlHttp = new XMLHttpRequest(); // for the standard browsers (Firefox)
	}
	catch(e) {
		try {
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); // microsoft browsers
		}
		catch(e) {
			try {
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); // microsoft browsers
			}
			catch(e) {
				return false;
			}
		}
	}

	// return xml Http request object
	return xmlHttp;
}

/**
 * Pas op IE6 bug voor fixed-position toe op element
 * @param node		Node element dat fixed position heeft en gefixt moet worden
 **/
function fixFixedNode(node) {
	//Aanpassing 04-09-2008: Filmpje moet scrollbaar zijn, daarom absoluut gepositioneerd
	node.style.position = 'absolute';

	var IE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;
	/*if (IE6) {
		node.style.position = 'absolute';
		if (document.body.scrollHeight > document.body.offsetHeight) {
			node.height = document.body.scrollHeight + 'px';
		} else {
			node.height = document.body.offsetHeight + 'px';
		}
	}*/
}

/**
 * Stel de overlay in
 * @param width		Getoonde breedte van de in te stellen overlay (in pixels)
 * @param height	Getoonde hoogte van de in te stellen overlay (in pixels)
 * @param src		Url van de externe link die in de overlay getoond moet worden
 **/
function setOverlay(width, height, src) {
	//Vraag grootte van pagina op
	var resX, resY;
	if (document.body.offsetWidth != null) {
		resX = document.body.offsetWidth;
		resY = document.body.offsetHeight;
	} else if(window.innerWidth != null) {
		resX = window.innerWidth;
		resY = window.innerHeight;
	} else {
		//Operatie niet ondersteund: neem een logische waarde
		resX = 1024;
		resY = 860;
	}

	//Bereken x en y positie van alle hoekpunten
	var x = new Array();
	var y = new Array();

	//Linksboven
	x[0] = resX / 2 - width / 2;
	y[0] = resY / 2 - height / 2;

	//Rechtsboven
	x[1] = resX / 2 + width / 2;
	y[1] = resY / 2 - height / 2;

	//Linksonder
	x[2] = resX / 2 - width / 2;
	y[2] = resY / 2 + height / 2;

	//Rechtsonder
	x[3] = resX / 2 + width / 2;
	y[3] = resY / 2 + height / 2;

	//Voorkom dat het scherm (in een klein formaat) niet meer te sluiten is
	if (y[0] < 0) {
		y[2] = y[2] - y[0];
		y[0] = 0;
	}
	if (y[1] < 0) {
		y[3] = y[2] - y[0];
		y[1] = 0;
	}

	//Voorkom dat er randjes van het filmpje wegvallen
	if (x[0] < 0) {
		x[1] = x[1] - x[0];
		x[0] = 0;
	}
	if (x[2] < 0) {
		x[3] = x[3] - x[2];
		x[2] = 0;
	}

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

	//Verwijder eventuele elementen die nog in de overlay zitten
	cleanOverlay();

	//Doe synchrone Ajax request
	var xmlHttp = xmlHttpRequest();
	xmlHttp.open("GET", src, false);
	xmlHttp.send(null);
	overlay.innerHTML = xmlHttp.responseText;

	//Stel positie en grootte van iframe in
	overlay.style.position = 'fixed';
	overlay.style.left = x[0] + 'px';
	overlay.style.top = y[0] + 'px';
	overlay.style.width = width + 'px';
	overlay.style.height = height + 'px';
	overlay.style.overflow = "hidden";

	//Zorg ervoor dat iframe vooraan ligt
	overlay.style.zIndex = '9999';

	fixFixedNode(overlay);

	//Zet iframe weer op zichtbaar
	overlay.style.display = 'block';

	//Maak opaque divs aan

	//Alleen tonen als er links ruimte is
	if (x[0] > 0) {
		var opaqueLinks = document.getElementById('opaque_links');
		if (!opaqueLinks) {
			var opaqueLinks = document.createElement("DIV");
			document.body.appendChild(opaqueLinks);
		}
		opaqueLinks.id = "opaque_links";
		opaqueLinks.className = "opaque";
		opaqueLinks.style.left = '0px';
		opaqueLinks.style.top = '0px';
		opaqueLinks.style.width = x[0] + 'px';
		opaqueLinks.style.height = resY + 'px';
		fixFixedNode(opaqueLinks);
	}

	//Alleen tonen als er rechts ruimte is
	if (resX - x[1] > 0) {
		var opaqueRechts = document.getElementById('opaque_rechts');
		if (!opaqueRechts) {
			var opaqueRechts = document.createElement("DIV");
			document.body.appendChild(opaqueRechts);
		}
		opaqueRechts.id = "opaque_rechts";
		opaqueRechts.className = "opaque";
		opaqueRechts.style.left = x[1] + 'px';
		opaqueRechts.style.top = '0px';
		opaqueRechts.style.width = (resX - x[1]) + 'px';
		opaqueRechts.style.height = resY + 'px';
		fixFixedNode(opaqueRechts);
	}

	//Alleen tonen als er boven ruimte is
	if (y[1] > 0) {
		var opaqueBoven = document.getElementById('opaque_boven');
		if (!opaqueBoven) {
			var opaqueBoven = document.createElement("DIV");
			document.body.appendChild(opaqueBoven);
		}
		opaqueBoven.id = "opaque_boven";
		opaqueBoven.className = "opaque";
		opaqueBoven.style.left = x[0] + 'px';
		opaqueBoven.style.top = '0px';
		opaqueBoven.style.width = width + 'px';
		opaqueBoven.style.height = y[1] + 'px';
		fixFixedNode(opaqueBoven);
	}

	//Alleen tonen als er onder ruimte is
	if (resY - y[2] > 0) {
		var opaqueOnder = document.getElementById('opaque_onder');
		if (!opaqueOnder) {
			var opaqueOnder = document.createElement("DIV");
			document.body.appendChild(opaqueOnder);
		}
		opaqueOnder.id = "opaque_onder";
		opaqueOnder.className = "opaque";
		opaqueOnder.style.left = x[2] + 'px';
		opaqueOnder.style.top = y[2] + 'px';
		opaqueOnder.style.width = width + 'px';
		opaqueOnder.style.height = (resY - y[2]) + 'px';
		fixFixedNode(opaqueOnder);
	}
}

/**
 * Verwijder alle elementen uit de overlay
 **/
function cleanOverlay() {
	var overlay = document.getElementById('overlay');

	//Verwijder alle elementen uit overlay
	var children = overlay.childNodes;
	for (var i = 0; i < children.length; i++) {
		overlay.removeChild(children[i]);
	}
}

/**
 * Zet overlay uit
 **/
function unsetOverlay() {
	var overlay = document.getElementById('overlay');

	//Zet overlay weer uit
	overlay.style.display = 'none';

	//Zet opaque divs uit
	document.body.removeChild(document.getElementById('opaque_links'));
	document.body.removeChild(document.getElementById('opaque_rechts'));
	document.body.removeChild(document.getElementById('opaque_boven'));
	document.body.removeChild(document.getElementById('opaque_onder'));

	cleanOverlay();
}

/**
 * Geef het OS van de user (Windows, MacOS, UNIX of Linux)
 **/
function getOS() {
	var OSName="Unknown OS";
	if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";
	if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS";
	if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX";
	if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux";
	return OSName;
}

/**
 * Geeft aan of deze browser het filmpje correct zal sluiten (het geluid speelt niet door)
 **/
function closesProperly() {
	//Alle browsers vertonen gebreken: reload nu altijd!
	return false;

	//Windows en Linux doen het goed, MacOS niet (anderen voor de zekerheid ook niet)
	if (getOS() == "Windows") return true;
	if (getOS() == "Linux") return true;
	return false;
}
