/* Permet d'ajouter ou de supprimer un événement par objet dans la page */
//~ http://www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html
function addEvent( obj, type, fn )
{
	if (obj.addEventListener)
		obj.addEventListener( type, fn, false );
	else if (obj.attachEvent)
	{
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
	}
}
/* */
function $(id) {
  return document.getElementById(id);
}

function displayEvents() {
  if($('events')) {
    var parent = $('events');
    var ul     = $('events').getElementsByTagName('ul')[0];
    var a      = $('load');
    if(ul.className == 'off') {
      ul.className = 'on';
      parent.className  = 'on';
    } else {
      ul.className = 'off';
      parent.className  = '';
    }
  }
}

function displayEvent(obj) {
    if(obj.className == '') {
      obj.className = 'on';
    } else {
      obj.className = '';
    }
}

function load() {
  /* Bloc événement */
  if($('events')) {
    var parent   = $('events');
    var ancien   = $('events').getElementsByTagName('div')[0];
    var ul       = $('events').getElementsByTagName('ul')[0];
    var li       = $('events').getElementsByTagName('ul')[0].getElementsByTagName('li');
    var nouveau  = document.createElement('a');
    
    /* Remplace la <div> par un <a> pour lancer l'affichage du listing d'événements (par défaut visible) */
    nouveau.id   = 'load';
    nouveau.href = '#';
    nouveau.innerHTML = ancien.innerHTML;
    parent.insertBefore(nouveau,ancien);
    parent.removeChild(ancien);
    $('events').getElementsByTagName('ul')[0].className = 'off';
    
    /* Ajoute les événements d'affichage/masquage */
    addEvent(parent,'mouseover',displayEvents);
    addEvent(parent,'mouseout',displayEvents);
    addEvent(nouveau,'focus',displayEvents);
    addEvent(ul.getElementsByTagName('a')[0],'blur',displayEvents);
    
    /* Gère le changement d'état des <li> */
    for(var i=0; i<li.length;i++) {
      addEvent(li[i],'mouseover',function() { displayEvent(this); });
      addEvent(li[i],'mouseout',function() { displayEvent(this); });
      addEvent(li[i].getElementsByTagName('a')[0],'focus',function() { displayEvent(this.parentNode); });
      addEvent(li[i].getElementsByTagName('a')[0],'blur',function() { displayEvent(this.parentNode); });
    }
    /* */
  }
}

addEvent(window,'load',load);
