/* Définition des variables des sous-menus: */
/*------------------------------------------*/
var SM_Bounding_Rect;
var SM_Bounding_Top;
var SM_Bounding_Bottom;
var SM_Bounding_Left;
var SM_Bounding_Right;

var SM_Visible=0;
var SM_Obj;

var SM_Text=new Array();
var SM_Link=new Array();
var a=0;
var b=0;

var OutTime=0;
var SubMenuTimeOut=500;


///* Trouve le navigateur courant: */
///*-------------------------------*/
//ns4 = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) == 4);
//ns5 = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) >= 5);
//ie4 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) >= 4);
//ie5 = (navigator.appVersion.indexOf('MSIE 5')>0);
//ie6 = (navigator.appVersion.indexOf('MSIE 6')>0);
//ie7 = (navigator.appVersion.indexOf('MSIE 7')>0);
//ElById = document.getElementById;

/* Capture la souris: */
/*--------------------*/
SubMenu_CatchMouse();

/****************************************************/
/* Ecrit dans un élément (DIV ou Layer).			*/
/****************************************************/
function WriteInElem(ID_Name,Text)
{
	if(ns4)
	{
		var Layer = document.layers[ID_Name].document;
		Layer.write(Text);
		Layer.close();
		return;
	}
	if(ElById)
	{
		document.getElementById(ID_Name).innerHTML = Text;
		return;
	}
	if(ie4)
	{
		document.all(ID_Name).innerHTML = Text;
		return;
	}
}

/****************************************************/
/* Affiche un élément.								*/
/****************************************************/
function ShowElem(Name)
{
	if(ns4)document.layers[Name].visibility='show';
	if(ElById)
	{
		Obj=document.getElementById(Name);
		if(Obj!=null)Obj.style.visibility="visible";
	}
}

/****************************************************/
/* Cache un élément.								*/
/****************************************************/
function HideElem(Name)
{
	if(ns4)document.layers[Name].visibility='hide';
	if(ElById)
	{
		Obj=document.getElementById(Name);
		if(Obj!=null)Obj.style.visibility="hidden";
	}
}

/****************************************************/
/* Déplace un élément.								*/
/****************************************************/
function MoveElem(Name,xPos,yPos)
{
	var zeElem;

	if (ns4) zeElem = document.layers[Name];
	if (ElById) zeElem = document.getElementById(Name).style;

	zeElem.left = xPos;
	zeElem.top = yPos;
}

/****************************************************/
/* Capture la souris.								*/
/****************************************************/
function SubMenu_CatchMouse()
{
	if((ns4) || (ElById) )
	{
		if(ie6 || ie7 || ie8)
			document.attachEvent('onmousemove',SubMenu_mouseMove);
		else
			document.onmousemove = SubMenu_mouseMove;

		if (ns4 || ns5) document.captureEvents(Event.MOUSEMOVE);
	}
}

/****************************************************/
/* Fonction de déplacement de la souris.			*/
/****************************************************/
function SubMenu_mouseMove(e)
{
	if(ns4){x=e.pageX; y=e.pageY;}
	if(ns5){x=e.pageX; y=e.pageY;}
	if(ie4){x=event.clientX; y=event.clientY;}

	if(SM_Visible)
	{
//		window.alert("x: "+x+" y:"+y+" L: "+SM_Bounding_Left+" R:"+SM_Bounding_Right+" T:"+SM_Bounding_Top+" B:"+SM_Bounding_Bottom);
		if(	(x>SM_Bounding_Right)||
			(x<SM_Bounding_Left)||
			(y>SM_Bounding_Bottom)||
			(y<SM_Bounding_Top))
		{
			var Tmp=new Date;
			if(OutTime==0)
			{
				OutTime=Tmp.getTime();
			}
			else
			{
				if(Tmp.getTime()-OutTime>SubMenuTimeOut)
					HideSubMenu();
			}
		}
		else
		{
			OutTime=0;
		}

	}
}

/****************************************************/
/* Calcule le bounding rect.						*/
/****************************************************/
function SM_GetBoundingRect(Obj)
{
	if(ie6)
	{
		SM_Bounding_Rect=Obj.getBoundingClientRect();
		SM_Bounding_Right=SM_Bounding_Rect.right;
		SM_Bounding_Left=SM_Bounding_Rect.left;
		SM_Bounding_Bottom=SM_Bounding_Rect.bottom;
		SM_Bounding_Top=SM_Bounding_Rect.top;
	}
	else
	{
		var offx = 0;
		var offy = Obj.offsetHeight;
		var ndObject = Obj;
		while (ndObject.nodeName != "BODY")
		{
		    offx += ndObject.offsetLeft;
		    offy += ndObject.offsetTop;
		    ndObject = ndObject.offsetParent;
		}

		offx+=2;
		offy+=2;
		SM_Bounding_Left=offx;
		SM_Bounding_Right=offx+Obj.offsetWidth;
		SM_Bounding_Top=offy-Obj.offsetHeight;
		SM_Bounding_Bottom=offy;
	}
}

/****************************************************/
/* Affiche un SubMenu.								*/
/****************************************************/
function ShowSubMenu(Num,Obj)
{
	SM_Obj=Obj;
	SM_GetBoundingRect(Obj);

	OutTime=0;
	Text  = "<Table onmouseover='MouseOverSubMenu(this);' onmouseout='MouseOutSubMenu();' border=0 cellpadding=0 cellspacing=0 style=\"border-top: 1px solid #000000\">";
	for(TextID in SM_Text[Num])
	{
		if(typeof(SM_Text[Num][TextID])=='function')continue;
		Text += "<Tr>";
			Text += "<Td height=20 onclick=\"window.location='"+SM_Link[Num][TextID] + "';\" "+
					"onmouseover=\"this.className='SubMenuOver';\" "+
					"onmouseout=\"this.className='SubMenu';\" "+
					"class=SubMenu width=114 align=center>";

				Text +=  SM_Text[Num][TextID];
			Text += "</Td>";
		Text += "</Tr>";
	}
	Text += "</Table>";

	WriteInElem("SubMenu",Text);
	if((ie5)||(ie6))
	{
		x_ofs=document.body.scrollLeft;
		y_ofs=document.body.scrollTop;
	}
	else
	{
		x_ofs=0;
		y_ofs=0;
	}
//	MoveElem("SubMenu",SM_Bounding_Rect.right-118+x_ofs,SM_Bounding_Rect.top+17+y_ofs);
	MoveElem("SubMenu",SM_Bounding_Right-118+x_ofs,SM_Bounding_Top+17+y_ofs);
	ShowElem("SubMenu");
//	if(!ie6)HideElem("TxtFrameID");
	SM_Visible=1;
	SubMenu_CatchMouse();
}

/****************************************************/
/* Cache un SubMenu.								*/
/****************************************************/
function HideSubMenu()
{
	SM_Visible=0;
	HideElem("SubMenu");
	if(!ie6)ShowElem("TxtFrameID");
}

/****************************************************/
/* Si la souris passe sur le SubMenu.				*/
/****************************************************/
function MouseOverSubMenu(Obj)
{
	OutTime=0;
	SM_GetBoundingRect(Obj);
}

/****************************************************/
/* Si la souris sort du SubMenu.					*/
/****************************************************/
function MouseOutSubMenu()
{
	var Tmp=new Date;
	if(OutTime==0)
	{
		OutTime=Tmp.getTime();
	}
	else
	{
		if(Tmp.getTime()-OutTime>SubMenuTimeOut)
			HideSubMenu();
	}
}