(function($) {
  $.fn.roll = function roll(o) {
    o = o || '_o';
    return this.each(function() {
      var src = this.src;
      if (!src) {
        var target = $('img, input[type="button"]', this);
        if (target.length) roll.call(target, o);
        return;
      }
 
      var out = src;
      var over = src.replace(/(\.[^.]+$)/, o+'$1');
      $('<img src="'+over+'"/>');
      $(this).hover(
        function() { this.src = over; },
        function() { this.src = out; }
      );
    });
  };
})(jQuery);