var xOffset=6
var yOffset=5

var affiche = false; // La variable i nous dit si le bloc est visible ou non
var w3c=document.getElementById && !document.all;
var ie=document.all;

if (ie||w3c) 
{
	var laBulle
}

function getInternetExplorerVersion() {

    var rv = -1; // Return value assumes failure.

    if (navigator.appName == 'Microsoft Internet Explorer') {

        var ua = navigator.userAgent;

        var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");

        if (re.exec(ua) != null)

            rv = parseFloat(RegExp.$1);

    }

    return rv;

}

function checkVersion() {

    var msg = "You're not using Windows Internet Explorer.";

    var ver = getInternetExplorerVersion();

    if (ver > -1) {

        if (ver >= 8.0)

            msg = "You're using a recent copy of Windows Internet Explorer."

        else

            msg = "You should upgrade your copy of Windows Internet Explorer.";

    }

    alert(msg);

}


function ietruebody()
{ // retourne le bon corps...
	return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function deplacer(e) 
{
	if(affiche)
	{
		var curX = (w3c) ? e.pageX : event.x;
		var curY = (w3c) ? e.pageY : event.y;
		
		var winwidth = ie && !window.opera ? ietruebody().clientWidth : window.innerWidth - 20;
		var winheight = ie && !window.opera ? ietruebody().clientHeight : window.innerHeight - 20;
		
		var rightedge = ie && !window.opera ? winwidth - event.clientX - xOffset : winwidth - e.clientX - xOffset;
		var bottomedge = ie && !window.opera ? winheight - event.clientY - yOffset : winheight - e.clientY - yOffset;
		
		var leftedge = (xOffset < 0) ? xOffset*(-1) : -1000
	
		// modifier la largeur de l'objet s'il est trop grand...
		if(laBulle.offsetWidth > winwidth / 3)
		{
			laBulle.style.width = winwidth / 3
		}
	
		// si la largeur horizontale n'est pas assez grande pour l'info bulle
		if(rightedge < laBulle.offsetWidth)
		{
			// bouge la position horizontale de sa largeur à gauche
			laBulle.style.left = curX - laBulle.offsetWidth + "px"
		} 
		else 
		{
			if(curX < leftedge)
			{
				laBulle.style.left = "5px"
			} 
			else
			{
				// la position horizontale de la souris
				laBulle.style.left = curX + xOffset + "px"
			}
		}
		
		var version_ie = getInternetExplorerVersion();
		
		// même chose avec la verticale
		if(bottomedge < laBulle.offsetHeight)
		{
			laBulle.style.top = curY - laBulle.offsetHeight - yOffset + "px"			
		} 
		else 
		{	
			laBulle.style.top = curY+ yOffset + "px"
		}
		
		
	}
}


function showTooltip(text) 
{
	if (w3c||ie)
	{
		laBulle = document.all ? document.all["bulle"] : document.getElementById ? document.getElementById("bulle") : ""
		laBulle.innerHTML = text; // fixe le texte dans l'infobulle
		laBulle.style.visibility = "visible"; // Si il est cachée (la verif n'est qu'une securité) on le rend visible.
		affiche = true;
	}
}


function hideTooltip() 
{
	if (w3c||ie)
	{
		affiche = false
		laBulle.style.visibility="hidden" // avoid the IE6 cache optimisation with hidden blocks
		laBulle.style.top = '-100000px'
		laBulle.style.backgroundColor = ''
		laBulle.style.width = ''
	}
}

function findPos(obj) {
	var curleft = curtop = 0; //Contiendra les coordonnées de obj.
	if (obj.offsetParent) { //Si le navigateur supporte offsetParent.
		do {
			curleft += obj.offsetLeft; //On met à jour les marges.
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent); //Si obj a un parent on le lui assigne et on continue, sinon on arrête la boucle.
	}
	return [curleft,curtop]; //On retourne la position sous forme de tableau.
}


function mouseMove(e) {
	if (!e) {
		var e = window.event;
	}
	
	var mX = parseInt(e.pageX ? e.pageX : e.clientX, 10);
	var mY = parseInt(e.pageY ? e.pageY : e.clientY, 10);
	
	if (document.all) {
		mX += document.documentElement.scrollLeft;
		mY += document.documentElement.scrollTop;
	}
	
	var divPos = findPös(document.getElementById('monDiv'));
	mX -= divPos[0];
	mY -= divPos[1];
}


document.onmousemove = deplacer; // des que la souris bouge, on appelle la fonction move pour mettre a jour la position de la bulle.
