function moveCarousel(direction) {
  var pagination = YAHOO.util.Selector.query('.pagination', null, true);
  var slides = YAHOO.util.Selector.query('.carousel > li');
  var length = slides.length;
  var current = 1;
  
  // Reset pagination state
  YAHOO.util.Dom.removeClass(pagination, "first");
  YAHOO.util.Dom.removeClass(pagination, "last");
  
  // Find current li, and move the current flag to the next or prev one
  for (var i=0; i<length; i++) {
    if (YAHOO.util.Dom.hasClass(slides[i], "current")) {
      current= i + direction;
      
      // Make sure movement is within bounds of the list
      if( current < 0 || current >= length ){
        current = current + (direction * -1); // reset current value
        break;
      }
      
      // Set pagination state
      if ( current == 0 ) {
        YAHOO.util.Dom.addClass(pagination, "first");
      }
      if ( current == length-1 ) {
        YAHOO.util.Dom.addClass(pagination, "last");
      }
      
      // Show the correct image
      YAHOO.util.Dom.addClass(slides[current], "current");
      YAHOO.util.Dom.removeClass(slides[i], "current"); 
      break;
    }
  }
  
  // Update page count
  YAHOO.util.Selector.query(".pagination .current-slide", null, true).innerHTML = current + 1;
  YAHOO.util.Selector.query(".pagination .num-slides", null, true).innerHTML = length;
}

YAHOO.util.Event.onDOMReady( function() {
  YAHOO.util.Event.on("previous", "click", function(e){
    YAHOO.util.Event.stopEvent(e);
    moveCarousel(-1);
  });
  
  YAHOO.util.Event.on("next", "click", function(e){
    YAHOO.util.Event.stopEvent(e);
    moveCarousel(1);
  });
})
