var waImageslider = Class.create({
  initialize: function(element) {
    var defaults = {
      slide_value: 200,
      effect_options: {
        duration: 0.3,
        mode: 'relative',
        queue: {position: 'end', scope: 'waImageslider'}
      }
    };
    var options = Object.extend(defaults, arguments[1] || { });
    this.options = options;
    this.element = (element);
    var pos = 0;
    this.pos = pos;
    var numberOfBlocks = $$('.' + this.options.slidable_class).size();
    this.number_of_elements = numberOfBlocks;

    this._setHandles();
  },
  
  _slide: function(event) {
    var dir = event.element().hasClassName('left') ? -1 : 1;
    var x_value = this.options.slide_value * dir * -1;
    if (((this.pos < this.number_of_elements - 1) && (dir == 1)) || ((this.pos > 0) && (dir == -1))) {
      new Effect.Move(this.element, Object.extend({x: x_value}, this.options.effect_options));
      this.pos += dir;
    }
  },
  
  _setHandles: function() {
	this.leftHandle = $(this.options.left_handle);
	this.rightHandle = $(this.options.right_handle);
	if (this.leftHandle) {
	    new Element.observe(this.leftHandle, 'click', this._slide.bind(this));
	};
	if (this.rightHandle) {
		new Element.observe(this.rightHandle, 'click', this._slide.bind(this));
	};
  }
  
});
