/*
	Auteur: Mercosuh
	Site: http://www.oxosphere.net/
*/

DOMCharge = function(fonction)
{
	if(document.addEventListener)
		document.addEventListener('DOMContentLoaded', fonction, false);
	else
		window.onload = fonction;
}

appelMethode = function(instance, methode)
{
	return function()
	{
		methode.apply(instance, arguments);
	}
}

attacher = function(objet, signal, fonction)
{
	if(document.all)
		objet.attachEvent("on" + signal, fonction);
	else
		objet.addEventListener(signal, fonction, false);
}

Infobulle = function()
{
	this.timer = null;
	this.bloc = null;
	this.element = null;

	this.initialiser = function()
	{
		var liste = document.getElementsByTagName("a");
		var objet = null;
		
		for(var i = 0; i < liste.length; i++)
		{
			objet = liste.item(i);			
			if(objet.getAttribute("title"))
			{
				objet.setAttribute("titre", objet.getAttribute("title"));
				objet.removeAttribute("title");
				
				attacher(objet, "mouseover", appelMethode(this, this.attendre));
				attacher(objet, "mouseout", appelMethode(this, this.supprimer));
			}
		}
	}
	
	this.attendre = function(evenement)
	{
		this.element = (document.all) ? evenement.srcElement : evenement.target;
		this.timer = window.setTimeout(appelMethode(this, this.afficher), 500);
	}
	
	this.afficher = function()
	{
		this.bloc = document.createElement("div");
		this.bloc.setAttribute("id", "infobulle");
		
		var paragraphe = document.createElement("p");
		var texte = document.createTextNode(this.element.getAttribute("titre"));
		paragraphe.appendChild(texte);
		
		this.bloc.appendChild(paragraphe);
		
		var x = 0;
		var y = 20;
		var element = this.element;
		
		do
		{
			x += element.offsetLeft;
			y += element.offsetTop;
			element = element.offsetParent;
		}
		while(element && element.style.position != "absolute");
		
		this.bloc.style.left = x + "px";
		this.bloc.style.top =  y + "px";
		
		document.getElementsByTagName("body").item(0).appendChild(this.bloc);
	}

	this.supprimer = function(evenement)
	{
		if(this.timer)
			window.clearTimeout(this.timer);
		
		if(this.bloc)
		{
			document.getElementsByTagName("body").item(0).removeChild(this.bloc);
			this.bloc = null;
		}
	}
}