var TINY = {};

/**
 * Retourne l'element depuis son ID
 *
 * @param string i Identifiant
 */
function T$(i)
{
  return document.getElementById(i);
}

/**
 * Retourne la liste des elements selon le nom de balise
 *
 * @param string e Nom de la balise recherchee
 * @param object p Noeud source
 */
function T$$(e, p)
{
  return p.getElementsByTagName(e);
}

TINY.accordion = function()
{
  /**
   * Initialisation du slider
   *
   * @param string n Nom de l'objet JavaScript
   */
	function slider(n)
	{
    this.n = n;
    this.h = [];
    this.c = [];
    this.class = new Array();
    this.class["on"] = "orange_triangle_on boutonJS";
    this.class["off"] = "orange_triangle_off boutonJS";
  }
  
  /**
   * Initialisation de la zone
   *
   * @param integer bouton Index de l'element clique
   * @param integer firstElement Index du contenu
   * @param string t Id de la liste
   * @param string e Nom de la balise cliquee
   * @param boolean m Boolean mystere !!!
   * @param integer o Integer mystere !!!
   * @param string k Style a appliquer lors du hover
   */
	slider.prototype.init = function(firstElement, t, e, m, o, k)
	{
		var a = T$(t), i = x = 0;
		this.s = k || '', w = [], n = a.childNodes, l = n.length;
		this.m = m || false;
		for(i; i < l; i++)
		{
		  if(n[i].nodeType != 3)
		  {
		    w[x] = n[i];
		    x++;
		  }
		}
		this.l = x;
		for(i = 0; i < this.l; i++)
		{
			var v = w[i];
			/** Recuperation du bouton clique */
			this.h[i] = h = T$$(e, v)[0];
			this.bouton = this.h[i];
			/** Recuperation du contenu */
			this.c[i] = c = T$$('div', v)[firstElement];
			/** Application de l'ecouteur onclick */
			h.onclick = new Function(this.n + '.pr(false, this)');
			if(o == i)
			{
        h.className = this.class["on"];
        c.style.height = 'auto';
        c.d = 1;
      }
      else
      {
        h.className = this.class["off"];
        c.style.height = 0;
        c.d = -1;
      }
		}
	};
	
	// Evenements lors du click
	slider.prototype.pr = function(f, d)
	{
		for(var i = 0; i < this.l; i++)
		{
			var h = this.h[i], c = this.c[i], k = c.style.height; k = k == 'auto' ? 1 : parseInt(k);
			clearInterval(c.t);
			// Ouverture de la zone
			if((k != 1 && c.d == -1) && (f == 1 || h == d))
			{
				c.style.height = '';
				c.m = c.offsetHeight;
				c.style.height = k + 'px';
				c.d = 1;
				su(c, 1);
				h.className = this.class["on"];
			}
			// Fermeture de la zone
			else if(k > 0 && (f == -1 || this.m || h == d))
			{
        c.d = -1;
        su(c, -1);
        h.className = this.class["off"];
      }
		}
	};
	
	// Initialise l'interval
	function su(c)
	{
    c.t = setInterval(function(){sl(c)}, 3);
	};
	
	// Effet de slide de transition
	function sl(c)
	{
		var h = c.offsetHeight, d = c.d == 1 ? c.m-h : h;
		c.style.height = h + (Math.ceil(d/10)*c.d) + 'px';
		c.style.opacity = h/c.m;
		c.style.filter = 'alpha(opacity=' + h*100/c.m + ')';
		if((c.d == 1 && h >= c.m) || (c.d != 1 && h == 1))
		{
		  if(c.d == 1) c.style.height = 'auto';
		  clearInterval(c.t);
		}
	};
	
	return{slider:slider}
}();