/******************************************************************************/
/* UBG-BUL - - Union Belge des Géomètres - Belgische Unie van Landmeters      */ 
/* (c) J. Houbart 2003 -- Design par Geoffrey Bougnet -- Tous droits réservés */
/******************************************************************************/
/* Fichier HJPopup.js              --  Version 1.01 -- Décembre 2003 - FR+NL  */
/* Fichier Java d'affichage de Popup                                          */ 
/******************************************************************************/

/*Usage:
  Dans Head: Inclure  <script language="JavaScript" src="Scripts/HJPopup.js"></script>
  Dans Body, à la fin du fichier, inclure:= <SCRIPT>InitPopup();</SCRIPT>
  dans le corp, utiliser un lien avec onmouseover="ShowPopup(Caption,BodyMsg)" et onmouseout="HidePopup()"

  ou la fonction  

   function ImgPopup(Image,Title,BodyMsg) 
Css
.PopupAnchor:hover - NS et Mozilla --> {text-decoration: none; background-color: #D0E4E6} pour supprimer le grow
.PopupDiv, .PopupDiv TD, .PopupDiv TH  {cursor: help; background: #E2FFF1; color:#003035;} 
.PopupDiv {z-index:20 }
.PopupDiv TABLE {border:  2px solid #004b53; padding:  5px; text-align:left; width:235px;}
.PopupDiv TH {color:#006570; border-bottom-color: #ff9933; border-bottom-style: dotted; border-bottom-width: 2px; }
 

Attention: BUG de IE6, 
document.body.clientHeight renvoi une valeur erronée dans IE6 si DOCTTYPE = strict !!!
c'est a dire  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> en entete de fichier 

Autre BUG: les FORM SELECT sont placé avec un z-index trop élevés et le popup ne peut s'afficher au dessus 

 */
  
var GabX=5; //Hz distance entre le pointeur de la souris et la boite
var GabY=5; //V distance entre le pointeur de la souris et la boite
var Margin=10; //Marge entre la boite et le bord de la fenetre
 

//Convert test in true Boolean
function CBool(Test) {return (Test)? true : false;}

var CanvaHeight, CanvaWidth, PopupContainer, ContainerHeight, ContainerWidth,FadingTimeOut,OpacityValue;
var MouseOver=false;
var WindowsLoaded=false;
//Base explorer détection
var W3C = CBool(document.getElementById);
var IE = CBool(document.all);
var NS = CBool(navigator.appName.indexOf("Netscape")>=0);
var OP = CBool(window.opera);
//Explorer variante
var NS4 = (NS && !W3C)
var IE4 = (IE && !W3C)
var IE5 = (W3C && IE)
var NS6 = (W3C && NS)

function HelpPopup(Title,BodyMsg) {ImgPopup("Pictures/Tooltips/Help_Orange.gif",Title,BodyMsg,"HelpImg");}
function GlossairePopup(Title,BodyMsg) {ImgPopup("Pictures/Tooltips/glossaire.gif",Title,BodyMsg,"HelpImg");}

function InitPopup(){
document.write('<div id="PopupDivID" class="PopupDiv" style="position:absolute; top:0px; left:-200px; visibility:hidden; z-index: 100"></div>');
if(NS4)document.captureEvents(Event.MOUSEMOVE);
document.onmousemove=MouseMove;
//window.onload=LoadWindows;
window.onresize=ResizeWindows;
LoadWindows();
}

function ImgPopup(Image,Title,BodyMsg,ImgStyle,PopupClassName){
if (! PopupClassName) PopupClassName="PopupDiv"
if (! ImgStyle) ImgStyle="HelpImg"
document.write('<a class="PopupAnchor" onmouseout="HidePopup();" onmouseover=\'ShowPopup("'+escape(Title)+'","'+escape(BodyMsg)+'","'+PopupClassName+'");\'><img class="'+ImgStyle+'" src="'+Image+'" border="0" ></a>');

}

function TxtPopup(Txt,Title,BodyMsg,PopupClassName){
if (! PopupClassName) PopupClassName="PopupDiv"
document.write('<span class="PopupAnchor" onmouseout="HidePopup();" onmouseover=\'ShowPopup("'+escape(Title)+'","'+escape(BodyMsg)+'","'+PopupClassName+'");\'>'+Txt+'</span>');

}

