/**
 * Un bandeau de news en jQuery, comme sur iTélé
 * par Jay Salvat - http://blog.jaysalvat.com/
 * modifié par Gabriel Hautclocq */
(
	function($)
	{
		$.fn.iTvScroller = function(settings)
		{
			// Options
			var options =
			{
				delay: 5000
			};
			$.extend(options, settings);

			function HoverWatcher(selector)
			{
				this.hovering = false;
				var self = this;

				this.isHoveringOver = function()
				{
					return self.hovering;
				}

				$(selector).hover
				(
					function()
					{
						self.hovering = true;
					}, function()
					{
						self.hovering = false;
					}
				)
			}

			return this.each
			(
				function()
				{
					var $$ = $(this);

					// Applique les classes au 1er et 2ème DT
					$('dt', $$)
						.eq(1).addClass('second').end()
						.eq(0).addClass('first');

					// Fait apparaitre doucement la première news
					$('dd', $$).eq(0).fadeIn('slow');

					var dlWatcher = new HoverWatcher('#iTvScroller');

					// Appelle la méthode scrollTitles() toutes les x secondes
					setInterval(scrollTitles, options.delay);

					function scrollTitles()
					{

						if( dlWatcher.isHoveringOver() )
						{
							return;
						}

						// Traitement des DD
						$('dd', $$)
							// On les masque tous
							.hide()
							// On réaffiche celui qui nous intéresse : le suivant
							.eq(1).fadeIn('slow');

						// Traitement des DT
						$('dt', $$)
							// On réinitialise les classes de tous les titres
							.removeClass('first')
							.removeClass('second')
							// On réapplique les classes au 1er, 2ème et 3ème titre
							.eq(2).addClass('second').end()
							.eq(1).addClass('first').end()
							.eq(0).addClass('first')
							// Puis on déplace les titres vers la gauche
							.animate
							(
								{
									width : 0, paddingLeft : 0, paddingRight : 0
								}, 1000, function()
								{
									// Lorsque le déplacement est termine le 1er DT ne nous intéresse plus
									var dt = $('dt', $$).eq(0)
										// On réinitialise le CSS
										.css('width', 'auto')
										.css('padding', '0 20px 0 30px')
										// On supprime la classe
										.removeClass('first')
										// On le supprime
										.remove();

									// On supprime également le DD
									var dd = $('dd', $$).eq(0).remove();

									// On repose le DT et DD à la suite des autres titres
									$$.append( dt.hide().fadeIn('slow'), dd );
								}
							)
					}
				}
			);
		};
	}
)(jQuery);
