/* Menu */
jQuery.fn.menu = function(settings) {
	var open = false;
	return this.each(function() {
		var __e = $(this);
		var options = $.extend({}, settings);

		var $child = $('#' + __e.attr('data-menu')), 
			position = __e.offset(), 
			top = position.top + __e.outerHeight(true), 
			left = position.left;

		__e.css({
			//'cursor' : 'default'
		});
		$child.hide().addClass('menu-child').css({
			'position' : 'absolute',
			'top' : top,
			'left' : left
		});

		__e.unbind('click').click(show).unbind('mouseenter')
				.mouseenter(show_opens);
		$child.unbind('mouseleave').mouseleave(hide);

		function show() {
			$('.menu-child').not($child).slideUp('fast');
			$child.slideToggle('fast', function() {
				open = $child.is(":visible");
			});
		}

		function show_opens() {
			//if (open) {
				$('.menu-child').not($child).slideUp('fast');
				$child.slideToggle('fast');
			//}
		}

		function hide() {
			$child.slideUp('fast');
		}
	});
};

/* Menubar */
jQuery.fn.menubar = function(settings) {
	return this.each(function() {
		var __e = $(this);
		var options = $.extend({}, settings);

		__e.find('[data-menubar-item]').each(function() {
			menubar($(this), __e);
		});
	});
};

function menubar(__e, __c) {
	var $child = $('#' + __e.attr('data-menubar-item')),
		_side = __c.attr('data-menubar');

	__e.css({/* 'cursor' : 'default' */});

	$child.hide().addClass('menubar-child');
	_position();

	__e.unbind('mouseenter').mouseenter(show);
	$child.unbind('mouseleave').mouseleave(hide);
	__c.unbind('mouseleave').mouseleave(hide_all);

	function show() {
		__c.find('.active').removeClass('active');
		__e.addClass('active');
		$('.menubar-child').not($child).slideUp('fast');
		_position();
		$child.slideDown('fast');
	}

	function hide() {
		__c.find('.active').removeClass('active');
		$child.slideUp('fast');
	}

	function hide_all() {
		__c.find('.active').removeClass('active');
		$('.menubar-child').slideUp('fast');
	}

	function _position() {
		var position_container = __c.offset(), 
			position_element = __e.offset();

		var top_child = position_container.top + __c.outerHeight(), 
			left_child = position_element.left;

		if (_side == 'right') {
			if ((left_child + $child.outerWidth(true)) > (position_container.left + __c.outerWidth(true))) {
				left_child = (position_container.left + __c.outerWidth(true)) - $child.outerWidth(true);
			}
		}

		$child.css({
			'position' : 'absolute',
			'top' : top_child,
			'left' : left_child
		});
	}
}