function ImgLinkPopup(Image,Link,Title,BodyMsg,ImgStyle,PopupClassName){
if (! PopupClassName) PopupClassName="PopupDiv"
if (! ImgStyle) ImgStyle="HelpImg"
document.write('<a class="PopupAnchor" onclick=\'self.location.href="'+Link+'";\' onmouseout="HidePopup();" onmouseover=\'ShowPopup("'+escape(Title)+'","'+escape(BodyMsg)+'","'+PopupClassName+'");\'><img class="'+ImgStyle+'" src="'+Image+'" border="0" ></a>');

}

function ShowPopupBox(BodyMsg,PopupClassName){
LoadWindows()
if(WindowsLoaded){
clearTimeout(FadingTimeOut);
ClearPopup();
MouseOver=true;
//BodyMsg=(BodyMsg)?'<table width="100%"><tr><td>'+unescape(BodyMsg)+'</td></tr></table>':unescape(Caption);
BodyMsg='<div class="'+PopupClassName+'">'+BodyMsg+'</div>';
PopupContainer.className=PopupClassName;
PopupContainer.style.zIndex = +100;
if(NS4){
PopupContainer.document.open();
//PopupContainer.document.write('<div class="PopupDiv">'+BodyMsg+'</div>');
PopupContainer.document.write(BodyMsg);
PopupContainer.document.close();
}
if(W3C||IE4)PopupContainer.innerHTML=BodyMsg;
GetContainerSize();
if(IE||NS6) {OpacityValue=0; SetFadeIn();}  //NS6
}}

function ShowPopup(Caption,BodyMsg,PopupClassName){
LoadWindows()
if(WindowsLoaded){
clearTimeout(FadingTimeOut);
ClearPopup();
MouseOver=true;
BodyMsg=(BodyMsg)?'<table width="100%"><tr><th>'+unescape(Caption)+'</th></tr><tr><td>'+unescape(BodyMsg)+'</td></tr></table>':unescape(Caption);
BodyMsg='<div class="'+PopupClassName+'">'+BodyMsg+'</div>';
PopupContainer.className=PopupClassName;
PopupContainer.style.zIndex = +100;
if(NS4){
PopupContainer.document.open();
//PopupContainer.document.write('<div class="PopupDiv">'+BodyMsg+'</div>');
PopupContainer.document.write(BodyMsg);
PopupContainer.document.close();
}
if(W3C||IE4)PopupContainer.innerHTML=BodyMsg;
GetContainerSize();
if(IE||NS6) {OpacityValue=0; SetFadeIn();}  //NS6
}}


function HidePopup(){
if(WindowsLoaded){
SetFadeOut();
MouseOver=false;
}}

function ResizeWindows(){
CanvaHeight=(NS||OP)? window.innerHeight : (IE)? document.body.clientHeight : 0;
CanvaWidth=(NS||OP)? window.innerWidth : (IE)? document.body.clientWidth : 0;
}

function GetContainerSize(){
if(NS4) {
ContainerWidth=(PopupContainer.document.width)? PopupContainer.document.width : PopupContainer.clip.width;
ContainerHeight=(PopupContainer.document.height)? PopupContainer.document.height : PopupContainer.clip.height;
}else
if(IE) {
ContainerWidth=(PopupContainer.style.pixelWidth)? PopupContainer.style.pixelWidth : PopupContainer.offsetWidth;
ContainerHeight=(PopupContainer.style.pixelHeight)? PopupContainer.style.pixelHeight : PopupContainer.offsetHeight;
}
else
if(NS6) {
ContainerWidth=(PopupContainer.style.width)? parseInt(PopupContainer.style.width) : parseInt(PopupContainer.offsetWidth);
ContainerHeight=parseInt(PopupContainer.offsetHeight);
}
}

function MovePopup(x,y){
if(NS4)PopupContainer.moveTo(x,y);
if(W3C||IE4){
PopupContainer.style.left=x+'px';
PopupContainer.style.top=y+'px';
}}

