// 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 dual-licensed under the GNU General Public License and the MIT License
// and is copyright 2008 A Beautiful Site, LLC. 
//
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); 
