var Mizo = new Class({
	Implements: [Options],
	
	options: {
		'container'	: 'navi',
		'togg_next'	: 'togglers',
		'el_next'	: 'elements',
		'togg_prev'	: 'toggl_prev',
		'el_prev'	: 'elm_prev'
	},
	
	initialize: function(options)
	{
		
		this.setOptions(options);
        if(!$(this.options.container)) return false;
        
		this.setup();
	},
	
	setup: function()
	{
		$(this.options.container).getElements('.'+this.options.togg_next).each(function(el){
			var element = el.getNext();
			this.linker(element,el,this.options.el_next);
		}.bind(this));
		
		$(this.options.container).getElements('.'+this.options.togg_prev).each(function(el){
			var element = $(el.parentNode).getPrevious();
			
			this.linker(element,el,this.options.el_prev);
		}.bind(this));

	},
	linker: function(element,el,elm_class){
		if( element.hasClass(elm_class) ){
            
			var params = {
				//'show': $(element.parentNode).hasClass('show') ? true : false,
                'show' :  false,
				'height': element.offsetHeight,
				'animate': false
			}
            
            var active = $(element).getElements('li.navactive');
            if(active.length){
                $(element.parentNode).addClass('show')
                params.show = true;
            }
            
			if(!params.show) element.style.height = '0px';
						
			el.addEvent('click', function(){
				this.toggle(element,params,el)
			}.bind(this));
		}
	},
	toggle: function(obj,params,ibn){
		if ( params.animate ) return false;
		params.animate = true;
		
		var h1 = h2 = 0;
		$(ibn.parentNode).toggleClass('show');
		
		if( params.show ){
			h1 = obj.offsetHeight;
		} else {
			h2 = params.height;
		}
		
		var fx = new Fx.Tween(obj, { property: 'height' });
		fx.start(h1 , h2).chain(function(){
			if(params.show) {
				params.height = h1;
				params.show = false;
			} else {
				obj.style.height = 'auto';
				params.show = true;
			}
			
			params.animate = false;
			
		},this);
	}
});

window.addEvent('domready',function(){
   
        new Mizo;
});
