function geefAttribuutWaarde(el, attribuut, probeerKleineLetters)
{
	if(probeerKleineLetters) attribuut = attribuut.toLowerCase();
	
	if(typeof el.hasAttribute != "undefined" && el.hasAttribute(attribuut) ) // Mozilla
	{
		return el.getAttribute(attribuut);
	}
	else if(typeof el.hasAttribute != "undefined" && typeof el[attribuut] != "undefined") // Mozilla, standaard attributen komen niet voor bij getAttribute ...
	{
		return el[attribuut];
	}
	else if(typeof el.hasAttribute == "undefined" && typeof el[attribuut] != "undefined") // IE
	{
		return el[attribuut];
	}
	else
	{
		if(probeerKleineLetters)
		{
			return false;
		}
		else
		{
			return geefAttribuutWaarde(el, attribuut, true);
		}
	}
}

function bestaatAttribuut(el, attribuut, probeerKleineLetters)
{
	if(probeerKleineLetters) attribuut = attribuut.toLowerCase();
	
	if(typeof el.hasAttribute != "undefined" && el.hasAttribute(attribuut) ) // Mozilla
	{
		return true;
	}
	else if(typeof el.hasAttribute != "undefined" && typeof el[attribuut] != "undefined") // Mozilla, standaard attributen komen niet voorbij getAttribute ...
	{
		return true;
	}
	else if(typeof el.hasAttribute == "undefined" && typeof el[attribuut] != "undefined") // IE
	{
		return true;
	}
	else
	{
		if(probeerKleineLetters)
		{
			return false;
		}
		else
		{
			return bestaatAttribuut(el, attribuut, true);
		}
	}
}

function tekstInvoegen(veld, tekst)
{
	veld.value = veld.value + tekst;
}

function markeerFouteVelden(velden)
{
	var i_form,i,i_veld;

	for(i_form=0; i_form < document.forms.length; i_form++)
	{
		if(document.forms[i_form].elements)
		{
			for(i=0; i < velden.length; i++)
			{
				if(document.forms[i_form].elements[velden[i]])
				{
					if(document.forms[i_form].elements[velden[i]].length > 1) // radio velden en vinkjes
					{
						for(i_veld=0; i_veld < document.forms[i_form].elements[velden[i]].length; i_veld++)
						{
							if(document.forms[i_form].elements[velden[i]][i_veld].style)
							{
								document.forms[i_form].elements[velden[i]][i_veld].style.border = "1px solid red";
							}
						}
					}
					else if(document.forms[i_form].elements[velden[i]].style)
					{
						document.forms[i_form].elements[velden[i]].style.border = "1px solid red";
					}
				}
			//	else
			//	{
			//		alert(velden[i] + " " + document.forms[i_form].elements[velden[i]])
			//	}
			}
		}
	}

}

// zie 'http://www.quirksmode.org/blog/archives/2005/09/addevent_recodi.html' voor de oorsprong van deze functie
alleEvenementen = new Array(); // Voor IE memory leak: alle evenementen opslaan in array zodat ze bij Unload opgeruimd kunnen worden
function evenementToevoegen(element, type, functie)
{
	try 
	{
		element.addEventListener(type, functie, false);
	} 
	catch(e) // IE
	{
		evenementVerwijderen(element, type, functie); // proberen
		element.attachEvent('on' + type, functie);
	}
	
	// na een DOM reload van een veld zijn de evenementen vaak zoek. Hiermee wordt herstellen per veld én het opschonen bij window.unload mogelijk gemaakt
	if(!element.evenementen) element.evenementen = new Array();
	var evenement = new Array();
	evenement.push(type);
	evenement.push(functie);
	element.evenementen.push(evenement);
	
	evenement = new Array(); // moet herdeclareren na push :(
	evenement.push(type);
	evenement.push(functie);
	evenement.push(element);
	alleEvenementen.unshift(evenement);
}

