(function( $ ) {
var scrollpos = 0;
var numdivs = 0;
var slider;

var defaults = {
   scrollWidth:800,          // In px
   paneHeight: 1000,       // In px
   hWidth: 20000,           // In em
   itemClass: 'hs-item',
   fwdBtnId: 'hs-fwd',
   bkBtnId: 'hs-bk'
};

$.fn.hScroll = function(options)
{
   if (options)
      $.extend(defaults, options);

   function scroll(fwd)
   {
      if (fwd)
      {
         if (scrollpos == -defaults.scrollWidth*(numdivs-1))
            return;
         scrollpos -= defaults.scrollWidth;
      }
      else
      {
         if (scrollpos == 0)
            return;
         scrollpos += defaults.scrollWidth;
       }
       var t = { left: '' };
       t.left = scrollpos+"px";
       slider.animate(t, "fast");
   }
   
   function scrollAbs(n)
   {
       scrollpos = -(numdivs-n)*defaults.scrollWidth;
       slider.css("left", scrollpos+"px")
   }
      
   numdivs = this.length;
   this.wrapAll('<div id="hs-slider___" style="width:'+defaults.hWidth+'em; position:absolute; vertical-align:top;" />');
   slider = $('#hs-slider___');
   slider.wrap('<div id="hs-pane___" style="position:relative; overflow:hidden; width:'+
                             defaults.scrollWidth+'px; height:'+defaults.paneHeight+'px;" />');
   slider.data("sp", 0);
   $(this).each(function()
   {
      $(this).attr("style", "float: left; vertical-align:top; width:"+defaults.scrollWidth+"px;");
   });

   $("#"+defaults.fwdBtnId).click(function() { scroll(false); });
   $("#"+defaults.bkBtnId).click(function() { scroll(true); });

   $(".hs-link").each(function()
   {
       var n = parseInt(this.id.substring(1));
       $(this).click(function() { scrollAbs(n); });
   });
};
})( jQuery );


