var shownMenu = new String('0');//GOLDIE 20061004 0;// id du menu presentement développé
var selectedMenu = new String('0');// id du menu dont une option vient d'être cliqué

/*  DE20061004:
suite a getstion "remanence menuH selected", on sapercoit qu'en fait 
les items qui ont change de style le conserve entre 2 escamotages/reaapartion
de leur menuList dapaprtenance : c'est en fait normal.
Sans rien faire aors, on observe qu'à force de selction-Onclick ditem de differents
menus, on voit que TOUTES les item  quon peut voir deroulee ont gardé leur new style 
"higlighted".
CE NEST PAS CORRECT.
2 sol theo :
soit 1 seul item, la cliked GARDE le style hihligted
donc nec gection genre celle des menus.

SOIT AUCUNE ! = sol de facilité mais bof.

*/
var selectedOption = new Object();
//alert("sel option is null ?"+ (selectedOption.className == undefined));
//alert("sel option is null ?"+selectedOption.className);
//alert("sel option is "+selectedOption.id);
//var selectedOption = new String('0');; // Object !?
// pb vs id car la premiere porte le nom _f !

// i = menu actuellement "actif" mais pas developpé.

var tid = 0;// timer d'escamotage du menu développé




// ---------------------------------------------------------------------------------
// 				Window/Document Management
// ---------------------------------------------------------------------------------


function OnMouseOutFromMenuBar() // to be callded from onlcickbody but optional...
// may serve to other but pas bien !
{
// collapser le menu en cours si il existe !
if (shownMenu != '0') collapseMenu(shownMenu);
shownMenu = '0';// DE20061004 : avant ENTIER 0 et pas string

//window.status = 'OnMouseOutFromMenuBar';

	//gold ..reflechir RAF URGENT TODO onHeadOverById('0');

}

var cpt2 = 1;//0;
var cptout = 0;// lier cette var a objet univoque js MyMB

function bof_OnMouseOutFromMenuBarDIV()
{
cpt2 = cpt2 -1;

cptout = cptout+1;
//if (cptout == 10) { cptout= 0; OnMouseOutFromMenuBar();}
window.status= 'DIV cptout='+ cptout +' cpt2='+cpt2;
//	if (cpt2 == 0) { cpt2=1; OnMouseOutFromMenuBar();}
//alert('cptout='+ cptout);

// HELAS ne marche pas bien !
}

function onTimeout()
{
OnMouseOutFromMenuBar();
}


// ---------------------------------------------------------------------------------
// 				MenuHEAD Management
// ---------------------------------------------------------------------------------

// ---------------------------------
// MenuHEAD Format Management Tools
// ---------------------------------

function highlightMenuHead(obj) { obj.className = 'overMenuHead'; } // cf onOver...
function shadowMenuHead(obj) 	{ obj.className = 'menuHead'; } 

var cptx= 0;

function highlightMenuHeadById(eid) // DE20061904
{
/* goldie
menuH = document.getElementById(eid);// e.g. : m2_items
menuH.className = 'overMenuHead';
*/

highlightMenuHead(document.getElementById(eid));

	// window.status = 'coucou2 = '+ cptx; cptx++ ;

/* PB : on passe ici mais pas de highlight sur onlcik item: ? race condition
avec onclik body?
*/
}

function shadowMenuHeadById(eid) // DE20061904
{
shadowMenuHead(document.getElementById(eid));
/* goldie
menuH = document.getElementById(eid);// e.g. : m2_items

// COND a confirmer ici RAF URGENT 20061004

//if (eid != selectedMenu) // cette cond est nlle 20061004 : on ne deselcete JAMAIS le dernier menuh seleted
// NO MORE ICI ! si un controle doit etre fait cest dans lappelant  !

menuH.className = 'menuHead';
*/
}


