/**
* SCRIPT INFO BULLE 
* 
* 
* @author   mabaakouk@alcyoins.fr
* @version  0.1 
* @since    13/05/2004
* @package  alcyonis
*
* utilisation du script :
*	<balise_html onmouseover="show_info_bulle(this,'id_du_div _contenant_l_info_bulle')">....</balise_html>
*
* TODO :
*	finir position auto
*	ajouter decalage_vertical
*	ajouter position_vertical="centrer";
*

**/
// reclage du script

var repositionner_si_depassement_zone_affichage;
var position_horizontal;
var decalage_horizontal;
var decalage_vertical;
var temps_affichage;
var hauteur_maximun;


/* DEBUT DU SCRIPT */
var id_info_bulle_en_cours="";
var timeout_info_bulle_en_cours;

var popup_open=false;
function infobulle_body_click(){
	if (!popup_open){
		window.clearTimeout(timeout_info_bulle_en_cours);
		real_hide_info_bulle();
	}
	popup_open=false;

}
function hide_info_bulle(){
	timeout_info_bulle_en_cours=window.setTimeout('real_hide_info_bulle()',temps_affichage);
}

function real_hide_info_bulle(){
	if (id_info_bulle_en_cours!="")
		document.getElementById(id_info_bulle_en_cours).style.display='none';
	id_info_bulle_en_cours="";
	window.clearTimeout(timeout_info_bulle_en_cours);
}
function show_info_bulle(element_actif,id_info_bulle,config_info_bulle){

	if (!config_info_bulle){
		repositionner_si_depassement_zone_affichage=false;
		position_horizontal="gauche";//gauche, droite, centrer
		decalage_horizontal=0;
		decalage_vertical=0;
		temps_affichage=1000; //milisecond
		hauteur_maximun=false;
	} else {
		repositionner_si_depassement_zone_affichage=config_info_bulle['repositionner_si_depassement_zone_affichage'];
		position_horizontal=config_info_bulle['position_horizontal'];//gauche, droite, centrer
		decalage_horizontal=config_info_bulle['decalage_horizontal'];
		decalage_vertical=config_info_bulle['decalage_vertical'];
		temps_affichage=config_info_bulle['temps_affichage']; //milisecond
		hauteur_maximun=config_info_bulle['hauteur_maximun'];
	}

	// on ferme la info_bulle ouverte
	window.clearTimeout(timeout_info_bulle_en_cours);
	real_hide_info_bulle();
	//***

	id_info_bulle_en_cours=id_info_bulle;
	var info_bulle_old=document.getElementById(id_info_bulle);

	var info_bulle = info_bulle_old.cloneNode(true);
	info_bulle_old.removeAttribute("id");
	document.getElementsByTagName('body')[0].insertBefore(info_bulle,document.getElementsByTagName('body')[0].firstChild);

	//Hauteur et largeur de la info_bulle
	info_bulle.style.display="block"
	var info_bulle_hauteur=info_bulle.offsetHeight;
	var info_bulle_largeur=info_bulle.offsetWidth;	

	//Hauteur et largeur de l'element actif
	var element_actif_hauteur=element_actif.offsetHeight;
	var element_actif_largeur=element_actif.offsetWidth;

	// Calcul du positionnement du haut et la gauche de la info_bulle (info_bulle a 20px a gauche de la zone survoler)
	var topNode=element_actif;
	var topCoord=0;
	var leftCoord=0;	
	while(topNode){
		if ( !isNaN(topNode.offsetTop) )
			topCoord+=topNode.offsetTop;
		if ( !isNaN(topNode.offsetLeft) )			
			leftCoord+=topNode.offsetLeft;
		topNode=topNode.offsetParent;
	}
	var info_bulle_top=topCoord;
	info_bulle_top=info_bulle_top+decalage_vertical+element_actif_hauteur;

	var info_bulle_left=0
	if (position_horizontal=="gauche")
		info_bulle_left=leftCoord-info_bulle_largeur-decalage_horizontal;
	if (position_horizontal=="droite")
		info_bulle_left=leftCoord+element_actif_largeur+decalage_horizontal;
	if (position_horizontal=="centrer")
		info_bulle_left=leftCoord+(element_actif_largeur/2)-(info_bulle_largeur/2)+decalage_horizontal;


	
	//Position de la scrollbar
	var fenetre_top;
	if (document.getElementsByTagName("html")[0].scrollTop)
		fenetre_top=document.getElementsByTagName("html")[0].scrollTop;
	else /* ie 5 */
		fenetre_top=document.body.scrollTop;

	var fenetre_left;
	if (document.getElementsByTagName("html")[0].scrollLeft)
		fenetre_left=document.getElementsByTagName("html")[0].scrollLeft;
	else /* ie 5 */
		fenetre_left=document.body.scrollLeft;

	//Calcul hauteur et largeur de la fenetre du navigateur
	var fenetre_hauteur;
	if (document.all)
		if (document.getElementsByTagName("html")[0].clientHeight)/* ie 6 */
			fenetre_hauteur=document.getElementsByTagName("html")[0].clientHeight;
		else /* ie 5 */
			fenetre_hauteur=document.body.clientHeight;
	else
		fenetre_hauteur=window.innerHeight;
	var fenetre_largeur;
	if (document.all)
		if (document.getElementsByTagName("html")[0].clientWidth)/* ie 6 */
			fenetre_largeur=document.getElementsByTagName("html")[0].clientWidth;
		else /* ie 5 */
			fenetre_largeur=document.body.clientWidth;
	else
		fenetre_largeur=window.innerWidth;

	var offset_scroll_bar_top=(document.all?0:15);
	var offset_scroll_bar_left=(document.all?0:15);
	//alert(fenetre_hauteur+" - "+hauteur_maximun);
	if (hauteur_maximun && fenetre_hauteur>hauteur_maximun-fenetre_top){
		//alert(fenetre_hauteur+" - "+hauteur_maximun);
		fenetre_hauteur=hauteur_maximun-fenetre_top;
	}
	//RePositionnement de la info_bulle si elle depasse de la zone visible de la fenetre du navigateur
	if (repositionner_si_depassement_zone_affichage){
		if (fenetre_top>info_bulle_top) {
			info_bulle.style.top=fenetre_top+"px";
		} else {
			//alert(fenetre_top+"+"+fenetre_hauteur+"<"+info_bulle_top+"+"+info_bulle_hauteur);
			if (fenetre_top+fenetre_hauteur<info_bulle_top+info_bulle_hauteur) {
				info_bulle.style.top=fenetre_hauteur-info_bulle_hauteur+fenetre_top-offset_scroll_bar_left+"px";
				//alert(info_bulle.style.top);
			} else {		
				info_bulle.style.top=info_bulle_top+"px";
			}
		}

		if (fenetre_left>info_bulle_left) {
			info_bulle.style.left=fenetre_left+"px";
		} else {
			//alert(fenetre_top+"+"+fenetre_hauteur+"<"+info_bulle_top+"+"+info_bulle_hauteur);
			if (fenetre_largeur<info_bulle_left+info_bulle_largeur) {
				info_bulle.style.left=fenetre_largeur-info_bulle_largeur+fenetre_left-offset_scroll_bar_top+"px";
			} else {		
				info_bulle.style.left=info_bulle_left+"px";
			}
		}
	}

	//*********
	
	// Ajout des mouseover et mouseout a la info_bulle
	if (document.addEventListener) {
		element_actif.addEventListener("mouseout", hide_info_bulle, true);
		info_bulle.addEventListener("mouseout", hide_info_bulle, true);
		info_bulle.addEventListener("mouseover", function(){clearTimeout(timeout_info_bulle_en_cours);}, true);
	} else {/* pour ie */
		element_actif.onmouseout = hide_info_bulle;
		info_bulle.onmouseout = hide_info_bulle;
		info_bulle.onmouseover = function(){clearTimeout(timeout_info_bulle_en_cours);} ;
	}
}