jQuery.Scroller = function(container, options){
  var $container = jQuery(container);
  var opts = options;
  var offset = 0;
  var $view = jQuery(opts.view, $container);
  var $content = jQuery(opts.content, $container);
  var max_offset = $content.width() - $view.width();

  function setup_events(){
    jQuery(opts.left, $container).click(function(){
      scroll(-opts.dx);
    });
    jQuery(opts.right, $container).click(function(){
      scroll(opts.dx);
    });
  }

  function scroll(x){
    offset += x;
    if(offset < 0) offset = 0;
    if(offset > max_offset) offset = max_offset;
    $content.css('left', -offset+'px');
  }

  function show_scrollers(){
    jQuery(opts.bar, $container).show();
  }

  if(max_offset>0){
    setup_events();
    show_scrollers();
  }
}

jQuery.fn.scroller = function(options){
  this.each(function(){
    var container = this;
    options = jQuery.extend({}, jQuery.fn.scroller.defaults, options);
    new jQuery.Scroller(container, options);
  });
  return this;
}

jQuery.fn.scroller.defaults = {
  view: 'div',
  content: 'table',
  bar: 'bar',
  left: '.left',
  right: '.right',
  dx: 40
}
