GIF89a;
Direktori : /home/serb/www/livechat/js/lib/ |
Current File : /home/serb/www/livechat/js/lib/jquery.extramouse.js |
//============================================================================== // // jquery.extramouse - jQuery plugin adding extra mouse management methods // // by mirrormx@o2.pl // //============================================================================== (function($) { // Properties & methods $.mouseX = 0; $.mouseY = 0; $(document).mousemove(function(evt) { $.mouseX = evt.pageX; $.mouseY = evt.pageY; }); $.fn.mouseX = function() { return $.mouseX - this.offset().left; }; $.fn.mouseY = function() { return $.mouseY - this.offset().top; }; $.fn.pointInBounds = function(pageX, pageY) { var bounds = this.offset(); bounds.right = bounds.left + this.outerWidth(); bounds.bottom = bounds.top + this.outerHeight(); return( bounds.left <= pageX && pageX <= bounds.right && bounds.top <= pageY && pageY <= bounds.bottom ); }; $.fn.underMouse = function() { return this.pointInBounds($.mouseX, $.mouseY); }; // Events $.event.special.xclick = { add : function() { var _this = this; // Listen for global mouse click $(document).bind('click.xclick', function() { // Check if cursor is over the element if($(_this).underMouse()) { // Fire the event $(_this).triggerHandler('xclick'); } }); }, remove : function() { // Remove global mouse click handler $(document).unbind('click.xclick'); } }; $.event.special.xmousemove = { add : function() { var _this = this; // Listen for global mouse move $(document).bind('mousemove.xmousemove', function() { // Check if cursor is over the element if($(_this).underMouse()) { // Fire the event $(_this).triggerHandler('xmousemove'); } }); }, remove : function() { // Remove global mouse move handler $(document).unbind('mousemove.xmousemove'); } }; $.event.special.xmouseover = { add : function() { var _this = this; var over = false; // Listen for global mouse move $(document).bind('mousemove.xmouseover', function() { // Check if element is under cursor if($(_this).underMouse()) { if(!over) { // Store the state over = true; // Fire the event $(_this).triggerHandler('xmouseover'); } } else { // Store the state over = false; } }); }, remove : function() { // Remove global mouse move handler $(document).unbind('mousemove.xmouseover'); } }; $.event.special.xmouseout = { add : function() { var _this = this; var over = false; // Listen for global mouse move $(document).bind('mousemove.xmouseout', function() { // Check if cursor has left the element if(!$(_this).underMouse()) { if(over) { // Store the state over = false; // Fire the event $(_this).triggerHandler('xmouseout'); } } else { // Store the state over = true; } }); }, remove : function() { // Remove global mouse move handler $(document).unbind('mousemove.xmouseout'); } }; })(jQuery);