/*	
	OOkaj v1.0
	Copyright (c) 2009 Bazooka
	Author: Gustaf Gideskog
	This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
*/
var ookaj={Class:function(d){return function(){var i=ookaj.Clone(d);if(i){i.__construct.apply(i,arguments);return i;}return null;}},Extend:function(p,c){var t={};for(var i in c){t[i]=c[i];}for(var i in p){c[i]=p[i];}for(var i in t){c[i]=t[i];}},Clone:function(o){var n={};for(var i in o){if(o.hasOwnProperty(i)){switch(typeof o[i]){case'object':n[i]=this.Clone(o[i]);break;default:n[i]=o[i];break;}}}return n;}};var $OO=ookaj;

var AnimatedSlideShow = new $OO.Class( {
	__construct: function( slide, prev, next, thumbs, selected, steps  ){
		this.thumbs = jQuery( thumbs );
		this.setNavigation( slide, prev, next, steps||1 );
		this.showCurrent( thumbs, selected, steps||1 );
	},
	triggerNext: function(){
		this.next.trigger( 'click' );
	},
	triggerPrev: function(){
		this.prev.trigger( 'click' );		
	},
	setNavigation: function( slide, prev, next, steps ){
		var slide = this.slide = jQuery( slide );
		var next = this.next = jQuery( next );
		var prev = this.prev = jQuery( prev );		
		
		var number = this.thumbs.length;
		var width = ( this.thumbs.innerWidth() );
		var offset = Math.round( slide.width() / width );

		slide.css( 'width', number*width );
		slide.data( 'clicks', 0 );
		
		number -= offset;
		number = Math.ceil(number/steps);
		width *= steps;

		prev.click( function(){								 
			var clicks = slide.data( 'clicks' )-1;	
			
			if( clicks < 0 ){
				jQuery( this ).addClass( 'nav-prev-disabled' );
				return false;
			}else
			if( clicks <= 0 ){
				jQuery( this ).addClass( 'nav-prev-disabled' );
			}else{
				jQuery( this ).removeClass( 'nav-prev-disabled' );	
			}
			next.removeClass( 'nav-next-disabled' );
			
			slide.animate( { marginLeft: width * clicks *-1 + 'px' }, steps*150, 'swing' );
			slide.data( 'clicks', clicks )
			return false;
		} ).addClass( 'nav-prev-disabled' );
		next.click( function(){
			var clicks = slide.data( 'clicks' )+1;	
			
			if( clicks > number ){
				jQuery( this ).addClass( 'nav-next-disabled' );
				return false;
			}else			
			if( clicks >= number ){
				jQuery( this ).addClass( 'nav-next-disabled' );
			}else{
				jQuery( this ).removeClass( 'nav-next-disabled' );	
			}	
			prev.removeClass( 'nav-prev-disabled' );
			
			slide.animate( { marginLeft:  width * clicks *-1 + 'px' }, steps*150, 'swing' );
			slide.data( 'clicks', clicks );
			return false;
		} )
		var clicks = slide.data( 'clicks' )+1;
		if( clicks > number ){
			jQuery( next ).addClass( 'nav-next-disabled' );
		}
	},
	showCurrent: function( thumbs, selected, steps ){
		this.current = Math.floor( jQuery( thumbs ).index( jQuery( selected ) ) / steps );
		for( var i = 0; i < this.current; i++ ){
			this.triggerNext();	
		}		
	}
} );
