/************************************************
  NOTE : toutes ces fonctions ne fonctionneront que si
  le code HTML ne se présente sous cette forme:
  <div id="id de la div" name="id de la div">
	<div>
		Le contenu ici
	</div>
	<br />
</div>
*************************************************/


//------------------------------------------------------------------------
// 		Parcours de noeuds - DOM
//-----------------------------------------------------------------------

// Détermine si un nœud texte est entièrement composé de blancs
function is_all_ws( nod )
{
  // Utilisation des fonctionnalités String et RegExp d'ECMA-262 Edition 3
  return !(/[^\t\n\r ]/.test(nod.data));
}

// Détermine si un nœud devrait être ignoré par les fonctions itérateurs.
function is_ignorable( nod )
{
  return ( nod.nodeType == 8) || // Un nœud de commentaire
         ( (nod.nodeType == 3) && is_all_ws(nod) ); // un nœud texte, uniquement des blancs
}

//Version de |firstChild| qui passe les nœuds qui sont entièrement constitués de blancs ou de commentaires.
function first_child( par )
{
  var res=par.firstChild;
  while (res) {
    if (!is_ignorable(res)) return res;
    res = res.nextSibling;
  }
  return null;
}

//------------------------------------------------------------------------
// 		Effets graphiques sur DIV
//-----------------------------------------------------------------------

function SlideOnLoad(id)
{
	show = document.getElementById(id);
	if( show )
	{
		show.style.height = '1px';
	}
}

function MagicMenu(id) 
{
	show = document.getElementById(id);
	if( show )
	{
		size = first_child ( show ).offsetHeight;		
		if( show.style.height != (size+'px') )
		{
		 	timer = setInterval("slideup()", 50);
		 	time = new Date().getTime();
		}
		else
		{
			timer = setInterval("slidedown()", 50);
			time = new Date().getTime();
		}
	}	
}

// Déroule (de haut en bas)
function slideup() 
{
	var now = new Date().getTime();
	f = size/100;
	var slide = (now - time) * f/3;
	
	show.style.height = slide + 'px';
	show.style.filter = 'alpha(opacity = '+(slide/f)+')';
	show.style.opacity = slide/size;
	time += 20;	
	
	if (slide >= size) 
	{
		show.style.height = size + 'px';
		clearInterval(timer);
	}
}

// Enroule (de bas en haut)
function slidedown() 
{
	var now = new Date().getTime();
	f = size/100;
	var slide = (now - time) * f/3;
	
	if (slide>=size) 
	{
	   show.style.height = '1px';
	   clearInterval(timer);
	}
	else
	{
	   show.style.height = (size-slide) + 'px';
	   show.style.filter = 'alpha(opacity = '+(100-(slide/f))+')';	   
	   time += 20;	
	}
}