function showMenu(mid) // mid = id of MenuHead
// -------------------
{
	// NO MORE NEEDED 20061005if (mid == '0') return 0;

menuH = document.getElementById(mid);// e.g. : m2_items

	// contrad avec cidessous !menuH.style.backgroundColor='#71D8FF';//nec ici car ne doit pas etre permenent sinon vestige de grande bande verticale de fond de colonne!

// HIGHLIGHT graphique : code a faire SAUTER Eventuellement qd rehighlight marchera vs items

/*
menuH.style.backgroundColor = "#295FFD" ;
menuH.style.color = "#FFFFFF";
*/
	//menuH.className = 'overMenuHead';
highlightMenuHead(menuH);

	// nok_ie6 hstyle = window.getComputedStyle(menuH, "");

menuX = document.getElementById(mid+'_items');// e.g. : m2_items


/* GOLDIE HERE:  GOLD GOLD */
// en effet ici CA FORCE le calcul de menuX.offsetWidth
// qui des lors ne vaut pas 0 et peut donc etre soumis a test pour voir si < hdwidth

	//	menuX.offsetWidth = "100px";

menuX.style.display = 'inline';
menuX.style.visibility = 'visible';
	
	//menuX.setAttribute("width", "10px");
	atd = document.getElementById(mid+'_f');
	atd.style.width = "1px";// semble ignoree par ie ff op si trop petit: good



	// GOLD GOLD menuX.style.backgroundColor='#71D8FF';//nec ici car ne doit pas etre permenent sinon vestige de grande bande verticale de fond de colonne!
// PB NOW que cideesu en cmt: fond transp de menulist  !
// DAUTANT PLUS QUE : margin et padding MARCHENT moins bien que cellspacing-padding
// et ce meme si je regle list et item ?cause tR?!!!



// ACU vs opera et ses tranees :maybe solved en mettnt setvisible en dernier !

//menuX.style.backgroundColor='#FF0000';//nec ici car ne doit pas etre permenent sinon vestige de grande bande verticale de fond de colonne!



/* bof
menuX.style.top = menuH.style.top + menuH.style.height + 25;
menuX.style.left = menuH.style.left;
*/
// nb offsetXXX en readonly : SEE menu.js de opera TRES INSTRUCTIF !

var atop = 0;
atop = menuH.offsetTop + menuH.offsetHeight +5;// + 5;

//alert(' otop='+menuH.offsetTop + ' oheight='+menuH.offsetHeight+' top='+ atop);
	// ok menuX.style.top = "50px";//toString(top)+"px";
//menuX.style.top = toString(top)+"px";// plnate ie et ff
menuX.style.top = atop+"px";// plnate ie et ff

// ok menuX.style.left = "100px";//
menuX.style.left = menuH.offsetLeft +"px";

// URGENT TODO : le tostring na pas marché dans : menuX.style.left = tostring(menuH.offsetLeft) +"px";
// par isNan donc CAR oleft EST DEJA une string et trostring nopere pas dessus !
// MAIS BIZARREMENT le top = off+25 marche comme si of etatit un nb ?!!!
// excplication :=? conversion auto en nb ?
// RAF a eclaaicir !!!



/* DE esthetique :
now que les menus flottent, ils apparraissent souvent maigrichons par rapport
a leurs titres qui prendront tjrs tte la largeur du bandeau haut :
sol elts: ? un vrai menu ne prend pas tout le bandeau haut (case de padding=remianing?)
caller la largeur du menu sur menuhead si maigrichon, niet sinon...
*/



	//GOLD A RES TURGENT 
/*menuX.style.minWidth = menuH.offsetWidth +"px"; // good mais pas ie?je crois
URGENT TODO RAF acu
*/

/* GOLD GOLD URGENT A REST */

//if (menuX.offsetWidth < menuH.offsetWidth) alert('xw='+ menuX.offsetWidth+' hw='+menuH.offsetWidth);

if (menuX.offsetWidth < menuH.offsetWidth) 
{
	atd = document.getElementById(mid+'_f');
	atd.style.width = menuH.offsetWidth +"px";


    //window.status = 'mid='+mid+' 11xw='+ menuX.offsetWidth+' hw='+menuH.offsetWidth +' hw='+atd.style.width;


//goldie mais ff-op nadatent pas les cells en consequence 
	// DANGER MORTEL ABSOLU :   menuX.style.width = menuH.offsetWidth +"px";

}
//else window.status = '22xw='+ menuX.offsetWidth+' hw='+menuH.offsetWidth;

//	atd = document.getElementById(mid+'_f')
//atd.style.width = menuH.offsetWidth +"px";


/*
XXXXXXXXX urgent tu es ici le 27/09 2006 FAIRE un test a part de resizs de table
en js : ca devrait marcher en op et ff : je ne me resigne pas a ca !
*/
	//menuX.setAttribute("width", "50%");
/*menuX.setAttribute("cellspacing", "0");
menuX.setAttribute("cellpadding", "0");
*/

//XXXXXXXXXXXX


// GOLDISSIME A REST SI PB
/*
menuX.style.display = 'inline';
menuX.style.visibility = 'visible';
*/


/*
menuX.style.display = 'none';
menuX.style.visibility = 'hidden';

menuX.style.display = 'block';//'inline';
menuX.style.visibility = 'visible';
*/
//menuX.normalize();
// GOLD document.getElementById(mid+'_items_t').style.width = menuX.style.width;


//acolor = new Color(menuX.style.backgroundColor);

// window.status = 'shown mid ='+mid+" bgcolor="+ acolor.toString();
//window.status = ' tttop='+hstyle.top+' hbg='+ menuH.style.position +' hx='+parseInt(menuH.style.left)+' hy='+menuH.style.top + ' Mx='+menuX.style.left+' My='+menuX.style.top;

//		window.status = ' Htop='+menuH.offsetTop+' Hleft='+menuH.offsetLeft+ ' Xtop='+menuX.offsetTop+' Xleft='+menuX.offsetLeft;
}





