var menu = new function() {
	this.slide_speed = 250;
	this.timer_delay = 1000;  //time it takes the main menu to close automatically after the mouse moves away
	
	this.menu_id = "menu";
	this.q = new Array();
	this.timer = 0;
	this.items = ['item1','item2','item3'];
	
	this.setup = function() {
		for(var i=0; i<this.items.length; i++) {
				var item_id = this.items[i];
				
				jQuery('#' + this.menu_id + " li." + item_id)
					.data('item_id', item_id)
					.hover(
								function() { 
									menu.queue(jQuery(this).data('item_id'), 0); 
								}, 
								function() { 
									menu.queue(jQuery(this).data('item_id'), 1); 
								} 
							);	
		}
	};
	
	this.restart = function() {
		clearInterval(this.timer);
		this.timer = setInterval("menu.tick()", this.timer_delay);
	};
	
	this.queue = function(item_id, bHide) {
		if (bHide == 1) {
			var bFound = false;
			for(var j=0; j<this.q.length; j++) {
				if (this.q[j] == item_id) {
					bFound = true;	
					break;
				}
			}
			if (!bFound) {
				this.q.push(item_id);
			}
			this.restart();
		} else {
			if (jQuery("#" + this.menu_id + " li." + item_id).children('ul').length > 0) {
				if (jQuery("#" + this.menu_id + " li." + item_id).children('ul').css('display') != 'block')
					jQuery("#" + this.menu_id + " li." + item_id).children('ul').stop().css({'left': -150, 'display' : 'block', 'opacity' : 0}).animate({'left' : 0, 'opacity' : 1}, this.slide_speed);
				jQuery("#" + this.menu_id + " li." + item_id).addClass('dyn_active');
			
				var new_menu = new Array();
				for(var i=0; i<this.q.length; i++) {
					if (this.q[i] != item_id)
						new_menu.push(this.q[i]);
				}
				this.q = new_menu;			
			}
			
			this.close_all(item_id);
		}
	};

	this.close = function(item_id) {
		jQuery("#" + this.menu_id  + " li." + item_id).removeClass('dyn_active');
		jQuery("#" + this.menu_id  + " li." + item_id).children('ul').stop().animate({'opacity' : 0}, this.slide_speed, function() { jQuery(this).css('display','none'); });
	};


	this.close_all = function(item_id) {
		for( var i=0; i<this.items.length; i++) {
			var cur_item = this.items[i];
			if (cur_item != item_id)
				this.close(cur_item);
		}
	};

	this.tick = function() {
		for(var i=0; i<this.q.length; i++) {
			this.close(this.q[i]);
		}
		this.q = new Array();
	};
	
};
jQuery(document).ready(function() {
	menu.setup();								
});
