/* Original Javascript by Alessandro Fulciniti http://pro.html.it - http://web-graphics.com */
function enableTooltips(tooltipClass, tooltipWidth, tags){
	var theTooltipWidth = (tooltipWidth+"px") || ("200px");
	
	switch ( typeof(tags) ) {
		case "string":
			tags = tags.replace(/\s+/, '').split(',');
			break;
		case "object": // array
			if ( tags.length > 0 )
				break;
		default:
			tags = new Array('a', 'span');
	}
	
	var links,i,j,tl,l,h,spans;

	if(!document.getElementById || !document.getElementsByTagName) return;

	h = document.createElement("div");
	h.id = "btc";
	h.setAttribute("id","btc");
	h.style.position = "absolute";
	document.getElementsByTagName("body")[0].appendChild(h);

	for ( i = 0, tl = tags.length; i < tl; i++ ) {
		var elements = document.getElementsByTagName(tags[i]);
		
		for ( j = 0, l = elements.length; j < l; j++) {
			if ( elements[j].className.indexOf(tooltipClass) != -1 ) {
				Prepare(elements[j], theTooltipWidth);
			}
		}
	}
}

function Prepare(el, width){
	/*setOpacity(tooltip);*/
	el.tooltipWidth = width;
	el.getTooltip = getTooltip;
	el.onmouseover = showTooltip;
	el.onmouseout = hideTooltip;
	el.onmousemove = Locate;
	if (el.getAttribute('title')) { el.removeAttribute('title'); }
}

var _tooltipTop, _tooltipBottom;
function getTooltip() {
	if ( this.tooltip ) return this.tooltip;

	var tooltip, tooltipTitle, tooltipTopLeft, tooltipTopRight, tooltipContent, tooltipBottomLeft, tooltipBottomRight;

	var el = this;
	/* On affiche pas les alt des éléments enfants de type image */
	if ( el.hasChildNodes() ) {
		var childs = el.childNodes;
		for (var i=0, len=childs.length; i<len; i++) {
			if ( childs[i].nodeName == 'IMG' ) {
				if ( childs[i].getAttribute("alt") ) {
					childs[i].removeAttribute("alt");
				}
			}
		}
	}

	/* Création de l'élément principal de l'infoBulle */
	tooltip = document.createElement("div");
	tooltip.className = "tooltip";

	/* Partie supérieure */
	if ( !_tooltipTop ) {
		_tooltipTop = document.createElement("div");
		_tooltipTop.className = "tooltipTop";

			/* Arrondi supérieur à gauche */
			tooltipTopLeft = document.createElement("div");
			tooltipTopLeft.className = "tootltipTopLeft";
			_tooltipTop.appendChild(tooltipTopLeft);

			/* Arrondi supérieur à droite */
			tooltipTopRight = document.createElement("div");
			tooltipTopRight.className = "tootltipTopRight";
			_tooltipTop.appendChild(tooltipTopRight);
	}

	/* Contenu texte du Tooltip */
	tooltipContent = document.createElement("div");
	tooltipContent.className = "tooltipContent";
	
	if (typeof(el.nextSibling) != 'undefined' && el.nextSibling.className == "tooltipTextContent") {
		tooltipTextContent = el.nextSibling;

		/* Ne pas afficher de tip vide */
		if ( !/\S/.test(tooltipTextContent.innerHTML) ) { return }

		tooltipTextContent.style.position = "static";
		tooltipContent.appendChild(tooltipTextContent);
	} else {
		tooltipTitle = el.getAttribute("title");
		if(tooltipTitle == null || tooltipTitle.length == 0) { return; } else { el.removeAttribute("title"); }
		tooltipContent.appendChild(document.createTextNode(tooltipTitle));
	}

	/* Partie inférieure */
	if ( !_tooltipBottom ) {
		_tooltipBottom = document.createElement("div");
		_tooltipBottom.className = "tooltipBottom";

		/* Arrondi inférieur à gauche */
		tooltipBottomLeft = document.createElement("div");
		tooltipBottomLeft.className = "tooltipBottomLeft";
		_tooltipBottom.appendChild(tooltipBottomLeft);

		/* Arrondi inférieur à droite */
		tooltipBottomRight = document.createElement("div");
		tooltipBottomRight.className = "tooltipBottomRight";
		_tooltipBottom.appendChild(tooltipBottomRight);
	} 


	/* Construction du tooltip */
	tooltip.appendChild(_tooltipTop.cloneNode(true));
	tooltip.appendChild(tooltipContent);
	tooltip.appendChild(_tooltipBottom.cloneNode(true));
	tooltip.style.width = el.tooltipWidth;

	this.tooltip = tooltip;

	return this.tooltip;
}

function showTooltip(e) {
	var d = document.getElementById("btc");

	if ( !d )
		return;

	var tip = this.getTooltip();
	if ( !tip )
		return;
	
	d.appendChild(tip);
	Locate(e);
}

function hideTooltip(e) {
	var d = document.getElementById("btc");

	if ( d && d.childNodes.length > 0 ) {
		d.removeChild(d.firstChild);
	}
}

function setOpacity(el) {
	el.style.filter = "alpha(opacity:95)";
	el.style.KHTMLOpacity = "0.95";
	el.style.MozOpacity = "0.95";
	el.style.opacity = "0.95";
}

function Locate(e) {
	var posx=0, posy=0;
	var btc = document.getElementById("btc");

	if ( !btc )
		return;

	if (e == null) {
		e = window.event;		
	}
	if (e.pageX || e.pageY) {
    	posx = e.pageX;
		posy=e.pageY;
    }
	else if (e.clientX || e.clientY) {
		if(document.documentElement.scrollTop){
			posx = e.clientX+document.documentElement.scrollLeft;
			posy = e.clientY+document.documentElement.scrollTop;
		}
		else {
			posx = e.clientX+document.body.scrollLeft;
			posy = e.clientY+document.body.scrollTop;
		}
	}
	btc.style.top = (posy+10) + "px";
	btc.style.left = (posx-20) + "px";
}
