var SparkAccordion = Class.create({
  initialize: function(container, headers, bodies, options) {
    this.options = Object.extend({current: null, multiple: false, fixedHeight: false}, options || {})
    this.headers = $(container).select(headers);
    this.bodies  = $(container).select(bodies);
    this.current = this.options.current;
    this.process_id = null;
    var bodiesHeights = [];
    var headersHeights = 0;
    var i = this.headers.length;
    var j = i; 
  
     if (this.options.fixedHeight){
		while(j--) { 
    		bodiesHeights[j] = this.bodies[j].getHeight();
    		headersHeights += (this.headers[j].getHeight() + 5);
    		this.bodies[j].hide();
    		
    	}
    bodiesHeights.sort(this.numOrdA);
    containerHeight = bodiesHeights.first() + headersHeights;
    $(container).setStyle("height:"+containerHeight+"px");
    }
    
    
    //alert(i);
    var me = this;
    while(i--) { 
      this.headers[i].observe('click', this.onClickCallback(i));
      if ((this.options.current || this.options.current == 0) && this.options.current == i) { 
        this.bodies[i].show(); 
        this.headers[i].addClassName('accordion-toggle-active');
      }
    }  
  },
  
toggle: function() { this.visible() ? this.blindUp() : this.blindDown(); },

numOrdA: function numOrdA(a, b){ return (b-a);},

onClickCallback: function(i) {
	//alert(1);
  var me = this;
  return function() {
    if (!me.process_id) {
      me.process_id = setTimeout(function() { me.process_id = null; }, 1000);
      var el = me.bodies[i];
      if (!me.options.multiple) {
        var crt_exists = me.options.current || me.options.current == 0;
        if (crt_exists && (i != me.options.current)) { 
          me.bodies[me.options.current].blindUp();
          me.headers[me.options.current].removeClassName('accordion-toggle-active'); 
        }
      }
      el.visible() ? me.headers[i].removeClassName('accordion-toggle-active') : me.headers[i].addClassName('accordion-toggle-active');
      me.toggle.apply(el);
      me.options.current = i;
    }  
}
}
});