// auteur:	SNG
// date:	17/05/2001
// version: 1.1
//
// Date Dernière Modif : 12/06/2001
//
// Plateforme : IE / Netscape
//
// Usage :	Permet de pouvoir afficher/cacher des divs et de remplacer le contenu d'une DIV dynamiquement
//
// Exemple : Afin de pouvoir manipuler en cross-browser des DIV, il faut placer une ancre à partir de laquelle
//			 on positionnera ensuite dynamiquement la DIV
//
//				!!!!!! Le nom de Div ne doît pas contenir de caractère '$' sinon ça marche pas !!!!!!
//
//				1) Définition de notre div (position:absolute est obligatoire)
//
//						<STYLE>
//							#MyDiv
//							{
//								  position: absolute;
//								  visibility:visible;
//							}
//						</STYLE>
//
//						<DIV ID="MyDiv"></DIV>
//
//				2) Positionnement de l'ancre
//
//						<A id="id_ancre" name="nom_ancre"/>
//
//				3) Positionnement de la div sur l'ancre
//
//						setToAnchor('id_ancre', 'nom_ancre' , 'MyDiv');
//
/***************************************************************************************************************/

// Identification du navigateur
var ns4 = (document.layers)? true:false;			// NS 4
var ie4 = (document.all)? true:false;				// IE 4
var dom = (document.getElementById)? true:false;	// NS 6 ou IE 5

// Fix pour corriger le bug de Netscape dans le onResize
if (ns4)
{
	origWidth = innerWidth;
	origHeight = innerHeight;
}

/***************************************************************************************************************/
// Fonction permettant de recharger la page si on fait un Resize sous Netscape (Pour corriger le bug)
//
// Bug de Netscape : Lors d'un resize, les DIV ne sont pas réaffichées, il faut donc faire un reload
// ---------------
//
// Utilisation:		Définir : <BODY onresize='javascript:resizeFix();'>
/***************************************************************************************************************/

	function resizeFix()
	{
		if (ns4)
		{
			if ((innerWidth != origWidth || innerHeight != origHeight) && (ns4))
				window.location.reload();
		}
	}

/***************************************************************************************************************/
// Fonction permettant de remplir le contenu d'une Div dynamiquement en spécifiant le contenu
// Exemple :	On souhaite remplacer le contenu de la 'div1'
//
//				ID			= 'div1'
//				Content		= " <P>bloc de remplacement </P>"
/***************************************************************************************************************/

	function SetDivIdContent(ID,Content)
	{		  
		  if (dom)
		  {
				document.getElementById(ID).innerHTML = Content;
				return;
		  }

		  if (ie4)
		  {
				document.all[ID].innerHTML = Content;
				return;
		  }

		  if (ns4)
		  {
				with (eval('document.'+ID+'.document'))
				{
					open();
					write(Content);
					close();
				}
		  }
	}

