timer_menu_niv_2 = null;
timer_menu_niv_3 = null;
tps_persistance = null;
niv_1_select = null;
niv_2_select = null;

id_nav = null;
id_nav_sous_menus = null;
padding_cote_lien_g = null;
padding_cote_lien_d = null;
id_bt_niv_1_initial = null;
id_bt_niv_2_initial = null;
id_bt_niv_3_initial = null;
class_on_ss_niveau = null;
padding_top_premier_ss_niv_12 = null;
decallage_niv1_sous_menu = 0;

url_off_img_select = null;
source_on = null;

largeur = null;
ss_niveau_on_avec_niv = false;


function evenement_timer_td(){
	//timer_niv_2_3
	$$(".timer_niv_2_3").each(function(td){
		Event.observe(td, "mouseover", desactiv_timer_niv_2_3);
		Event.observe(td, "mouseout", activ_timer_niv_2_3);
	});	
	
	//timer_niv_2_3
	$$(".tab_timer_niv_3 td").each(function(td){
		Event.observe(td, "mouseover", desactiv_timer_niv_3);
		Event.observe(td, "mouseout", activ_timer_niv_3);
	});	
}
Event.observe(window,"load",evenement_timer_td,false)


Navigation = Class.create();
Navigation.prototype = {
	initialize: function()
	{
	},

	setup:function (params) {
		function param_default(pname, def) { if (typeof params[pname] == "undefined") { params[pname] = def; } };
		param_default("padding_cote_lien_g",0);
		param_default("padding_cote_lien_d",0);
	
		this.params = params;
		
		// parametre obligatoire
		tps_persistance = params['tps_persistance']
		id_nav = params['id_nav']
		id_nav_sous_menus = params['id_nav_sous_menus']
		padding_cote_lien_g = params['padding_cote_lien_g']
		padding_cote_lien_d = params['padding_cote_lien_d']
		id_bt_niv_1_initial = params['id_bt_niv_1_initial']
		id_bt_niv_2_initial = params['id_bt_niv_2_initial']
		id_bt_niv_3_initial = params['id_bt_niv_3_initial']
		class_on_ss_niveau = params['class_on_ss_niveau']
		padding_top_premier_ss_niv_12 = params['padding_top_premier_ss_niv_12']
		decallage_niv1_sous_menu = params['decallage_niv1_sous_menu']
		
		// creation niv_1_2
		this.params['niveau'].each(function(niv){
			var niveau = new Niveau_1_2(niv[0],niv[1],niv[2])
			//si niveau 3
			if(niv[3] != null)
			{
				
				var id_niv_parent = niv[1];
				niv[3].each(function(niv){
					//alert(niv[1])
					var niveau_2 = new Niveau_2_3(niv[0],niv[1],niv[2],id_niv_parent)
					//iframe
					//alert(niveau_2.niv_iframe)
					niveau_2.niv_iframe.style.display = 'none';
					niveau_2.niv.style.display ='none'
				});
			}
			//iframe
			if(niveau.niv != null)
			{
				niveau.niv_iframe.style.display = 'none';
				niveau.niv.style.display ='none'
			}
			
		});
		
		// met le niv_2 a on si il n'a pas de sous niveau
		if(id_bt_niv_2_initial != null && id_bt_niv_2_initial != "" && !(ss_niveau_on_avec_niv))
		{
			Element.addClassName(id_bt_niv_2_initial,"on")
		}

		// met le niv_3 a on
		if(id_bt_niv_3_initial != null && id_bt_niv_2_initial != "")
		{
			Element.addClassName(id_bt_niv_3_initial,"on")
		}

		$(id_nav_sous_menus).style.height = 'auto';
		$(id_nav_sous_menus).style.overflow = 'visible';
	}
};

