/* Jean Biron - 27/12/2006 */

var ie = (document.all && navigator.userAgent.toLowerCase().indexOf("opera") == -1) ? 1 : 0;
var dom = (document.getElementById) ? 1 : 0;
var maxwidth = 300;

var bulle = new Info("bulle");

function ouvre(txt, e) {
	bulle.ouverture("", e, 300, 40, -20, 0, txt, 1);
	}

function ferme() {
	bulle.fermeture();
	}

function Info(id) {
	this.id = id;
	this.ouvert = false;
	this.ouverture = ouverture;
	this.fermeture = fermeture;
	this.affiche = affiche;
	}

function ouverture(frm, e, tempo, x, y, w, txt, slct) {

	this.slct = slct;
	if (!ie && !dom ) {
		alert(txt.replace(/<[^>]*>/g, " ") + "\n\n" + "[Navigateur non géré]"); return;
		}

	var f = (frm != "") ? eval(frm) : window, d = f.document, b = d.body;
	var bb = (d.documentElement && d.documentElement.clientWidth >= 1) ? d.documentElement : d.body; /* gestion de IE6 + doctype */

	var obj, s;
	obj = (ie) ? d.all[this.id] : d.getElementById(this.id);
	if (this.ouvert && obj != null) {this.fermeture(); return;}

	this.ouvert = true;
	this.frm = frm;

	var zm = 10;
	if (dom) {
		var oDiv = d.getElementsByTagName("div"), z;
		for (var i = 0; i < oDiv.length; i++) {z = oDiv[i].style.zIndex; if (z > zm) zm = z}
		zm++;
		}

	if (ie) {
		s = "<div id='" + this.id + "' style='";
		s += "position:absolute;";
		s += "visibility:hidden;";
		if (w > 0) s += "width:" + w + "px;";
		s += "z-index:" + zm + "'";
		s += ">" + txt + "</div>";
		b.insertAdjacentHTML("beforeEnd", s);
		obj = d.all[this.id]
		s = obj.style;
		}
	else {
		obj = d.createElement("div");
		s = obj.style;
		s.position = "absolute";
		s.visibility = "hidden";
		s.left = 0;
		s.top = 0;
		if (w > 0) s.width = w + "px";
		s.zIndex = zm;
		obj.id = this.id;
		obj.innerHTML = txt;
		b.appendChild(obj);
		this.obj = obj;
		}

	var wx = (ie) ? bb.clientWidth : f.innerWidth, wy = (ie) ? bb.clientHeight : f.innerHeight;
	var sx = (ie) ? bb.scrollLeft : f.pageXOffset, sy = (ie) ? bb.scrollTop : f.pageYOffset;
	var l = obj.offsetWidth;
	if (w == 0 && l > maxwidth) {l = maxwidth; s.width = l + "px";}
	w = l;
	var h = obj.offsetHeight;

	if (e == "") {
		if (x < 1) x = parseInt(wx * x - w / 2); x += sx;
		if (y < 1) y = parseInt(wy * y - h / 2); y += sy;
		}
	else {
		var dx = x;
		var dy = y;
		x = (ie) ? event.clientX : e.pageX - sx;
		y = (ie) ? event.clientY : e.pageY - sy;
		if (x + dx + w > wx && x - dx - w > 0) x = x - dx - w + sx; else x = x + dx + sx;
		if (y + dy + h > wy && y - dy - h > 0) y = y - dy - h + sy; else y = y + dy + sy;
		}

	s.left = x + "px";
	s.top = y + "px";

	if (tempo > 0) this.cpt = setTimeout(this.id + ".affiche()", tempo); else this.affiche();
	}

function affiche() {
	var f = (this.frm != "") ? eval(this.frm) : window, d = f.document;
	var o = (ie) ? d.all[this.id] : d.getElementById(this.id);
	if (o == null) return;
	o.style.visibility = "visible";
	if (ie && dom && this.slct) fSwapSelect(this.frm);
	}

function fermeture() {
	if (this.cpt != null) clearTimeout(this.cpt);
	if (!ie && !dom || !this.ouvert) return;
	this.ouvert = false;
	var f = (this.frm != "") ? eval(this.frm) : window, d = f.document;
	if (ie) {
		var o = d.all[this.id];
		if (o == null) return;
		o.innerHTML = "";
		o.outerHTML = "";
		if (dom && this.slct) fSwapSelect(this.frm);
		}
	else d.body.removeChild(this.obj);
	}

function fDomOffset(oObj, sProp) {
	var iVal = 0;
	while (oObj && oObj.tagName != "body") {
		eval("iVal += oObj." + sProp + ";");
		oObj = oObj.offsetParent;
		}
	return iVal;
	}

function fSwapSelect(frm) {
	var f = (frm != "") ? eval(frm) : window, d = f.document;
	var ok, i, j, oDiv, oSlt = d.getElementsByTagName("select");
	for (i = 0; i < oSlt.length; i++) {
		xs = fDomOffset(oSlt[i], "offsetLeft");
		ys = fDomOffset(oSlt[i], "offsetTop");
		ws = oSlt[i].offsetWidth;
		hs = oSlt[i].offsetHeight;
		ok = true;
		j = 0;
		oDiv = d.getElementsByTagName("div")
		while (j < oDiv.length && ok) {
			if (oDiv[j].style.visibility == "visible") {
				xd = fDomOffset(oDiv[j], "offsetLeft");
				yd = fDomOffset(oDiv[j], "offsetTop");
				wd = oDiv[j].offsetWidth;
				hd = oDiv[j].offsetHeight;
				if (xd > xs - wd && xd < xs + ws && yd > ys - hd && yd < ys + hs) ok = false;
				}
			j++;
			}
		oSlt[i].style.visibility = (ok) ? "visible" : "hidden";
		}
	}