function evenementVerwijderen(element, type, functie)
{
	try
	{
		element.removeEventListener(type, functie, false);
	}
	catch(e) // IE
	{
		if(element)
		{
			element.detachEvent('on' + type, functie);
		}
	}
	
	if(element && element.evenementen && element.evenementen.length)
	{
		var tijdelijkElement;
		for(var i=0; i < element.evenementen.length; i++)
		{
			tijdelijkElement = element.evenementen[i];
			if(tijdelijkElement && tijdelijkElement.length && tijdelijkElement[0] == type)
			{
				if(tijdelijkElement[1] == functie) // alleen verwijderen als het dezelfde functie betreft!
				{
					element.evenementen[i] = null;
				}
			}
		}
	}
}

function evenementUitvoeren(element, type)
{
	try // IE
	{
		element.fireEvent('on' + type);
	}
	catch(e) // MOZILLA kan GEEN onchange (alleen muisachtige) events direct afhandelen, moet via omweg: (direct "element.dispatchEvent(type);" gebruiken werkt niet)
	{
		var evt = document.createEvent("HTMLEvents"); // "MouseEvents"
		evt.initEvent(type, true, false);
		element.dispatchEvent( evt );
	}
}

// Gebruik: 1. var evenementen = evenementenOphalen(this.formulierElement); 2. de functionaliteit (DOM-change) waardoor referentie aan element verloren is gegaan; 3. evenementenHerstellen(this.formulierElement, evenementen);
function evenementenOphalen(element) // functie om evenementen tijdelijk te kunnen opslaan om ze na een DOM reload weer te kunnen herstellen
{
	if(element.evenementen && element.evenementen.length)
	{
		return element.evenementen;
	}
	else
	{
		return null;
	}
}
function evenementenHerstellen(element, evenementen) //  events herstellen na DOM-change
{
	if(evenementen)
	{
		var evenement;
		for(var i=0; i < evenementen.length; i++)
		{
			evenement = evenementen[i];
			//if(element.vader) element.vader.debugToevoegen("ev" + i + ": " + evenement); (gebruiken? this.formulierObject.vader zetten voor aanroep deze functie)
			if(evenement)
			{
				evenementVerwijderen(element, evenement[0], evenement[1]); // proberen
				evenementToevoegen(element, evenement[0], evenement[1]);
			}
		}
	}
}

function documentOpruimen()
{
	if(alleEvenementen && alleEvenementen.length)
	{
		var tijdelijkElement;
		for(var i=0; i < alleEvenementen.length; i++)
		{
			tijdelijkElement = alleEvenementen[i];
			if(tijdelijkElement && tijdelijkElement.length == 3)
			{
				evenementVerwijderen(tijdelijkElement[2], tijdelijkElement[0], tijdelijkElement[1]);
				tijdelijkElement[2]['on' + tijdelijkElement[0]] = null;
				tijdelijkElement[2] = null;
			}
		}
	}
	
	alleEvenementen = null;
	document.evenementen = null;
	
	document.onmousedown = null;
	document.onmouseup = null;
	
	window.onload = null;
	window.evenementen = null;
}
evenementToevoegen(window, "unload", function(){documentOpruimen()});
//////////////////////

function selectieManager() // hulpfunctie om vast te kunnen houden welk object is gefocussed
{
	
	function zetSelectie(obj)
	{
		this.huidigeSelectie = obj;
		return true;
	}
	
	function geefSelectie()
	{
		// return this.huidigeSelectie;
		if (typeof document.selection != "undefined" && document.selection != null && typeof window.opera == "undefined")
		{
			return document.selection;
		}
		else if (typeof window.getSelection != "undefined")
		{
			return window.getSelection();
		}
		return null;
	}
	
	function geefGeselecteerdeObject()
	{
		var selectie = this.geefSelectie();
		if(selectie)
		{
			// Safari
			if (typeof selectie.baseNode != "undefined")
			{
				return selectie.baseNode;
			}
			// Mozilla
			else if (typeof selectie.getRangeAt != "undefined") // && selectie.rangeCount > 0
			{
				return selectie.getRangeAt(0).startContainer;
			}	
			// IE
			else
			{
				var textRange = document.selection.createRange();
				return textRange.parentElement();
			}
		}
		return null;
	}
	
	this.huidigeSelectie = false;
	this.zetSelectie = zetSelectie;
	this.geefSelectie = geefSelectie;
	this.geefGeselecteerdeObject = geefGeselecteerdeObject;
}
selectie = new selectieManager();

