(function($){
	$.fn.jbNewsWriter = function(Uparams){
		var ul = this;
		var li = $('li:first', ul);
		var endTag = '';
		var params = $.extend({
			tempo1: 50,
			tempo2: 3000 
		},Uparams);

		var news = new Array();
		var maxHeight = 0;
		$('li', ul).each(function(i){
			news[i] = $(this).html();
			if (maxHeight < $(this).innerHeight())
				maxHeight = $(this).innerHeight();
		});

		$(ul).css({height: maxHeight, overflow: 'hidden'});
		$('li', ul).each(function(i){
			$(this).css('height', maxHeight);
		});

		function jumpBalise(news, pose){
			var chaine = news.substring(pose);
			var reg = new RegExp('<([a-z]+)[^>]*>','gi');
			var result = reg.exec(chaine);
			if (result !== null && result.index === 0){
				endTag = '</'+result[1]+'>';
				return pose + result[0].length;
			}

			reg = new RegExp('</([a-z]+)[^>]*>','gi');
			result = reg.exec(chaine);
			if (result !== null && result.index === 0){
				endTag = '';
				return pose + result[0].length;
			}

			return pose + 1;
		}

		function defil(numNews, pose, reset){
			if (reset == 1) $(li).html('');
			if (numNews < news.length){
				var nextPose = pose+1;
				var car = news[numNews].substring(pose, nextPose);
				if (car == '<'){
					var nextPose = jumpBalise(news[numNews], pose);
				//}else{
				//	$('li:first', ul).append(car+endTag);
				}
				var texte = news[numNews].substring(0, nextPose);
				$(li).html(texte+endTag);
				if(pose < news[numNews].length){
					setTimeout(function(){defil(numNews, nextPose, 0);},params.tempo1);
				}else{
					setTimeout(function(){defil((numNews+1), 0, 1);},params.tempo2);
				}
			}else{
				setTimeout(function(){defil(0, 0, 1);},params.tempo1);
			}
		}
		defil(0, 0, 1);
		return this;
	}
})(jQuery);