/***************************************************************************************************************/
// Fonction permettant de positionner une DIV à une position occupée par une ancre
// Exemple :	On souhaite positionner la 'div1' sur l'ancre (id_ancre,name_ancre)
//
//				ID_Anchor		= 'id_ancre'
//				Name_Anchor		= 'name_ancre'
//				ID_Div			= 'div1'
//
// Les champs suivants sont facultatifs :
//
//				xOffSetIE		= 0 (rajoute 0px en abscisse pour positionner la div) pour IE
//				yOffSetIE		= 1 (rajoute 1px en ordonnée pour positionner la div) pour IE
//				xOffSetNS		= 2 (rajoute 2px en abscisse pour positionner la div) pour NS
//				yOffSetNS		= 3 (rajoute 3px en ordonnée pour positionner la div) pour NS
//
//
/***************************************************************************************************************/

	function setToAnchor(ID_Anchor,Name_Anchor,ID_Div,xOffSetIE,yOffSetIE,xOffSetNS,yOffSetNS)
	{
		// Vérifie le nombre de paramètres et initialise si nécessaire
		for (var i=3;i<7 ;i++)
		{
			if (typeof(setToAnchor.arguments[i]) == 'undefined')
			{   
				setToAnchor.arguments[i] = 0;
			}
		}

		// Réattribue les valeurs d'après l'initialisation
		xOffSetIE = setToAnchor.arguments[3];
		yOffSetIE = setToAnchor.arguments[4];
		xOffSetNS = setToAnchor.arguments[5];
		yOffSetNS = setToAnchor.arguments[6];

		var DivLeft = 0;	//Position du Div par rapport au côté gauche de la page 
		var DivTop = 0;		//Position du Div par rapport au haut de la page 

		if (dom)
			{
				pos = document.getElementById(ID_Anchor);
				DivLeft = getLeft(pos);
				DivTop = getTop(pos);
				document.getElementById(ID_Div).style.left = eval(DivLeft + xOffSetIE);
				document.getElementById(ID_Div).style.top = eval(DivTop + yOffSetIE);
				return;
			}

		if (ie4) 
			{
				pos = document.all[ID_Anchor];
				DivLeft = getLeft(pos);
				DivTop = getTop(pos);
				document.all[ID_Div].style.posLeft = eval(DivLeft + xOffSetIE);
				document.all[ID_Div].style.posTop = eval(DivTop + yOffSetIE);
				return;
			}

		if (ns4)
			{
				pos = document.anchors[Name_Anchor];
				DivLeft = pos.x;
				DivTop = pos.y;
				document.layers[ID_Div].pageX = eval(DivLeft + xOffSetNS);
				document.layers[ID_Div].pageY = eval(DivTop + yOffSetNS);
			}
	}

/***************************************************************************************************************/
// Fonction permettant de connaître la position d'un objet par rapport au bord gauche de la page
// Cet objet peut être à l'intérieur d'un autre objet.
//
// Exemple :	On souhaite connaître la position Ox d'un objet placé dans la page HTML
//
//				(0,0) -----> x
//				|
//				|
//				|
//				|
//
//				y
//
//
//				MyObject	=	obj
/***************************************************************************************************************/

	function getLeft(MyObject)
	{
		if (MyObject.offsetParent)
			return (MyObject.offsetLeft + getLeft(MyObject.offsetParent));
		else
			return (MyObject.offsetLeft);
	} 

/***************************************************************************************************************/
// Fonction permettant de connaître la position d'un objet par rapport au bord haut de la page
// Cet objet peut être à l'intérieur d'un autre objet.
//
// Exemple :	On souhaite connaître la position Oy d'un objet placé dans la page HTML
//
//				(0,0) -----> x
//				|
//				|
//				|
//				|
//
//				y
//
//
//				MyObject	=	obj
/***************************************************************************************************************/

	function getTop(MyObject)
	{
		if (MyObject.offsetParent)
			return (MyObject.offsetTop + getTop(MyObject.offsetParent));
		else
			return (MyObject.offsetTop);
	}

/***************************************************************************************************************/
// Fonction qui affiche une div à partir de son ID
// Exemple :	On souhaite afficher la 'div1'
//					ID_Div = 'div1'
/***************************************************************************************************************/

	function afficheDivId(ID_Div)
	{
		if (dom)
			{
				document.getElementById(ID_Div).style.visibility = "visible";
				return;
			}

		if (ie4) 
			{
				document.all[ID_Div].style.visibility = "visible";
				return;
			}

		if (ns4)
			{
				document.layers[ID_Div].visibility = "visible";
			}
	}

/***************************************************************************************************************/
// Fonction qui cache une div à partir de son ID
// Exemple :	On souhaite cacher la 'div1'
//					ID_Div = 'div1'
/***************************************************************************************************************/

	function cacheDivId(ID_Div)
	{
		if (dom)
			{
				document.getElementById(ID_Div).style.visibility = "hidden";
				return;
			}

		if (ie4) 
			{
				document.all[ID_Div].style.visibility = "hidden";
				return;
			}

		if (ns4)
			{
				document.layers[ID_Div].visibility = "hidden";
			}
	}

/***************************************************************************************************************/