// Obj: El li cuyos ul recojo
function desplegarSubmenu(obj)
{
  var target_ul = obj.getElementsByTagName('ul');
  target_ul[0].style.display = 'block';
}


// Obj: El li cuyos ul recojo
function recogerSubmenu(obj)
{
  var target_ul = obj.getElementsByTagName('ul');
  for (var i=0; i<target_ul.length; i++)
  {
    target_ul[i].style.display = 'none';
  }
}

// Argumento: el li que contiene un enlace con class expandir-menu
function getLinkChild(elemento)
{
  var enlaces = elemento.getElementsByTagName('a');
  for (var i=0; i<enlaces.length; i++)
  {
    if (enlaces[i].className == 'expandir-menu')
    {
      return enlaces[i];
    }
  }
  return null;
}

// Despliega el elemento y recoge sus hermanos
// Argumentos: El enlace clicado
function despliegaElemento(elemento)
{
  if (elemento)
  {
    var parent_li = elemento.parentNode;

    // Necesito poner a hidden los hermanos
    var brothers = parent_li.parentNode.getElementsByTagName('li');

    for (var i=0; i<brothers.length; i++)
    {
      if (brothers[i].parentNode === parent_li.parentNode)
      { 
        var enlace = getLinkChild(brothers[i]);
        if (enlace)
          recogeElemento(enlace);
      }
    }

    desplegarSubmenu(parent_li);

    elemento.innerHTML = '[-]';
    elemento.onclick = function() { recogeElemento(this); return false; };
  }
}

// Recoje el elemento
// Argumentos: El enlace clicado
function recogeElemento(elemento)
{
  if (elemento)
  {
    recogerSubmenu(elemento.parentNode);

    elemento.innerHTML = '[+]';
    elemento.onclick = function() { despliegaElemento(this); return false; };
  }
}

function inicializaMenu()
{
  var menu = document.getElementById('submenu');
  if (menu)
  {
    var li_parent = menu.getElementsByTagName('li');
    if (li_parent.length && li_parent[0])
    {
      li_elements = li_parent[0].getElementsByTagName('li');

      // Para todos los li
      for (var i=0; i<li_elements.length; i++)
      { 
        var ul = li_elements[i].getElementsByTagName('ul');
        if (ul.length)
        {
          var enlace = document.createElement('a');
          enlace.href = '#';
          enlace.className = 'expandir-menu';

          if (li_elements[i].className != 'seleccionado')
          { 
            enlace.innerHTML = '[+]';
            enlace.onclick = function() { despliegaElemento(this); return false; };
            recogerSubmenu(li_elements[i]);
          }
          else
          {    
            enlace.innerHTML = '[-]';
            enlace.onclick = function () { recogeElemento(this); return false; };
          }

          li_elements[i].insertBefore(enlace, ul[0]);
        }
      }
    }
  }
}

window.onload = inicializaMenu;

