//Merci à Mattho pour ce script : http://www.javascriptfr.com/auteur/MATTHO/1146677.aspx
//Définition de variables en fonction du navigateur
var ie = document.all;
var ns4 = (document.layers) ? true : false;
var ns6 = (document.getElementById) ? true : false;



//Incrustation du div "bulle" (display: none = non affiché)
//Vous pouvez librement modifier le style de bordure de la bulle
if ((ns6) || (ie)) {
    document.write('<div id="bulle_champs" class="bulle"></div>');
	document.write('<div id="bulle_souris" class="bulle"></div>');
}
else 
    if (ns4) {
        document.write('<layer id="bulle_champs" top=0 left=0></layer>');
		document.write('<layer id="bulle_souris" top=0 left=0></layer>');
    }

if (ns6) {
    var bulle_champs = document.getElementById('bulle_champs');
	var bulle_souris = document.getElementById('bulle_souris');
}
else 
if (ie) {
    var bulle_champs = document.all['bulle_champs'];
	var bulle_souris = document.all['bulle_souris'];
}
else {
    var bulle_champs = document.layers['bulle_champs'];
	var bulle_souris = document.layers['bulle_souris'];
}



function fctGaucheChamps(champ){
    var valretour = champ.offsetLeft;
    champ = champ.offsetParent
    while (champ) {
        valretour += champ.offsetLeft;
        champ = champ.offsetParent;
    }
    return valretour;
}

function fctHautChamps(champ){
    var valretour = champ.offsetTop;
    champ = champ.offsetParent
    while (champ) {
        valretour += (champ.offsetTop);
        champ = champ.offsetParent;
    }
    return valretour;
}

function opacite_bulle_souris(opacite){
    opacite = (opacite == 100) ? 99.999 : opacite;
    bulle_souris.style.filter = "alpha(opacity:" + opacite + ")";
    bulle_souris.style.KHTMLOpacity = opacite / 100;
    bulle_souris.style.MozOpacity = opacite / 100;
    bulle_souris.style.opacity = opacite / 100;
}

function opacite_bulle_champs(opacite){
    opacite = (opacite == 100) ? 99.999 : opacite;
    bulle_champs.style.filter = "alpha(opacity:" + opacite + ")";
    bulle_champs.style.KHTMLOpacity = opacite / 100;
    bulle_champs.style.MozOpacity = opacite / 100;
    bulle_champs.style.opacity = opacite / 100;
}

function augmente_opacite_bulle_souris(opacite){
    if (opacite <= 95) {
        opacite_bulle_souris(opacite);
        opacite += 10;
        window.setTimeout("augmente_opacite_bulle_souris(" + opacite + "," + true + ")", 20);
    }
}

function augmente_opacite_bulle_champs(opacite){
    if (opacite <= 95) {
        opacite_bulle_champs(opacite);
        opacite += 10;
        window.setTimeout("augmente_opacite_bulle_champs(" + opacite + "," + true + ")", 20);
    }
}

//Fonction d'affichage de la bulle
function afficher_bulle_champs(champs, texte, event){
    if (ie) {
        window.event.cancelBubble = true;
    }
    else {
        event.stopPropagation();
    }
    
    bulle_champs.innerHTML = texte;
    
    opacite_bulle_champs(5);
    bulle_champs.style.display = 'block';
    
    haut = fctHautChamps(champs) - bulle_champs.offsetHeight - 5; //-champs.offsetHeight;
    gauche = fctGaucheChamps(champs) - 15;
    
    bulle_champs.style.left = gauche + 'px';
    bulle_champs.style.top = haut + 'px';
    
    augmente_opacite_bulle_champs(10);
}

function afficher_bulle_souris(texte, event){
    //Lignes utiles si vous imbriquez des éléments devant supporter des bulles
    if (ie) {
        window.event.cancelBubble = true;
    }
    else {
        event.stopPropagation();
    }
    
    bulle_souris.innerHTML = texte;
    
    opacite_bulle_souris(90);
    bulle_souris.style.display = 'block';
    
    //On suit les mouvements de la souris
    if (ie) {
        bulle_mouseMove();
    }
    else {
        bulle_mouseMove(event);
    }
	
	document.onmousemove = bulle_mouseMove; 
    
    augmente_opacite_bulle_souris(10);
}

function bulle_mouseMove(e){

	if(!e)
        {
           e = window.event;
        }
		
		
	if(!e || (typeof(e.pageX) != 'number' && typeof(e.clientX) != 'number'))
    {
		return;
    }

    if(typeof(e.pageX) == 'number')
    {
        var x = e.pageX;
        var y = e.pageY;
    }
    else
    {
        var x = e.clientX;
        var y = e.clientY; 

        if(!((window.navigator.userAgent.indexOf('Opera')+1) || (window.ScriptEngine&&ScriptEngine().indexOf('InScript')+1) || window.navigator.vendor=='KDE'))
        {
            if(document.documentElement && (document.documentElement.scrollTop || document.documentElement.scrollLeft))
            {
                x += document.documentElement.scrollLeft;
                y += document.documentElement.scrollTop;
            }
            else if(document.body && (document.body.scrollTop || document.body.scrollLeft))
            {
                x += document.body.scrollLeft;
                y += document.body.scrollTop;
            }
        }
    }
    
	
	
    if (!isNaN(x) && !isNaN(y)) {
        x += 5
        y = y - bulle_souris.offsetHeight - 10;
        
        bulle_souris.style.left = x + 'px';
        bulle_souris.style.top = y + 'px';
    }
	
}

function masquer_bulle_souris() {
	document.onmousemove = null;
	bulle_souris.style.display = 'none';
}
 
//Fonction qui fait disparaître la bulle
function masquer_bulle_champs(){
    bulle_champs.style.display = 'none';
}