/*
Geef aan elk relevant formulier-element het attribuut vorigeWaarde='#uitdedatabaseopgehaaldewaarde#' mee.
Het script vergelijkt dat dan met de huidige value.

TO DO: ondersteuning voor alle soorten formulierelementen inbouwen.
*/
function wijzigingenOpgeslagen(formulier)
{
	var isIetsGewijzigd = false;
	
	if(formulier.elements && formulier.elements.length)
	for(var i=0; i<formulier.elements.length; i++)
	{
		element = formulier.elements[i];
		if(bestaatAttribuut(element, "vorigewaarde")) // hasAttribute (voor Firefox) nog inbouwen
		{
			if(element.value != geefAttribuutWaarde(element, "vorigewaarde"))
			{
				isIetsGewijzigd = true;
			}
		}
	}

	if( (isIetsGewijzigd && confirm("Wilt u uw wijzigingen ongedaan maken?")) || !isIetsGewijzigd)
	{
		return true;
	}
	else
	{
		return false;
	}
}


function Trim(TRIM_VALUE)
{
	if(typeof TRIM_VALUE != "undefined")
	{
		if(TRIM_VALUE.length < 1) return "";
		TRIM_VALUE = RTrim(TRIM_VALUE);
		TRIM_VALUE = LTrim(TRIM_VALUE);
		return TRIM_VALUE;
	}
	else
	{
		return "";
	}
} //End Function

function RTrim(VALUE){
	var w_space = String.fromCharCode(32);
	var v_length = VALUE.length;
	var strTemp = "";

	if(v_length < 0) return"";

	var iTemp = v_length -1;
	while(iTemp > -1)
	{
		if(VALUE.charAt(iTemp) != w_space)
		{
			strTemp = VALUE.substring(0,iTemp +1);
			break;
		}
		iTemp = iTemp-1;
	} //End While
	return strTemp;
} //End Function

function LTrim(VALUE)
{
	var w_space = String.fromCharCode(32);
	if(v_length < 1) return"";
	var v_length = VALUE.length;
	var strTemp = "";

	var iTemp = 0;
	while(iTemp < v_length)
	{
		if(VALUE.charAt(iTemp) != w_space)
		{
			strTemp = VALUE.substring(iTemp,v_length);
			break;
		}
		iTemp = iTemp + 1;
	} //End While
	return strTemp;
} //End Function


function removeSpaces(VALUE)
{
	w_space = String.fromCharCode(32);
	rExp = /w_space/gi;
	return VALUE.replace(rExp, "")
}

function replace(argvalue, x, y) {

  if ((x == y) || (parseInt(y.indexOf(x)) > -1)) {
    errmessage = "replace function error: \n";
    errmessage += "Second argument and third argument could be the same ";
    errmessage += "or third argument contains second argument.\n";
    errmessage += "This will create an infinite loop as it's replaced globally.";
    alert(errmessage);
    return false;
  }
    
  while (argvalue.indexOf(x) != -1) {
    var leading = argvalue.substring(0, argvalue.indexOf(x));
    var trailing = argvalue.substring(argvalue.indexOf(x) + x.length, 
	argvalue.length);
    argvalue = leading + y + trailing;
  }

  return argvalue;

}


// OUTPUT transform
function XMLopmaken(xml)
{
	if(xml && xml.indexOf)
	{
		if (xml.indexOf("&AMP;")) xml = replace(xml, "&AMP;", "&");
		if (xml.indexOf("&APOS;")) xml = replace(xml, "&APOS;", "'");
		if (xml.indexOf("&amp;")) xml = replace(xml, "&amp;", "&");
		if (xml.indexOf("&apos;")) xml = replace(xml, "&apos;", "'");
	}
	if(!xml) return"";
	return xml;
}


