/*******************************************************
* Script librement inspiré du script "Cool DHTML tooltip - © Dynamic Drive DHTML code library"
* disponible sur le site 'www.dynamicdrive.com'
* Je vous conseille vivement d'aller faire un tour sur ce
* site qui propose de "nombreux scripts	DHTML et composants
* pour égayer votre site web" : http://www.dynamicdrive.com/
******************************************************/

var enablePos = false;	//permet de savoir s'il faut ou pas récupérer la position de la souris
var leftShift = 13; //Décalage sur la gauche de l'info bulle par rapport au curseur
var topShift = 18; //Décalage sur le bas de l'info bulle par rapport au curseur
var eltdiv = "";
var newdiv = "";
var texte = "";

/***** On identifie le navigateur de l'utilisateur *****/
var ns4 = document.layer ? true : false;
var ie4 = document.all ? true : false;
var dom = document.getElementById ? true : false;
var ns6 = (document.getElementById && !document.all) ? true : false;


/******************************************
* fonction qui créée l'élement qui va     *
* contenir le message de notre info bulle *
******************************************/
function create_div(msg)
{
 texte = document.createTextNode(msg);		//on créé un noeud de type "Text" avec comme contenu le msg de l'info bulle
 newdiv = document.createElement("div");		//on créé l'élement qui va contenir l'info bulle, à savoir une div
 newdiv.appendChild(texte);		//on ajoute le texte à la div

 newdiv.name = "Info bulle";		//on donne un nom à la div
 newdiv.setAttribute("id", "bulle");		//on donne un id à la div. Elle est maintenant identifiée par "bulle"

 document.body.appendChild(newdiv);		//on ajoute la div au corps de la page

 document.getElementById("bulle").className = "styleBulle";

 if (ns4) { eltdiv = document.layer.bulle; }
 if (ie4) { eltdiv = document.all.bulle; }
 if (dom || ns6) { eltdiv = document.getElementById("bulle"); }
}


/******************************************
* fonction qui affiche l'info bulle       *
******************************************/
function display_bubble(texte)
{
 if (texte != "") {
  create_div(texte);

  if (ns4) {
   eltdiv.visibility = "show";
  }

  if (ie4) {
   eltdiv.style.visibility = "visible";
  }

  if (dom || ns6) {
   eltdiv.style.display = "block";
  }

  enablePos = true;
  return false;
 }
}


/******************************************
* fonction qui récupère la position de la *
* souris                                  *
******************************************/
function getPosition(e)
{
 if (enablePos) {
  var sourisX = (ns6 || ns4) ? e.pageX : event.clientX + document.body.scrollLeft;
  var sourisY = (ns6 || ns4) ? e.pageY : event.clientY + document.body.scrollTop;

  //Find out how close the mouse is to the corner of the window
  var rightEdge = (ns6 || ns4) ? window.innerWidth - e.clientX-leftShift - 20 : document.body.clientWidth - event.clientX - leftShift;
  var bottomEdge = (ns6 || ns4) ? window.innerHeight - e.clientY - topShift - 20 : document.body.clientHeight - event.clientY - topShift;
  var leftEdge = (leftShift<0)? leftShift*(-1) : -1000;

  //si la distance horizontale n'est pas assez grande pour y ajouter l'info bulle
  if ( rightEdge < eltdiv.offsetWidth )
   //on déplace l'info bulle vers la gauche d'autant de sa largeur
   eltdiv.style.left = ie4 ? event.clientX + document.body.scrollLeft - eltdiv.offsetWidth+"px" : window.pageXOffset+e.clientX-eltdiv.offsetWidth+"px";
  else if (sourisX < leftEdge)
   eltdiv.style.left = "5px";
  else
   //on positionne horizontalement l'info bulle à la position de la souris
   eltdiv.style.left = sourisX + leftShift+"px";

  //on fait pareil pour la position en bas
  if (bottomEdge < eltdiv.offsetHeight)
   eltdiv.style.top = ie4? ietruebody().scrollTop + event.clientY-eltdiv.offsetHeight-topShift+"px" : window.pageYOffset+e.clientY-eltdiv.offsetHeight-topShift+"px";
  else
   eltdiv.style.top = sourisY+topShift+"px";
 }
}

/******************************************
* fonction qui cache l'info bulle         *
******************************************/
function hide_bubble()
{
 if (enablePos) {
  if (ns4 || ie4) {
   eltdiv.style.visibility = "hidden";
  }
  if (dom || ns6) {
   eltdiv.style.display = "none";
  }

  document.body.removeChild(eltdiv);
  enablePos = false;
 }
}


document.onmousemove=getPosition;

