(function($){
$.fn.floatSubmenu = function (options) {
	var defaults = {
		container: "#submenu",
		ajaxQuery: true,
		script: "submenu.php",
		time: "1000",		
		callback: null
	}

	var options = $.extend(defaults, options);

	var cont = jQuery(options.container);

	var clear_timeout = function () {
		if (typeof(timeout) == "number") {
			clearTimeout(timeout);
		}
	};

	var set_timeout = function () {
		timeout = setTimeout(hideMenu, options.time);
	};	

	var loadMenu = function (menu_id) {
		//cont.load(options.script+"?"+options.var_name+"="+menu_id, showFullMenu);		
		if (options.ajaxQuery) {
			jQuery.get(options.script, {pg: menu_id}, function (data) {
				if (data != "") {					
					cont.html(data);
					showFullMenu();
				}
			});
		} else {			
			showFullMenu();
		}
	};

	var showFullMenu = function () {		
		cont.show();
		if (options.callback) {
			options.callback();			
		}
	};

	var showMenu = function (obj) {		
		if (cont.is(":hidden")) {			
			props = get_properties(obj);
			positionMenu(props.top, props.left);
			loadMenu(props.id);								
		}
	};

	var hideMenu = function () {
		if (jQuery(options.container).is(":visible")) {
			clear_timeout();
			jQuery(options.container).hide();
		}
	};

	var positionMenu = function (top, left) {
		cont.css("left", left);
		cont.css("top", top);
	};

	var get_properties = function (obj) {		
		pos = {
			id: obj.attr("title").split("-")[0],
			left: obj.offset().left - obj.position().left,
			top: obj.offset().top + obj.outerHeight() + 5
		};
		return pos;
	};

	return this.each(function () {		
		obj = jQuery(this);		
		if (cont.filter("[title="+obj.attr("title")+"]").length > 0) {
			obj.hover(
				function () {					
					clear_timeout();
					showMenu(jQuery(this));					
				},
				function () {					
					set_timeout();					
				}
			);
				
			jQuery(options.container).hover(
				function () {
					clear_timeout();
				},
				function () {
					set_timeout();
				}
			);

			jQuery("*").click(function (){
				hideMenu();
			});
		} else {
			obj.mouseover(function () {
				hideMenu();
			})
		}
	});
};
})(jQuery);