function GetPageYOffset(){
if(NS)return window.pageYOffset
else 
if (document.compatMode && document.compatMode!="BackCompat") {return document.documentElement.scrollTop;} else {return document.body.scrollTop;}
 }


function GetPageXOffset(){
if(NS)return window.pageXOffset
else 
if (document.compatMode && document.compatMode!="BackCompat") {return document.documentElement.scrollLeft;} else {return document.body.scrollLeft;}
 }


function ClearPopup()
{
MovePopup(0,0);
if(WindowsLoaded){

 if(NS4)PopupContainer.visibility="hide";
 if(IE4||W3C){
 		 clearTimeout(FadingTimeOut);
		 PopupContainer.style.visibility="hidden";
	 }
// IE5 et IE6 ont un problème avec les tags SELECT, ceux-ci apparissent avec z-index=+Infini
//--> reaffichage des select placé au dessus du popup
 

if(NS4){
PopupContainer.document.clear;
}
if(W3C||IE4)PopupContainer.innerHTML='';
MouseOver=false;
}}


function SetFadeIn(){
if(OpacityValue<100){
OpacityValue+=6;
if(IE)PopupContainer.style.filter="alpha(opacity="+OpacityValue+")";
if(NS6)PopupContainer.style.MozOpacity=OpacityValue/100;
FadingTimeOut=setTimeout('SetFadeIn()', 50);
}}

function SetFadeOut(){
if(OpacityValue>=0){
OpacityValue-=8;
if(IE)PopupContainer.style.filter="alpha(opacity="+OpacityValue+")";
if(NS6)PopupContainer.style.MozOpacity=OpacityValue/100;
FadingTimeOut=setTimeout('SetFadeOut()', 50);
}
else ClearPopup();
}


function MouseMove(Event){
if(WindowsLoaded && MouseOver){
	//position du curseur de la souris
	if (NS4){
//		MouseX=Event.pageX;
//		MouseY=Event.pageY;
		MouseX-=GetPageXOffset();
		MouseY-=GetPageYOffset();

	}
	else if (NS6){
			MouseX=Event.clientX;
			MouseY=Event.clientY;
		}
		else if (IE){
			MouseX=event.clientX;
			MouseY=event.clientY;
		}

//Correction des marges en fonction des explorateurs
	var Dm=(IE)? 0 : (NS6 && document.height+27-window.innerHeight<0)?15 :(NS4 && document.height-window.innerHeight<0)?10:23;
 	var PopupX=Math.min(CanvaWidth-ContainerWidth-Margin-Dm ,MouseX+GabX) 
    var PopupY=Math.min(CanvaHeight-ContainerHeight-Margin-Dm ,MouseY+GabY )
	if ((PopupX<=MouseX)&&(PopupY<=MouseY)&&(PopupX+ContainerWidth>=MouseX)&&(PopupY+ContainerHeight>=MouseY))
		{
		//Le popup est au dessus du lien --> Ne peut pas s'ouvrir convenablement 
		if (MouseX-GabX-ContainerWidth-Margin>=0)PopupX=MouseX-GabX-ContainerWidth;
		else
		if (MouseY-GabY-ContainerHeight-Margin>=0)PopupY=MouseY-GabY-ContainerHeight; 
		}
		
		MovePopup( PopupX+GetPageXOffset(),PopupY+GetPageYOffset());
		if(NS4)PopupContainer.visibility="show";
		if(W3C||IE4)PopupContainer.style.visibility="visible";
		// IE5 et IE6 ont un problème avec les tags SELECT, ceux-ci apparissent avec z-index=+Infini
		//--> Masquage des select placé au dessus du popup
		
}}

function LoadWindows(){
 if (NS4) {PopupContainer=document.layers['PopupDivID'];}
 else if (IE4) {PopupContainer=document.all['PopupDivID'];}
 else if (W3C) {PopupContainer=document.getElementById('PopupDivID');}
 else {PopupContainer=null;}
 GetContainerSize();
 ResizeWindows();
 WindowsLoaded=true;
 if(W3C)PopupContainer.style.padding='4px';
  if(IE4 || IE5)PopupContainer.style.filter="alpha(opacity=0)";
  }
