var Paginator = Class.create();

Paginator.prototype = {
  initialize: function(id, count, recordsperpage, recordcount,  selector, buttonselector, init) {
    this.id = id;
	this.pagecount = count;
	this.recordcount = recordcount;
	this.recordsperpage = recordsperpage;
	this.selector = selector;
	this.buttonselector = buttonselector;
	this.obj = $(id);
	this.current_id = init;
	this.current = $(id + '_page' + this.current_id);
	this.current.addClassName(this.selector);
	var button = $(this.id + '_page' + this.current_id + "_button");
	button.addClassName(this.buttonselector);
	this.setStatut();
},
  
  setActive: function(page) {
  	this.current.removeClassName(this.selector);
	var button = $(this.id + '_page' + this.current_id + "_button");
	button.removeClassName(this.buttonselector);
	
	this.current_id = page;
	this.current = $(this.id + '_page' + this.current_id);
	this.current.addClassName(this.selector);
	
	button = $(this.id + '_page' + this.current_id + "_button");
	button.addClassName(this.buttonselector);
	this.setStatut();
	return false;
  },
  
  next: function(bobj) {
	var tmp = this.current_id + 1;
	if (tmp < this.pagecount) {
		var button = $(this.id + '_page' + this.current_id + "_button");
		button.removeClassName(this.buttonselector);
		
	  	this.current.removeClassName(this.selector);
		this.current = $(this.id + '_page' + tmp);
		this.current.addClassName(this.selector);
		this.current_id = tmp;
		
		button = $(this.id + '_page' + this.current_id + "_button");
		button.addClassName(this.buttonselector);
		this.setStatut();
	}
	return false;
  },
  
  back: function() {
	var tmp = this.current_id - 1;
	if (tmp >= 1) {
		var button = $(this.id + '_page' + this.current_id + "_button");
		button.removeClassName(this.buttonselector);
		
	  	this.current.removeClassName(this.selector);
		this.current = $(this.id + '_page' + tmp);
		this.current.addClassName(this.selector);
		this.current_id = tmp;
		
		button = $(this.id + '_page' + this.current_id + "_button");
		button.addClassName(this.buttonselector);
		this.setStatut();
	}
	return false;
  },
  
  setStatut: function() {
  	
	begin=1;
  	if(this.current_id != 1) {
		begin = ((this.current_id * this.recordsperpage) - this.recordsperpage) + 1;
	}
  	$(this.id + "_count_begin").innerHTML = begin;
	end = (begin + this.recordsperpage) - 1;
	if(end > this.recordcount) {
		$(this.id + "_count_end").innerHTML = this.recordcount;
	}
	else {
		$(this.id + "_count_end").innerHTML = end;
	}
	return false;
  },
  
  toggle: function(button) {
  	$(this.id).toggle();
	button.toggleClassName(this.buttonselector);
	if(button.innerHTML == "-") {
		button.innerHTML = "+";
	}
	else {
		button.innerHTML = "-";
	}
	return false;
  }
  
  
  
 
};