/* niveau 1_2 */
Niveau_1_2 = Class.create();
Niveau_1_2.prototype = {
	initialize: function(id_bouton,id_niv,parametre) {
		this.bouton = $(id_bouton);
		this.niv = id_niv ? $(id_niv) : null;
		//alert(this.niv)
		//alert(this.niv)
		
		//alert(this.niv)
		if(this.niv != null)
		{
		creerIframe(id_niv+'_frame')
		this.niv_iframe = $(id_niv+'_frame')
		}
		this.params = (parametre);
				
		this.img_bouton = this.bouton.firstChild.nodeName == "IMG" ? true : false;
		if(this.img_bouton) this.image = this.bouton.firstChild;
		
		
		// si image bouton
		if(this.img_bouton)
		{
			this.source = this.image.src;
			this.url = this.source.substring(0,this.source.lastIndexOf('.'));
			this.format = this.source.substring(this.source.lastIndexOf('.'),this.source.length);
			this.source_on = this.url+"_on"+this.format;
			
			// bouton initial source a off
			if(id_bt_niv_1_initial == this.bouton.id)
			{
				this.image.src = this.source_on 
			}
		}

		// positionner
		if(this.niv != null)
		{
		this.positionner_redimensionner();
		}
		
		this.bouton.onmouseover = this.onmouseover.bindAsEventListener(this);
		this.bouton.onmouseout = this.onmouseout.bindAsEventListener(this);
	},
	
	// positionnement et redimensionnement
	positionner_redimensionner: function(){
		// position left du bouton par rapport a la nav
		var pos_l_bt = Element.getOffSetPositionLeft(this.bouton,id_nav);
		var largeur_niv = Element.getWidth(this.niv);
		if(this.params.largeur == null)
		{
			if(Element.getWidth(this.niv) < Element.getWidth(this.bouton))
			{
				/* largeur niveau = largeur bouton */
				largeur = Element.getWidth(this.bouton);
			}
			else
			{
				largeur = Element.getWidth(this.niv)
			}
		}
		if(this.params.largeur){largeur = this.params.largeur;}
		
		// decallage pour le premier element, cas specifique pour intranet-PF
		if(this.params.decallage_marge){largeur = largeur - this.params.decallage_marge;}
		
		if(largeur != null)
		{
			if(browser.isIE)
			{
				var liens = $A(this.niv.childNodes[0].childNodes)
			}
			else
			{
				var liens = $A(this.niv.childNodes[1].childNodes)
				
			}
			liens.each(function(lien){
				if(lien.nodeName == "TR")
				{
					// td
					lien.firstChild.style.width = ppx(largeur);
					
					
					if(largeur == largeur_niv)
					{
						// a -> MERCI IE
						if(browser.isIE55)
						{
							lien.firstChild.firstChild.style.width = ppx(largeur);
						}
						else
						{
							lien.firstChild.firstChild.style.width = ppx(largeur - (padding_cote_lien_g + padding_cote_lien_d))
						}
					}
				}
			});
			
		}
		
		var largeur_niv = Element.getWidth(this.niv)
		
		// iframe
		$(this.niv_iframe).style.width = ppx(largeur_niv)
		$(this.niv_iframe).style.height = ppx(Element.getHeight(this.niv))
		// decallage pour le premier element, cas specifique pour intranet-PF
		if(this.params.decallage_marge){pos_l_bt = pos_l_bt + this.params.decallage_marge;}

		
		// position
		if(this.params.position)
		{
			if(this.params.position == "left"){this.niv.style.left = ppx(pos_l_bt + Element.getWidth(this.bouton)- largeur_niv)}
			if(this.params.position == "right"){this.niv.style.left = ppx(pos_l_bt);}
		}
		else
		{
			if(pos_l_bt + largeur_niv > Element.getWidth(id_nav_sous_menus))
			{
				this.niv.style.left = ppx(pos_l_bt + Element.getWidth(this.bouton)- largeur_niv);
			}
			else
			{
				this.niv.style.left = ppx(pos_l_bt);
			}
		}
		
		// iframe
		$(this.niv_iframe).style.left = this.niv.style.left
		$(this.niv_iframe).style.top = this.niv.style.top
		largeur = null;
	},
	
	//afficher le niveau
	onmouseover: function(evt) {
		// si le il existe le numero du menu (ça veux dire qu'il y a un menu affiche)
		if(niv_1_select != null)
		{
			//on desaffiche son sous menu et on arrete le timer
//		alert(niv_1_select.bouton.id)
			desafficher_niveau_2()
		}
		// niveau_1 selectionne
		niv_1_select = this;
		//si bouton image -> a on
		if(this.img_bouton)
		{
			url_off_img_select = this.source;
			this.image.src = this.source_on;
		}
		// affichage du niveau
		
		// pour safari (flash)
		if(browser.isSafari)
		{
			$$(".no_menu").each(function(element){					
				element.style.visibility='hidden';
			});
		}
		//iframe
		if(this.niv != null)
		{
		$(this.niv_iframe).style.display = 'block';
		$(this.niv).style.display = 'block';
		}
	 	desactiv_timer_niv_2()
   },
   	onmouseout: function(evt) {
		activ_timer_niv_2()
   }
}