function collapseMenu(mid) // mid = id of MenuHead
// -----------------------
{
	// DE20061005 GOLDIE URGENT if (mid == '0') return 0;// RAF : tst a virer DE20061005 car devenu inutile?
// NIET utile car onmoueoutofmenubar...a creuser BON ctrl fait par appelant

menuH = document.getElementById(mid);// e.g. : m2_items


	//GOLDIE??menuH.style.backgroundColor= 'transparent';//nec ici car ne doit pas etre permenent sinon vestige de grande bande verticale de fond de colonne!
// URGENT TODO ci dessus : no more nec ? en effet no more nec cf op car table au leiu dedivp? ou update visible en fin de maj style?no se

/*gold	menuH.style.backgroundColor = "#71D8FF" ;
	menuH.style.color = "#000000";
*/

if (mid != selectedMenu) // cette cond est nlle 20061004 : on ne deselcete JAMAIS le dernier menuh seleted
{
// goldie menuH.className = 'menuHead';
shadowMenuHead(menuH);
}

// PB URGENT TODO RAF : redevenir transparent?

menuX = document.getElementById(mid+'_items');// e.g. : m2_items


menuX.style.display = 'none';
menuX.style.visibility = 'hidden';

	//menuX.style.backgroundColor='#FF0000';

}


// ---------------------------------
// MenuHEAD Event Handlers
// ---------------------------------



function _overMenuHead(obj)
// ------------------------
// function onHeadOverById(eid)
{
eid = obj.id;// UTILE pour showmenu-collapse ET TOUJOURS INDISPENSABKE vs convsetntions de noms

	//	window.status = 'shown id = ' + shownMenu + ' element id = ' + eid;

	// GOLDIE GOLDIE 20060728 


	//if (eid != '0') // DE20061004 auparavant 0 entier

if (true) // DE20061005 eid 0 devenu inutile
{
clearTimeout(tid);
	// goldie highlightMenuHeadById(eid);
highlightMenuHead(obj);

/* GOLDIE DE20061904
menuH = document.getElementById(eid);// e.g. : m2_items
menuH.className = 'overMenuHead';
*/
}

/* Principe :
Si CE menu n'est PAS sélectionné, il le devient et le precedent est collapsé.
Si CE menu est DEJA sélectionné, alors on ne fait rien ici car on laisse le user
y promener.

NB: sur selection option : le menu en cours est collapsé et l'IFRAME va à l'url...
why an iframe ? CAR au load de lapage il ne faut pas ecraser le menu.
why not just a frame : parce que je ne suis pas sur de pouvoir derouler mon menu
en debordant sur la frame document du dessous !

Why not just positioning abosolu de menubar puis div de doc ?
car je ne sais pas charger une div a partir dun htm donné !

*/

/* bof new
	showMenu(eid);
	shownMenu = eid;
*/

/* gold meme en gestion in out */




// GOLDIE OPTIM a virer depuis gestion onselhead reamanent after click on item 
// GOLD GOLD 20061004 if (eid != shownMenu)
if (true)
{
	// goldie no more car fait plushaut DE20061005 
	// clearTimeout(tid);

if (shownMenu != '0') collapseMenu(shownMenu);
showMenu(eid);
shownMenu = eid;
}

}