var init_verbergFormulierElementen = 1
function verbergFormulierElementen(aan) // voeg aan een select het attribuut nietVerbergen=true toe om dat veld over te slaan
{
	if(aan)
	{
		visibility = 'visible'
	}
	else
	{
		visibility = 'hidden'
	}
	
	if(init_verbergFormulierElementen == 1)
	{
		init_verbergFormulierElementen = 1; // caching tijdelijk uitgeschakeld, werkte niet goed
		element_lijst = new Array();
		element_lijst_teller = 0
		for (var i_form=0 ; i_form <= document.forms.length; i_form++)
		{
			if (document.forms[i_form])
			{
				for (var i_veld=0; i_veld <= document.forms[i_form].elements.length; i_veld++)
				{
					if (document.forms[i_form].elements[i_veld])
					{
						if (document.forms[i_form].elements[i_veld].type == "select-one" || document.forms[i_form].elements[i_veld].type == "select-multiple")
						{
							if(!bestaatAttribuut(document.forms[i_form].elements[i_veld], "nietVerbergen") || (bestaatAttribuut(document.forms[i_form].elements[i_veld], "nietVerbergen") && geefAttribuutWaarde(document.forms[i_form].elements[i_veld], "nietVerbergen") == false) )
							{
								if(bestaatAttribuut(document.forms[i_form].elements[i_veld], "nietVerbergen"))
								{
									alert(geefAttribuutWaarde(document.forms[i_form].elements[i_veld], "nietVerbergen"))
								}
								
								element_lijst[element_lijst_teller] = i_form + '.' + i_veld

								item_temp = element_lijst[element_lijst_teller]
								form_temp = item_temp.substring(0,item_temp.indexOf("."))
								veld_temp = item_temp.substring((item_temp.indexOf(".")+1),(item_temp.length-item_temp.indexOf(".")+1))
								document.forms[form_temp].elements[veld_temp].style.visibility = visibility
								
								element_lijst_teller++
							}
						} // if type
					} // if field
				} // for fields
			} // if form
		} // for forms
	} // init
	

} // functie

// VOORLOPIG ALLEEN VOOR TEKSTLABEL.CFM
function beschrijving(aanUit,spanID,e) // e = event
{
	if(aanUit)
	{
		document.all[spanID].style.left=document.body.scrollLeft+event.clientX+10
		document.all[spanID].style.top=document.body.scrollTop+event.clientY+10
		document.all[spanID].style.display=''
		document.all[spanID].style.visibility='visible'
		verbergFormulierElementen()
	}
	else
	{
		
		document.all[spanID].style.display='none'
		document.all[spanID].style.visibility='hidden'
		verbergFormulierElementen(1)
	}
}


// 'TOOLTIP' functies
tijdelijkBeschrijvingObject = false; // nodig voor oude versie aanroep (1 beschrijving per keer, niet object-georienteerd) - backwards compatbile houden script
function toonBeschrijving(e, tekst, isVerplaatsing)
{
	var evenement = false;
	if(e) evenement = e;
	
	if(!tijdelijkBeschrijvingObject) tijdelijkBeschrijvingObject = new mouseOverBeschrijving()
	tijdelijkBeschrijvingObject.toonBeschrijving(evenement, tekst, isVerplaatsing);
}

function verbergBeschrijving(e)
{
	var evenement = false;
	if(e) evenement = e;
	
	if(!tijdelijkBeschrijvingObject) tijdelijkBeschrijvingObject = new mouseOverBeschrijving()
	tijdelijkBeschrijvingObject.verbergBeschrijving();
}

