// -----------------------------------------------------------------------------------
//
//	Bibliothèque d'affichage dynamique de blocs
//	QUIP Marketing
//	07/2009
//
// -----------------------------------------------------------------------------------



// -----------------------------------------------------------------------------------
// function togglePopup
// Cette fonction change l'état d'affichage (affiche ou masque) un bloc DIV en fonction
// de son état initial. Elle reçoit l'ID du bloc DIV en paramètre.
// Il faut s'assurer que le style CSS du bloc (id ou class) définisse le paramètre
// "display" pour que le changement s'opère :
// display: block; (ou none)
// Changement JPA - 15/07/2009 : L'état d'affichage comprend aussi le positionnement
// du bloc div par rapport à la page.
// Changement JPA - 16/07/2009 : Ajout du paramètre e à la fonction. Il permet de
// prendre en compte la gestion des événements sous Firefox
function togglePopup(popupId,e) {

	var posX = 0;
	var posY = 0;
	if(!e){
		var e = window.event;
	}
	
	// On récupère la position de la souris afin de placer le bloc en conséquence
	if(e.clientX){
		posX = e.clientX;
		posY = e.clientY;
	}else if(e.pageX){
		posX = e.pageX;
		posY = e.pageY;
	}
	
	elem = document.getElementById(popupId).style;
	if (elem.display == "none") {
		// elem.display = "block";
		afficherPopup(popupId, posX, posY);
	}else{
		// elem.display = "none";
		masquerPopup(popupId);
	}
}


function afficherPopup(popupId, posX, posY) {
	placerPopup(popupId, posX, posY);
	//alert(document.getElementById(popupId).style.left +" - "+document.getElementById(popupId).style.top);
	afficherFonduElement(popupId, 0, 100, 4);
}

function masquerPopup(popupId) {
	afficherFonduElement(popupId, 100, 0, 4);
}


// -----------------------------------------------------------------------------------
// function dummy
// Cette fonction ne fait rien. Elle est utilisée pour le calcul de timeouts
// uniquement
function dummy() {
	return true;
}


// -----------------------------------------------------------------------------------
// function afficherFonduElement
// Cette fonction change l'affichage d'un élément en utilisant un fondu (changement
// d'opacité) en fonction des paramètres d'opacité de départ et de fin.
function afficherFonduElement(id, opacStart, opacEnd, delai) { 
    // calcul de la durée entre chaque frame
	// delai est en dizièmes de secondes.
    var speed = delai; 
    var timer = 0; 

    // déterminer le sens du fondu (masquage ou affichage)
    if(opacStart > opacEnd) { 
    	// L'opacité de départ est supérieure à l'opacité de fin. On va donc
    	// masquer le bloc
        for(i = opacStart; i >= opacEnd; i--) { 
            setTimeout("changerOpacite(" + i + ",'" + id + "')",(timer * speed)); 
            timer++; 
        } 
        // On masque le bloc en lui donnant l'attribut CSS display "none"
		setTimeout("changerAffichage('" +id+"', 'none')", (timer+1)*speed);
    } else if(opacStart < opacEnd) {
    	// L'opacité de départ est inférieure à l'opacité de fin. On va donc montrer
    	// le bloc
    	// On commence par donner une opacité de 0. Ceci permet de s'assurer que le
    	// bloc n'est pas affiché (flash) avant que le fondu ne commence.
		changerOpacite(0, id);		
		changerAffichage(id, 'block');		// On affiche ensuite le bloc (transparent)
		// On lance la procédure d'affichage en fondu (opacification)
        for(i = opacStart; i <= opacEnd; i++) 
            { 
            setTimeout("changerOpacite(" + i + ",'" + id + "')",(timer * speed)); 
            timer++; 
        } 
    }
} 