function _overMenuHeadOld(obj)
{
//		_overMenuItem(obj);// ici on est sur que ob vaut menuhead

/* nb : highlight contient stopp timer
ET onoverbyid aussi ! donc on PEUT le faire sauter
gare si on overbyid ne gere pas le cas 0 vs timeout...
*/

onHeadOverById(obj.id);
}




function _overMenuHead_0(obj)
// --------------------------
{
//alert('element id = ' + obj.id);
window.status = 'element id = ' + obj.id;
menuX = document.getElementById('menu_'+obj.id);

// ok ie5ff15op9 window.status = 'menu id is ' +menuX.id;

// okffop nok ie 
window.status = 'menu id is ' +menuX.getAttribute('ID')+' s='+menuX.getAttribute('style');
//pb : ie affiche s=object; en fait ie considere le style dans larbre du dom : ce qui est FAUX

//astyle = menuX.getAttribute('STYLE');
//astyle =menuX.getAttribute('style');// aprioiri renvoie un CSSStyleDeclaration
astyle = menuX.style;


// nok window.status = 'menu id is ' +menuX.getAttribute('ID')+' s='+menuX.getAttribute('STYLE').value;

//menuX.style = "{ color: #FF0000; height: 2pt; top: 20px; visibility: visible }";
//menuX.setAttribute('style', "{ color: #FF0000; height: 2pt; top: 20px; visibility: visible }");
// nok ie none ns47 document.ids['menu_mh13'].style = '{ color: #FFFF00; height: 2pt; visibility: visible }';

//
//menuX.style = "{ color: #FF0000; height: 2pt }";// ok que opera9

//GOLD menuX.style.color = "#FF00FF";// Ok ie5-6 ff15 et op9 !
	astyle.color = "#FF00FF";// ?que ie56 si astyle=getAttr; GOLD ie56ff15op9 si astyle = menuX.style!

//good astyle.top = '30px';
//bof astyle.z-index = '1';

//astyle.setProperty('color',"#FF00FF", "important");// nok ff ie op, et pourant conforme dom2 css


//menuX.setAttribute('style', "{ color: #FF0000 }");// ok ff15xp op9 nok_ie6! NOK ff1507 sous wme CAR options always user colors!

//menuX.style.setProperty('color', '#FF00FF');// dontwork
//menuX.style.setAttribute('color', '#FF00FF');// ok ie5, nok ie6

// OK IE5 menuX.style.setAttribute('color', "#FF0000");
window.status = 'menu id is ' +menuX.getAttribute('ID')+' s2='+menuX.getAttribute('style') +' s21='+menuX.style.cssText+' s22='+menuX.style;


document.getElementById('hd2').style.top = 0;
// nok car pas de style inline sur tdh2? faux cest because id pas bon tdh2et non tdhd2
// document.getElementById('tdh2').style.backgroundColor = '#c0c0c0';//'inline';// SEE OTHER VALUES RAF
document.getElementById('tdh2').style.backgroundColor = '#44BBBB';//'inline';// SEE OTHER VALUES RAF

document.getElementById('hd2').style.display = 'inline';//'inline';// SEE OTHER VALUES RAF
document.getElementById('hd2').style.visibility = 'visible';

}



function _outofMenuHead(obj)
// -------------------------
//function onHeadOutById(eid)
{

/* DE20061005 NO MORE need to test vs special value '0' ?
eid = obj.id;

car no more called vs fictive shownmenuid0.

if (eid != '0') // DE20061004 auparavant 0 entier
{
tid = setTimeout('onTimeout()', 1000);

//collapseMenu(eid);
}
*/
tid = setTimeout('onTimeout()', 1000);// DE20061005 


}

function _outofMenuHeadOld(obj)
{
onHeadOutById(obj.id);
//collapseMenu(shownMenu);

return 0;
/*
tid = setTimeout('onTimeout()', 1000);

// _outofMenuItem graphique :
*/
// nb en fait desel contient deja ET timeiut et desel gr !
_outofMenuItem(obj);
}


// ---------------------------------------------------------------------------------
// 				MenuITEM Management
// ---------------------------------------------------------------------------------

// ---------------------------------
// MenuITEM Format Management Tools
// ---------------------------------

function shadowMenuItem(obj) 	{ obj.className = "menuItem"; }
function highlightMenuItem(obj) { obj.className = "overMenuItem"; }

// ---------------------------------
// MenuITEM Event Handlers
// ---------------------------------

// RAF URGEN TODO 20061004 : 
// cest le classes qui va generer le code clikedMenu + USERCALL
// ICI ON NE SOCCPUE PAS DU USER WORLD !

