﻿// Fonctions de gestion DHTML standards


	
// ----- Affichage / masquage de layers
	
	// Permutation de l'affichage
	function collapseDiv(itemID, displayVal, returnIsShown, collapsedImagesArr) {
		var itm = getDiv(itemID);
		if(displayVal != null && displayVal != "" && displayVal != undefined && typeof(displayVal) != "string") {
			// Classes (css), displayVal = ["classe_affiché", "classe_masquée"]
			var curVal = itm.className;
			var isShown = (curVal == displayVal[0]);
			
			if(isShown) itm.className = displayVal[1];
			else itm.className = displayVal[0];
			
		} else {
			// Style 
			var curProp = getStyleProp(itm, "display");
			
			var isShown = (curProp != "none"); // Auto.
			if(displayVal == null || displayVal == "" || displayVal == "undefined") displayVal = "inherit"; // Défaut
			
			if(isShown) setStyleProp(itm, "display", "none");
			else setStyleProp(itm, "display", displayVal);
		}
		
		// Image à remplacer, collapsedImagesArr = ["id_image", "image_expanded.gif", "image_collapsed.gif"]
		if(collapsedImagesArr && collapsedImagesArr.length == 3) {
			var imgObj = document.getElementById(collapsedImagesArr[0]);
			imgObj.src = collapsedImagesArr[ (isShown ? 1 : 2) ];
		}
		
		if(returnIsShown) return !isShown;
	}
	
	// Affichage d'un div
	function showDiv(id, displayVal){
		if(displayVal == null || displayVal == "" || displayVal == undefined) displayVal = "inherit"; // Défaut
		setStyleProp(getDiv(id), "display", displayVal);
	}
	
	// Masquage d'un div
	function hideDiv(id){
		setStyleProp(getDiv(id), "display", "none");
	}
			
	// Affichage d'un layer (div) parmi ceux spécifiés
	function switchLayer(layersList,shownIndex,shownStyle) {
		for(var i=0; i<layersList.length; i++) {
			if(shownIndex == i) showDiv(layersList[i], shownStyle);
			else hideDiv(layersList[i]);
		}
	}

	
// ----- Gestion CSS
	function setStyleProp(obj, propName, newVal) {
		if(typeof(obj) == "string") obj = getDiv(obj);
		if(!obj) return;
		try {
			if(!obj.style) obj[propName] = newVal; // Old browser
			else obj.style[propName] = newVal; // Browser récent
		} catch(e) {
		}
	}
	
	function getStyleProp(obj, propName){
		if(!obj) return null;
		try {
			if(!obj.style && propExistsOnObj(obj,propName)) return obj[propName]; // Old browser
			else if(obj.style && propExistsOnObj(obj.style,propName)) return obj.style[propName]; // Browser récent
		} catch(e) {
			return null;
		}
	}
	
	// Retourne la référence au layer (div) demandé
	function getDiv(id){
		if(document.getElementById) return document.getElementById(id);
		if(document.layers) return document.layers[id];
		if(document.all) return document.all[id];
		return null;
	}
	
	// Valide l'existance de la propriété sur un objet donné
	function propExistsOnObj(obj, prop) {
		try { return Boolean(obj[prop]); }
		catch(e) { return false; }
	}
	
	
	
	// Déplacement du pop-up
	if(!document.fullscreenCenteredElement) {
		if(document && document.body) {
		// Déclaration du document.onScroll
			document.fullscreenCenteredElement = ["popupBG"];
			document.onscroll = function() { // FireFox
				var sTop = document.body.scrollTop;
				for(var i=0; i<document.fullscreenCenteredElement.length; i++) {
					var newE = document.getElementById(document.fullscreenCenteredElement[i]);
					if(newE) setStyleProp(newE, "top", sTop+"px");
				}
			}
			document.body.onscroll = document.onscroll; // IE
		} else {
		// Erreur
			alert("Attention: dhtml.js doit etre inclu dans <body> et non dans le <head>");
		}
	}