function mouseOverBeschrijving()
{
	function geefHouder()
	{
		if(!this.houder)
		{
			var div = document.createElement("DIV");
			div.id = this.houderNaam;
			div.className = "mouseOverBeschrijving";
			this.houder = div;
			document.body.appendChild(div);
			
			/* begin van alternatieve oplossing voor SELECTs die altijd OVER de DIV zichtbaar blijven: IFRAME kan wél over de selects heen. Maar er moet dan een src-document in, innerHTML etc. lijkt niet te werken
			var iFrame = document.createElement("iframe");
			iFrame.setAttribute("id", this.houderNaam);
			iFrame.className = "mouseOverBeschrijving";
			iFrame = document.body.appendChild(iFrame);
			iFrame.src = "test.htm";
			this.houder = iFrame;
			*/
		}
		return this.houder;
	}
	
	function verbergBeschrijving(zelf)
	{
		if(!zelf) zelf = this;

		zelf.geefHouder().style.display="none";
		zelf.geefHouder().style.visibility="hidden";
		zelf.geefHouder().style.left = 1;
		zelf.geefHouder().style.top = 1;
		
		document.body.removeChild(zelf.geefHouder());
		zelf.houder = false;
		
		verbergFormulierElementen(true);
	}
	
	function nieuwObject()
	{
		this.y = 50;
		this.x = 50;
		this.clientY = 150;
		this.clientX = 150;
	}
	
	function toonBeschrijving(e,tekst,isVerplaatsing)
	{
		if(!e) 					e = new nieuwObject();
		if(!isVerplaatsing) 	isVerplaatsing = 0;
		
		this.geefHouder().style.left=document.body.scrollLeft+e.clientX+10;
		this.geefHouder().style.top=document.body.scrollTop+e.clientY-10;
		if(isVerplaatsing == 0)
		{
			this.geefHouder().innerHTML = unescape(tekst);
		}

		if ((e.x + this.geefHouder().clientWidth) > (document.body.clientWidth + document.body.scrollLeft))
		{	
			this.geefHouder().style.left = e.x - this.geefHouder().clientWidth-15;
		}
		else
		{
			this.geefHouder().style.left=document.body.scrollLeft+e.clientX+10;
		}
		
		if ((e.y + this.geefHouder().clientHeight) > (document.body.clientHeight + document.body.scrollTop))
		{	
			this.geefHouder().style.top = (document.body.clientHeight + document.body.scrollTop) - this.geefHouder().clientHeight-15;
		}
		else
		{
			this.geefHouder().style.top=document.body.scrollTop+e.clientY-10;
		}
		
		//houder.style.height = "400px";
		//houder.style.width = "400px";
		this.geefHouder().style.display="inline";
		this.geefHouder().style.visibility="visible";
		
		verbergFormulierElementen(false);
	}

	this.houderNaam = "beschrijvingLayer"; // ?? overbodig door addChild enzo?
	this.houder = false;
	this.geefHouder = geefHouder;
	this.verbergBeschrijving = verbergBeschrijving;
	this.toonBeschrijving = toonBeschrijving;
}
///////////////////beschrijving (bijv bij muis-over)



function debug_pop(object)
{
	var berichtje = "";
	for(x in object)
	{
		try
		{
			berichtje += x.toString() + '=' + object[x] + "<br>";
		}
		catch(e)
		{
		
		}
	} 
	var nieuwVenster = window.open("", "", "width=790,height=590,menubar=0,resizable=1,scrollbars=1,status=1,titlebar=0,toolbar=0,left=5,top=5");
	nieuwVenster.document.write(berichtje);
	if (nieuwVenster.focus) {nieuwVenster.focus()}
} // pop

function debug_toonAlleEvenementen()
{
	var berichtje = "[init]<br>";

	if(alleEvenementen && alleEvenementen.length)
	{
		berichtje += "(alleEvenementen, " + typeof alleEvenementen + ", lengte " + alleEvenementen.length + ")<br><br>";
		
		var tijdelijkElement;
		for(var i=0; i < alleEvenementen.length; i++)
		{
			tijdelijkElement = alleEvenementen[i];
			if(tijdelijkElement && tijdelijkElement.length == 3)
			{
				berichtje += "<b>" + i + ".</b> (" + tijdelijkElement[0] + ") " + tijdelijkElement[2] + "." + tijdelijkElement[1] + "<br><br>";
			}
		}
	}
	
	var nieuwVenster = window.open("", "", "width=790,height=590,menubar=0,resizable=1,scrollbars=1,status=1,titlebar=0,toolbar=0,left=5,top=5");
	nieuwVenster.document.write(berichtje);
	if (nieuwVenster.focus) {nieuwVenster.focus()}
}

function isInteger(val){if(isBlank(val)){return false;}for(var i=0;i<val.length;i++){if(!isDigit(val.charAt(i))){return false;}}return true;}
function isNumeric(val){return(parseFloat(val,10)==(val*1));}


