/*
'**
' @name			displayToc.js
'
' @describe     Javascript function used to build the left menu.
'
' @author		Laurent Constantin
'
' @revised		12/2001
'*
*/

function checkBrowser(){
	this.ver=navigator.appVersion
	this.dom=document.getElementById?1:0
	this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom)?1:0;
	this.ie4=(document.all && !this.dom)?1:0;
	this.ns5=(this.dom && parseInt(this.ver) >= 5) ?1:0;
	this.ns4=(document.layers && !this.dom)?1:0;
	this.bw=(this.ie5 || this.ie4 || this.ns4 || this.ns5);
	return this
}
bw=new checkBrowser()


/*
'**
' @definition   function reDisplay(currentNumber, currentIsExpanded, page_actived)
'
' @describe     This Javascript function build the left menu with an external array
'				 (this array can be into the 'content_frame.asp' page or into an external file).
'				 WARNING: The variable "page" is global and defined into the file who included this file.
'
' @author       Laurent Constantin
'
' @revised      12/2001
'
' @param        currentNumber (Integer), branch number to open (2.2.1 for the branch '000200020001')
' @param        currentIsExpanded (Boolean), allow to choose if the selected branch will be open or close
' @param        page_actived (Boolean), allow to disabled the 'page' parameter to navigate correctly
'				 after a click on a internal link (see below the usage of the 'page' parameter)
'
' @returns      Build the html code of the page with the javascript command 'menu_left.document.write' (menu_left is the name of the frame)
'*
*/
function reDisplay(currentNumber, currentIsExpanded, page_actived) {
	// la valeur par défaut de "page_actived" est vrai, donc on affiche la page de droite (contenu)
	if (String(page_actived) == 'undefined')
		page_actived = false

	menu_left.document.open();

	menu_left.document.write("<html>");
	menu_left.document.write("<head>");
	menu_left.document.write(" <title>Menu</title>");
	menu_left.document.write(" <style>\n #divMenu{position:absolute; left:0; top:0;}\n</style>\n\n");

	//*********************************************************************
	// script pour les rollovers et fonction pour le search
	menu_left.document.write(" <script language='JavaScript'>\n");

	menu_left.document.write("  function imageOn(imagex) { \n");
	menu_left.document.write("   re = /_off/gi; \n");
	menu_left.document.write("   tmp = document [imagex].src; \n");
	menu_left.document.write("   document [imagex].src = tmp.replace(re, '_on');  \n");
	menu_left.document.write("  } \n\n");

	menu_left.document.write("  function imageOff(imagex) { \n");
	menu_left.document.write("   re = /_on/gi; \n");
	menu_left.document.write("   tmp = document [imagex].src; \n");
	menu_left.document.write("   document [imagex].src = tmp.replace(re, '_off');  \n");
	menu_left.document.write("  } \n\n");

	menu_left.document.write(" </script>\n");
	//*********************************************************************

	menu_left.document.write("</head>");
	menu_left.document.write("<body topmargin=0 bottommargin=0 leftmargin=0 rightmargin=0 marginheight=0 marginwidth=0 bgcolor=\"#FFFFFF\">");
	menu_left.document.write("<div ID=\"divMenu\">\n");

	menu_left.document.writeln("<table border=0 cellpadding=0 cellspacing=0 width='100%'>");
	menu_left.document.writeln("<tr><td><img src=\"" + top_url + "images/menu_left/separation.gif\" width=\"146\" height=\"5\"></td></tr>");

	var currentNumArray = currentNumber.split(".");
	var currentLevel = currentNumArray.length-1;
	var scrollY=0, theHref="", target_top = false;

	// détermine LES parents de la branche sélectionnée
	var current_parent_level = '';
	var parent_level_array = new Array();
	nbr = 0;
	tmp = currentNumber.split('.');
	for (i=0; i<tmp.length-1; i++) {
		if (current_parent_level != '') current_parent_level = current_parent_level + '.'
		current_parent_level = current_parent_level + tmp[i];
		parent_level_array[nbr] = current_parent_level;
		nbr = nbr + 1
	}

	max_level = tmp.length + 1;


	for (i=0; i<menu_tab.length; i++) {
		thisNumber = menu_tab[i][0];
		var isCurrentNumber = (thisNumber == currentNumber);
			
		// test le cas où il faut laisser sélectionnés les branches parentes
		if (isCurrentNumber == false) {
			for (j=0; j<parent_level_array.length; j++) {
				if (thisNumber == parent_level_array[j]) {
					isCurrentNumber = true;
					break;
				}
			}
		}

		// test le cas où il faut ouvrir la page non plus dans les frames, mais en top
		if (isCurrentNumber) {
			theHref = menu_tab[i][2];
			if (menu_tab[i][3] == "True") target_top = true;
		}
			
		var thisNumArray = thisNumber.split(".");
		var thisLevel = thisNumArray.length-1;
		var toDisplay = true;
		if (thisLevel > 0) {
			for (j=0; j<thisLevel; j++) {
				toDisplay = (j>currentLevel)?false:toDisplay && (thisNumArray[j] == currentNumArray[j]);
			}
		}
		thisIsExpanded = toDisplay && (thisNumArray[thisLevel] == currentNumArray[thisLevel])
		if (currentIsExpanded) {
			toDisplay = toDisplay && (thisLevel<=currentLevel);
			if (isCurrentNumber) thisIsExpanded = false;
		}

		tmp = thisNumber.split('.');
		if (currentNumArray[0] == tmp[0]) {
			if (i!=0) {
				menu_left.document.writeln("<tr>");
					
				// on est obligé d'encapsuler les cellules dans un tableau sinon on a des problèmes avec les colpsans sous netscape
				var menu_background;
				tmp = menu_tab[menu_tab.length-1][0].split(".");	// tableau contenant le dernier niveau du menu

				//**************************************************
				// début du tableau contenant le menu

				if (thisIsExpanded) {
					if (menu_tab[i][2] == "")
						image_text = "<img src=\"" + top_url + "images/" + menu_tab[i][6] + "\" border=0>"
					else				
						image_text = "<a href=\"javaScript:parent.reDisplay('" + thisNumber + "'," + thisIsExpanded + ", true);\" onMouseOver=\"self.status='" + image_name + "'; return true;\" onMouseOut=\"self.status=''; return true;\"><img src=\"" + top_url + "images/" + menu_tab[i][6] + "\" border=0></a>"
				}
				else {
					if (menu_tab[i][2] == "")
						image_text = "<img src=\"" + top_url + "images/" + menu_tab[i][4] + "\" border=0>"
					else {
						var image_name = '';
						image_selected = menu_tab[i][6].split('/');
						image_name = image_selected[parseInt(image_selected.length-1)];
						image_name = image_name.substring(0, parseInt(image_name.length) - 7) + i;

						image_text = "<a href=\"javaScript:parent.reDisplay('" + thisNumber + "'," + thisIsExpanded + ", true);\" onMouseOver=\"imageOn('" + image_name + "'); self.status='" + image_name + "'; return true;\" onMouseOut=\"imageOff('" + image_name + "'); self.status=''; return true;\"><img name='" + image_name + "' src=\"" + top_url + "images/" + menu_tab[i][4] + "\" border=0></a>"
					}
				}

				menu_left.document.writeln("<tr><td>" + image_text + "</td></tr>");
				menu_left.document.writeln("<tr><td><img src=\"" + top_url + "images/menu_left/separation.gif\" width=\"146\" height=\"5\"></td></tr>");
			}
		}
	}

	menu_left.document.writeln("</table>\n");

	menu_left.document.writeln("</div>\n");

	menu_left.document.writeln("</body>\n</html>");
	menu_left.document.close();
	

	//********************************************
	// Mise à jour de la page de contenu (frame de droite)
	//  seulement lorsque qu'aucune page n'a été spécifiée
	//  par le parametre "page" (donc seulement lorsque "page" est vide)

	if (page == "" || page_actived == true) {
		if (theHref != "") {
			if (target_top == true)
				main.parent.location.href  = top_url + theHref;	
			else
				main.location.href = top_url + theHref;
		}
	}
}

