/**
 * accordion class
 *   thx goes to creators of http://www.leigeber.com
 *
 * NOTE: HTML must follow the following rules:
 *       <dl class="accordion" id="accordionXXX">
 *   		   <dt class="toggler" id="dtaccordionXXX<n>">About</dt>
 *         <dl class="toggler_elem" id="dlaccordionXXX<n>"><span>
 *           <!--content-->
 *         </span></dl>
 *         ...
 *       </dl>
 *
 * Created on 16.01.2009
 * Project: tools
 *
 * '$Id: accordion.js,v 1.4 2009/06/16 14:26:00 abaethe Exp $'
 *
 */


var accordion = function() {
	var tm=sp=10;
	function slider(n)
  {
    this.nm=n; 
    this.arr=[];
  }
	slider.prototype.init=function(t,c,k)
  {
		var a,h,s,l,i,h_all,s_all; 
    a=document.getElementById(t); 
    this.sl=k?k:'';
		//h=a.getElementsByClassName('toggler');      FF 3 only
    //s=a.getElementsByClassName('toggler_elem'); FF 3 only

    //    standard
		//h=document.getElementsByTagName('dt'); 
    //s=document.getElementsByTagName('dd'); 
    //    advanced to support more than 1 accordion per page
		h_all=document.getElementsByTagName('dt'); 
    s_all=document.getElementsByTagName('dd'); 
    h = new Array();
    s = new Array();
    for( i = 0; i < h_all.length; i++ )
    {
      var reg = "dt" +  t;
      var regex = new RegExp(reg, "i");
      if( h_all[i].id && (h_all[i].id.match(regex)) )
        h[h.length] = h_all[i];
      else if( !h_all[i].id )
        h[h.length] = h_all[i];
    }
    for( i = 0; i < h_all.length; i++ )
    {
      var reg = "dd" +  t;
      var regex = new RegExp(reg, "i");
      if( s_all[i].id && (s_all[i].id.match(regex)) )
        s[s.length] = s_all[i];
      else if( !s_all[i].id )
        s[s.length] = s_all[i];
    }

    this.l=h.length;
		for(i=0;i<this.l;i++)
    {
      var d=h[i]; this.arr[i]=d; 
      d.onclick=new Function(this.nm+'.pro(this)'); 
      if(c==i){d.className=this.sl}
    }
		l=s.length;
		for( i=0;i<l;i++ )
    {
      var d=s[i]; d.mh=d.offsetHeight; 
      if( c!=i )
      {
        d.style.height=0; 
        d.style.display='none'
      }
    }
	}
	slider.prototype.pro=function(d)
  {
		for(var i=0;i<this.l;i++)
    {
			var h=this.arr[i], s=h.nextSibling; 
      s=s.nodeType!=1?s.nextSibling:s; 
      clearInterval(s.tm);
			if( h==d&&s.style.display=='none' )
      {
        s.style.display=''; 
        su(s,1); 
        //h.className=this.sl
      }
			else if( s.style.display=='' )
      {
        su(s,-1); 
        //h.className=''
      }
		}
	}
	function su(c,f){c.tm=setInterval(function(){sl(c,f)},tm)}
	function sl(c,f){
		var h=c.offsetHeight, m=c.mh, d=f==1?m-h:h; c.style.height=h+(Math.ceil(d/sp)*f)+'px';
		c.style.opacity=h/m; c.style.filter='alpha(opacity='+h*100/m+')';
		if(f==1&&h>=m){clearInterval(c.tm)}else if(f!=1&&h==1){c.style.display='none'; clearInterval(c.tm)}
	}
	return{slider:slider}
}();



