/***********************************************
				JS	 		HERVIEU
				Date :		28.08.2007				
				Version : 	1.0
				Program : 	Churchill
************************************************/

//init the site functions 
window.onload=initMenu;

// the timeout for the menu
var timeout = 0;

// creat timeout variables for list item
// it's for avoid some warning with IE
for( var i = 0; i < 100; i++ )
{
    eval("var timeoutli" + i + " = false;");
	eval("var timeoutleftli" + i + " = false;");
}

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

                // add an id to list item
                lis.item(i).setAttribute( 'id', "li"+i );

				// test for transparency under submenus
				/*
				if ( compteur  <  8)
				{		  
					var heightOfUl = menu.getElementsByTagName('ul')[compteur].offsetHeight;				
					var div_trans = document.createElement('img');
					div_trans.src= 'img/menu/pix_bleu.gif';
					div_trans.style['width'] = '20.1em';
					div_trans.style['height'] = heightOfUl;
					lis.item(i).getElementsByTagName('ul')[0].appendChild(div_trans);			
					menu.getElementsByTagName('ul')[compteur].style.backgroundColor = "transparent";		
					compteur++;
				}
				*/
				}
				else if(lis.item(i).parentNode.id == 'menu' && !lis.item(i).id)
				//else if(lis.item(i).getElementsByTagName('img')[0] && !lis.item(i).id)
				{		
										
					addAnEvent(lis[i].getElementsByTagName('img')[0],'mouseover',rollover2);
					addAnEvent(lis[i].getElementsByTagName('img')[0],'mouseout',rollout2);			
				}
			}
		}
		
		
		// FIND MENU gestion des submenus
		if(document.getElementById('left'))
		{
			var leftmenu = document.getElementById('left'); // the root element
			var leftlis = leftmenu.getElementsByTagName('li'); // all the li
			
			// change the class name of the menu, 
			// it's usefull for compatibility with old browser
			leftmenu.className='leftmenu';
		
		// add events for the menu
        // i am searching for ul element in li element
        for ( var i=0; i<leftlis.length; i++ )
        {		
			hideUlUnderLi(leftlis.item(i));		
		
			// is there a ul element ?			
            if ( leftlis.item(i).getElementsByTagName('ul').length > 0 )
            {        
                // improve IE key navigation
				
                if ( browser.isIE )
                {
                    addAnEvent(leftlis.item(i),'keyup',show);
                }
				
                // link events to list item
				addAnEvent(leftlis.item(i),'mouseover',show);
				addAnEvent(leftlis.item(i),'mouseout',timeoutHide);
				addAnEvent(leftlis.item(i),'blur',timeoutHide);
				addAnEvent(leftlis.item(i),'focus',show);

                // add an id to list item
                leftlis.item(i).setAttribute( 'id', "leftli"+i );
				//leftlis.item(i).style['zIndex'] = Math.ceil(i/10);

				// test for transparency under submenus
				/*
				if ( compteur  <  8)
				{		  
					var heightOfUl = menu.getElementsByTagName('ul')[compteur].offsetHeight;				
					var div_trans = document.createElement('img');
					div_trans.src= 'img/menu/pix_bleu.gif';
					div_trans.style['width'] = '20.1em';
					div_trans.style['height'] = heightOfUl;
					lis.item(i).getElementsByTagName('ul')[0].appendChild(div_trans);			
					menu.getElementsByTagName('ul')[compteur].style.backgroundColor = "transparent";		
					compteur++;
				}
				
				}
				else if(leftlis.item(i).parentNode.id == 'left' && !leftlis.item(i).id)
				//else if(lis.item(i).getElementsByTagName('img')[0] && !lis.item(i).id)
				{		
										
					addAnEvent(leftlis[i].getElementsByTagName('img')[0],'mouseover',rollover2);
					addAnEvent(leftlis[i].getElementsByTagName('img')[0],'mouseout',rollout2);*/			
				}
			}
		}
    }
}

function addAnEvent( target, eventName, functionName )
{
    // apply the method to IE
    if ( browser.isIE )
    {
        //attachEvent dont work properly with this
        eval('target.on'+eventName+'=functionName');
    }
    // apply the method to DOM compliant browsers
    else
    {
        target.addEventListener( eventName , functionName , true ); // true is important for Opera7
    }
}
    
// hide the first ul element of the current element
function timeoutHide()
{
	//******rajout par thomas***********************************************************************************************//
	if(this.getElementsByTagName('img')[0])
	{
		rollout(this.getElementsByTagName('img')[0]);
	}
	//********************************************************************************************************************//

    // start the timeout
	if(document.styleSheets[0].disabled == 0)
	{
		eval( "timeout" + this.id + " = window.setTimeout('hideUlUnder( \"" + this.id + "\" )', " + timeout + " );");
	}

}

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

