// JavaScript Document
var isNav, isIE //variables distinguees par navigateur
if( parseInt(navigator.appVersion) >=4 ){
	if( document.all ){ //IE
		isIE = true;
		L=document.all
	}
	else{ //Netscape
		isNav=true;
		L=document.layers
	}
}
/*
	C L A S S E * M E N U
*/
function oMenuDynamique(nom,couleur_on,couleur_off, menu_width){ //constructeur
	this.menuItem = new Array(); //lien
	this.subMenu = new Array(); //sous menu: contenaires
	this.nom = nom;
	this.header = "MD_"
	this.prefixe = this.header+nom+"_";
	this.separateur = ".";
	this.timeOutID = null;
	this.activeMenu = null; //lien actif 
	this.activeCellMenu = null; //id du menu actif
	this.activePreviousMenu = null;
	this.classTable="headertable2";
	this.classTD="headercell2";
	this.classTR="headercell2";
//	this.active = null; //id de la cellule du lien actif
//	this.parentMenu = ""; //id du lien qui declenche le menu
	
	this.menu_width = menu_width;
	this.couleur_on = couleur_on;
	this.couleur_off = couleur_off;
}
	
	/*
		Ajout d un lien
		submenu: nom du sous menu de rattachement
		nom: nom du lien
		lien: url
		
	*/
	
	function oAddItem(submenu,nom,lien){ //ajoute un lien au sous-menu
		this.menuItem[this.menuItem.length]=new Array(submenu,nom,lien);
	}

	/*
		Ajout d un sous menu	
	*/
	function oAddSubMenu(nom){
		this.subMenu[this.subMenu.length]=nom;
	}

	function oWriteMenu(){
		var content="";
		for( p=0; p<this.subMenu.length; p++ ){ 
			var div_id=this.prefixe+this.subMenu[p]; //nom du div pour le menu

			content += '<div id="'+div_id+'" style="visibility:hidden; position:absolute;">'; //div /*style='visibility:hidden; position:absolute;'
			content += '<table cellpadding="0" cellspacing="1" width="'+this.menu_width+'" class="'+this.classTable+'">'; //table start

			for(i=0;i<this.menuItem.length;i++){ //identifie tous les liens du sous menu
				if( this.menuItem[i][0] == this.subMenu[p] ){
				var cell_id=div_id+this.separateur+i;
				content += '<tr bgcolor="'+this.couleur_off+'" class="'+this.classTR+'">';
					content += '<td id="'+cell_id+'" class="'+this.classTD+'" onMouseOver="oMouseOver(this.id,'+this.nom+');" onMouseOut="oMouseOut(this.id,'+this.nom+');" onClick="oMouseClick('+i+','+this.nom+');">';
						content += '<b>'+this.menuItem[i][1]+'</b>'; //item
					content += '</td>';
				content += '</tr>';
				}
			} //for i
			content += '</table>';
			content +='</div>';
		} //for p
		
		document.writeln(content);
		
}//oWrite

/*
	TIME
*/

function oTimeOut(){
//	alert();
	this.timeClear();
	this.timeOutID = window.setTimeout("oHideLayer("+null+","+this.nom+");",3000);
	return;
}

function oTimeClear(){
	window.clearTimeout(this.timeOutID);
	return;
}



/*
	M O U S E
*/

function oMouseOver(id,obj){//id cellule du tableau represenant un lien, obj nom du menu
	L[id].style.background=obj.couleur_on; //lien du sous menu allumé
	L[id].style.cursor = "hand";

//	L[obj.activeCellMenu].style.background = obj.couleur_on; //on re allume le td du menu
	
	//this.activeCurrentLink = id;
	
	obj.timeOut();
	return;
}


function oMouseClick(index_item,obj){//renvoie vers une page: simule href to
	var urlTo;
	urlTo=obj.menuItem[index_item][2]+"";
	document.location = urlTo;
}//oMouseClick

function oMouseOut(id,obj){
	L[id].style.background=obj.couleur_off;
	if( obj.mouseCatch(id) ){ //la souris est sortie des menus
		L[obj.activeMenu].style.background=obj.couleur_off;
		obj.activeMenu = null;
		obj.hideLayer(obj.activeMenu,obj);
		obj.activeCellMenu = null;
	}
	else{
		return;
	}
	return;
}//oMouseOut

function oMouseCatch(id){ //la souris est elle toujours sur un menu actif

var yMouse = window.event.clientY;
var xMouse = window.event.clientX;

var x0, y0 //origine
x0=this.getLeft(id); //la largeur totale de la cellule
y0=this.getTop(this.activeMenu); //la hauteur totale du menu

var x1, y1 //destination
x1=x0+parseInt(document.all[id].offsetWidth);
y1=y0+parseInt(document.all[this.activeMenu].offsetHeight) //FAUX - surestime la taille du layer ramenee aux hauteurs des cellules - pb OFFSET

	if( ( xMouse >= x1 ) || ( xMouse <= x0 ) 
		|| ( yMouse >= y1 ) || ( yMouse <= y0 ) ){
//		alert("out");
		return true;
	}
	else{
//		alert("on");
		return false;
	//	L[this.activeCellMenu].style.background = this.couleur_on; //on re allume le td du menu
	}
//	alert(x0+" < "+xMouse+" < "+x1+" ** "+y0+" < "+yMouse+" < "+y1);
}//catchMouse


