/**
 * @version			1.0.7 - 4 mei 2010
 * 
 * @copyright		1.0.7,	4 mei 2010,			Jan Niemantsverdriet,	Mogelijkheid om de minimale z-index op te geven  
 * @copyright		1.0.6,	9 april 2010,		Jan Niemantsverdriet,	Functie om 1 specifieke select weer te tonen  
 * @copyright		1.0.5,	2 februari 2010,	Jan Niemantsverdriet,	Meer variabelen gedeclareerd  
 * @copyright		1.0.4,	6 oktober 2008,		Jan Niemantsverdriet,	bRemoveLayer geeft altijd boolean terug, variabelen gedeclareerd  
 * @copyright		1.0.3,	24 september 2008,	Jan Niemantsverdriet,	IE loopt niet meer vast op bRemoveLayer 
 * @copyright		1.0.2,	4 juli 2008,		Jan Niemantsverdriet,	Selects in IE6 worden verborgen bij openen layer, sluiten layer door er naast te klikken gebeurt nu met bRemoveLayer
 * @copyright		1.0.1,	5 februari 2008,	Jan Niemantsverdriet,	Probleem met z-index opgelost
 * @copyright		1.0.1,	5 februari 2008,	Jan Niemantsverdriet,	Sluiten na onclick toegevoegd
 * @copyright		1.0.0,	?,					Jan Niemantsverdriet,	Gemaakt
 * 
 * @copyright		afhankelijkheid:	BB/Screen/layer.css
 * @copyright		afhankelijkheid:	BB/JSDivers/check.js
 */

/**
 * @var Array				alle openstaande lagen
 */
var aLayers = new Array();

/**
 * @var Array				alle verborgen selects
 */
var oLayersSelects = new Object();

/**
 * @var integer				een teller voor id's voor nieuwe layers
 */
var iNewLayerId = 0;

/**
 * Voegt een nieuwe laag toe op het scherm
 * 
 * @param string a_sId						de id voor de laag
 * @param boolean|void a_bCloseOnClick		true = sluit als er op geklikt wordt (niet meegeven = false)
 * @param integer|void a_bCloseOnClick		wordt bij de z-index van de layer opgeteld
 * @return DIV								de div van de nieuwe laag
 */
function oAddLayer(a_sId, a_bCloseOnClick, a_iExtraZIndex) {
	if (!bIsDefined(a_bCloseOnClick)) a_bCloseOnClick = false;
	if (!bIsDefined(a_iExtraZIndex)) a_iExtraZIndex = 0;
	var sId = (bIsDefined(a_sId) ? a_sId : "layer" + iNewLayerId);
	var oDiv = document.createElement("div");
	oDiv.className = "layer";
	oDiv.style.zIndex = (aLayers.length) * 10 + 10001 + a_iExtraZIndex;
	oDiv.style.height = iGetPageHeight() + "px";
	oDiv.style.width = document.body.clientWidth + "px";
	oDiv.id = sId;
		if (a_bCloseOnClick) {
			oDiv.onclick = function(a_oEvent) { 
				if (!bIsDefined(a_oEvent)) a_oEvent = window.event;
				if (oGetEventSrc(a_oEvent) == this) bRemoveLayer(this.id); 
			};
		}
	if (bCheckBrowser("Microsoft Internet Explorer", null, "6.0")) vLayersHideSelects(a_sId);
	document.body.appendChild(oDiv);
	oDiv.style.top = 0;
	oDiv.style.left = 0;
	aLayers.push(oDiv);
	iNewLayerId++;
	return oDiv;
}

/**
 * Verwijderd een laag van het scherm
 * 
 * @param string|DIV uDiv				het div element, of de id ervan
 * @return boolean						true als er daadwerkelijk een laag verwijderd is
 */
function bRemoveLayer(uDiv) {
	if (bIsString(uDiv)) {
		oDiv = document.getElementById(uDiv);
		if (bIsNull(oDiv)) return false;
	}
	if (bCheckBrowser("Microsoft Internet Explorer", null, "6.0")) vLayersShowSelects(oDiv.id);
	document.body.removeChild(oDiv);
	var aTempLayers = new Array();
	for (var iCounter = 0; iCounter < aLayers.length; iCounter++) {
		if (aLayers[iCounter] != oDiv) aTempLayers.push(aLayers[iCounter]);
	}
	aLayers = aTempLayers;
	// return true;
}

/**
 * Verbergt alle selects (vanwege problemen met IE)
 * 
 * @param string a_sId				het id van de layer waarvoor de selects verborgen moeten worden
 * @since 1.0.2 - 4 juli 2008
 */
function vLayersHideSelects(a_sId) {
	var aSelects = document.getElementsByTagName('select');
	var aNewSelects = new Array();
	for (var iCounter = 0; iCounter < aSelects.length; iCounter++) {
		if (aSelects[iCounter].tagName == "SELECT") {
			if (aSelects[iCounter].style.display != "none") {
				aNewSelects.push(aSelects[iCounter]);
				//alert(aSelects[iCounter]);
				aSelects[iCounter].style.display = "none";
			}
		}
	}
	oLayersSelects[a_sId] = aNewSelects;
}

/**
 * Toont alle selects die verborgen waren door het tonen van een layer
 *
 * @param string a_sId				het id van de layer
 * @since 1.0.2 - 4 juli 2008
 */
function vLayersShowSelects(a_sId) {
	var aSelects = oLayersSelects[a_sId];
	for (var iCounter = 0; iCounter < aSelects.length; iCounter++) {
		aSelects[iCounter].style.display = "inline";
	}
}

/**
 * Toont de opgegeven select (reageerd alleen in IE 6)
 * 
 * @param string a_sSelectId		het id van de select
 * @since 1.0.6 - 8 april 2010
 * @author Jan Niemantsverdriet
 */
function vLayersShowSingleSelect(a_sSelectId) {
	if (bCheckBrowser("Microsoft Internet Explorer", null, "6.0")) {
		var oSelect = document.getElementById(a_sSelectId);
		if (oSelect) oSelect.style.display = "inline";
	}
}