// show the first ul element found under this element
function show()
{
	//*******rajout par thomas*******************************************************************************************************/
	if(this.getElementsByTagName('img')[0])
	{
		rollover(this.getElementsByTagName('img')[0]);
	}
	//***************************************************************************************************************************//

   // show the sub menu
	if(document.styleSheets[0].disabled == 0)
	{
		this.getElementsByTagName('ul')[0].style['position'] = 'absolute';
		if(this.getElementsByTagName('ul')[0].className == "liens")
		{
			this.getElementsByTagName('ul')[0].style.marginLeft = '-56px'
		}
	}

	this.getElementsByTagName('ul')[0].style['display'] = 'block';
    var currentNode=this;
    while(currentNode)
    {
		currentNode=currentNode.parentNode;
    }
    // clear the timeout
    eval ( "clearTimeout( timeout"+ this.id +");" );
	if(document.styleSheets[0].disabled == 0)
	{
   		hideAllOthersUls( this );
	}
}

// hide all ul on the same level of  this list item
function hideAllOthersUls( currentLi )
{
    var lis = currentLi.parentNode;
    for ( var i=0; i<lis.childNodes.length; i++ )
    {
        if ( lis.childNodes[i].nodeName=='LI' && lis.childNodes[i].id != currentLi.id )
        {
            hideUlUnderLi( lis.childNodes[i] );
        }
    }
}

// hide all the ul wich are in the li element
function hideUlUnderLi( li )
{
    var uls = li.getElementsByTagName('ul');
    for ( var i=0; i<uls.length; i++ )
    {
        uls.item(i).style['display'] = 'none';
    }
}

// Rollovers functions
function chgPointer()
{
	this.style.cursor = 'pointer';	
}

function rollover2()
{	
	this.style.cursor = 'pointer'; // change le pointer qd le rollover ne se fait pas sur un lien
	originalimgpath = this.src;
	var imgpath = this.src;
	var imgname = imgpath.split('/')[imgpath.split('/').length-1].split('.')[0];
	var ext = imgpath.split('/')[imgpath.split('/').length-1].split('.')[1];
	var newimgname = imgname+'-on.'+ext;
	var expr = eval("/."+ext+"/");
	if(imgpath.indexOf("-on")==-1 /*&& imgpath.indexOf("-in")==-1*/)
	{
		newimgpath = imgpath.replace(expr,"-on."+ext);
		this.src = newimgpath;
	}else{
		newimgpath = imgpath;
	}	
}

function rollout2()
{
	imgpath = this.src;
	if(originalimgpath.indexOf("-on")==-1)
	{
		var imgname = imgpath.split('/')[imgpath.split('/').length-1].split('.')[0];
		var ext = imgpath.split('/')[imgpath.split('/').length-1].split('.')[1];
		var newimgname = imgname+'.'+ext;
		var expr = eval("/-on."+ext+"/");
		var newimgpath = imgpath.replace(expr,"."+ext);
		this.src = newimgpath;
	}
}

/*************************************************************************************************************************************************/
//*******Modifier par thomas ( fonction rollover et rollout)******************************************************************************************************//
function rollover(objet)
{	
		
	objet.style.cursor = 'pointer'; // change le pointer qd le rollover ne se fait pas sur un lien
	originalimgpath = objet.src;
	var imgpath = objet.src;	
	
	var imgname = imgpath.split('/')[imgpath.split('/').length-1].split('.')[0];
	var ext = imgpath.split('/')[imgpath.split('/').length-1].split('.')[1];
	var newimgname = imgname+'-on.'+ext;
	var expr = eval("/."+ext+"/");
	if(imgpath.indexOf("-on")==-1 /*&& imgpath.indexOf("-in")==-1*/)
	{
		newimgpath = imgpath.replace(expr,"-on."+ext);
		objet.src = newimgpath;		
	}else{
		newimgpath = imgpath;
	}	
}

function rollout(objet)
{
	imgpath = objet.src;
	if(originalimgpath.indexOf("-on")==-1)
	{
		var imgname = imgpath.split('/')[imgpath.split('/').length-1].split('.')[0];
		var ext = imgpath.split('/')[imgpath.split('/').length-1].split('.')[1];
		var newimgname = imgname+'.'+ext;
		var expr = eval("/-on."+ext+"/");
		var newimgpath = imgpath.replace(expr,"."+ext);
		objet.src = newimgpath;
	}
}

// calcul de la hauteur d'un élement HTML
function calculateOffset(r,attr)
{
	var kb=0;
	while (r)
	{
		kb+=r[attr];
		r=r.offsetParent ;
	}
	return kb;
}