/* niveau 2_3 */
Niveau_2_3 = Class.create();
Niveau_2_3.prototype = {
	initialize: function(id_bouton,id_niv,parametre,id_niv_parent) {
		this.bouton = $(id_bouton);
		//alert(id_niv)
		this.niv = id_niv ? $(id_niv) : null;
		//alert(this.niv)
		if(this.niv != null)
		{
			creerIframe(id_niv+'_frame')
			this.niv_iframe = $(id_niv+'_frame')
		}
		//alert(this.niv_iframe)
		this.params = (parametre);
		this.niv_parent = $(id_niv_parent);
		
		// bouton a on
		if(id_bt_niv_2_initial == this.bouton.id)
		{
			ss_niveau_on_avec_niv = true;
			Element.addClassName(this.bouton.id,class_on_ss_niveau)
		}
		// positionner
		if(this.niv != null)
		{
		this.positionner_redimensionner();
		}
		
		this.bouton.onmouseover = this.onmouseover.bindAsEventListener(this);
		this.bouton.onmouseout = this.onmouseout.bindAsEventListener(this);
	},
	
	// positionnement et redimensionnement
	positionner_redimensionner: function(){
		// position left du bouton par rapport a la nav
		var pos_r_niv_parent = Element.getX(this.niv_parent)+Element.getWidth(this.niv_parent);

		if(this.params.largeur == null){largeur = Element.getWidth(this.niv);/*alert(Element.getWidth(this.niv))*/}
		if(this.params.largeur){largeur = this.params.largeur;}

		if(largeur != null)
		{
			if(browser.isIE)
			{
				var liens = $A(this.niv.childNodes[0].childNodes)
			}
			else
			{
				var liens = $A(this.niv.childNodes[1].childNodes)
			}
			liens.each(function(lien){
				if(lien.nodeName == "TR")
				{
					// td
					lien.firstChild.style.width = ppx(largeur);
					
					// a -> MERCI IE
					if(browser.isIE55)
					{
						lien.firstChild.firstChild.style.width = ppx(largeur);
					}
					else
					{
						lien.firstChild.firstChild.style.width = ppx(largeur - (padding_cote_lien_g + padding_cote_lien_d));
					}
				}
			});
			
		}
		
		var largeur_niv = Element.getWidth(this.niv)
		//alert(largeur_niv)
		
		// iframe
		$(this.niv_iframe).style.width = ppx(largeur_niv)
		$(this.niv_iframe).style.height = ppx(Element.getHeight(this.niv))

		// position
		// X
		if(this.params.position)
		{
			if(this.params.position == "left"){this.niv.style.left = ppx(pos_r_niv_parent - Element.getWidth(this.niv_parent) - largeur_niv);}
			if(this.params.position == "right"){this.niv.style.left = ppx(pos_r_niv_parent);}
		}
		else
		{
			if((pos_r_niv_parent + largeur_niv) > Element.getWidth(id_nav_sous_menus))
			{
				this.niv.style.left = ppx(pos_r_niv_parent - Element.getWidth(this.niv_parent) - largeur_niv);
			}
			else
			{
				this.niv.style.left = ppx(pos_r_niv_parent);
			}
		}
		
		// iframe
		$(this.niv_iframe).style.left = this.niv.style.left

		// Y
		this.niv.style.top = ppx(niveauTop(this.niv_parent,this.bouton.id));
		// iframe
		$(this.niv_iframe).style.top = this.niv.style.top
		largeur = null;
	},
	
	//afficher le niveau
	onmouseover: function(evt) {
		
		desactiv_timer_niv_3()
		// si le il existe le numero du menu (ça veux dire qu'il y a un menu affiche)
		if(niv_2_select != null)
		{
			//on desaffiche son sous menu et on arrete le timer
			desafficher_niveau_3()
		}
		
		// niveau_2 selectionne
		niv_2_select = this;
		
		//si bouton -> a on
		if(id_bt_niv_2_initial != this.bouton.id)
		{
			Element.addClassName(this.bouton.id,class_on_ss_niveau)
		}
		
		// affichage du niveau
		//iframe
		if(this.niv != null)
		{
			$(this.niv_iframe).style.display = 'block';
			$(this.niv).style.display = 'block';
		}
		
		desactiv_timer_niv_3()
		
   },
   	onmouseout: function(evt) {
		activ_timer_niv_3()
   }
}

