function HTMLMenu(divMenu,parent)
{  if (typeof divMenu=="string") divMenu=getElement(divMenu);

	divMenu.show=function (event,pere,pos,anim)
	{	var t,l;
	
		function getPosition(id,pos)
			{	o=id;
				gp=o['offset'+pos];
				//if (o.style.position=='absolute') return gp;
				while (o.offsetParent)
				{	o=o.offsetParent;
					//if (o.style.position=='absolute') break;
					gp+=o['offset'+pos];
					if (o.tagName && o.tagName.toLowerCase()=='table')
					{	if (o.border) gp+=parseInt(o.border);
					}
				}
				return gp;
			}
		function getPositionStyle(id)
			{	o=id;
				while (o.offsetParent)
				{	o=o.offsetParent;
					if (o.style.position) break;
				}
				return o.style.position;
			}

		this.menuParent.hide();
		this.style.display='';

		if (pere)
		{	li=getPosition(pere,'Left');
			switch (pos%5)
			{	case 0:
					lf=getPosition(pere,'Left')-this.offsetWidth;
					break;
				case 2:
					lf=getPosition(pere,'Left')+((pere.offsetWidth-this.offsetWidth)/2);
					break;
				case 3:
					lf=getPosition(pere,'Left')+pere.offsetWidth-this.offsetWidth;
					break;
				case 4:
					lf=getPosition(pere,'Left')+pere.offsetWidth;
					break;
				case 1:
				default:
					lf=getPosition(pere,'Left');
					break;
			}

         ti=getPosition(pere,'Top');
			switch (parseInt(pos/5))
			{	case 0:
					tf=getPosition(pere,'Top')-this.offsetHeight;
					break;
				case 1:
					tf=getPosition(pere,'Top');
					break;
				case 2:
					tf=getPosition(pere,'Top')+((pere.offsetHeight-this.offsetHeight)/2);
					break;
				case 3:
					tf=getPosition(pere,'Top')+pere.offsetHeight-this.offsetHeight;
					break;
				case 4:
				default:
					tf=getPosition(pere,'Top')+pere.offsetHeight;
					break;
			}
			
			this.style.left=lf;
			this.style.top=tf;
		}

		if (anim && anim.effect)
		{  this.style.display='none';
		   show=true;
		   animFin={};
		   if (pere && parseInt(anim.effect/1)%2)
		   {	animFin.width="show";
		   	show=false;
		   }
		   if (pere && parseInt(anim.effect/2)%2)
		   {	animFin.height="show";
		   	show=false;
		   }
		   if (pere && parseInt(anim.effect/4)%2)
		   {	this.style.left=li;
		   	animFin.left=lf;
		   }
		   if (pere && parseInt(anim.effect/8)%2)
		   {	this.style.top=ti;
		   	animFin.top=tf;
		   }
		   if (parseInt(anim.effect/16)%2)
		   {	animFin.opacity=getOpacity(this)/100;
				setOpacity(this,0);
		   }
		   if (show) this.style.display='';
		   $(this).animate(animFin,anim.duration);
		}


		if (document.all)
			{ window.event.cancelBubble = true; window.event.returnValue = false;}
		else
			{ event.preventDefault(); event.stopPropagation();}
	};

	divMenu.hide=function ()
	{	var d;
	   for (d in this.menuChild)
		{	this.menuChild[d].hide();
   		this.menuChild[d].style.display='none';
		}
	};

	// Parent
	divMenu.menuParent=parent;

	// Enfants
	divMenu.menuChild={};
	var sub=getAttribute(divMenu,'menusub');
	if (sub)
	{	sub=sub.split(',');
		for(var i in sub)
		{	divMenu.menuChild[sub[i]]=getElement(sub[i]);
	   	HTMLMenu(divMenu.menuChild[sub[i]],divMenu);
  		}
 	}
}