function findPosX(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 findPosY(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 activeerCursor(activeerFormulier, activeerVeldnaam)
{
	if (!activeerVeldnaam || !activeerFormulier || activeerFormulier == '' || activeerVeldnaam == '')
	{
		if (document.forms) // alleen uitvoeren als er überhaupt formulier in de pagina staan 
		{
			for (var form=0 ; form <= document.forms.length; form++) // loop over het aantal formulier in het document 
			{
				if (document.forms[form]) // alleen uitvoeren als huidig activeerFormulier inhoud heeft (soms geen inhoud, bijv. bij een scherm-pagina waar de actie "bekijk" is 
				{
					if( !bestaatAttribuut(document.forms[form], "selecteerBijLaden") || geefAttribuutWaarde(document.forms[form], "selecteerBijLaden") == "true" )
					{
						for (var veld=0; veld <= document.forms[form].elements.length; veld++) // loop over het aantal velden in het huidige activeerFormulier 
						{
							if (document.forms[form].elements[veld]) // controleer of het veld een bruikbaar element is (zoniet en deze check zou niet uitgevoerd worden kregen we een foutmelding 
							{
								if(bestaatAttribuut(document.forms[form].elements[veld], "selecteerBijLaden") && geefAttribuutWaarde(document.forms[form].elements[veld], "selecteerBijLaden") == "true")
								{
									document.forms[form].elements[veld].focus();
									return;  // script beëindigen als de cursor eenmaal geplaatst is 
								}
								if ( (!bestaatAttribuut(document.forms[form].elements[veld], "selecteerBijLaden") || geefAttribuutWaarde(document.forms[form].elements[veld], "selecteerBijLaden") == "true") && document.forms[form].elements[veld].type == "text" && document.forms[form].elements[veld].value == "" && document.forms[form].elements[veld].style.visibility != 'hidden' && document.forms[form].elements[veld].disabled == false) // als de waarde van het huidige veld leeg is EN het type van dat veld is "tekst", in dat veld cursor plaatsen 
								{
									try
									{
										document.forms[form].elements[veld].focus();
									}
									catch(e)
									{
									}
									return;  // script beëindigen als de cursor eenmaal geplaatst is 
								} // eind type/value controle 
							} // eind if buikbaar element 
						} // eind for veld 
					} // eind element check 
				} // eind for form 
			} // eind kijken of selecteerBijLaden niet op false is gezet voor form
		} // eind formcheck 
	} // eind if activeerVeldnaam exists 
	else // als wel een activeerVeldnaam opgegeven is, gewoon dat veld activeren 
	{
		try
		{
			document.forms[activeerFormulier].elements[activeerVeldnaam].focus()
		}
		catch(e)
		{
		}
	}
}
evenementToevoegen(window, "load", activeerCursor);

function isInArray(array, value)
{
	for(var x in array)
	{
		if(array[x] == value)
		{
			return true;
		}
	}
	return false;
}

function arrayFind(array, value)
{
	var i = 0;
	for(var x in array)
	{
		if(array[x] == value)
		{
			return i;
		}
		i++;
	}
	return -1;
}

function isDefined(v)
{
	if(typeof v == "undefined")
	{
		return false;
	}
	else
	{
		if(typeof v == "string") {
			try {
				v = eval(v);
				if(typeof v == "undefined") {
					return false;
				} else {
					return true;
				}
			} catch(e) {
				return false;
			}
		}
		return true;
	}
}

function isNull(v)
{
	if(typeof v == "null")
	{
		return true;
	}
	else
	{
		return false;
	}
}

function wisselWeergave()
{
	// constants
	var self = this;

	// variables
	this.objectArray = new Array();

	// methods
	this._init = function(e){ self.init(); }
	this._opruimen = function(e){ self.opruimen(e); }
	this._displayItems = function(e){ self.displayItems(e); }
	this._displayItem = function(e){ self.displayItem(e); }
	this._verwijderVerborgenItems = function(e){ self._verwijderVerborgenItems(e); }
}

wisselWeergave.prototype =
{
	init:function(objectNaam)
	{
		this.objectNaam = objectNaam;
		evenementToevoegen(window, "unload", this._opruimen);
	},

	displayItems:function(field)
	{
		if(isDefined(field))
		{
			if(field.options) // ondersteunt selecteren meerdere opties
			{
				for(var i_option=0; i_option < field.options.length; i_option++)
				{
					if(field[i_option].selected && !isInArray(this.objectArray, field[i_option].value))
					{
						this.objectArray.push(field[i_option].value);
					}
					if(!field[i_option].selected && isInArray(this.objectArray, field[i_option].value))
					{
						this.objectArray.splice( arrayFind(this.objectArray, field[i_option].value),1);
					}
				}
			}
			else
			{
				if(field.checked && !isInArray(this.objectArray, field.value))
				{
					this.objectArray.push(field.value);
				}
				if(!field.checked && isInArray(this.objectArray, field.value))
				{
					this.objectArray.splice( arrayFind(this.objectArray, field.value),1);
				}
			}
		}

		var tables = document.getElementsByTagName("TABLE");

		for(var i_table=0; i_table < tables.length; i_table++)
		{
			if(tables[i_table] && tables[i_table].rows)
			{
				for(var i_row=0; i_row < tables[i_table].rows.length; i_row++)
				{
					var currentRow = tables[i_table].rows[i_row];
					this._displayItem(currentRow);

					for(i_column=0; i_column < currentRow.cells.length; i_column++)
					{
						var currentColumn = currentRow.cells[i_column];
						this._displayItem(currentColumn);

						for(var i_span=0; i_span < currentRow.cells[i_column].getElementsByTagName("SPAN").length; i_span++)
						{
							var currentSpan = currentRow.cells[i_column].getElementsByTagName("SPAN")(i_span);
							this._displayItem(currentSpan);
						}
					}
				}
			}
		}
	},

	displayItem:function(obj)
	{
		var types;
		if(bestaatAttribuut(obj, "wisselWeergave"))
		{
			types = geefAttribuutWaarde(obj, "toonBijTypes").split(",");

			var tonen = false;
			if(types.length && this.objectArray.length)
			{
				for(var x in this.objectArray)
				{
					if(isInArray(types, this.objectArray[x]))
					{
						tonen = true;
						break;
					}
				}
			}
			if(tonen)
			{
				obj.style.display = "";
			}
			else
			{
				obj.style.display = "none";
			}
		}
	},
	
	verwijderVerborgenItems:function()
	{
		var tables = document.getElementsByTagName("TABLE");
		for(var i_table=0; i_table < tables.length; i_table++)
		{
			if(tables[i_table] && tables[i_table].rows)
			{
				for(var i_row=0; i_row < tables[i_table].rows.length; i_row++)
				{
					var currentRow = tables[i_table].rows[i_row];
					if(currentRow.style.display == "none") {
						currentRow.parentElement.removeChild(currentRow);
					} else {
						
						for(i_column=0; i_column < currentRow.cells.length; i_column++)
						{
							var currentColumn = currentRow.cells[i_column];
							if(currentColumn.style.display == "none") {
								currentColumn.parentElement.removeChild(currentColumn);
							} else {
								for(var i_span=0; i_span < currentRow.cells[i_column].getElementsByTagName("SPAN").length; i_span++)
								{
									var currentSpan = currentRow.cells[i_column].getElementsByTagName("SPAN")(i_span);
									if(currentSpan.style.display == "none") {
										currentSpan.parentElement.removeChild(currentSpan);
									}
								}
							}
						}
					}
				}
			}
		}
	},

	opruimen:function()
	{
		for(var x in this)
		{
			this[x] = null;
		}
	}
} // wisselWeergave.prototype

/* NOG NIET GETEST 
foutControleObject.foutControles = new Array();
function foutControleObject() {
	// constants
	var self = this;

	// variables
	this.foutControles = new Array();
	this.resultaat = new Object();
	this.resultaat.isFout = false;
	this.resultaat.foutMelding = "";
	
	// methods
	this._init = function(e){ self.init(); }
	this._opruimen = function(e){ self.opruimen(e); }
	this._controlesUitvoeren = function(e){ self.controlesUitvoeren(e); }
}
foutControleObject.prototype = 
{
	init:function(objectNaam) {
		this.objectNaam = objectNaam;

		evenementToevoegen(window, "unload", this._opruimen);
	},
	
	controlesUitvoeren:function(o_form) {
		var resultaatDezeControle;
		for(var i=0; i<this.foutControles.length; i++) {
			resultaatDezeControle = eval(this.foutControles[i]);
			if(resultaatDezeControle || this.resultaat.isFout) {
				this.resultaat.isFout = true;
				this.resultaat.foutMelding += resultaatDezeControle.foutMelding;
			}
		}
	},
	
	opruimen:function()	{
		for(var x in this)
		{
			this[x] = null;
		}
	}
} // foutControleObject.prototype
*/