/*
	A F F I C H A G E
*/

function oHideLayer(div_id,obj){ //ferme les menus inactifs

//if( div_id == undefined && obj.activeCellMenu){ //couleur off sur la cellule du menu
//	L[obj.activeCellMenu].style.background=obj.couleur_off;
//}



	var divList = document.getElementsByTagName ("div");

	for (i = 0; i < divList.length; i++)
	{

		  if (divList.item (i).id.match ("^MD.*$") && divList.item (i).id != div_id)
			{
			  divList.item (i).style.visibility = "hidden";
			}
	}
	return;
}

function oGetLeft(id){ //retourne la position x par rapport au coin superieur gauche de la fenetre
	var x=document.all[id].offsetLeft;
	var parent = document.all[id].offsetParent;

	while( parent ){
		x += parent.offsetLeft;
		parent=parent.offsetParent;
	}

	return x;
}
function oGetTop(id){ //retourne la position y par rapport au coin superieur gauche de la fenetre

	var y=document.all[id].offsetTop;
	var parent = document.all[id].offsetParent;
	while( parent ){
		y += parent.offsetTop;
		parent=parent.offsetParent;
	}
	return y;
}

function oGetHeight(id){ //retourne la position y par rapport au coin superieur gauche de la fenetre

//	var y=document.all[id].offsetHeight;
var y=document.all[id].offsetTop;
	var parent = document.all[id].offsetParent;
var t="";
	while( parent ){
t=t+" "+parent.tagName;
		y += parent.offsetTop;
		parent=parent.offsetParent;
	}
	alert("t "+t);
	return y;
}


function oActiveMenuHiliteOff(id){//mouse out sur une celle d un menu principal
	if( this.mouseCatch(this.activeMenu) ){ //la souris n est plus sur le menu ou un des liens du menu
		this.previousActiveMenu = this.activeMenu; //le lien peut etre superposé sur le div d un autre menu !!
//		this.activeMenu = null;
//		L[id].style.background=this.couleur_off;
	}
//	return;
}


function oShowLayer( id, active_menu, on ){
	var div_id=this.prefixe+active_menu; //nom du layer prefixe+sous-menu

	if ( on ){
		d="visible";
		this.activeMenu=div_id; //sous-menu actif
		this.activeCellMenu=id;
		this.hideLayer(div_id); //masque les layers autres que celui ci
		this.timeOut(); //lance le masquage automatique du menu
	}
	else {
		d="hidden";
	}

	oW =L[id].offsetWidth;
	oH = L[id].offsetHeight;
	oP = L[id].offsetParent;
	oL = L[id].offsetLeft;
	oT = L[id].style.offsetTop;
	wW = window.document.body.offsetWidth;
	wH = window.document.body.offsetHeight;
	wO = document.offset;
	sH = window.document.body.scrollHeight;
	sW = window.document.body.scrollWidth;

	var x,y;
	x = this.getLeft(id);
	y = this.getTop(id);
	//alert(y);
	/*
	 TO DO
	 Test des bords de l ecran
	*/
	if( x+L[div_id].offsetWidth > wW ){ // le menu excede la largeur de la fenetre PB
		x = wW - L[div_id].offsetWidth;
	}
	/*
	if( y+L[div_id].offsetHeight >= sH ){ // le menu excede la hauter de la fenetre
		y = sH + L[div_id].offsetHeight;
	}
	*/
	//position

	L[div_id].style.visibility=d;
	L[div_id].style.left = x;//-L[id].offsetPading;
	L[div_id].style.top = y+oH+L[id].offsetTop;

}//oShowLayer


//Declaration des methodes
oMenuDynamique.prototype.addSubMenu = oAddSubMenu;
oMenuDynamique.prototype.addItem = oAddItem;
oMenuDynamique.prototype.writeMenu = oWriteMenu;
oMenuDynamique.prototype.showLayer = oShowLayer;
oMenuDynamique.prototype.activeMenuHiliteOff = oActiveMenuHiliteOff;
oMenuDynamique.prototype.timeOut = oTimeOut;
oMenuDynamique.prototype.timeClear = oTimeClear;
oMenuDynamique.prototype.getLeft = oGetLeft;
oMenuDynamique.prototype.getTop = oGetTop;
oMenuDynamique.prototype.mouseOver = oMouseOver;
oMenuDynamique.prototype.mouseOut = oMouseOut;
oMenuDynamique.prototype.mouseClick = oMouseClick; // renvoie vers une page
oMenuDynamique.prototype.mouseCatch = oMouseCatch; //position x, y de la souris pour l affichage ou le masquage des layers
oMenuDynamique.prototype.hideLayer = oHideLayer;

// ===========================================================================
// F I N
// ===========================================================================