function innerfade(cible , options){

	var settings = {
		animationtype: 'fade',
		speed: 'normal',
		timeout: 7000,
		type: 'sequence',
		runningclass: 'innerfade'
	};

	if(options)
		Object.extend(settings, options);
		
	elements = $(cible).childNodes;
	
	if (elements.length > 1) {
	
		for ( var i = 0; i < elements.length; i++ ) {
				
				$(elements[i]).style.position = "absolute";
				$(elements[i]).hide();
			};
	
		if ( settings.type == 'sequence' ) {
			setTimeout(function(){
				innerfade_next(elements, settings, 1, 0);
			}, settings.timeout);
			$(elements[0]).show();
		} else if ( settings.type == 'random' ) {
			setTimeout(function(){
				do { current = Math.floor ( Math.random ( ) * ( elements.length ) ); } while ( current == 0 )
				innerfade_next(elements, settings, current, 0);
			}, settings.timeout);
			$(elements[0]).show();
		}	else {
			alert('type must either be \'sequence\' or \'random\'');
		}
	
	}
}

function innerfade_next(elements, settings, current, last){

	if ( settings.animationtype == 'slide' ) {
		$(elements[last]).slideUp(settings.speed, $(elements[current]).slideDown(settings.speed));
	} else if ( settings.animationtype == 'fade' ) {
		Effect.Fade($(elements[last]));
		Effect.Appear($(elements[current]));
	} else {
		alert('animationtype must either be \'slide\' or \'fade\'');
	};
	
	if ( settings.type == 'sequence' ) {
		if ( ( current + 1 ) < elements.length ) {
			current = current + 1;
			last = current - 1;
		} else {
			current = 0;
			last = elements.length - 1;
		};
	}	else if ( settings.type == 'random' ) {
		last = current;
		while (	current == last ) {
			current = Math.floor ( Math.random ( ) * ( elements.length ) );
		};
	}	else {
		alert('type must either be \'sequence\' or \'random\'');
	};
	setTimeout((function(){innerfade_next(elements, settings, current, last);}), settings.timeout);

}