
// Gestion des menus/sous-menu
//----------------------------
//
// La page HTML/PHP utilisant ce fichier doit respecter les choses suivantes :
//  - appeler la méthode setButtonFolder() pour passer le répertoire de stockage des images des choix de menu
//  - appeler la méthode initImagesButton() ne passant les 2 Array des images des choix de menu
//  - configurer des éléments HTML qui traitemnt les événements onmouseover et onmouseout :
//		Si les choix sont des bouttons :
//      --> onmouseover="setOverImg('1','');overSub=true;showSubMenu('submenu1','button1');" 
//		Si les choix sont des UL/LI
//      --> onmouseover="overSub=true;showSubMenu('submenu1','button1');" 
//
//				showSubMenu() passe le subMenu à afficher et l'élément (référencé par un id) par rapport auquel
//                   le sous-menu s'affiche
//
//		--> onmouseout="setOutImg('1','');overSub=false;setTimeout('hideSubMenu(\'submenu1\')',delay);" 
//	- configurer des éléments HTML ayant un id qui sert de répère pour l'affichage des sous-menu
//--------------------------------------------------------


var buttonFolder = "A VALORISER par méthode setButtonFolder()";

var upSources = "A VALORISER par méthode initImagesButton()";
var overSources = "A VALORISER par méthode initImagesButton()";

var subInfo;


//*** SET SUB MENU POSITION ( RELATIVE TO BUTTON ) ***//
var xSubOffset = 0;
var ySubOffset = 27;


//*** NO MORE SETTINGS BEYOND THIS POINT ***//
var overSub = false;
var delay = 1000;
var totalButtons;  // est initialisé suite à l'appel à initImagesButton()



// Initialisation répertoire de stockage des boutons associés aux choix de menu
//-----------------------------------------------------------------------------
function setButtonFolder(folder) {
	//alert('Folder=' + folder);
	
	buttonFolder = folder;
}

// Initialisation des fichiers associés aux choix de menu
//--------------------------------------------------------
function initSousMenus(lst_img_up, lst_img_down, lstSousMenus) {
	

	upSources = new Array(lst_img_up.length);
	overSources = new Array(lst_img_down.length);

    for(var i=0; i<lst_img_up.length; i++)
	{
       		upSources[i] = lst_img_up[i];

	}
   		
	 for(var i=0; i<lst_img_down.length; i++)
	{
    	overSources[i] = lst_img_down[i];

	}

	totalButtons = upSources.length;
	
	subInfo = lstSousMenus;
	
	traceDivSubMenu();
}


// Tracé des Div associées aux sous-menus
//--------------------------------------------------------
function traceDivSubMenu(lstSousMenu) {

// GENERATE SUB MENUS
for ( x=0; x<totalButtons; x++) {
	
	// SET EMPTY DIV FOR BUTTONS WITHOUT SUBMENU
	if ( subInfo[x+1].length < 1 ) { 
	
		document.write('<div id="submenu' + (x+1) + '">');
	// SET DIV FOR BUTTONS WITH SUBMENU
	} else {
	
		
		document.write('<div id="submenu' + (x+1) + '" class="dropmenu" ');
		document.write('onMouseOver="overSub=true;');
		document.write('setOverImg(\'' + (x+1) + '\',\'\');"');
		document.write('onMouseOut="overSub=false;');
		document.write('setTimeout(\'hideSubMenu(\\\'submenu' + (x+1) + '\\\')\',delay);');
		document.write('setOutImg(\'' + (x+1) + '\',\'\');">');


		document.write('<ul>');
		for ( k=0; k<subInfo[x+1].length-1; k++ ) {
			document.write('<li>');
			document.write('<a href="' + subInfo[x+1][k+1][1] + '" ');
			document.write('target="' + subInfo[x+1][k+1][2] + '">');
			document.write( subInfo[x+1][k+1][0] + '</a>');
			document.write('</li>');
		}
		document.write('</ul>');
	}
	document.write('</div>');
}
}


//*** MAIN BUTTONS FUNCTIONS ***//
// PRELOAD MAIN MENU BUTTON IMAGES
function preload() {
	for ( x=0; x<totalButtons; x++ ) {
		buttonUp = new Image();
		buttonUp.src = buttonFolder + upSources[x];
		
		buttonOver = new Image();
		buttonOver.src = buttonFolder + overSources[x];
		
	}
}

// SET MOUSEOVER BUTTON
function setOverImg(But, ID) {
	var elem = document.getElementById('button' + But + ID);
	if (elem != null)
		document.getElementById('button' + But + ID).src = buttonFolder + overSources[But-1]; // marche pour des choix qui sont des images
}

// SET MOUSEOUT BUTTON
function setOutImg(But, ID) {
	var elem = document.getElementById('button' + But + ID);
	if (elem != null)
		document.getElementById('button' + But + ID).src = buttonFolder + upSources[But-1];
}



//*** SUB MENU FUNCTIONS ***//
// GET ELEMENT ID MULTI BROWSER
function getElement(id) {
	return document.getElementById ? document.getElementById(id) : document.all ? document.all(id) : null; 
}

// GET X COORDINATE
function getRealLeft(id) { 
	var el = getElement(id);
	if (el) { 
		xPos = el.offsetLeft;
		tempEl = el.offsetParent;
		while (tempEl != null) {
			xPos += tempEl.offsetLeft;
			tempEl = tempEl.offsetParent;
		} 
		return xPos;
	} 
} 

// GET Y COORDINATE
function getRealTop(id) {
	var el = getElement(id);
	if (el) { 
		yPos = el.offsetTop;
		tempEl = el.offsetParent;
		while (tempEl != null) {
			yPos += tempEl.offsetTop;
			tempEl = tempEl.offsetParent;
		}
		return yPos;
	}
}

// MOVE OBJECT TO COORDINATE
function moveObjectTo(objectID,x,y) {
	
	var el = getElement(objectID);
	//alert('moveOBject obj=' +  objectID + ' elem(getElement)=' + el + 'elm.left = ' + el.style.left + ' elm.top=' + el.style.top);
	//alert('moveOBject  --> change vers x=' + x + ' y=' + y);
	el.style.left = x;
	el.style.top = y;
}

// MOVE SUBMENU TO CORRESPONDING BUTTON
function showSubMenu(subID, buttonID) {
	hideAllSubMenus();
	butX = getRealLeft(buttonID);
	butY = getRealTop(buttonID);
	//alert('showSubMenu  realLeftButton=' + butX + 'realTopButton=' + butY);
	
	moveObjectTo(subID,butX+xSubOffset, butY+ySubOffset);

}

// HIDE ALL SUB MENUS
function hideAllSubMenus() {
	for ( x=0; x<totalButtons; x++) {
		moveObjectTo("submenu" + (x+1) + "",-500, -500 );
	}
}

// HIDE ONE SUB MENU
function hideSubMenu(subID) {
	if ( overSub == false ) {
		moveObjectTo(subID,-500, -500);
	}
}



//preload();