// -----------------------------------------------------------------------------------
// function changerOpacite
// Cette fonction va changer l'attribut d'opacité d'un bloc en utilisant les différents
// attributs utilisés par les différents navigateurs.
function changerOpacite(opacity, id) { 
    var object = document.getElementById(id).style; 
    object.opacity = (opacity / 100); 
    object.MozOpacity = (opacity / 100); 
    object.KhtmlOpacity = (opacity / 100); 
    object.filter = "alpha(opacity=" + opacity + ")"; 
}


// -----------------------------------------------------------------------------------
// function changerAffichage
// Cette fonction va changer l'attribut display d'un bloc en utilisant le paramètre
// qui lui est passé.
function changerAffichage(id, style) {
	object = document.getElementById(id).style;
	object.display = style;
}

// -----------------------------------------------------------------------------------
// function placerPopup
// Cette fonction est appelée par la fonction afficherPopup. Elle place le bloc dont
// l'id est passé en paramètre en fonction des coordonnées passées en paramètre.
// La position verticale dépend de la position de la souris et du scrolling dans la
// page.
function placerPopup(popupId, posX, posY){
	document.getElementById(popupId).style.left = posX+"px";
	document.getElementById(popupId).style.top = (posY-200+document.body.scrollTop + document.documentElement.scrollTop)+"px";
}






// -----------------------------------------------------------------------------------
// function afficherImageZoom
// Cette fonction va changer l'image contenue dans un bloc et afficher ce bloc
function afficherImageZoom(elemId, imgSrc, imgTitre, imgWidth, imgHeight){
	
	if (elemId != null && elemId != "") {
		// On récupère le bloc à afficher
		var bloc = document.getElementById(elemId);
		// On construit le nom et on récupère l'image à afficher dans le bloc
		var imgElemId = "img_"+elemId;
		var imgElem = document.getElementById(imgElemId);
		if (imgSrc!="" && imgSrc!=null) {
			// On assigne l'image à l'élément image récupéré juste avant ainsi
			// que son titre
			if (imgTitre!="" && imgTitre!=null)	imgElem.title = imgTitre;
			imgElem.src = imgSrc;
			// On s'assure des largeur et hauteur de l'image
			if (imgWidth!="" && imgWidth!=null) imgElem.width = imgWidth;
			if (imgHeight!="" && imgHeight!=null) imgElem.height = imgHeight;
		}
		if (imgElem!=null) bloc.style.height = imgElem.height;
		// On affiche le bloc.
		afficherPopup(elemId);
	}
}


// -----------------------------------------------------------------------------------
// function masquerImageZoom
// Cette fonction va masquer le bloc contenant le zoom qui était affiché
function masquerImageZoom(elemId) {
	masquerPopup(elemId);
}


function toggleAide(popupId) {
		
	elem = document.getElementById(popupId).style;
	if (elem.display == "none") {
		// elem.display = "block";
		afficherAide(popupId);
	}else{
		// elem.display = "none";
		masquerPopup(popupId);
	}
}

function afficherAide(popupId) {
	//alert(document.getElementById(popupId).style.left +" - "+document.getElementById(popupId).style.top);
	afficherFonduElement(popupId, 0, 100, 4);
}


// -----------------------------------------------------------------------------------
// functions de gestion des champs Login et Mot de passe
// viderChamp et remplirChamp
// Ces fonctions sont appelées par les événements onFocus et onBlur des champs login et motdepasse du bloc
// d'identification des pages. Elles vident le champ passé en paramètre lorsque l'utilisateur place le curseur
// dedans. et remettent la valeur spécifiée si le champ est quitté vide.
function viderChamp(idChamp){
	var inputElement = document.getElementById(idChamp);
	if(inputElement.value=="LOGIN" || inputElement.value=="MOT DE PASSE"){
		inputElement.value="";
    }
}
    
function remplirChamp(idChamp, valeur){
	var inputElement = document.getElementById(idChamp);
	if(inputElement.value==""){
		inputElement.value=valeur;
	}
}
    

