;(function($) {

$(function() {

	/**
	 * Actions par defaut au chargement de la page.
	 */
	if ($('.MiniListeProg div:eq(0)').size() != 0)
	{
		// on crée le fond noir en js pour éviter que la page soit déformé lors du chargement
		$('#fond_noir_home').hide();
		//$('#fond_noir_home').css("background", "#000 url(/extension/cpcos/design/canaloverseas/images/ajax-loader.gif) 296px 166px no-repeat");
		// add a div
		addClassAttributes();
		// on crée le premier film content si il n'existe pas et on l'affiche
		// flag a true lors du chargement d'une image
		var imageLoading = false;
		// flag a true lors du deplacement du menu de droite
		var	minilistAnimating = false;
		var firstProgId = $('.MiniListeProg div:eq(1) span.prog-id').html();
		var firstProg;
		// on crée le second si on peut
		var nextProgId = 0;
		if ($('.MiniListeProg div:eq(3)').size() != 0)
			nextProgId = $('.MiniListeProg div:eq(3) span.prog-id').html();
		if ((firstProg = $('#filmContentId-' + firstProgId)).size() == 0)
			createContentFilm(firstProgId, true, nextProgId, true);
		else
		{
			firstProg.show();
			initTimer();
			createContentFilm(nextProgId, false, 0, false);
		}
	}

	$('.VideoBlock ul').tabsGM();
	// $('.event-list').sliderGM({'scrollableItems' : 1, 'mini': true});
	var timer = 0;

	$(window).load(function() {
		if (navigator.appName == "Microsoft Internet Explorer" && parseFloat(navigator.appVersion) <= 6)
			$('.MiniNavActiveProgImg').css('display', 'block');
		if ($('.MiniListeProg div:eq(0)').size() != 0)
			startDefile();
	});

	/**
	 * Permet de charger un visuel et si demandé de l'afficher,
	 * si celui ci est déjà chargé la fonction se content de l'afficher
	 */
	function createContentFilm(prog_id, visible, next_prog_id, init_timer)
	{
		if (imageLoading)
			return;
		// on vérifie si le visuel du film demandé a déjà été chargé
		var filmId = $('#filmContentId-'+ prog_id);
		if (filmId.size() != 0)
		{// il a deja été chargé
			if (visible)
			{// si le nouveau visuel doit être affiché
				var	currentVisuelId = $('.MiniListeProg div:eq(1) span.prog-id').html();
				if (currentVisuelId != null && currentVisuelId != prog_id)
				{//si le nouveau visuel est différent du visuel actuel
					imageLoading = true;
					$('#filmContentId-' + currentVisuelId).fadeOut('fast', function finish()
					{
						filmId.fadeIn('fast', function ()
						{
							if (init_timer)
								initTimer();
						});
						imageLoading = false;
						//on load le visuel suivant
						if (next_prog_id != 0)
							createContentFilm(next_prog_id, false, 0, false);
					});
				}
				else //on remet le visuel visible
					filmId.show();
			}
			else
				if (next_prog_id != 0)//on load le visuel suivant
					createContentFilm(next_prog_id, false, 0, false);
		}
		else
		{// il faut le chargé
			imageLoading = true;
			// si le contentFilm demandé est visible on affiche le loader
			var currentVisuel;
			if ($('.MiniListeProg div:eq(1)').size() == 0)// le liste ne contient qu'un élément
				currentVisuel = $('#filmContentId-' + ($('.MiniListeProg div:eq(0) span.prog-id').html()));
			else
				currentVisuel = $('#filmContentId-' + ($('.MiniListeProg div:eq(1) span.prog-id').html()));
			if (visible)
			{
				//si il y a un visuel on le fade
				if (currentVisuel.size() != 0)
				{
					currentVisuel.fadeOut('fast', function finish()
					{							
						//on affiche le loader
						$("#fond_noir_home").show();
						loadVisuel(prog_id,next_prog_id, init_timer, visible);
					});
				}
				else
				{
					loadVisuel(prog_id,next_prog_id, init_timer, visible);
				}
			}
			else
			{
				loadVisuel(prog_id,next_prog_id, init_timer, visible);
			}
			//requette AJAX pour recupéré le div du nouveau visuel
			/*var test = prog_id.split('-');
//			console.log(prog_id);
//			console.log(test[0]);
//			console.log(test[1]);
			$.get(current_geozone + '/layout/set/empty/content/view/line/' + test[0] + '/(diffusion)/' + test[1],
					function success(data)
			{//le div est chargé
				imageLoading = false;

				//on le concatène au div ContentFilmList 
				var newDiv = $('.ContentFilmList').append(data);
				if (visible)
				{//si il doit etre affiché
					//on cache le fond noir et on affiche le nouveau visuel
					$("#fond_noir_home").hide();
					$('#filmContentId-'+ prog_id).fadeIn('fast', function ()
					{
						if (init_timer)
							initTimer();
					});
				}
				if (next_prog_id != 0)
					createContentFilm(next_prog_id, false, 0, false);
			});*/
		}
	}
	
	function loadVisuel(prog_id,next_prog_id, init_timer, visible)
	{
		var test = prog_id.split('-');
//			console.log(prog_id);
//			console.log(test[0]);
//			console.log(test[1]);
			$.get(current_geozone + '/layout/set/empty/content/view/line/' + test[0] + '/(diffusion)/' + test[1],
					function success(data)
			{//le div est chargé
				imageLoading = false;

				//on le concatène au div ContentFilmList 
				var newDiv = $('.ContentFilmList').append(data);
				if (visible)
				{//si il doit etre affiché
					//on cache le fond noir et on affiche le nouveau visuel
					$("#fond_noir_home").hide();
					$('#filmContentId-'+ prog_id).fadeIn('fast', function ()
					{
						if (init_timer)
							initTimer();
					});
				}
				if (next_prog_id != 0)
					createContentFilm(next_prog_id, false, 0, false);
			});

	}

	function initTimer() {
		stopDefile();
		timer = setTimeout(startDefile,3000);
	}
	
	function startDefile() {
		scrollDownMEA(true);
	};

	function stopDefile() {
		clearTimeout(timer);
	};

	/**
	 * Actions lors des clicks sur les titres de programmes MEA.
	 */
	$('.MiniListeProg div a').live('click',
			function() {
		if (minilistAnimating || imageLoading)
			return;
		stopDefile();
		var divIndex = $(this).parent().index();
		switch (divIndex)
		{
		case 0:
			scrollTopMEA (true);  
			break;

		case 1:
			break;

		case 3:
			scrollDownMEA (true);
			break;

		case 4:
			scrollDownMEAX2 (true);
			break;
		}
		startDefile();
	}
	);


	/**
	 * Actions lors des clicks sur btn Top & Bottom.
	 */

	function startDefiledown() {
		if (minilistAnimating || imageLoading)
			return;
		stopDefile();
		scrollDownMEA(false);
	};
	function startDefileup() {
		if (minilistAnimating || imageLoading)
			return;
		stopDefile();
		scrollTopMEA (false);
	};

	$('.ImgScroolBarBottom').click(
			function() {
				var timer = 0;
				startDefiledown();
			}
	); 
	$('.ImgScroolBarBottom').dblclick(
			function() {
				var timer = 0;
				startDefiledown();
			}
	); 

	$('.ImgScroolBarTop').click(
			function() {
				var timer = 0;
				startDefileup();
			}
	);
	$('.ImgScroolBarTop').dblclick(
			function() {
				var timer = 0;
				startDefileup();
			}
	); 

	function scrollDownMEA (init_timer)
	{
		// si une image est en train d'etre chargé on ne fait rien
		if (imageLoading || minilistAnimating)
			return;
		if ($('.MiniListeProg div:eq(1)').size() == 0)
			return;
		// on récupère l'id du visuel qui est en train d'être affiché
		var currentVisuelId = $('.MiniListeProg div:eq(1) span.prog-id').html();
		// on enleve nos class et attributs
		// (qui permettent d'afficher le div en noir sous la fleche et d'enlever les bordures)
		minilistAnimating = true;
		$('.MiniListeProg div:eq(1)').removeAttr("class");
		$('.MiniListeProg div:eq(2)').remove();
		// on load notre prochain visuel et celui d'encore apres (pour éviter que l'utilisateur attende lors des chargement d'image)...
		// si pas de programme suivant on reprend le 1er
		var nextP;
		var secondP = 0;
		if ($('.MiniListeProg div:eq(2)').size() == 0)
			nextP = $('.MiniListeProg div:eq(0)');
		else
		{
			nextP = $('.MiniListeProg div:eq(2)');
			if ($('.MiniListeProg div:eq(3)').size() == 0)
				secondP = $('.MiniListeProg div:eq(0)');
			else
				secondP = $('.MiniListeProg div:eq(3)');
		}
		//on charge le visuel (si necessaire) et on l'affiche et le suivant que l'on affiche pas
		createContentFilm(nextP.find('span.prog-id').html(), true, (secondP != 0 ? secondP.find('span.prog-id').html() : 0), init_timer);
		// on insert notre premier div à la fin de la liste ...
		$('.MiniListeProg div:first').animate({
			marginTop: '-70px'
		}, 'fast', function () 
		{
			$('.MiniListeProg').append($('.MiniListeProg div:first'));
			$('.MiniListeProg div:last').removeAttr("style");
			// on ajoute nos class et attributs
			addClassAttributes();
			minilistAnimating = false;
		});
	};

	function scrollTopMEA (init_timer)
	{
		// si le visuel est en cours de chargement, on ne fait rien ...
		if (imageLoading || minilistAnimating)
			return;
		if ($('.MiniListeProg div:eq(1)').size() == 0)
			return;
		// on enleve nos class et attributs
		minilistAnimating = true;
		$('.MiniListeProg div:eq(1)').removeAttr("class");
		$('.MiniListeProg div:eq(2)').remove();
		// on load notre prochain visuel et celui d'encore apres (pour éviter que l'utilisateur attende lors des chargement d'image)...
		// si pas de programme suivant on reprend le 1er
		var nextP = $('.MiniListeProg div:eq(0)');
		var secondP = 0;
		if ($('.MiniListeProg div:eq(1)').size() != 0)
			secondP = $('.MiniListeProg div:eq(1)');		
		//on charge le visuel (si necessaire) et on l'affiche et le suivant que l'on affiche pas
		createContentFilm(nextP.find('span.prog-id').html(), true, (secondP != 0 ? secondP.find('span.prog-id').html() : 0), init_timer);
		// on insert notre dernier div au debut de la liste ...
		$('.MiniListeProg div:first').animate({
			marginTop: '70px'
		}, 'fast', function () {
			$('.MiniListeProg').prepend($('.MiniListeProg div:last'));
			$('.MiniListeProg div:eq(1)').removeAttr("style");
			// on ajoute nos class et attributs
			addClassAttributes();
			minilistAnimating = false;
		}); 	  
	};

	function scrollDownMEAX2 (init_timer)
	{
		// si le visuel est en cours de chargement, on ne fait rien ...
		if (imageLoading || minilistAnimating)
			return;
		// on enleve nos class et attributs
		minilistAnimating = true;
		$('.MiniListeProg div:eq(1)').removeAttr("class");
		$('.MiniListeProg div:eq(2)').remove();
		// on load notre prochain visuel et celui d'encore apres (pour éviter que l'utilisateur attende lors des chargement d'image)...
		// si pas de programme suivant on reprend le 1er
		var nextP = $('.MiniListeProg div:eq(3)');
		var secondP = 0;
		if ($('.MiniListeProg div:eq(3)').size() != 0)
		{
			nextP = $('.MiniListeProg div:eq(3)');
			if ($('.MiniListeProg div:eq(4)').size() != 0)
				secondP = $('.MiniListeProg div:eq(4)');
			else
				secondP = $('.MiniListeProg div:eq(0)');					
		}
		else
			nextP = $('.MiniListeProg div:eq(0)');

		//on charge le visuel (si necessaire) et on l'affiche et le suivant que l'on affiche pas
		createContentFilm(nextP.find('span.prog-id').html(), true, (secondP != 0 ? secondP.find('span.prog-id').html() : 0), init_timer);
		// on insert notre premier div à la fin de la liste ...
		$('.MiniListeProg div:first').animate({
			marginTop: '-70px'
		}, 'fast', function () {
			$('.MiniListeProg').append($('.MiniListeProg div:first'));
			$('.MiniListeProg div:last').removeAttr("style");
			$('.MiniListeProg').append($('.MiniListeProg div:first'));
			$('.MiniListeProg div:last').removeAttr("style");
			// on ajoute nos class et attributs
			addClassAttributes();
			minilistAnimating = false;
		});
	};

	/**
	 * Ajout de nos class & attributs pour la liste des programmes.
	 */
	function addClassAttributes()
	{
		$('.MiniListeProg div:first').css("borderBottom", "0");
		$('.MiniListeProg div:eq(1)').addClass('ActiveProg');
		$('.MiniListeProg div:eq(1)').after('<div class="Clear NoBorderListProg">');	  
	};  

	/**
	 * Actions lors des clicks de filtrage des programmes All & Canal+ & CanalSat
	 */
	$('.MiniNavProg li:eq(0)').click(
			function() {
				if (imageLoading || minilistAnimating)
					return;
				// on arrete le défilement pour éviter tous bug
				stopDefile();
				// on enleve le visuel en cours
				$('.MiniListeProg div.Clear.NoBorderListProg').remove();
				if ($('.MiniListeProg div:eq(1)').size() == 0)
				{
					if ($('.MiniListeProg div:eq(0)').size() != 0)
						$('#filmContentId-' + $('.MiniListeProg div:eq(0) span.prog-id').html()).hide();
				} 
				else
					$('#filmContentId-' + $('.MiniListeProg div:eq(1) span.prog-id').html()).hide();
				// on enleve nos class et attributs
				$('.MiniNavProg li').removeAttr("class");
				// on ajoute nos class et attributs
				$('.MiniNavProg li:eq(0)').addClass('active');
				// on rempli notre container
				$('.MiniListeProg').html($('#ContentAllPrograms').html());
				//si il n'y a aucun visuel on ne fait pas tourner le carrousel
				if ($('.MiniListeProg div:eq(0)').size() == 0)
				{
					stopDefile();
					return;
				}
				// on cherche le visuel suivant et celui d'encore apres afin de les charger
				var nextP;
				var secondP = 0;
				if ($('.MiniListeProg div:eq(1)').size() == 0)
					nextP = $('.MiniListeProg div:eq(0)');
				else
				{
					nextP = $('.MiniListeProg div:eq(1)');
					if ($('.MiniListeProg div:eq(2)').size() == 0)
						secondP = $('.MiniListeProg div:eq(0)');
					else
						secondP = $('.MiniListeProg div:eq(2)');
				}
				// on ajoute les css a la liste
				addClassAttributes();
				// on charge le visuel (si necessaire) et on l'affiche et le suivant que l'on affiche pas
				createContentFilm(nextP.find('span.prog-id').html(), true, (secondP != 0 ? secondP.find('span.prog-id').html() : 0), true);
				// on relance le timer
				timer = setTimeout(startDefile,6000);
			}
	);

	$('.MiniNavProg li:eq(1)').click(
			function() {
				if (imageLoading || minilistAnimating)
					return;
				// on arrete le défilement pour éviter tous bug
				stopDefile();
				// on enleve le visuel en cours
				$('.MiniListeProg div.Clear.NoBorderListProg').remove();
				if ($('.MiniListeProg div:eq(1)').size() == 0)
				{
					if ($('.MiniListeProg div:eq(0)').size() != 0)
						$('#filmContentId-' + $('.MiniListeProg div:eq(0) span.prog-id').html()).hide();
				} 
				else
					$('#filmContentId-' + $('.MiniListeProg div:eq(1) span.prog-id').html()).hide();

				// on enleve nos class et attributs
				$('.MiniNavProg li').removeAttr("class");
				// on ajoute nos class et attributs
				$('.MiniNavProg li:eq(1)').addClass('active');
				// on rempli notre container
				$('.MiniListeProg').html($('#ContentCPlusPrograms').html());
				//si il n'y a aucun visuel on ne fait pas tourner le carrousel
				if ($('.MiniListeProg div:eq(0)').size() == 0)
				{
					stopDefile();
					return;
				}
				// on cherche le visuel suivant et celui d'encore apres afin de les charger
				var nextP;
				var secondP = 0;
				if ($('.MiniListeProg div:eq(1)').size() == 0)
					nextP = $('.MiniListeProg div:eq(0)');
				else
				{
					nextP = $('.MiniListeProg div:eq(1)');
					if ($('.MiniListeProg div:eq(2)').size() == 0)
						secondP = $('.MiniListeProg div:eq(0)');
					else
						secondP = $('.MiniListeProg div:eq(2)');
				}
				// on ajoute les css a la liste
				addClassAttributes();
				// on charge le visuel (si necessaire) et on l'affiche et le suivant que l'on affiche pas
				createContentFilm(nextP.find('span.prog-id').html(), true, (secondP != 0 ? secondP.find('span.prog-id').html() : 0), true);
				// on relance le timer
				timer = setTimeout(startDefile,6000);
			}
	);

	$('.MiniNavProg li:eq(2)').click(
			function() {
				if (imageLoading || minilistAnimating)
					return;
				// on arrete le défilement pour éviter tous bug
				stopDefile();
				// on enleve le visuel en cours
				$('.MiniListeProg div.Clear.NoBorderListProg').remove();
				if ($('.MiniListeProg div:eq(1)').size() == 0)
				{
					if ($('.MiniListeProg div:eq(0)').size() != 0)
						$('#filmContentId-' + $('.MiniListeProg div:eq(0) span.prog-id').html()).hide();
				} 
				else
					$('#filmContentId-' + $('.MiniListeProg div:eq(1) span.prog-id').html()).hide();
				// on enleve nos class et attributs
				$('.MiniNavProg li').removeAttr("class");
				// on ajoute nos class et attributs
				$('.MiniNavProg li:eq(2)').addClass('active');
				// on rempli notre container
				$('.MiniListeProg').html($('#ContentCSatPrograms').html());
				//si il n'y a aucun visuel on ne fait pas tourner le carrousel
				if ($('.MiniListeProg div:eq(0)').size() == 0)
				{
					stopDefile();
					return;
				}
				// on cherche le visuel suivant et celui d'encore apres afin de les charger
				var nextP;
				var secondP = 0;
				if ($('.MiniListeProg div:eq(1)').size() == 0)
					nextP = $('.MiniListeProg div:eq(0)');
				else
				{
					nextP = $('.MiniListeProg div:eq(1)');
					if ($('.MiniListeProg div:eq(2)').size() == 0)
						secondP = $('.MiniListeProg div:eq(0)');
					else
						secondP = $('.MiniListeProg div:eq(2)');
				}
				// on ajoute les css a la liste
				addClassAttributes();
				// on charge le visuel (si necessaire) et on l'affiche et le suivant que l'on affiche pas
				createContentFilm(nextP.find('span.prog-id').html(), true, (secondP != 0 ? secondP.find('span.prog-id').html() : 0), true);
				// on relance le timer
				timer = setTimeout(startDefile,6000);
			}
	);


	/**
	 * Action lors du survol du btn "Voir" & "Fermer".
	 */
	$('.VoirBottomProg a').click(
			function() {
				$('.ContentModuleProg').hide();
				$('.ContentVideosProg').show();
			}
	);

	$('.TopListeClose a').click(
			function() {
				$('.ContentVideosProg').hide();
				$('.ContentModuleProg').show();
			}
	);

	/**
	 * Actions de slide sur le tableau des chaines.
	 */
	var isMoving = true;
	var rfxnum = /^([+-]=)?([\d+-.]+)(.*)$/;
	var heightDiv; 
	$('#ChainesPrime table').css('top','-116px');

	$('.ContentVideosProg .Bt_ft a').mouseover(
			function() {
				isMoving = true;
				/* Correctif RZ */		
				/* heightDiv = rfxnum.exec($('#ChainesPrime table').css('height'))[2]-260; */
				heightDiv = $('#ChainesPrime table').height()-260;
				window.setTimeout(function() {
					moveTableUp();
				}, 2);
				/* fin Correctif RZ */	
			}
	).mouseout(
			function() {
				isMoving = false;
			}	  
	);

	$('.ContentVideosProg .Bt_fb a').mouseover(
			function() {
				isMoving = true;
				/* Correctif RZ */		
				/* heightDiv = rfxnum.exec($('#ChainesPrime table').css('height'))[2]-260; */
				heightDiv = $('#ChainesPrime table').height()-260;
				window.setTimeout(function() {
					if (rfxnum.exec($('#ChainesPrime table').css('top'))[2] < 0)
					{
						moveTableDown();
					}
				}, 2);	
				/* fin Correctif RZ */
			}
	).mouseout(
			function() {
				isMoving = false;
			}	  
	);

	function moveTableUp() {
		if (isMoving)
		{
			$('#ChainesPrime table').css( 'top', function (index, value) {
				return rfxnum.exec(value)[2]-=1;
			});
			window.setTimeout(function() {
				if (rfxnum.exec($('#ChainesPrime table').css('top'))[2] > -heightDiv)
				{
					moveTableUp();
				}
			}, 2);
		}
	};

	function moveTableDown() {
		if (isMoving)
		{
			$('#ChainesPrime table').css( 'top', function (index, value) {
				return parseInt(rfxnum.exec(value)[2])+1;
			});
			window.setTimeout(function() {
				if (rfxnum.exec($('#ChainesPrime table').css('top'))[2] < 0)
				{
					moveTableDown();
				}
			}, 2);
		}
	};

	/**
	 * Actions lors des clicks de filtrage des chaines All & Canal+ & CanalSat
	 */
	$('.NavVideosProg li:eq(0)').click(
			function() {
				// on enleve nos class et attributs
				$('.NavVideosProg li a').removeClass('ActiveNVP');
				// on ajoute nos class et attributs
				$('.NavVideosProg li:eq(0) a').addClass('ActiveNVP');
				// on rempli notre container
				$('#ChainesPrime').html($('#ContentAllChaines').html());
			}
	);

	$('.NavVideosProg li:eq(1)').click(
			function() {
				// on enleve nos class et attributs
				/* RZ $('.NavVideosProg li a').removeAttr("class"); */
				$('.NavVideosProg li a').removeClass('ActiveNVP');

				// on ajoute nos class et attributs
				$('.NavVideosProg li:eq(1) a').addClass('ActiveNVP');
				// on rempli notre container
				$('#ChainesPrime').html($('#ContentCPlusChaines').html());		
				/* RZ correctif zebrage chaines */
				$('#ChainesPrime table tr').css('background-color','#CECED0');
				$('#ChainesPrime table tr:odd').css('background-color','#f5f5f5');
			}
	);

	$('.NavVideosProg li:eq(2)').click(
			function() {
				// on enleve nos class et attributs
				/* RZ $('.NavVideosProg li a').removeAttr("class"); */
				$('.NavVideosProg li a').removeClass('ActiveNVP');
				// on ajoute nos class et attributs
				$('.NavVideosProg li:eq(2) a').addClass('ActiveNVP');
				// on rempli notre container
				$('#ChainesPrime').html($('#ContentCSatChaines').html());
				/* RZ correctif zebrage chaines */
				$('#ChainesPrime table tr').css('background-color','#CECED0');
				$('#ChainesPrime table tr:odd').css('background-color','#f5f5f5');
			}
	); 


});

/* ajout RZ accelerer le chargement lors du click sur un lien */
$('a :not(.ContentModuleProg a)').click(function() {
	stopDefile();
});

})(jQuery);
