var booleen=true;

var oO =
{
	// Méthode d'agrandissement et de rétrécissement progressif d'un conteneur
	_Deroule:
	function Deroule(id, initHeight, finalHeight, interval,menu,classe,taillenormal)
		{	
			booleen=false;			
			// Identification de l'objet
			var oElem = document.getElementById(id);
			if(!oElem) return;
			// Contrôle des valeurs de variables
			if(typeof(initHeight || finalHeight || interval) != 'number') return false;
			// Contrôle d'éxécution de la méthode
			if(oElem.movement) clearTimeout(oElem.movement);
			// Initialisation des paramètres
			if( !oElem.style.height ) oElem.style.height = parseInt(initHeight) + 'px';
			var iDimY = parseInt(oElem.style.height);
			
			if(iDimY ==finalHeight){
				booleen=true;				
				return true;				
			}else if(iDimY <= (finalHeight+5) && classe==0){
				oElem.className='hide';
				booleen=true;
			}
			
			// Conditions d'incrémentation et décrémentation
			if(iDimY < finalHeight)
			{
				var dist = Math.ceil((finalHeight - iDimY)/10);
				iDimY = iDimY + dist;
			}
			if(iDimY > finalHeight)
			{
				var dist = Math.ceil((iDimY - finalHeight)/10);
				iDimY = iDimY - dist;
			}
			oElem.style.height = iDimY + 'px';
			
			if(menu!=1000){
				if(document.getElementById('menu' + menu)){
					if(!document.getElementById('menu' + menu).style.height){
					 	document.getElementById('menu' + menu).style.height=document.getElementById('menu' + menu).offsetHeight;
					}
				if(classe==1){
					document.getElementById('menu' + menu).style.height=eval(parseInt(document.getElementById('menu' + menu).style.height) + (dist))+ 'px';
				}else{
					if(!dist) dist=0;
						var resultat= parseInt(document.getElementById('menu' + menu).style.height)-dist;							
						document.getElementById('menu' + menu).style.height=String(resultat)+"px";
				}}				
			}
			
			// Répétition de la méthode
			var repeat = "oO._Deroule('" + id + "'," + initHeight + "," + finalHeight + "," + interval + "," + menu +"," + classe +","+taillenormal+")";
			oElem.movement = setTimeout(repeat, interval);			
			return true;
		}

};


/////////////////////////////////////////////
//
// Script de [Menu Vertical] - Fichier JS
// Création: 10/10/2005
// Dernière modification: 01/07/2006 
// by haryou [haryoudev.free.fr] - haryoudev@free.fr
//
/////////////////////////////////////////////
//page ou l'on se trouve
if($page="details"){ var ouvert1=0;var ouvert2=0;var ouvert3=0;}
 //var menu_rectractable = "ok";
 var menu_rectractable = "";
 
<!---------------------------------------------  Menu javascript  ---------------------------------------------->
function sousmenu_hide(actif) {
if(booleen==true){
	for (var i=0; i<categorie.length; i++){
	if(document.getElementById('menu' + i).className!=""){
 		if(i==actif){
			if(document.getElementById('menu' + i).className=='sousmenu'+i){				
				iDivHeight=document.getElementById('contenu' + i).offsetHeight;
				document.getElementById('a' + i).className="menu1"; //changement de couleur
				document.getElementById('a' +i).onmouseout=function(){this.className="menu1";};
				oO._Deroule('menu' + i, iDivHeight, 0, 30,1000,0, iDivHeight);				
				/************************************************************/
				/**************************************************************/				
			}else{
				document.getElementById('menu' + i).className='sousmenu'+actif;
				iDivHeight=document.getElementById('contenu' + i).offsetHeight;
				document.getElementById('a' + i).className="menuselect"+actif; //changement de couleur				
				oO._Deroule('menu' + i, 0, iDivHeight, 30,1000,1, iDivHeight);				
			}
		}else{
			if(document.getElementById('menu' + i).className=='sousmenu'+i){
				iDivHeight=document.getElementById('contenu' + i).offsetHeight;
				document.getElementById('a' + i).className="menu1"; //changement de couleur
				document.getElementById('a' +i).onmouseout=function(){this.className="menu1";};
				oO._Deroule('menu' + i, iDivHeight, 0, 30,1000,0, iDivHeight);				
			}
		}
	}
}
}

}

