/*
	ED - 12.07.2006
	
	Script pour gerer les menus deroulants structures comme des listes <ul> imbriquees.
	Les listes <ul> parentes (ou le menu de plus haut niveau) doient avoir une classe dont
	la valeur est definie ici par la variable : classeMenuDeroulant
	
	initMenus() parcour le document a la recherche des listes <ul> possedant cette classe
	et attache des gestionnaires d evenements aux <li> qui contiennent des sous menus
	pour les faire apparaitre et disparaitre au survol
	
	Attention: la fonction addEvent() definie dans defaut.js est requise !

*/
var classeMenuDeroulant = /menu_deroulant/;

/*
	Attache les gestionnaires d evenements aux lis qui ont des sous menus
*/
function initMenus()
{
	var ulMenu = document.getElementById('menu_principal');
	if (ulMenu.className.match(classeMenuDeroulant))
	{
		var listeLiMenu = ulMenu.getElementsByTagName('li');
		for (var i=0; i < listeLiMenu.length; i++)
		{
			var liMenu = listeLiMenu[i];
			if (liMenu.getElementsByTagName('ul').length > 0)
			{
				// si on a un sous-menu
				addEvent(liMenu, 'mouseover', montrePremierSousMenu);
				addEvent(liMenu, 'focus', montrePremierSousMenu);
				addEvent(liMenu, 'mouseout', cachePremierSousMenu);
				addEvent(liMenu, 'blur', cachePremierSousMenu);	
			}
		}
	}
}

/*
	Montre et cache les sous menus
*/
function montrePremierSousMenu(){
	this.getElementsByTagName("ul")[0].style.display = "block";
	/*this.style.backgroundColor = "#EDF4F9";*/
}

function cachePremierSousMenu(){
	this.getElementsByTagName("ul")[0].style.display = "none";
	/*this.style.backgroundColor = "#fff";*/
}

/*
	Appelle initMenus() au chargement de la page
*/
addEvent(window,"load", initMenus);

/*
	Permet de stocker l ordre des menus modifie par l utilisateur
*/
var menuCliquable = true;

function updateOrdre(idUlMenu, rubriqueCourante)
{
  menuCliquable = false;
  document.getElementById('msg-menu').style.display = 'block';
  
  var menuTrie = Sortable.serialize(idUlMenu);
  var url = '/jsp/ordre_menu.jsp';
  
  var myAjax = new Ajax.Request(url,
    {
      method: 'post',
      //asynchronous: true,
      parameters: {RUBRIQUE_COURANTE: rubriqueCourante,
                   ID_MENU: idUlMenu,
                   FLUX: menuTrie},
        onUninitialized: function (xhr)
          { // Création de l'objet XHR
           //alert('onUninitialized');
          },
        onLoading: function (xhr)
          { // Après appel méthode open
            //alert('onLoading');
          },
        onLoaded: function (xhr)
          { // Requête envoyée
            //alert('onLoaded');
          },
        onInteractive: function (xhr)
          { // Réponse en cours de réception
            //alert('onInteractive');
          },
        on200: function (xhr)
          { // Réponse HTTP "OK"
            //alert('on200');
          },
        onSuccess: function (xhr)
          { // Réponse HTTP == 2xx
            //alert('onSuccess');
          },
        on404: function (xhr)
          { // Réponse HTTP "OK"
            //alert('on404');
          },
        onFailure: function (xhr)
          { // Réponse HTTP != 2xx
            //alert('onFailure');
          },
        onException: function (xhr, exception)
          {
            alert(exception);
          },
        onComplete: function (xhr)
          { // Requête totalement terminée
            if (xhr.status == 200)
            {
              //requete effectuee avec succes
            } else {
              //alert(xhr.status);
            }
            setTimeout(reloadPage, 500);
            //hideMsgTemp();
            //setTimeout(setMenuCliquable, 1000);
          }
    }
  )
}

function reloadPage()
{
    window.open(window.location.href, '_self');
}
function setMenuCliquable()
{
  menuCliquable = true;
}

function hideMsgTemp()
{
  setTimeout(hideMsg, 2000);
}

function hideMsg()
{
  document.getElementById('msg-menu').style.display = 'none';
}

var sUrl = '';
function openLink(url)
{
  sUrl = url;
  setTimeout(openMenuCliquable, 1000);
}

function openMenuCliquable()
{
  if (menuCliquable)
  {
    window.open(sUrl, '_self');
  }
  sUrl = '';
}