	
	function Pagina (sTabBladKleur, sOndersteunendeKleur1, sOndersteunendeKleur2, sOndersteunendeKleur3) {
		this.tabbladKleur = sTabBladKleur;
		this.ondersteunendeKleur1 = sOndersteunendeKleur1;
		this.ondersteunendeKleur2 = sOndersteunendeKleur2;
		this.ondersteunendeKleur3 = sOndersteunendeKleur3;
	}
	
	
	var onLoadObjectStack = new Array ();
	var onLoadFunctionStack = new Array ();
	

	function OnLoadObject (oObject) {
		
		onLoadObjectStack.push (oObject);
		
	}
	
	
	function OnLoadFunction (sFunctieNaam) {
		
		onLoadFunctionStack.push (sFunctieNaam);
		
	}


	function initStack () {
		
		for (var i = 0; i < onLoadObjectStack.length; i++)
			onLoadObjectStack[i].init ();
		
		for (var i = 0; i < onLoadFunctionStack.length; i++)
			eval (onLoadFunctionStack[i]);
		
	}
	
	
	window.onload = function () {
		
		initStack ();
		
	}
	
	
	function openWindow (sID, sURL, iBreedte, iHoogte, bScroll) {
		if (iBreedte == 0) iBreedte = 400;
		if (iHoogte == 0) iHoogte = 400;
		
		var winWindow = window.open(sURL, sID, 'width=' + iBreedte + ',height=' + iHoogte + ',resizable=yes,status=no,scrollbars=yes');
		
		if (window.focus) winWindow.focus();
	}
	

	function Melding () {
		
		this.url = sDialogboxURL + '&dialogboxType=1'
		
	}
	
	
	Melding.prototype.openDialog = function (sMelding) {
		
		var meldingWindow = window.showModalDialog(this.url + '&dialogboxMelding=' + sMelding, 'Dialogbox', 'dialogHeight: 200px; dialogWidth: 300px; dialogTop: px; dialogLeft: px; edge: Raised; center: Yes; help: No; resizable: No; status: No; Scroll: No');
		
	}
	
	
	function Bevestiging () {
		this.url = sDialogboxURL + '&dialogboxType=2'
	}
	
	
	Bevestiging.prototype.openDialog = function (sMelding) {
		var bevestigingsWindow = window.showModalDialog(this.url + '&dialogboxMelding=' + sMelding, 'Dialogbox', 'dialogHeight: 200px; dialogWidth: 300px; dialogTop: px; dialogLeft: px; edge: Raised; center: Yes; help: No; resizable: No; status: No; Scroll: No');
		return bevestigingsWindow;
	}
	
	
	function isEmail(str) {
		var supported = 0;
		if (window.RegExp) {
			var tempStr = "a";
			var tempReg = new RegExp(tempStr);
			if (tempReg.test(tempStr)) supported = 1;
		}
		if (!supported) return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
		var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
		var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,6}|[0-9]{1,3})(\\]?)$");
		return (!r1.test(str) && r2.test(str));
	}
	
	
	function formFoutmelding (oElem, sMelding) {
		new Melding ().openDialog (sMelding);
		if (oElem)
			oElem.focus();
	}
	
	
