var arrayInfoBulle = new Array();

//affichage d'une infobulle
function openInfoBulle(e)
{
	var divInfoBulle;
	var divMsg;
	var divOmbre;
	var divFleche;
	var divInfoBulleH;
	var msg = '';
	var bulleTop = 0;
	var bulleLeft = 0;
	var divInfoBulleHInt;
	var mouseX = 0;
  	var mouseY = 0;
	var nomClass;
	
	var texte;

	//si la div infobulle n'existe pas encore, on la crée
	if(!$('info_bulle'))
	{
		divInfoBulle = document.createElement('div');
		divInfoBulle.id = 'info_bulle';
		
		divMsg = document.createElement('div');
		divMsg.id = 'info_bulle_msg';
		divInfoBulle.appendChild(divMsg);
		
		divOmbre = document.createElement('div');
		divOmbre.id = 'info_bulle_ombre';
		divInfoBulle.appendChild(divOmbre);
		
		divFleche = document.createElement('div');
		divFleche.id = 'info_bulle_fleche';
		divInfoBulle.appendChild(divFleche);
		
		//on insère la nouvelle bulle dans la page
		document.body.insertBefore(divInfoBulle, document.getElementById("MenuPrincipal"));
	}
	//sinon on la récupère
	else
	{
		divInfoBulle = $('info_bulle');
	}
	
	//on récupere les coordonnées de la souris
	mouseX = (navigator.appName == "Netscape") ? e.pageX : event.clientX + document.body.parentNode.scrollLeft;
	mouseY = (navigator.appName == "Netscape") ? e.pageY : event.clientY + document.body.parentNode.scrollTop;

	//calcul des nouvelles coordonées de l'info bulle
	//pour I.E.
	if (document.all) // ok I.E
	{
		divInfoBulleH = divInfoBulle.offsetHeight;
		divInfoBulleHInt = parseInt(divInfoBulleH);
		
		bulleTop = (mouseY - divInfoBulleH - 11);
		if(bulleTop < 0) {
			bulleTop = mouseY + 11;
			nomClass = 'dessous';
		} else {
			nomClass = 'dessus';
		}
		bulleTop = bulleTop + 'px';

		bulleLeft = mouseX;
		bulleLeft = bulleLeft - 10 + 'px';
		
		//on recupere le message dans le tableau arrayInfoBulle
		texte = arrayInfoBulle[event.srcElement.id];
	}
	//pour les autres
	else 
	{
		divInfoBulleH = document.defaultView.getComputedStyle(divInfoBulle, null).height;
		divInfoBulleHInt = parseInt(divInfoBulleH);
		bulleTop = mouseY - divInfoBulleHInt - 11;
		if(bulleTop < 0) {
			bulleTop = mouseY + 11;
			nomClass = 'dessous';
		} else {
			nomClass = 'dessus';
		}
		bulleTop = bulleTop + 'px';
		
		bulleLeft = (mouseX - 10)+'px';
		
		//on recupere le message dans le tableau arrayInfoBulle
		texte = arrayInfoBulle[e.target.id];
	}
	
	// nouvelles coordonnées effectives
	
	$('info_bulle').style.top = bulleTop;
	$('info_bulle').style.left = bulleLeft;
	$('info_bulle').className = nomClass;
	
	//on cré la div avec le message
	var newNode = document.createElement('div');
	newNode.innerHTML = texte;

	//l'infobule a deja un message, on l'écrase
	if($('info_bulle_msg').hasChildNodes())
	{
		$('info_bulle_msg').replaceChild(newNode, $('info_bulle_msg').firstChild);
	}
	//sinon on cré le message
	else
	{
		$('info_bulle_msg').appendChild(newNode);
	}

	//affichage de l'element
	$('info_bulle').style.visibility='visible';
}

//on masque l'info bulle
function closeInfoBulle(e)
{
	if($('info_bulle'))
		$('info_bulle').style.visibility = 'hidden';
}

//ajoute une infobulle a l'element d'id donné
function addInfoBulle(elementId, htmlMessage)
{	
		$(elementId).onmousemove = openInfoBulle;
		$(elementId).onmouseout = closeInfoBulle;
		arrayInfoBulle[elementId] = htmlMessage;
}

//enlever une infobulle a l'element d'id donné
function removeInfoBulle(elementId)
{	
	$('info_bulle').style.visibility = 'hidden';
	$(elementId).onmousemove = null;
	$(elementId).onmouseout = null;
	arrayInfoBulle[elementId] = null;
}
