

(function($){
  $.fn.mssProductScroller = function() {
    var currentlyMoving = false;
    var stepsize = 5;
    var scroller = $(this);
    if (!scroller){return false;} // fail if we cannot find scroller element
  
    var sView = scroller.children('.scroller-view').first();
    var sHidden = scroller.children('.scroller-hidden').first();
    
    // grab box size and number showing
    var defaultBoxes = sView.children('.sbox');
    var boxsize = parseInt(defaultBoxes.first().css('width'));
    var numshowing = defaultBoxes.length;
    
    // add functionality to next and previous buttons
    var nxt = scroller.children('.next-box');
    if (nxt){nxt.click(advanceScroller);}
    var prv = scroller.children('.prev-box');
    if (prv){prv.click(rewindScroller);}
  
  
    function advanceScroller(){
      if (currentlyMoving){return false;}else{currentlyMoving=true;}
      var hBoxes = sHidden.children('.sbox');
      var vBoxes = sView.children('.sbox');
      if (!hBoxes){return false;}
      var newBox = hBoxes.first();
      var oldBox = vBoxes.first();
      newBox.first().css('left', vBoxes.length * boxsize);
      sView.append(newBox);
      moveScroller(-1 * boxsize, function(){
        sHidden.append(oldBox);
        currentlyMoving=false;
      });
    }
    
    function rewindScroller(){
      if (currentlyMoving){return false;}else{currentlyMoving=true;}
      var hBoxes = sHidden.children('.sbox');
      if (!hBoxes){return false;}
      var newBox = hBoxes.last();
      var oldBox = sView.children('.sbox').last();
      newBox.css('left', -1 * boxsize);
      sView.prepend(newBox);
      moveScroller(boxsize, function(){
        sHidden.prepend(oldBox);
        currentlyMoving=false;
      });
    }
    
    function moveScroller(dist, after) {
      var currentChildren = sView.children('.sbox');
      
      currentChildren.animate({
        left: '+='+dist
      }, 500, after);
    }
  }
})(jQuery);