function sousmenu2_hide(actif1,actif2) {
if(booleen==true){
	actif=actif1+","+actif2;
	i=actif1;	
if(document.getElementById('menu'+i).offsetHeight >=(document.getElementById('contenu'+i).offsetHeight-5)){
		for (var j=0; j<lien.length; j++){
			
			var tmp=i+','+j;
			if ( document.getElementById('sousmenu'+tmp) ) {
				if(document.getElementById('sousmenu' + tmp).className!=""){
					  if(tmp == actif){				
							if(document.getElementById('sousmenu' + tmp).className=='sousmenu'+actif1){
								iDivHeight=document.getElementById('souscontenu' + tmp).offsetHeight;	
								document.getElementById('a' +tmp).className="menu2";
								document.getElementById('a' +tmp).onmouseout=function(){this.className="menu2";};
								oO._Deroule('sousmenu' + tmp, iDivHeight, 0, 25,i,0, iDivHeight);								
							}else{
								document.getElementById('sousmenu' + tmp).className='sousmenu'+actif1;
								iDivHeight=document.getElementById('souscontenu' + tmp).offsetHeight;								
								document.getElementById('a' +tmp).className="menuselect"+i;
								oO._Deroule('sousmenu' + tmp, 0, iDivHeight, 25,i,1, iDivHeight);
							}
					  }else{
						  if(document.getElementById('sousmenu' + tmp).className=='sousmenu'+actif1){
								iDivHeight=document.getElementById('souscontenu' + tmp).offsetHeight;	
								document.getElementById('a' +tmp).className="menu2";
								document.getElementById('a' +tmp).onmouseout=function(){this.className="menu2";};
								oO._Deroule('sousmenu' + tmp, iDivHeight, 0, 25,i,0, iDivHeight);
}}}}}}}

}

function sousmenu3_hide(actif,actif2,actif3) {
	if(actif!=""){
		document.getElementById('menu' + actif).className="sousmenu"+actif;
		document.getElementById('a' + actif).className="menuselect"+actif;
		document.getElementById('a' + actif).onmouseout=function(){};
	}
	if(actif2!=""){
		var val="sousmenu"+actif+','+actif2;
		var vala="a"+actif+','+actif2;
		if(document.getElementById(val)){document.getElementById(val).className="sousmenu"+actif;}
		if(document.getElementById(vala)){document.getElementById(vala).className="menuselect"+actif;}
		if(document.getElementById(vala)){document.getElementById(vala).onmouseout=function(){};}
	}
	if(actif3!=""){
		var vala2="a"+actif+','+actif2+','+actif3;
		document.getElementById(vala2).className="menuselect"+actif;
	}
}

/////////////////////////////////////////////// DEBUT DU DOCUMENT ////////////////////////////////////////

//var tab_onclick= new Array();
rectract_ok = menu_rectractable == "ok" ? "onmouseover='sousmenu_hide(-1)'" : '';

