(function($){
 $.fn.fifo = function(options) {

  var defaults = {
  		data_provider : '.data-provider',
		interval : 3000,
		image : false,
		height : 300,
		width : 200
  };
  var options = $.extend(defaults, options);
  
 
      
  return this.each(function() {
	
	obj = $(this).html('<div class="_panel"></div>');
	var i = 0;
	var data = new Array();
	
	if(!options.image){
		$.each( $(options.data_provider).find('> div'), function(){
			data.push( $(this).html() );
		});
		
		obj.oneTime(10,'fade',function(){ $(this).find('._panel').html(data[i]); }).everyTime(options.interval, 'fade', function(){
			$(this).find('._panel').fadeOut('normal',function(){ $(this).html(data[i]+'').fadeIn(); });
			i++;
			if(i == data.length){ i = 0; }
		});
	}
	
	if(options.image){
		$.each( $(options.data_provider).find('> img'), function(){
			data.push( $(this).attr('src') );
		});
		
		obj.oneTime(10,'fade',function(){
		
			$(this).find('._panel').html('<img src='+data[i]+' />');
			$(this).find('._panel').width(options.width).height(options.height).css('background','url('+data[i+1]+')').attr('title',data[i]); 
		
		}).everyTime(options.interval, 'fade', function(){
			
			$(this).find('._panel').find('img').fadeOut('normal',function(){
				$(this).find('> img').attr('src',data[i]).fadeIn();
				$(this).parent()
					.html('<img src='+data[i]+' />')
					.width(options.width)
					.height(options.height)
					.css('background', 'url('+data[i+1 == data.length ? 0 : i+1]+')');
			});
			i++;
			if(i == data.length){ i = 0; }
			
		});
	}
	
  });
 };
})(jQuery);