/**
 * Als de array 'laOnloadActions' nog niet is gedefinieerd dan deze
 * hier definieren.
 */
if(laOnloadActions == undefined) {
	var laOnloadActions = new Array();
	
	// Alle gedefinieerde functies in de Array 1 voor 1 uitvoeren.
	loadActions = function() {
		for(var lnI = 0; lnI < laOnloadActions.length; lnI++) {
			laOnloadActions[lnI]();
		}		
	}

	// De onload actie van het document aan de functie 'loadActions' koppelen.
	window.onload = function() {
		loadActions();
	}
}

/**
 * Bij het laden van de pagina moeten alle 'img' elementen worden langsgelopen
 * aan deze elementen moet een 'onclick' event worden toegevoegd die er voor
 * zorgt dat er een grote versie van het plaatje kan worden getoond.
 */
laOnloadActions.push(
	function() {
		/**
		 * Alle 'img' elementen die in de inhoud aanwezig zijn langslopen.
		 * Deze elementen krijgen een 'onclick' event welke een nieuw venster opent.
		 */
		if(document.getElementById("Content") != undefined) {
			var loImages = document.getElementById("Content").getElementsByTagName("img");
			
			for(var lnI = 0; lnI < loImages.length; lnI++) {
				if(loImages[lnI].parentNode.tagName != "A" && loImages[lnI].parentNode.parentNode.tagName != "A") {
					loImages[lnI].style.cursor	= "pointer";
					loImages[lnI].onclick 		= new Function("SysFun.openImage('"+ loImages[lnI].src +"');");
				}
			}
		}
	}
);

/**
 * De class SysFun bevat alle functies die specifiek voor
 * dit systeem zijn ontwikkeld. 
 */
