/* infosbulles.js : Gestion d'infos bulles - 02/2010 */

function addEvent(obj, type, fn, par)
	{
	if (obj.addEventListener)
		obj.addEventListener(type, function(event){return fn.call(obj, event, par);}, false);
	else if (obj.attachEvent)
		obj.attachEvent("on"+type, function(e){if (!e) var e = window.event; return fn.call(obj, e, par);} );
	}

function array_search(valeur, tableau) 
	{
	var idx=-1;
 	for (var elt in tableau) {idx++; if (tableau[elt]==valeur) return idx; }
	return -1;
	}

var bulle_suivre = function(e) {
	var labulle = arguments[1]; 
	var x=0; var y=0;
	if (typeof event != 'undefined')  // IE
		{ 
		var de = !document.documentElement.clientWidth ? document.body : document.documentElement; //selon doctype		 
		var sx = (typeof pageXOffset != 'undefined') ? pageXOffset : de.scrollLeft; //scroll h
		var sy = (typeof pageYOffset != 'undefined') ? pageYOffset : de.scrollTop;  //scroll v
		x = event.clientX + sx; 
		y = event.clientY + sy; 
		}
	else { x = e.pageX; y = e.pageY; }
	
	if (labulle.style) 
		 { labulle.style.left = (x+5)+'px'; labulle.style.top = (y+15)+'px'; }
	else { labulle.left = (x+5)+'px'; labulle.top = (y+15)+'px'; }	
	}
	
var bulle_entrer = function() { var obj=arguments[1]; if (obj.style) obj.style.display='block'; }
var bulle_sortir = function() {	var obj=arguments[1]; if (obj.style) obj.style.display='none'; }
	
var bulle_init = function(classMarquage, classBulle, urlPicto)
	{
	var TabTagHTML = new Array('span','p','div','input'); 
	for (var idx in TabTagHTML) 
		{ 
		var lesaides = document.getElementsByTagName(TabTagHTML[idx]);
		var supportbulle; 
		for (i=0;i<lesaides.length;i++) 
			{
			var a = lesaides[i];
			var tabClass = a.className.split(" ");
			if (array_search(classMarquage, tabClass)!=-1)
				{
				var forobj = a.getAttribute('for')!='' ? document.getElementById(a.getAttribute('for')) : null;
				if (forobj) supportbulle = forobj;
				else
					{
					supportbulle = document.createElement('img');
					supportbulle.setAttribute('src',urlPicto);
					supportbulle.style.verticalAlign='text-bottom';
					a.parentNode.insertBefore(supportbulle,a);
					}
				addEvent(supportbulle, 'mouseover', bulle_entrer, a );
				addEvent(supportbulle, 'mousemove', bulle_suivre, a );
				addEvent(supportbulle, 'mouseout',  bulle_sortir, a );		
				a.style.display='none'; a.style.position='absolute'; a.style.zIndex='1000';
				a.className=classBulle;
				}
			}
		}
	}	

