i4_Navigation_flyout = {
	instances: [],
	
	factory: function(){
		var instance = new i4_Navigation_flyout_instance();
		this.instances.push(instance);
		return instance;
	}
}

var i4_Navigation_flyout_instance = Class.create({
	id: '',
	mouseout_listener_index: '',
	mouseout_distance: 60,
	
	set_id: function(id) { this.id = id; return this; },
	set_mouse_distance: function(mouse_distance) { this.mouse_distance = mouse_distance; return this; },
	
	run: function() {
		
		this.hide_all();
				
		$$('#'+this.id+' ul.navigation_flyout > li > a').each((function(item){	
			item.on('mouseover', (function(event){
				this.hide_all();

				if (item.up().down('ul')) {
					item.up().down('ul').setStyle({ display: 'block' });
					
					this.mouseout_listener_index = i4_Document_listener.mouseout({
						callback: (function() {
							this.hide_all();
						}).bind(this),
						element: item.up().down('ul'),
						distance: this.mouse_distance
					});
										
					if(typeof i4_Edit_toolbar != "undefined") {
						i4_Edit_toolbar.renew_height();
					}					
				}
				
			}).bind(this));
			 
		}).bind(this));
		
		var index = i4_Document_listener.click({
		    callback: (function() {
		    	this.hide_all();		
		    }).bind(this)
		});
		
	},
	
	hide_all: function() {
		$$('#'+this.id+' ul.navigation_flyout > li > ul').each(function(item){	
			item.setStyle({ display: 'none' });
		});
		
		if (this.mouseout_listener_index != '') {
			i4_Document_listener.stop_mouseout(this.mouseout_listener_index);
		}
	}
});