var SysFun = {
	/**
	 * De functie '' opent een nieuw venster waarin een opgegeven plaatje
	 * wordt geladen.
	 *
	 * @param	String	lcURL
	 */
	openImage : function(lcURL) {
		/**
		 * Het plaatje inladen.
		 */
		window.parent.document.getElementById("HiddenContainer").innerHTML = '<img id="ModalImage" src="'+ lcURL +'" onclick="SysFun._hideDiv();" style="cursor: pointer;" alt="Klik op de foto om deze te sluiten." />';
		
		/**
		 * De breedte, hoogte en positie op het scherm bepalen.
		 */
		var lnWidth			= document.getElementById("ModalImage").width;
		var lnHeight		= document.getElementById("ModalImage").height;
		var lnTop			= document.body.scrollTop;
		var lnWindowHeight	= window.innerHeight ? window.innerHeight : document.documentElement.clientHeight;
		
		if (lnTop == 0) {
		    if (window.pageYOffset) {
		        lnTop = window.pageYOffset;
	        } else {
		        lnTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
	        }
		}
		
		/**
		 * De schermhoogte en breedte instellen.
		 */				
		window.parent.document.getElementById("HiddenContainer").style.height	= lnHeight	+"px";
		window.parent.document.getElementById("HiddenContainer").style.width	= lnWidth 	+"px";

		/**
		 * Het plaatje centeren op het scherm.
		 */
		laPageSize = this._getPageSize();
		
		window.parent.document.getElementById("HiddenContainer").style.left	= (laPageSize[0]  / 2) - (lnWidth  / 2) 		+"px";
		window.parent.document.getElementById("HiddenContainer").style.top	= (lnWindowHeight / 2) - (lnHeight / 2) + lnTop +"px";

		/**
		 * Het ModalForm tonen.
		 */
		this._showDiv();
	},

	/**
	 * De functie 'openModalForm' maakt een nieuw venster met daarin de mogelijkheid
	 * om een nieuwe pagina te openen.
	 *
	 * @param	String	lcURL
	 */
	openModalForm : function(lcURL) {
		/**
		 * Een iframe aanmaken met daarin de inhoud van de te
		 * laden pagina. Deze oplossing is makkelijker omdat
		 * er zo geen javascript of css at runtime geimporteerd
		 * hoeft te worden in de website.
		 */			
		window.parent.document.getElementById("HiddenContainer").innerHTML = '<iframe src="'+ lcURL +'" style="width: 100%; height: 100%; border: 0px solid; margin: 0px;" frameborder="0"></iframe>';
		
		/**
		 * De breedte, hoogte en positie op het scherm bepalen.
		 */
		var lnWidth			= 821;
		var lnHeight		= 600;
		var lnTop			= document.body.scrollTop;
		var lnWindowHeight	= window.innerHeight ? window.innerHeight : document.documentElement.clientHeight;
		
		if (lnTop == 0) {
		    if (window.pageYOffset) {
		        lnTop = window.pageYOffset;
	        } else {
		        lnTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
	        }
		}
		
		/**
		 * De schermhoogte en breedte instellen.
		 */				
		window.parent.document.getElementById("HiddenContainer").style.height	= lnHeight	+"px";
		window.parent.document.getElementById("HiddenContainer").style.width	= lnWidth 	+"px";

		/**
		 * Het plaatje centeren op het scherm.
		 */
		laPageSize = this._getPageSize();
		
		window.parent.document.getElementById("HiddenContainer").style.left	= (laPageSize[0]  / 2) - (lnWidth  / 2) 		+"px";
		window.parent.document.getElementById("HiddenContainer").style.top	= (lnWindowHeight / 2) - (lnHeight / 2) + lnTop +"px";		
		
		/**
	 	 * De containers zichtbaar maken.
	 	 */
		this._showDiv();		
	},
	
	/**
	 * De functie 'closeModalForm' sluit het venster waarin de vorige pagina was geladen.
	 */
	closeModalForm : function() {
		this._hideDiv();
	},	

	/**
	 * De functie 'showDiv' laat het scherm dat op de achtergrond
	 * onzichtbaar is weer zichtbaar worden.
	 */
	_showDiv : function() {
		/**
		 * De breedte en hoogte van de zwarte skin bepalen,
		 * deze is niet altijd even groot.
		 */
		loModalContainer = window.parent.document.getElementById("ModalContainer");
		loModalContainer.style.display = "block";
		
		laPageSize = this._getPageSize();
		loModalContainer.style.width 	= laPageSize[0] +"px";
		loModalContainer.style.height 	= laPageSize[1] +"px";
		
		/**
		 * De zwarte skin eerst zichtbaar maken.
		 */
		window.parent.document.getElementById("ModalContainer").style.visibility = "visible";
		
		/**
		 * De div waarin de inhoud zich bevind zichtbaar maken.
		 */
		window.parent.document.getElementById("HiddenContainer").style.zIndex  	  = 100;
		window.parent.document.getElementById("HiddenContainer").style.visibility = "visible";
	},
	
	/**
	 * De functie 'hideDiv' laat het scherm dat modal is weer op
	 * de achtergrond onzichtbaar worden.
	 */
	_hideDiv : function() {
		/**
		 * De div waarin de inhoud zich bevind eerst onzichtbaar maken.
		 */
		window.parent.document.getElementById("HiddenContainer").style.visibility = "hidden";
		window.parent.document.getElementById("HiddenContainer").style.zIndex  	  = -100;
		
		/**
		 * De zwarte skin onzichtbaar maken.
		 */
		window.parent.document.getElementById("ModalContainer").style.visibility = "hidden";		
	},
	
	/**
	 * De functie 'getPageSize' berekend de grootte van het scherm en
	 * geeft de waarde hiervan terug doormiddel van een array.
	 *
	 * @return	Array
	 */
	_getPageSize : function() {
		var xScroll, yScroll;
		
		if (window.parent.innerHeight && window.parent.scrollMaxY) {	
			xScroll = window.parent.document.body.scrollWidth;
			yScroll = window.parent.innerHeight + window.parent.scrollMaxY;
		} else if (window.parent.document.body.scrollHeight > window.parent.document.body.offsetHeight){ // all but Explorer Mac
			xScroll = window.parent.document.body.scrollWidth;
			yScroll = window.parent.document.body.scrollHeight;
		} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
			xScroll = window.parent.document.body.offsetWidth;
			yScroll = window.parent.document.body.offsetHeight;
		}
		
		var windowWidth, windowHeight;
		if (self.innerHeight) {	// all except Explorer
			windowWidth = parent.innerWidth;
			windowHeight = parent.innerHeight;
		} else if (window.parent.document.documentElement && window.parent.document.documentElement.clientHeight) { // Explorer 6 Strict Mode
			windowWidth = window.parent.document.documentElement.clientWidth;
			windowHeight = window.parent.document.documentElement.clientHeight;
		} else if (window.parent.document.body) { // other Explorers
			windowWidth = window.parent.document.body.clientWidth;
			windowHeight = window.parent.document.body.clientHeight;
		}	
				
		// for small pages with total height less then height of the viewport
		if(yScroll < windowHeight){
			pageHeight = windowHeight;
		} else { 
			pageHeight = yScroll;
		}
	
		// for small pages with total width less then width of the viewport
		if(xScroll < windowWidth){	
			pageWidth = windowWidth;
		} else {
			pageWidth = xScroll;
		}	
			
		arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
		return arrayPageSize;
	}
};