//class is in
var actividadesSlider = new Class({
	
	Implements: [Options, Events],

	//options
	options: {
		slider : null,
		elementWidth: 0,
		scrollRange: 0,
		leftHandle: 'leftScroller',
		rightHandle: 'rightScroller',
		sliderWrap: 'sliderwrap',
		sliderHandle: 'sliderhandle',
		elementClass : 'elementScroller',
		container: null,
		position : 0,
		offset: 5,
		speed: 400,
		trans : null,
		elements: null,
		numElements: 0,
		tams: null,
		starts: null,
		tamTotal: 0
	},
	
	//initialization
	initialize: function(options) {
		//set options
		this.setOptions(options);
		
		$( this.options.leftHandle ).addEvent( 'click', this.moveLeft.bindWithEvent( this ) );
		$( this.options.rightHandle ).addEvent( 'click', this.moveRight.bindWithEvent( this ) );

		this.options.elements = $( this.options.container ).getElements( '.' + this.options.elementClass );
		
		this.options.tams = new Array();
		this.options.starts = new Array();
		
		this.options.elements.each(function( item, index ) {
			this.options.tams[index] = item.getStyle('width').toInt() + 4;
			this.options.numElements++;
			if( index == 0) {
				this.options.starts[0] = 0;
			} else {
				this.options.starts[index] = this.options.starts[index-1] + this.options.tams[index-1];
			}
			
			this.options.tamTotal += item.getStyle('width').toInt() + 4;
		}, this);
		
		
		//$( this.options.container ).setStyle( 'width', ( this.options.numElements + 1 ) * this.options.elementWidth );
		$( this.options.container ).setStyle( 'width', this.options.tamTotal );
/*
		var miSlider = new Class({
		    Extends: Slider,
		    scrolledElement:  this.scrolledElement.bind( this )
		});
		
		this.options.slider = new miSlider(  $( this.options.sliderWrap ),  $( this.options.sliderHandle ) , {
			steps: this.options.numElements - 1,
			onChange: this.moveToPos.bind( this ),
			wheel: true
		}).set( 0 );
*/
		
		$( this.options.container ).addEvent( 'mousewheel', this.scrolledElement.bind( this ) );
		
		
		this.options.trans = $( this.options.container ).get('tween', {
				duration: this.options.speed,
				wait:true
				});

		//this.actualizarPos();
	},
	
	moveLeft: function(){
		if( this.options.position > 0) {
			var start = $(this.options.container).getStyle('right');
			//var end = ( this.options.position - 1 ) * this.options.elementWidth;
			var end = this.options.starts[this.options.position -1];
			if(start == 'auto') start = 0;
			this.options.trans.start('right', start, end);
			
			this.options.position--;
			//this.options.slider.set( this.options.position );
			//this.actualizarPos();
		}
		return false;
	},
	
	moveRight: function(){

		if( this.options.position + this.options.offset < this.options.numElements -1 ) {
			var start = $(this.options.container).getStyle('right');
			//var end = ( this.options.position * this.options.elementWidth ) + this.options.elementWidth;
			var end = this.options.starts[this.options.position] + this.options.tams[this.options.position + this.options.offset];
			if(start == 'auto') start = 0;
			this.options.trans.start('right', start, end);
			
			this.options.position++;
			//this.options.slider.set( this.options.position );
			//this.actualizarPos();
		}
		return false;
	}, 
	/*
	moveToPos: function( pos ) {
		if( pos == this.options.position ) return;

		var start = $(this.options.container).getStyle('right');
		var end = ( pos * this.options.elementWidth );
		
		this.options.trans.start('right', start, end);
			
		this.options.position = pos;
		
		//this.actualizarPos();
	},
	*/
	scrolledElement: function(event){
		if (event.wheel < 0) this.moveRight();
		else if (event.wheel > 0) this.moveLeft();
		event.stop();
	}
	/*
	actualizarPos: function() {
		if( $(this.options.sliderHandle) ) {
			$(this.options.sliderHandle).set('text', this.options.position + 1 + ' / ' + this.options.numElements);	
		}
	}
	*/
});
