// *** Paramètres ***
// Nom du bloc DIV devant contenir l'infobulle
// Toute page utilisant des infobulles doit présenter un bloc div d'id 'legend'
var sNomBlocDIV = 'legend';

// Classe CSS à appliquer à l'infobulle
var sClassInfoBulle = 'texteToolTip_menuPrincipal';

// Décalage entre la souris en l'infobulle
var Decal_X = 5;
var Decal_Y = 5;

// *** Code ***
var ne 	= false;
var ie 	= false
var ne7 = false;

if(document.layers) 				ne 	= true;
else if(document.all) 				ie 	= true;
else if(document.getElementById) 	ne7 = true;

var fenetre = null;
if(ne){
	fenetre = eval('document.'+sNomBlocDIV);
}
else
if(ie){
	fenetre = document.all(sNomBlocDIV);
}
else
if(ne7){
	fenetre = document.getElementById(sNomBlocDIV);
}

if(ne) document.captureEvents(Event.MOUSEMOVE);


// MCH 15/01/2009 : Le fichier d'infobulle étant systématiquement inclu dans les popups,
// on n'ajoute les événement onmousemove et onscroll que si la fenetre (duv 'legend' a été définie)
if (objectDefined(fenetre) === true){
	document.onmousemove = capture_souris;
	window.onscroll = cache_legende;
}


function cache_legende()
{
	// MCH 24/02/2009 : On ne teste plus l'objet avant, on esssaie de le récupérer et on le masque s'il est défini.
	fenetre = document.getElementById(sNomBlocDIV);

	if (objectDefined(fenetre)){
		if(ne)
		{
			fenetre.visibility = 'hidden';
		}
		else
		{
			fenetre.style.visibility = 'hidden';
		}
	}

}

// MCH 13/02/2009 : Indique si un objet est défini ou non
function objectDefined(elem){
	if (ie){
		if (elem != 'undefined' && elem != 'null')
			return(true);
		else
			return(false);
	}
	else{
		if (typeof elem != 'undefined' && typeof elem != 'null')
			return(true);
		else
			return(false);
	}
}

function montre_legende(sLegende)
{
	var contenu 		= "<table cellpadding='5' cellspacing='0' border='1' bgcolor='#FFFFFF' bordercolor='#93B7F1' width='250'>";
	contenu = contenu 	+ "<tr><td class='" + sClassInfoBulle + "'>" + sLegende + "</td></tr>";
	contenu = contenu 	+ "</table>";

	if(
		(typeof fenetre === 'undefined')
		||
		(fenetre === null)
	)
	{
		if(ne) 			fenetre = eval('document.'+sNomBlocDIV);
		else if(ie) 	fenetre = document.all(sNomBlocDIV);
		else if(ne7) 	fenetre = document.getElementById(sNomBlocDIV);
	}

	if(ie)
	{
		fenetre.innerHTML = contenu;
		fenetre.style.visibility = 'visible';
	}
	else if(ne7)
	{
		fenetre.innerHTML = contenu;
		fenetre.style.visibility = 'visible';
	}
	else
	{
		fenetre.document.write(contenu);
		fenetre.document.close();
		fenetre.visibility = 'visible';
	}
}

function capture_souris(e)
{
	var Mouse_X, Mouse_Y;
	var DocRef;
	var NETSCAPE = (navigator.appName == 'Netscape');

	if(NETSCAPE)
	{
		Mouse_X = e.pageX;
		Mouse_Y = e.pageY;
	}
	else
	{
		if( document.documentElement && document.documentElement.clientWidth)
			DocRef = document.documentElement;
		else
			DocRef = document.body;

		Mouse_X = event.clientX +DocRef.scrollLeft;
		Mouse_Y = event.clientY +DocRef.scrollTop;
	}
	ObjShowAll(sNomBlocDIV, Mouse_X + Decal_X, Mouse_Y + Decal_Y);
}

function ObjMoveTo(div_, x_, y_)
{
	var DOM = (document.getElementById ? true : false);
	var IE  = (document.all && !DOM ? true : false);
	var NS4 = (document.layers ? true : false);

	var Obj;
	if(DOM) Obj = document.getElementById(div_);
	if(IE)  Obj = document.all[div_];
	if(NS4) Obj = document.layers[div_];

	var Arg = arguments;
	if(div_)
	{
	  	Obj = (NS4 ? Obj : Obj.style);
		if(Obj)
		{
		  if( Arg[1] != null) Obj.left = x_ + 'px';
		  if( Arg[2] != null) Obj.top  = y_ + 'px';
		}
	}
}

function ObjShowAll(div_, x_, y_)
{
	var DOM = (document.getElementById ? true : false);
	var IE  = (document.all && !DOM ? true : false);
	var NS4 = (document.layers ? true : false);
	var NAV_OK   = ( DOM || IE || NS4);
	var NETSCAPE = (navigator.appName == 'Netscape');

	var Obj;
	if(DOM) Obj = document.getElementById(div_);
	if(IE)  Obj = document.all[div_];
	if(NS4) Obj = document.layers[div_];

	var DocRef;
	var MaxX, MaxY;
	var Top,  Left;
	var Haut, Larg;
	var SavY = y_;

	if(Obj)
	{
		//-- Récup. dimension fenêtre et DIV
		if(NETSCAPE)
		{
			with(window)
			{
				Left = pageXOffset;
				Top  = pageYOffset;
				MaxX = innerWidth;
				MaxY = innerHeight;
				if( MaxX > document.width)  MaxX = document.width;
				if( MaxY > document.height) MaxY = document.height;
				MaxX += Left;
				MaxY += Top;
			}
			if( NS4)
			{
				Larg = Obj.clip.width;
				Haut = Obj.clip.height;
			}
			else
			{
				Larg = Obj.offsetWidth;
				Haut = Obj.offsetHeight;
			}
		}
		else
		{
			if( document.documentElement && document.documentElement.clientWidth)
				DocRef = document.documentElement;
			else
				DocRef = document.body;

			with(DocRef)
			{
				Left = scrollLeft;
				Top  = scrollTop;
				MaxX = Left + clientWidth;
				MaxY = Top  + clientHeight;
			}

			Larg = Obj.scrollWidth;
			Haut = Obj.scrollHeight;
		}
		//-- Réajuste dimension fenêtre
		MaxX -= Larg;
		MaxY -= Haut;

		//-- Application Bornage
		if( x_ > MaxX) x_ = MaxX;
		if( x_ < Left) x_ = Left;
		if( y_ > MaxY) y_ = MaxY;
		if( y_ < Top)  y_ = Top;

		//-- si en bas On réajuste
		//-- pour que la bulle ne prenne pas le focus
		if( y_== MaxY)
		{
			var DeltaY = MaxY -SavY;
			y_ = MaxY - DeltaY -Haut -2 * Decal_Y;
		}

		//-- On place la Bulle
		ObjMoveTo(div_, x_, y_);
	}
}