	var divArray = new Array();
	divArray[0] = "";
	
	var timeoutid;
	
	// Find a object reference for a Layer (<DIV> tag)
	function findLayerObj(id)// *** TODO : Il faut ajouter la recurtion dans les layers pour Net4
	{
		var elm = null;
		if (document.getElementById)//Browser implements part of W3C DOM HTML Gecko, IE5+, Opera 5+
		{	elm = document.getElementById(id);}
		else if (document.all)// IE4 or Opera with IE user agent
		{	elm = document.all[id];}
		else if (document.layers)// Net 4         
		{	elm = document.layers[id];}
		return(elm);
	}
	
	function MM_findObj(n, d) { //v4.0
	  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
	    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	  if(!x && document.getElementById) x=document.getElementById(n); return x;
	}
	
	// Find a object reference for a Anchor (<A> tag)
	function findAnchorObj(id)// *** TODO : Il faut ajouter la recurtion et la recherche dans le document courrant dans les layers pour Net4
	{
		var elm = null;
		if (document.getElementById)//Browser implements part of W3C DOM HTML Gecko, IE5+, Opera 5+
		{	elm = document.getElementById(id);}
		else if (document.all)// IE4 or Opera with IE user agent
		{	elm = document.all[id];}
		else if (document.layers)// Net 4         
		{
			/*elm = document.images[id];*/
			elm = findAnchorLayerObject(document,id)
		}
		
		return(elm);
	}
	
	function findAnchorLayerObject(Objdoc,ObjId)
	{
		var ElmId = ObjId
		var elm = null;
		var counterOutterLoop=0, found=false;
			while(counterOutterLoop < Objdoc.anchors.length && !found)
			{
		      if(Objdoc.anchors[counterOutterLoop])
				{
					if(Objdoc.anchors[counterOutterLoop].name.toString() == ElmId.toString())
					{
						found=true;
						elm = Objdoc.anchors[counterOutterLoop];
					}
				}
				counterOutterLoop++;
			}
		
		if(found) return elm;
		
		var j=0, found=false;
		while(j<Objdoc.layers.length && !found)
		{
			elm = findAnchorLayerObject(Objdoc.layers[j].document,ElmId);
			if(elm) return elm;
			j++;
		}
		return elm;
	}

	function closemenu(id)
	{	//alert(id);
		
		if (timeoutid)
			clearTimeout(timeoutid);
		
		my_layer = findLayerObj(id);
		if(document.getElementById || document.all)
		{	my_layer.style.visibility="hidden";}
		else if (document.layers)
		{	my_layer.visibility="hide";}
		else
		{	alert("Browser not supported or element not found");}
			
	}
	
	function openmenu(menulayer,anchorid)
	{
		var spacerx_ie = 5;
		var spacery_ie = 0;
		var spacerx_nn = 25;
		var spacery_nn = 5;
		var timeout = 500;
		
		menulayer_obj = findLayerObj(menulayer);
		anchor_obj = findAnchorObj(anchorid);
		
		if (!menulayer_obj || !anchor_obj) 
  		{	alert("Browser not supported or element not found");}
 	 	else if (menulayer_obj.style) 
  		{		
			
			if (document.all)
			{
				if (anchor_obj.innerText.length > 0)
					spacery_ie = 0;
			}		
			else
				if (anchor_obj.text.length > 0)
					spacery_ie = 0;
			
			doRelocate = true;
			//Unhide de layer
			for (i=0;i<divArray.length;i++){
				if(divArray[i].toString() == menulayer.toString())
					doRelocate = false;				
			}
			
			if(doRelocate){
				if(document.getElementsByName || document.all)
				{
					menulayer_obj.style.left = GetOffsetLeft(anchor_obj) + anchor_obj.offsetWidth + spacerx_ie;
					menulayer_obj.style.top = GetOffsetTop(anchor_obj) - spacery_ie;
				}
				else
				{
					alert( 'X:' + anchor_obj.x + ',Y:' + anchor_obj.y);
				}
				
			}
			menulayer_obj.style.visibility = "visible";
  		}
  		else if (typeof(menulayer_obj.left) == 'number') // Navigator 4
		{	
			if (anchor_obj.text != null)
			{
				spacerx_nn = spacerx_nn + anchor_obj.text.length * 8;
				spacery_nn = 0;
			}	
			menulayer_obj.left = anchor_obj.x + spacerx_nn;
			menulayer_obj.top = anchor_obj.y - spacery_nn;
			menulayer_obj.visibility = "show";
		}
	}
	
	function GetOffsetLeft(elm)
		{
			var x = 0;
		  	if (typeof(elm.offsetLeft) == 'number')
		  	{
    			while (elm)
    			{
      				x += elm.offsetLeft;
      				elm = elm.offsetParent;
    			}
  		 	}
  		 	else
         	{
    	 		while (elm)
    			{
      				if (elm.style)
      				{
        				position = elm.offsetLeft;
       	 				if (position != '' && position != 'static')
          					x += elmstyle.offsetLeft();
      				}
      				elm = elm.parentNode;
    			}
 			}
  			return x;
		}
		
		function GetOffsetRight(elm)
		{
			var x = 0;
		  	if (typeof(elm.offsetRight) == 'number')
		  	{
    			while (elm)
    			{
      				x += elm.offsetRight;
      				elm = elm.offsetParent;
    			}
  		 	}
  		 	else
         	{
    	 		while (elm)
    			{
      				if (elm.style)
      				{
        				position = elm.offsetRight;
       	 				if (position != '' && position != 'static')
          					x += elmstyle.offsetRight();
      				}
      				elm = elm.parentNode;
    			}
 			}
  			return x;
		}
		
		
		function GetOffsetTop(elm)
		{
			var x = 0;
		  	if (typeof(elm.offsetLeft) == 'number')
		  	{
    			while (elm)
    			{
      				x += elm.offsetTop;
      				elm = elm.offsetParent;
    			}
  		 	}
  			else
         	{
    	 		while (elm)
    			{
      				if (elm.style)
      				{
        				position = elm.offsetTop;
       	 				if (position != '' && position != 'static')
          					x += elmstyle.offsetTop();
      				}
      				elm = elm.parentNode;
    			}
 			}
  			return x;
		}

