/*    jquery.goatstone.menu.js
 */

$.widget("ui.menu", {
	options : {},
	mouseIsOverElement : function(element, mouseCoords) {
		// y< top+height and y > top and x > left and x < left + width
		var elemOffset = $(element).offset(); // top left
		var elemWidth = $(element).outerWidth();
		var elemHeight = $(element).outerHeight();
		if (mouseCoords[0] > elemOffset.left && mouseCoords[0] < elemOffset.left + elemWidth && mouseCoords[1] < elemOffset.top + elemHeight && mouseCoords[1] > elemOffset.top) {
			return true;
		} else
			return false
	},
	_create : function() {
		$this = this;
		$this.element.show();
		$this.element.find('ul#menu-items li').bind('mouseover', function(e) {
			$('#' + $(this).data('option') + '-options').show()
		});

		$('#menu-items li').bind('mouseleave', function(e) {
			$this2 = this;
			setTimeout(function() {
				if (!$this.mouseIsOverElement($('#' + $($this2).data('option') + '-options'), [ e.pageX, e.pageY ])) {
					$('#' + $($this2).data('option') + '-options').hide();
				}
			}, 10);
		});
		// options display-options
		$('.menu-options').bind('mouseleave', function(e) {
			$(this).hide();
		});

		$this.element.find('li').bind('click', function(e) {
			if ($(e.target).parent().data("value") === "effects") {
				$('body').variableDisplay("effects", $(e.target).data("value"));
				$(this).parent().hide();				
			} else if ($(e.target).parent().data("value") === "display-options") {
				$('body').variableDisplay($(e.target).data("value"));
				$(this).parent().hide();				
			}
		})
	},
	destroy : function() {
		$.Widget.prototype.destroy.apply(this, arguments); // default
	}
});

