// JavaScript Document
jQuery.fn.mrNews = function (options) {
		var defaults = {
			divClassName: 'headline',
			maskClassName: 'fade-slice',
			duration: 5000,
			speed: 'slow',
			mask: true
		};
		
		var opts = jQuery.extend(defaults, options); 
		return this.each ( function()  {
			// $container le contenur d'affichage
			var $container = $(this) ; 
			//$container.empty();

			// masquer le bas de zone
			if (opts.mask) {
				var fadeHeight = $container.height() / 4;
				for (var yPos = 0 ; yPos < fadeHeight ; yPos += 2 ) {
					$('<div></div>')
						.css({
							opacity: yPos / fadeHeight,
							top: $container.height() - fadeHeight + yPos
							})
						.addClass(opts.maskClassName).appendTo($container);
				}	
			}
			// animer les news
			var currentHeadline = 0, oldHeadline = 0 ; // numéro des DIV
			var hiddenPosition = $container.height() + 10 ;
			$('div.' + opts.divClassName ).eq(currentHeadline).css('top', 0); // placer la 1ère news
			var headlineCount = $('div.' + opts.divClassName).length ; // nombre de news
			var pause ;
			var rotateInProgress;
			
			// faire tourner les DIV
			var headlineRotate = function() {
				if (! rotateInProgress) {
					rotateInProgress = true ;
					pause = false ;
					currentHeadline = (oldHeadline + 1 ) % headlineCount; // calculer la news courante
					$('div.' + opts.divClassName).eq(oldHeadline).animate ( // sortir vers la haut la news précédente
						{top: -hiddenPosition}, opts.speed, function() { // cible et vitesse slow
							$(this).css('top',hiddenPosition); //prépositionner la news une fois arrivée
						});		
					$('div.' + opts.divClassName).eq(currentHeadline).animate( // entrer par la bas la news courante
						{top:0}, opts.speed, function(){ // cible et vitesse 
							rotateInProgress = false ;
							pause = setTimeout(headlineRotate,opts.duration); // une fois arrivée, attendre et relancer
						});
					oldHeadline = currentHeadline ; // index news courante devient précédente
				}
			};
			// lancer la 1ere news
			if (!pause) {
				pause = setTimeout(headlineRotate, opts.duration); // pause au lancement sur la 1ère news
			}
			
			$container.hover (  // arrêter la minuterie (en position stable)
				function() {
					clearTimeout(pause);
					pause = false;
				},
				function() {
					if(!pause) {
						pause = setTimeout(headlineRotate, 250);
					}	
				}
			);			

		});// return 
		
}; //jQuery
