var EDB = {};
EDB.Accordion = new Class({
	options : {
		display: 0,
		activeClass: 'sel',
		transition:  Fx.Transitions.Quad.easeInOut,
		opacity: false,
		height: true,
		duration: 250,
		wait: false,
		fps: 60
	},
	
	initialize: function(togglers, elements, options, container){
		/* add events onto options. */
		this.options.onComplete = this.onComplete;
		this.options.onActive = this.onActive;
		/* override options with given options. */
		this.setOptions(options);
		/* create new accordion */
		this.accordion = new Accordion(togglers, elements, this.options, container);
		/* initialize some variables. */
		this.toogler = null;
		this.index = options.display;
		/* iterate over togglers and unbind(click) then bind(mouseover) events. */
		$$(togglers).each(function(toggler, index){
			toggler.removeEvent("click"); // remove
			toggler.addEvent('mouseover', this.mouseover.bindWithEvent(this, [toggler, index]));
		}.bind(this));
	},
	
	/** Proxy Methods */
	display: function(index){
		this.accordion.display(index);
	},
	
	addSection: function(toggler, element, pos){
		this.accordion.addSection(toggler, element, pos);
	},
	
	/** Implementation for the toggler mouseover event. */
	mouseover: function(e, toggler, index){
		//if(this.index == index) return;
		this.accordion.display(index);
	},
	
	/** Implementation for the Accordion onActive fn. */
	onActive: function(toggler, element){
		if($type(this.toggler)){
			this.toggler.removeClass(this.options.activeClass);   // do something with last selected toggler.
			this.element.removeClass(this.options.activeClass);// do something with the last selected element.
			this.element = null;	// remove references to last selected element if any.
			this.toggler = null;	// remove references to last selected toggler if any.
		}
		toggler.addClass(this.options.activeClass);
		element.addClass(this.options.activeClass);
		this.element = element;
		this.toggler = toggler;
	
	},
	
	/** Implementation for the Fx.Base onComplete fn. */
	onComplete: function(){
		//do some stuff here
	}
});
EDB.Accordion.implement(new Events, new Options);