/*
	function toonActionMenu (sMenuId) {
	
		var oMenu = document.getElementById ('actionMenu_' + sMenuId);
		
		oMenu.style.display = 'block';
		
	}
	
	function verbergActionMenu (sMenuId) {
	
		var oMenu = document.getElementById ('actionMenu_' + sMenuId);
		
		oMenu.style.display = 'none';
		
	}
*/
	

	function RijItem () {
		
		
		
	}
	
	RijItem.prototype.init = function (sId) {
		
		this.id = sId;
		
		this.kleur = '';
		this.kleurSelected = '#' + kleurenVerdonkeren (oPagina.tabbladKleur, 2);
		
		this.tabelRij = document.getElementById ('tabelRij' + this.id);
		
		var self = this;
		
		this.tabelRij.onmouseenter = function () {
			self.mouseOver (event);
		}
		
		this.tabelRij.onmouseleave = function () {
			self.mouseOut ();
		}
			
	}
	
	
	RijItem.prototype.mouseOver = function () {
	
		this.mouseOn = true;
		
		this.selecteer ();
		
	}
	
	
	RijItem.prototype.mouseOut = function () {
	
		this.mouseOn = false;
		
		this.deselecteer ();
		
	}
	

	RijItem.prototype.selecteer = function () {
		
		this.tabelRij.style.backgroundColor = this.kleurSelected;
		
	}


	RijItem.prototype.deselecteer = function () {
		
		this.tabelRij.style.backgroundColor = this.kleur;
		
	}
	
	
	RijItemMetActionMenu.prototype = new RijItem ();
	RijItemMetActionMenu.constructor = RijItem;
	RijItemMetActionMenu.superclass = RijItem.prototype;
	
	
	function RijItemMetActionMenu () {
		
	}
	
	
	RijItemMetActionMenu.prototype.init = function (sId) {
		
		RijItemMetActionMenu.superclass.init.call(this, sId);
		
		this.delay = 10;
		this.pane = document.getElementById ('actionMenu' + this.id);
		
		var self = this;
		
		this.pane.onmouseenter = function () {
			self.mouseOverMenu ();
		}
		
		this.pane.onmouseleave = function () {
			self.mouseOutMenu ();
		}
		
		this.pane.style.position = 'absolute';
		this.pane.style.display = 'none';
		this.pane.style.backgroundColor = this.kleurSelected;
		this.pane.style.padding = '4px 4px 4px 4px';
		this.pane.style.border = '1px solid #' + oPagina.ondersteunendeKleur2;
		this.pane.style.borderTop = '0px';
		this.pane.style.width = '160px';
		
	}
	
	
	RijItemMetActionMenu.prototype.mouseOver = function (event) {
	
		RijItemMetActionMenu.superclass.mouseOver.call(this);
		
		this.mousePosX = parseInt(event.clientX);
		
		this.tekenMenu ();
		
	}
	
	
	RijItemMetActionMenu.prototype.mouseOut = function () {
	
		this.mouseOn = false;
		
		var self = this;
		
		setTimeout (function () {
			if (!self.mouseOnMenu) {
				
				RijItemMetActionMenu.superclass.mouseOut.call(self);
				self.verbergMenu ();
				
			}
		}, this.delay);
		
	}
	
	
	RijItemMetActionMenu.prototype.mouseOverMenu = function () {
		
		this.mouseOnMenu = true;
		
	}
	
	
	RijItemMetActionMenu.prototype.mouseOutMenu = function () {
		
		this.mouseOnMenu = false;
		
		var self = this;
		
		setTimeout (function () {
			if (!self.mouseOn) {
				
				RijItemMetActionMenu.superclass.mouseOut.call(self);
				self.verbergMenu ();
				
			}
		}, this.delay);
		
	}
	
	
	RijItemMetActionMenu.prototype.tekenMenu = function () {
		
		this.pane.style.left = this.mousePosX + 20;
		this.pane.style.top = yPos (this.tabelRij) + this.tabelRij.offsetHeight;
		
		this.pane.style.display = 'block';
		
	}
	

	RijItemMetActionMenu.prototype.verbergMenu = function () {
		
		this.pane.style.display = 'none';
		
	}


	RijItemConcept.prototype = new RijItemMetActionMenu ();
	RijItemConcept.constructor = RijItemMetActionMenu;
	RijItemConcept.superclass = RijItemMetActionMenu.prototype;
	
	
	function RijItemConcept () {
		
	}
	
	
	RijItemConcept.prototype.init = function (sId, sMailId) {
		
		RijItemConcept.superclass.init.call(this, sId);
		
		this.paneCel = document.getElementById ('actionMenuCel' + this.id);
		
		this.pane.style.width = '';
		this.paneCel.style.width = '160px';
		
	}	


	KleurRijItemMetActionMenu.prototype = new RijItemMetActionMenu ();
	KleurRijItemMetActionMenu.constructor = RijItemMetActionMenu;
	KleurRijItemMetActionMenu.superclass = RijItemMetActionMenu.prototype;

	function KleurRijItemMetActionMenu () {
		
	}
	
	KleurRijItemMetActionMenu.prototype.init = function (sId, sKleur) {
		
		KleurRijItemMetActionMenu.superclass.init.call(this, sId);
		
		this.kleur = '#' + sKleur;
		this.kleurSelected = '#' + kleurenVerdonkeren (sKleur, 3);
		
		this.pane.style.backgroundColor = this.kleurSelected;
		
	}	

	
	PreviewMetActionMenu.prototype = new RijItemMetActionMenu ();
	PreviewMetActionMenu.constructor = RijItemMetActionMenu;
	PreviewMetActionMenu.superclass = RijItemMetActionMenu.prototype;

	
	function PreviewMetActionMenu () {
		
	}
	
	PreviewMetActionMenu.prototype.init = function (sId) {
		
		PreviewMetActionMenu.superclass.init.call(this, sId);
		
		this.kleur = '#' + oPagina.ondersteunendeKleur1;
		this.kleurSelected = '#' + kleurenVerdonkeren (oPagina.ondersteunendeKleur1, 2);
		
		this.pane.style.width = this.tabelRij.offsetWidth;
		this.pane.style.backgroundColor = this.kleurSelected;
		
	}	

	
	PreviewMetActionMenu.prototype.tekenMenu = function () {
		
		this.pane.style.left = xPos (this.tabelRij) - 0;
		this.pane.style.top = yPos (this.tabelRij) + this.tabelRij.offsetHeight - 1;
		
		this.pane.style.display = 'block';
		
	}
	
	
	RijItemMetActionMenuCelKleur.prototype = new RijItemMetActionMenu ();
	RijItemMetActionMenuCelKleur.constructor = RijItemMetActionMenu;
	RijItemMetActionMenuCelKleur.superclass = RijItemMetActionMenu.prototype;

	
	function RijItemMetActionMenuCelKleur () {
		
	}
	
	
	RijItemMetActionMenuCelKleur.prototype.selecteer = function () {
	
		RijItemMetActionMenuCelKleur.superclass.selecteer.call(this);
		
		for (var i = 0; i < celKleuren.length; i++) {
			
			var oCel = document.getElementById ('mailinggroepCel' + this.id + i);
			oCel.style.backgroundColor = celKleuren[i].kleurSelected;
			
		}
		
	}


	RijItemMetActionMenuCelKleur.prototype.deselecteer = function () {
	
		RijItemMetActionMenuCelKleur.superclass.deselecteer.call(this);
	
		for (var i = 0; i < celKleuren.length; i++) {
			
			var oCel = document.getElementById ('mailinggroepCel' + this.id + i);
			oCel.style.backgroundColor = celKleuren[i].kleur;
			
		}
		
	}


	function CelKleur (sKleur) {
	
		this.kleur = sKleur;
		this.kleurSelected = kleurenVerdonkeren (this.kleur, 2);
		
	}
	
	
	function xPos (obj) {
		
		var curleft = 0;
		if (obj.offsetParent)
		{
			while (obj.offsetParent)
			{
				curleft += obj.offsetLeft
				obj = obj.offsetParent;
			}
		}
		else if (obj.x)
			curleft += obj.x;
			
		return curleft;
		
	}
	
	function yPos (obj) {
		
		var curtop = 0;
		if (obj.offsetParent)
		{
			while (obj.offsetParent)
			{
				curtop += obj.offsetTop
				obj = obj.offsetParent;
			}
		}
		else if (obj.y)
			curtop += obj.y;
		return curtop;
		
	}
	
	
	function decToHex (dec) {
		var hexStr = '0123456789ABCDEF';
		var low = dec % 16;
		var high = (dec - low) / 16;
		hex = '' + hexStr.charAt(high) + hexStr.charAt(low);
		return hex;
	}
	
	
	function hexToDec (hex) { 
		return parseInt (hex,16); 
	}
	
	
	function kleurVerdonkeren (sKleurHex, iStappen) {
	
		var iStapGrootte = 0.03;
		var iKleur = hexToDec (sKleurHex);
		
		iKleur = iKleur - (iKleur * iStappen * iStapGrootte);
		
		if (iKleur & 0) iKleur = 0;
		
		return decToHex (iKleur);
	}
	
	
	function kleurenVerdonkeren (sKleurenHex, iStappen) {
		
		var sKleurRood = kleurVerdonkeren (sKleurenHex.substr (0, 2), iStappen);
		var sKleurGroen = kleurVerdonkeren (sKleurenHex.substr (2, 2), iStappen);
		var sKleurBlauw = kleurVerdonkeren (sKleurenHex.substr (4, 2), iStappen);
		
		return sKleurRood + sKleurGroen + sKleurBlauw;
	}
	

	function debug (sId, sTekst) {
		var oDebugPane = document.getElementById ('debugPane');
		oDebugPane.innerHTML += '['+ sId + ': ' + sTekst + '] ';
	}
