
(function(){var withinElement=function(evt,el){var parent=evt.relatedTarget;while(parent&&parent!=el){try{parent=parent.parentNode;}catch(error){parent=el;}}
return parent==el;};Object.extend(Event,{mouseEnter:function(element,f,options){element=$(element);var fc=(options&&options.enterDelay)?(function(){window.setTimeout(f,options.enterDelay);}):(f);if(Prototype.Browser.IE){element.observe('mouseenter',fc);}else{element.hovered=false;element.observe('mouseover',function(evt){if(!element.hovered){element.hovered=true;fc(evt);}});}},mouseLeave:function(element,f,options){element=$(element);var fc=(options&&options.leaveDelay)?(function(){window.setTimeout(f,options.leaveDelay);}):(f);if(Prototype.Browser.IE){element.observe('mouseleave',fc);}else{element.observe('mouseout',function(evt){var target=Event.element(evt);if(!withinElement(evt,element)){fc(evt);element.hovered=false;}});}}});Element.addMethods({'hover':function(element,mouseEnterFunc,mouseLeaveFunc,options){options=Object.extend({},options)||{};Event.mouseEnter(element,mouseEnterFunc,options);Event.mouseLeave(element,mouseLeaveFunc,options);}});})();
