/*
**	Simple dropdown menu Javascript class
**
**	(c) 2010 Mikoon Webservices
*/

/*
**	Usage:
**
**	mymenu = new dropdown('menu-ul-element-id', 'submenu-subselector', {options});
*/

var dropdown = new Class({
	
	Implements: Options,
	
	options: {
		duration: 250
    },
	
	initialize: function(in_element, in_submenus, options){	
		//	set vars
		this.id = in_element;
		this.subs = in_submenus;
	
		//	set options
		this.setOptions(options);

		//	setup
		this.setup();
	},
	
	setup: function(){
		//	open event
		$$('#'+this.id+' a.menubutton').addEvent('mouseenter', (function(e){ this.open(e.target); }).bind(this));
		
		//	close events
		$$('#'+this.id+' ul'+this.subs).addEvent('mouseleave', (function(){ this.close(); }).bind(this));
		$$('#'+this.id+' ul').addEvent('mouseleave', (function(){ this.close(); }).bind(this));
		$(this.id).addEvent('mouseleave', (function(){ this.close(); }).bind(this));
	},
	
	open: function(in_element){
		//	close all open elements
		this.close();
		
		options = this.options;
		//	open submenu
		if(sub = $(in_element).getParent().getFirst('ul'+this.subs)){ 
			sub.setStyles({'top': '0px', 'left': $(in_element).getPosition($(this.id)).x + 'px', 'display': 'block', 'overflow': 'hidden', 'height': '0px'});
			if(sub.fx) sub.fx.cancel(); 
			sub.fx = new Fx.Tween(sub, {duration: options.duration}).start('height', sub.getSize().y, sub.getScrollSize().y);
		}
	},
	
	close: function(){
		//	close all submenus
		$$('#'+this.id+' ul').setStyles({'top': '-1000px'});
	}
	
});