document.write("<table cellspacing='0' cellpadding='0' width='100%' border='0'><tbody>");
 for (var i=0; i<categorie.length; i++) {
   document.write("<tr class='cat_titre_nonselect'>");
  
    document.write("<td width='2%' " + rectract_ok + " class='bordure_cat_g'>&nbsp;</td>");
	document.write("<td id='"+i+"' height='20' width='96%' class='bordure_cat' onclick='sousmenu_hide(" + i + ")'>");
	if(categorie[i][1]!=""){
		document.write("&nbsp;&nbsp;<a href='"+categorie[i][1]+"' target='"+categorie[i][2]+"' id='a"+i+"'  onmouseover=\"this.className='menuselect"+i+"'\"  onmouseout=\"this.className='menu1'\"  onclick=\"this.onmouseout=function(){this.className='menuselect"+i+"';}\" class='menu1'>" + categorie[i][0]);
	}else{
		document.write("&nbsp;&nbsp;<a href='#' id='a"+i+"' class=\"menu1\" onmouseover=\"this.className='menuselect"+i+"'\"  onmouseout=\"this.className='menu1'\"  onclick=\"this.onmouseout=function(){this.className='menuselect"+i+"';}\">" + categorie[i][0]);
	}
   document.write("</a></td><td width='2%' " + rectract_ok + " class='bordure_cat_d'>&nbsp;</td></tr>");
   document.write("<tr>");
   document.write("<td "+ rectract_ok + "></td>");
   document.write("<td><div class='hide' id='menu" + (i) + "'><div id='contenu"+i+"'>  <table width='90%' >");
   var j=0;
	 for (url in lien[i]) {			
			if(lien[i][url] == ""){				
				document.write("<tr onclick='sousmenu2_hide(" + i +","+ j +")'>");			  	
				document.write("<td width='16'></td><td class='sousmenu_nonselect' onmouseover=\"this.className='sousmenu_select';\" onmouseout=\"this.className='sousmenu_nonselect';\"><a id='a"+i+","+j+"' href=\"#\" onmouseover=\"this.className='menuselect"+i+"'\"  onmouseout=\"this.className='menu2'\" onclick=\"this.onmouseout=function(){this.className='menuselect"+i+"';}\" class='menu2'>" + url + "</a></td></tr>");				
				document.write("<tr><td width='16'></td><td><div class='hide' id='sousmenu" + (i+','+j) + "' ><div id='souscontenu"+(i+','+j)+"'><table width='100%'>");
				var x=0;
				for(url2 in lien[i][url]){
					document.write("<tr onclick=\"document.location.href='" + lien[i][url][url2] + "'\">");
			 		document.write("<td width='5'></td><td class='sousmenu_nonselect' onmouseover=\"this.className='sousmenu_select';\" onmouseout=\"this.className='sousmenu_nonselect';\"><a href='#' id='a"+i+","+j+","+x+"' class='menu3' onmouseover=\"this.className='menuselect"+i+"';\" onmouseout=\"this.className='menu3';\">" + url2 + "</a></td></tr>");
				x++;
				}
				document.write("</table></div></div></td></tr>");
				//if(i==0 && j==0){ sousmenu2_hide(0,0)}				
				j++;				 
			}else{
				if(i==4){
					  document.write("<tr onclick=\"document.location.href='" + lien[i][url] + "'\"     onclick=\"sousmenu2_hide('-1')\">");
					  document.write("<td width='16'></td><td class='sousmenu_nonselect' onmouseover=\"this.className='sousmenu_select';\" onmouseout=\"this.className='sousmenu_nonselect';\"><a id='a"+i+","+j+"' href=\""+lien[i][url]+"\" class='menu2'>" + url + "</a></td></tr>");
				}else{
					  document.write("<tr onclick=\"document.location.href='" + lien[i][url] + "'\"     onclick=\"sousmenu2_hide('-1')\">");
					  document.write("<td width='16'></td><td class='sousmenu_nonselect' onmouseover=\"this.className='sousmenu_select';\" onmouseout=\"this.className='sousmenu_nonselect';\"><a id='a"+i+","+j+"' href=\"javascript:(function (){if(this.className=='menu2'){this.className='menuselect"+i+"'}else{this.className='menu2'}})();\" class='menu2'>" + url + "</a></td></tr>");
				}
			}			 
	 }
   document.write("</table></div></div></td><td " + rectract_ok + "></td><td></td></tr><tr " + rectract_ok + "><td colspan='4'></td></tr>");
 }
document.write("</tbody></table>");

<!------------------------------------------------------------------------------------------------------------------------------>