function _clickedMenuItem(mid, obj)
// --------------------------------
{
// Collapser la MenuList

OnMouseOutFromMenuBar();
clearTimeout(tid);

// Surligner la MenuHead (assombrir la precedente si elle existe)

highlightMenuHeadById(mid); 
if ((selectedMenu != "0") && (selectedMenu != mid)) shadowMenuHeadById(selectedMenu);
selectedMenu = mid;


// Surligner l'option choisie (assombrir la precedente si elle existe)
// NB : en fait l'option clickee est DEJA surlignee du fait du over qui a précédé le click !

// DE: + blindage contre double sel !
if ((selectedOption.className != undefined) && (selectedOption != obj)) shadowMenuItem(selectedOption);//GOLD20061004selectedOption.className = "menuItem"; //_outofMenuItem(selectedOption); // QUE GR !
selectedOption = obj;
}

/* URGENT : a caser sur outof...
	// NOMORE mh5clicked=true;' 
OnMouseOver='_overMenuItem(this)'  
OnMouseOut='window.status=window.status + " out ";
//GOLD if (!mh5clicked) _outofMenuItem(this); 
if (this != selectedOption) _outofMenuItem(this); 
	// NOMORE mh5clicked=false;'
*/



function _outofMenuItem(obj)
// -------------------------
{
/* GOLD GOLD GOLD 
obj.style.backgroundColor = "#71D8FF" ;
obj.style.color = "#000000";
*/

// DE20061004 
if (obj != selectedOption) shadowMenuItem(obj);//GOLDIE obj.className = 'menuItem';

// GOLDIE before DE20061004 obj.className = 'menuItem';



//cpt2 = cpt2 - 1;
tid = setTimeout("onTimeout()", 1000);

/* NB IMPORTANT :
on pourrait se dire tid associé à objetjs MB et passer la var js MB en prm,
ce serait canonique.
MAIS inutile CAR : tid peut a juste titre etre consideré comme unique pour toutes
les menus bar dun site puisque evidemment une seule est active a la FOIS !
donc tid sera var du menu.js et pas var de mb.
nb de plus toute page faisant include de menu.js recoit de tte facons SA copie
locale de ctte var ET il ny a quun menu par page (oui oui meme si y a des tordus
qui voudraient que ce soit autrement// en fait voir java et win32 : il ny a quune menubar
par window !

*/
}

function _overMenuItem(obj)
// ------------------------
{
// Annuler timer de collapsing total du menu

clearTimeout(tid);

// DE Esthetique : deselecter la tete de menu

if (shownMenu != selectedMenu) // cette cond est nlle 20061004 : on ne deselcete JAMAIS le dernier menuh seleted
{
//menuH.className = 'menuHead';
document.getElementById(shownMenu).className = 'menuHead';
}

// GOLD GOLD 20061004	document.getElementById(shownMenu).className = 'menuHead';



// raf : du coup rehighligh SYSTEMATIQUE sur resel MEME si eid=shownmenu!


/*
window.status = "org bgcol="+obj.style.backgroundColor;
// Principe : text goes to lighter, bg to darker
var bgcolor = new Color(obj.style.backgroundColor);
var fgcolor = new Color(obj.style.color);

//alert("bgcol is "+ bgcolor.toString());

bgcolor.darker();
fgcolor.lighter();

// ligne a pb sous FF15
//alert("bgcol is "+ bgcolor.toString());

obj.style.backgroundColor = bgcolor.toString();"#7f7f7f" ;// = document.getElementById(mid);// e.g. : m2_items

obj.style.color = "#FFFFFF";//fgcolor.toString() ;// = document.getElementById(mid);// e.g. : m2_items
*/



// VITALISSIME GOLD GOLD GOLD 20060928
/*
	obj.style.backgroundColor = "#295FFD" ;
	obj.style.color = "#FFFFFF";
*/
// setattr class ok for op-ff, not for ie
// setattr className ok for ie, not for op ff !
	//obj.setAttribute('className', 'overMenuItem');

// GOLDIE 20061004 obj.className = 'overMenuItem';

highlightMenuItem(obj);

// cidessus sytaxe ok FOR op ie ff MAIS pb de rollover-back : pas defet highliht
// sans doute car on out jecrase avec attr style= qui est TJRS le plus fort !


//cpt2 = cpt2 + 1;
}

