var vcarousel = new Class( {
	defaultOptions: function() {
		return {
			container: $('carouselContainer'),
			slider : $('carouselSlider'),
			targetClass: ".sliderElement",
			tabsClass: ".tabElement",
			display: 0,
			transition: Fx.Transitions.backOut,
			transitionDuration: 600,
			timer: true,
			slideDuration: 8000,
			timerVar : ''
		};
	},

	initialize: function(options) {
		this.setOptions(this.defaultOptions(), options);
		this.elements = $$(this.options.targetClass);
		this.tabs = $$(this.options.tabsClass);
					
		this.height = 0;
		this.elements.each(function(el, i) {
			this.height = ( el.getStyle('height').toInt() > this.height ) ? el.getStyle('height').toInt() : this.height;
		}.bind(this) );	
		this.elements.each(function(el, i) {
			el.setStyles( {
					'position' : 'absolute',
					'height': this.height+'px',
					'top': ( i*this.height )+'px'
				} );
		}.bind(this) );
		
			//this.options.slider.setStyle( 'overflow', 'hidden' );
		this.options.container.setStyles( {
			'position' : 'relative',
			'overflow': 'hidden',
			'height': this.height
		});
		this.options.slider.setStyles({
			'position': 'relative',
			'height': ( this.height * this.elements.length )+'px'
		});
		this.tabs.each(function(el, i) {
			el.addEvent( 'click', function (event) {
				this.allerA( i );
				this.toggleTabs(el, i);
			}.bind(this) );
		}.bind(this) );
		
		if (this.options.timer) {
			this.options.timerVar = ( function() {
				if ( this.options.display == this.elements.length-1 ) this.options.display = -1;
				this.allerA( this.options.display +1 );
			} ).periodical(this.options.slideDuration, this);
		}
		this.allerA( this.options.display );
	},
	
	allerA: function( i ) {
		this.options.display = i;
		var fx = new Fx.Styles( this.options.slider, {duration: this.options.transitionDuration, transition: this.options.transition } );
		this.sliderY = '-'+( i * this.height )+'px';
		fx.start( { 'margin-top' : this.sliderY } );
	},
	
	toggleTabs: function( el, i ) {
		this.tabs.each( function(el, j) {
		}.bind(this) );
	}
	
} );

vcarousel.implement(new Events); // Implements addEvent(type, fn), fireEvent(type, [args], delay) and removeEvent(type, fn)
vcarousel.implement(new Options);// Implements setOptions(defaults, options)
