

(function($) {

	// Variables globales de la classe
	var
		_sizes = new Array(),
		_styles = new Array(),
		_diapos = new Array(),
		_text = new Array(),
		
		i = 0,
		current = 0,
		periodical_exec = "null",
		period = 5000;	
	
	/*
		Initialization
	*/

	$(function() {
	});


	/*
		API
	*/

	$.visionneuse = function() {
		
	};
	
	$.fn.visionneuse = function( width, height) {
		
		$(this).addClass( "visio" );
	
		_sizes[ 'stage_width' ] = width;
		_sizes[ 'stage_height' ] = height;
		
		$(this).width(width);
		$(this).height(height);
		
		_styles[ 'show' ] = 'fade_in';
		_styles[ 'hide' ] = 'fade_out';
		_styles[ 'speed' ] = 'slow';
		
		$( 'li img', $(this) ).each( function( intIndex ){
	    	_diapos[ i ] = $( this );
	    	_diapos[ i ].hide();
	    	i++;
	    });
		
		i=0;
		$( 'li .coeur-infos', $(this) ).each( function( intIndex ){
	    	_text[ i ] = $( this );
	    	_text[ i ].hide();
	    	i++;
	    });
	    
	    visibility( _styles[ 'show' ], 0 );
	    start_visioneuse();
	};


	/*
		Internal functions
	*/
	
	function start_visioneuse(){
		periodical_exec = setInterval( next_diapo, period );
	};//	start_visioneuse()
	
	function next_diapo(){
		var next;
	    if( current == _diapos.length-1 ){
	    	next = 0;
	    }else
	    	next = current+1;	
	    visibility( _styles[ 'hide' ], current );
	    visibility( _styles[ 'show' ], next );
	    current = next;  
	    
	};//	next_diapo()
	
	function visibility( op, element ){
		switch ( op ){
		
			case 'fade_in':
				$( _diapos[ element ] ).fadeIn( _styles[ 'speed' ] );
				$( _text[ element ] ).fadeIn( _styles[ 'speed' ] );
				break;
				
			case 'fade_out':
				$( _diapos[ element ] ).fadeOut( _styles[ 'speed' ] );
				$( _text[ element ] ).fadeOut( _styles[ 'speed' ] );
				break;
				
			case 'slide_down':
				$( _diapos[ element ] ).slideDown( _styles[ 'speed' ] );
				break;
				
			case 'slide_up':
				$( _diapos[ element ] ).slideToggle( _styles[ 'speed' ] );
				break;
				
			case 'slide_toggle':
				$( _diapos[ element ] ).slideUp( _styles[ 'speed' ] );
				break;
				
			default:
				alert( 'La transition '+op+' n\'est pas gérée par la visionneuse ! ' );
				break;
		}
		
	}//	visibility();

})(jQuery);