/*--------------------------------------------------------------------------------------------------------------------------*/
	function niveauTop(id_niveau,id_bouton) {
			var premier = 0
			var niv = $(id_niveau);
			var top = 0;
			if(browser.isIE)
			{
				var liens = $A(niv.childNodes[0].childNodes)
			}
			else
			{
				var liens = $A(niv.childNodes[1].childNodes)
			}
			var id_bouton_trouve = false
			for(var i=0 ; i < liens.length && !id_bouton_trouve ;i++)
			{
				if(liens[i].nodeName == "TR")
				{
					// td
					var td = liens[i].firstChild;

					
					if (td.firstChild.id == id_bouton)
					{ 
						if(Element.hasClassName(td,"premier"))
						{ 
							premier = padding_top_premier_ss_niv_12;
						}

						id_bouton_trouve = true
					}
					else{top += Element.getHeight(td);}
				}
			}
			return (top + premier);


	}
/*--------------------------------------------------------------------------------------------------------------------------*/


function activ_timer_niv_2()
{
	timer_menu_niv_2 = window.setTimeout("desafficher_niveau_2()",tps_persistance)
}

function activ_timer_niv_2_3()
{
	timer_menu_niv_2 = window.setTimeout("desafficher_niveau_2()",tps_persistance)
}

function desactiv_timer_niv_2_3()
{
	if(niv_2_select != null){desafficher_niveau_3()}
	if(timer_menu_niv_2 != null)
	{
		window.clearTimeout(timer_menu_niv_2);
		timer_menu_niv_2 = null;
	}
}


function desactiv_timer_niv_2()
{
	if(timer_menu_niv_2 != null)
	{
		window.clearTimeout(timer_menu_niv_2);
		timer_menu_niv_2 = null;
	}
}

function desafficher_niveau_2()
{
	
	// persistance et rollover
	if(id_bt_niv_1_initial !=  niv_1_select.bouton.id)
	{
		//lien image ou a
		if(url_off_img_select != null)
		{
			niv_1_select.image.src = url_off_img_select;
		}
	}
	if(niv_2_select != null){desafficher_niveau_3()}

	if(niv_1_select.niv)
	{
	// desaffichage du niveau
	niv_1_select.niv.style.display ='none';
	//iframe
	niv_1_select.niv_iframe.style.display = 'none';
	}
	
	// pour safari (flash)
	if(browser.isSafari)
	{
		$$(".no_menu").each(function(element){					
			element.style.visibility='visible';
		});
	}

	niv_1_select = null
}

function activ_timer_niv_3()
{
	activ_timer_niv_2()
	timer_menu_niv_3 = window.setTimeout("desafficher_niveau_3()",tps_persistance)
}

function desactiv_timer_niv_3()
{
	desactiv_timer_niv_2();
	if(timer_menu_niv_3 != null)
	{
		window.clearTimeout(timer_menu_niv_3);
		timer_menu_niv_3 = null;
	}
}

function desafficher_niveau_3()
{
	
	// persistance et rollover
	if(niv_2_select != null)
	{
		if(id_bt_niv_2_initial != niv_2_select.bouton.id)
		{
			Element.removeClassName(niv_2_select.bouton.id,class_on_ss_niveau)
		}
		if(niv_2_select.niv)
		{
		niv_2_select.niv.style.display ='none';
		//iframe
		niv_2_select.niv_iframe.style.display = 'none';
		}

	}
	niv_2_select = null
}

function creerIframe(id)
{
	document.write("<iframe id='"+id+"' class='iframe_menu' frameborder='0' scrolling='no' src='about:blank'></iframe>")	
}