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);