/* Copyright (c) 2010, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http://developer.yahoo.com/yui/license.html version: 3.3.0 build: 3167 */ YUI.add('event-hover', function(Y) { /** * Adds support for a "hover" event. The event provides a convenience wrapper * for subscribing separately to mouseenter and mouseleave. The signature for * subscribing to the event is

* *
node.on("hover", overFn, outFn);
 * node.delegate("hover", overFn, outFn, ".filterSelector");
 * Y.on("hover", overFn, outFn, ".targetSelector");
 * Y.delegate("hover", overFn, outFn, "#container", ".filterSelector");
 * 
* *

Additionally, for compatibility with a more typical subscription * signature, the following are also supported:

* *
Y.on("hover", overFn, ".targetSelector", outFn);
 * Y.delegate("hover", overFn, "#container", outFn, ".filterSelector");
 * 
* * @module event * @submodule event-hover */ var isFunction = Y.Lang.isFunction, noop = function () {}, conf = { processArgs: function (args) { // Y.delegate('hover', over, out, '#container', '.filter') // comes in as ['hover', over, out, '#container', '.filter'], but // node.delegate('hover', over, out, '.filter') // comes in as ['hover', over, containerEl, out, '.filter'] var i = isFunction(args[2]) ? 2 : 3; return (isFunction(args[i])) ? args.splice(i,1)[0] : noop; }, on: function (node, sub, notifier, filter) { sub._detach = node[(filter) ? "delegate" : "on"]({ mouseenter: Y.bind(notifier.fire, notifier), mouseleave: sub._extra }, filter); }, detach: function (node, sub, notifier) { sub._detacher.detach(); } }; conf.delegate = conf.on; conf.detachDelegate = conf.detach; Y.Event.define("hover", conf); }, '3.3.0' ,{requires:['event-mouseenter']});