Element.addMethods({
	onmouseenter: function(element,observer) {
		element = $(element);
		element.observe('mouseover',
				function(evt,currentTarget) {
					var relatedTarget = $(evt.relatedTarget || evt.fromElement);
					if( relatedTarget != currentTarget && relatedTarget.childOf(currentTarget)==false ) observer(element);
				}.bindAsEventListener({},element));
		return element;
	},
	onmouseleave: function(element,observer) {
		element = $(element);
		element.observe('mouseout',
				function(evt,currentTarget) {
					var relatedTarget = $(evt.relatedTarget || evt.toElement);
					if(relatedTarget != currentTarget && relatedTarget.childOf(currentTarget)==false ) observer(element);
				}.bindAsEventListener({},element));
		return element;
	}
});
