// jQuery Right-Click Plugin
//
// Version 1.01
//
// Cory S.N. LaViska
// A Beautiful Site (http://abeautifulsite.net/)
// 20 December 2008
//
// Visit http://abeautifulsite.net/notebook/68 for more information
//
// Usage:
//
//      // Capture right click
//      $("#selector").rightClick( function(e) {
//          // Do something
//      });
//      
//      // Capture right mouse down
//      $("#selector").rightMouseDown( function(e) {
//          // Do something
//      });
//      
//      // Capture right mouseup
//      $("#selector").rightMouseUp( function(e) {
//          // Do something
//      });
//      
//      // Disable context menu on an element
//      $("#selector").noContext();
// 
// History:
//
//      1.01 - Updated (20 December 2008)
//           - References to 'this' now work the same way as other jQuery plugins, thus
//             the el parameter has been deprecated.  Use this or $(this) instead
//           - The mouse event is now passed to the callback function
//           - Changed license to GNU GPL
//
//      1.00 - Released (13 May 2008)
//
// License:
// 
//      This plugin is licensed under the GNU General Public License: http://www.gnu.org/licenses/gpl.html
//
if(jQuery) (function(){
    
    $.extend($.fn, {
        
        rightClick: function(handler) {
            $(this).each( function() {
                $(this).mousedown( function(e) {
                    var evt = e;
                    $(this).mouseup( function() {
                        $(this).unbind('mouseup');
                        if( evt.button == 2 ) {
                            handler.call( $(this), evt );
                            return false;
                        } else {
                            return true;
                        }
                    });
                });
                $(this)[0].oncontextmenu = function() {
                    return false;
                }
            });
            return $(this);
        },      
        
        rightMouseDown: function(handler) {
            $(this).each( function() {
                $(this).mousedown( function(e) {
                    if( e.button == 2 ) {
                        handler.call( $(this), e );
                        return false;
                    } else {
                        return true;
                    }
                });
                $(this)[0].oncontextmenu = function() {
                    return false;
                }
            });
            return $(this);
        },
        
        rightMouseUp: function(handler) {
            $(this).each( function() {
                $(this).mouseup( function(e) {
                    if( e.button == 2 ) {
                        handler.call( $(this), e );
                        return false;
                    } else {
                        return true;
                    }
                });
                $(this)[0].oncontextmenu = function() {
                    return false;
                }
            });
            return $(this);
        },
        
        noContext: function() {
            $(this).each( function() {
                $(this)[0].oncontextmenu = function() {
                    return false;
                }
            });
            return $(this);
        }
        
    });
    
})(jQuery); 