(function($) {
$.fn.listbox = function(options) {  
	
	var defaults = {
		item: 'div.list-item',
		timer: false,
		timerSpeed: 4,
		paginateDivClass: 'paginate',
		paginateLiClassCurrent: 'current',
		fadeOut: 'slow',
		fadeIn: 'slow'
	}
	var options = $.extend(defaults, options);
	
	
	return this.each(function() {
		
		var container = this;
		var i = 0;
		var ul = $('<ul>');
		var divPaginate = $('<div>').addClass(options.paginateDivClass);
		
		$(options.item).each(function(){
			
			i++;
			if(i>1) $(this).hide();
			var This = this;

			// click sur la div
			var link = $(This).find('a');
			$(This)
				.css('cursor', 'pointer')
				.click(function(){
					window.location.href = $(link).attr('href');	
				});

			var li = $('<li>').attr('id',i);
			
			// lien pagination
			$('<a>')
				.text(i)
				.attr('href','#')
				.css('cursor', 'pointer')
				.appendTo(li)
				.click(function(){
					
					var id = $(this).parent().attr('id');
					if ($(this).parent().hasClass(options.paginateLiClassCurrent)) return false;		

					$(divPaginate).find('li').removeClass();
			
					$(divPaginate).find('ul li#'+id).each(function(){
						$(this).addClass(options.paginateLiClassCurrent);										
					})								  
				
					$(options.item).hide();
					$(This).fadeIn(options.fadeIn);
					
					return false;
					
				});
			
			
			if (i==1) $(li).addClass(options.paginateLiClassCurrent);
			$(li).appendTo(ul);
			
		});

		if (i>1) 
		{
			$(divPaginate).append(ul).prependTo(container);
		}
		else
		{
			return;
		}

		// Timer
		if(options.timer == false) return;
		
		var nbItem = i;
		$.timer({name:"listbox", interval: options.timerSpeed}, function() {
			
			var idItem = $(ul).find('li.current').attr('id');
			
			$(options.item).hide();
			$(ul).find('li.current').removeClass();
			
			var currentItem = parseInt(idItem);
			var n = 0;
			if (currentItem == nbItem) {
				n = 1;
			}else{
				n = currentItem + 1;
			}

			$(options.item).eq(n-1).fadeIn(options.fadeIn);
			$(divPaginate).find('ul li#'+n).addClass(options.paginateLiClassCurrent);										
		});

		$(container).hover(
		function(){
			$.stopTimer('listbox');
		},
		function(){
			$.runTimer('listbox');
		});
	});
};
})(jQuery); 