jQuery(function($) {
	var current_items = null;
	var timerID = null;
	var timeoutValue = 500; // 0.5 second timeout
	
	function clearTimer() {
		if (timerID != null) {
			clearTimeout(timerID);
			timerID = null;
		}
	}
	
	function hide() {
		if (current_items != null) {
			current_items.css("display", "none");
			current_items = null;
		}
	}
	
	function hide_timeout() {
		timerID = null;
		hide();
	}
	
	function display_section(mitem, mitems, empty) {
		clearTimer();
		if (current_items != mitems) {
			hide();
		}
		
		if (current_items == mitems) {
			return;
		}
		
		
		if (empty) {
			current_items = null;
		} else {
			current_items = mitems;
			var offset = mitem.offset();
			mitems
				.css("left", offset.left)
				.css("top", offset.top + mitem.height())
				.css("display", "block")
			;
		}
		
	}
	
	function timed_hide(mitems) {
		if (current_items == mitems) {
			timerID = setTimeout(hide_timeout, timeoutValue);
		}
	}
	
	$(".main_menu_item")
		.each(function() {
			var mitem = $(this);
			var mitems = mitem.find(".section_items");
			var empty = mitems.find("a:first").length == 0;
			var blocks = mitem.add(mitems);
			
			if (!empty) {
				blocks.mouseout(function() {
					timed_hide(mitems);
				});
			}
			
			blocks.mouseover(function() {
				display_section(mitem, mitems, empty);
			});
			
			mitems.addClass("menu_items");
			
			$(document.body).append(mitems);
		})
	;
});
