var Slide = Class.create();
Slide.prototype = {
  initialize: function(element, elementButton, size) {
    this.elementSelector = element;
    this.maxSizePerPage = size;
    elementCount = this.getElements().size()
    this.greatestPage = Math.ceil(elementCount / size);
    if (elementCount <= size) {
      $$(elementButton + " a.left").first().hide();
      $$(elementButton + " a.right").first().hide();
      return
    }
    $$(elementButton + " a.left").first().observe('click', this.previous.bind(this));
    $$(elementButton + " a.right").first().observe('click', this.next.bind(this));
    this.showPage(this.currentPage = 1);
  },

  getElements: function() {
		return $$(this.elementSelector);
	},

	next: function(e) {
		if (this.currentPage == this.greatestPage)
		  this.showPage(this.currentPage = 1);
		else
		  this.showPage(this.currentPage + 1);
		Event.stop(e);
	},

	previous: function(e) {
		if (this.currentPage == 1)
		  this.showPage(this.currentPage= this.greatestPage);
		else
		  this.showPage(this.currentPage - 1);
    Event.stop(e);
	},

  showPage: function(page) {
    var high = this.maxSizePerPage * page;
    var showList = $R(high - this.maxSizePerPage, high, true);
		this.getElements().each( function (n,index) {
			if (showList.include(index))
				n.show();
			else
				n.hide();
		})
		this.currentPage = page;
  }
}