var timeout = 500;																		/*the timeout for the menu*/
for( var i = 0; i < 100; i++ )															/*it's for avoid some warning with IE*/
	{eval("var timeoutli" + i + " = false;");}

function initMenu()																		/*this fonction apply the CSS style and the event*/
	{
	if ( browser.isDOM1 																/*a test to avoid some browser like IE4, Opera 6, and IE Mac*/
	&& !( browser.isMac && browser.isIE ) 
	&& !( browser.isOpera && browser.versionMajor < 7 )
	&& !( browser.isIE && browser.versionMajor < 5 ) )
		{
		var menu = document.getElementById('rubrica');									/*get some element: the root element*/
		var lis = menu.getElementsByTagName('li');										/*get some element: all the li*/
		menu.className='rubrica';														/*change the class name of the menu: it's usefull for compatibility with old browser*/
		for ( var i=0; i<lis.length; i++ )												/*i am searching for ul element in li element*/
			{
			if ( lis.item(i).getElementsByTagName('ul').length > 0 )					/*is there a ul element?*/
				{        
				addAnEvent(lis.item(i),'mouseover',show);								/*link events to list item*/
				addAnEvent(lis.item(i),'mouseout',timeoutHide);
				addAnEvent(lis.item(i),'blur',timeoutHide);
				addAnEvent(lis.item(i),'focus',show);
				lis.item(i).setAttribute( 'id', "li"+i );								/*add an id to list item*/
				lis.item(i).getElementsByTagName('a')[0].className = 'menuIndicateur';
				}
			}
		}
	}

function addAnEvent( target, eventName, functionName )
	{
	if ( browser.isIE )																	/*apply the method to IE*/
		{
		eval('target.on'+eventName+'=functionName');									/*attachEvent dont work properly with this*/
		}
	else																				/*apply the method to DOM compliant browsers*/
		{
		target.addEventListener( eventName , functionName , true );						/*true is important for Opera7*/
		}
	}

function timeoutHide()																	/*hide the first ul element of the current element*/
	{
	eval( "timeout" + this.id + " = window.setTimeout('hideUlUnder( \"" + this.id + "\" )', " + timeout + " );");/*start the timeout*/
	}

function hideUlUnder( id )																/*hide the ul elements under the element identified by id*/
	{   
	document.getElementById(id).getElementsByTagName('ul')[0].style['visibility'] = 'hidden';
	}

function show()																			/*show the first ul element found under this element*/
	{
	this.getElementsByTagName('ul')[0].style['visibility'] = 'visible';					/*show the sub menu*/
	eval ( "clearTimeout( timeout"+ this.id +");" );									/*clear the timeout*/
	hideAllOthersUls( this );
	}

function hideAllOthersUls( currentLi )													/*hide all ul on the same level of  this list item*/
	{
	var ul = currentLi.parentNode;
	for ( var i=0; i<ul.childNodes.length; i++ )										/*alert(lis.childNodes.length);*/
		{
		if ( ul.childNodes[i].id && ul.childNodes[i].id != currentLi.id )
			{
			hideUlUnderLi( ul.childNodes[i] );
			}
		}
	}
	
function hideUlUnderLi( li )															/*hide all the ul wich are in the li element*/
	{
	var uls = li.getElementsByTagName('ul');
	for ( var i=0; i<uls.length; i++ )
		{
		uls.item(i).style['visibility'] = 'hidden';
		}
	} 
