/* ------------------------ VARIABLES GLOBALES ------------------------ */

var speedChangePage = 1000;

var currentPage = 1;
var numPagesTotales = 0;
var typeClassement = 'classement_date';

/* ------------------------ INIT ------------------------ */
$(document).ready(function(){
	if(displayVideosLtl)
	{
		// initialisation des évènements
		initEventsClassementVideos();
		
		// on récupère les vidéos LTL en arrivant sur la page
		getClassementVideosLTL('');
	}
	
});

/* ------------------------ EVENEMENTS ------------------------ */

function initEventsClassementVideos(){
	
	// on met la classe active au menu du classement par défaut
	$('#videos_ltl #'+typeClassement).attr('class','activeMenuContentPage');
	
	initHoversOnMenuContentPage();
	
	initClickOnMenuContentPage();
	
	initEventsClassementVideosForms();
	
}

function initHoversOnMenuContentPage(){
	// over/out sur les liens du menu
	$('#videos_ltl .linkMenuContentPage').hover(
		function(){
			$(this).attr('class','curseur activeMenuContentPage');
		},
		function(){
			$(this).attr('class','curseur linkMenuContentPage');
	});

	$('#videos_ltl .activeMenuContentPage').hover(
		function(){
			$(this).attr('class','activeMenuContentPage');
		},
		function(){
			$(this).attr('class','activeMenuContentPage');
	});
	
}

function initClickOnMenuContentPage(){
	// init des clics sur les types de classement
	$('#videos_ltl .linkMenuContentPage').bind('click',handleClickonMenuPageContent);
}

function handleClickonMenuPageContent()
{
	// on récupère le type de classement
	typeClassement = $(this).attr('id');
	
	// si c'est pour une recherche, on affiche le formulaire
	if(typeClassement == 'classement_recherche')
	{
		showLTLFormSearch();
	}
	// sinon on récupère les vidéos classés et on cache le formulaire de recherche
	else
	{
		currentPage = 1;
		getClassementVideosLTL('');
		hideLTLFormSearch();
	}
	
	// on change les styles du menu
	$('#videos_ltl .activeMenuContentPage').attr('class','curseur linkMenuContentPage');
	$(this).attr('class','activeMenuContentPage');
	initHoversOnMenuContentPage();
	initClickOnMenuContentPage();
	
	$(this).unbind('click',handleClickonMenuPageContent);
}

function initEventsClassementVideosForms(){
	// On init les elements particulier de formulaire
	initCheckBoxes();
	initRadios();
	initListesDeroulantes();
	
	// on neutralise la soumission du formulaire de recherche
	$('[name=form_recherche_ltl_video]').bind('submit',function(){
		return false;
	});
	
	// event sur la soumission du formulaire de recherche
	$('[name=form_recherche_ltl_video]').submit(function(){
		typeClassement = 'classement_recherche';
		currentPage = 1;
		getClassementVideosLTL('');
	});
}

function getClassementVideosLTL(sens){
	aPost = {
		get_classement_videos: true,
		page_to_display: currentPage, 
		type_classement: typeClassement,
		id_ltl: $('[name=form_recherche_ltl_video] [name=id_ltl]').val(),
		search_pseudo: $('[name=form_recherche_ltl_video] [name=pseudo]').val(),
		search_departement: $('[name=form_recherche_ltl_video] [name=departement]').val(),
		search_ville: $('[name=form_recherche_ltl_video] [name=ville]').val(),
		num_max_video_per_page: numMaxVideoPerPageLtl
	};	

		// on soumet le form en ajax
		$.ajax({
			type: "POST",
			url: "ws/ltl/get_classement_videos.php",
			data: aPost,
			dataType:"json",
			success:function(returnedJson){			
				if (!returnedJson["b_error"]) {
					// mise à jour de la liste des vidéos
					updateListVideosLTL(sens, returnedJson);
				}
				else{
					setInfoBulleAtElement(returnedJson["html_err"], $('[name=form_save_video] [name=save_video]'), 0, 21, true);
				}
			}
		});
}

function showLTLFormSearch(){
	$("#videos_ltl .boxFormSearchVideo").slideDown({
		duration: "250",
		easing: "easeOutExpo",
		complete: function(){initListesDeroulantes();}
	});
}

function hideLTLFormSearch(){
	$('#videos_ltl .boxFormSearchVideo').slideUp("250", "easeOutExpo");
}

function initPaginationLTL(){
	// click sur le bouton précédent
	$('#videos_ltl .btnLast').bind('click',handleClickLastPaginationLTL);
	
	// click sur le bouton suivant
	$('#videos_ltl .btnNext').bind('click',handleClickNextPaginationLTL);
	
	// click sur une page
	$('#videos_ltl .numPage:not(.off)').bind('click',handleClickPagePaginationLTL);
}

function handleClickLastPaginationLTL(){
	$(this).unbind('click',handleClickLastPaginationLTL);
	if(currentPage > 1) currentPage--;
	getClassementVideosLTL('last');
}

function handleClickNextPaginationLTL(){
	$(this).unbind('click',handleClickNextPaginationLTL);
	if(currentPage < numPagesTotales) currentPage++;
	getClassementVideosLTL('next');
}

function handleClickPagePaginationLTL(){
	$(this).unbind('click',handleClickPagePaginationLTL);
	curSens = (currentPage > $(this).html()) ? 'last' : 'next';
	currentPage = $(this).html();
	getClassementVideosLTL(curSens);
}

function updateListVideosLTL(sens, returnedJson){
	// on récupère le html de la liste des vidéos
	htmlListVideos = returnedJson["html_list_videos"];
	// mise à jour de la pagination
	$('#videos_ltl .contentPaginationClassementVideo').html(returnedJson["html_pagination"]);
	// mise à jour du nombre de page
	numPagesTotales = returnedJson["num_pages_totales"];	
	
	// selon le sens de la pagination
	switch(sens)
	{
		case 'next':
			// on ajoute le contenu des vidéos après celui affiché
			$('#videos_ltl .contentDynamic').after(htmlListVideos);
			
			// On cache la liste affiché (le premier bloc)
			$('#videos_ltl .contentDynamic:first').slideUp({
				duration:speedChangePage,
				easing:"easeInOutExpo",
				complete:function(){
					// si plus d'un bloc, on supprime le bloc caché
					if($('#videos_ltl .contentDynamic').length > 1)
					{
						$(this).remove();
					}
				}
			});

			// on affiche le nouveau contenu (le dernier bloc)
			$('#videos_ltl .contentDynamic:last').slideDown({
				duration:speedChangePage,
				easing:"easeInOutExpo",
				complete:function(){
					// si plus d'un bloc
					if($('#videos_ltl .contentDynamic').length > 1)
					{
						// on supprime tous les autres blocs
						$('#videos_ltl .contentDynamic:not(:last)').remove();
					}
					initListLTLDisplayed(returnedJson["html_pagination"]);
				}
			});
			break;
		case 'last':
			// on ajoute le contenu des vidéos avant celui affiché
			$('#videos_ltl .contentDynamic').before(htmlListVideos);

			// On cache la liste affiché (le dernier bloc)
			$('#videos_ltl .contentDynamic:last').slideUp({
				duration:speedChangePage,
				easing:"easeInOutExpo",
				complete:function(){
					// si plus d'un bloc	
					if($('#videos_ltl .contentDynamic').length > 1)
					{
						// on supprime le bloc que l'on vient de caché
						$(this).remove();
					}
				}
			});
			
			// on affiche le nouveau contenu (le premier bloc)
			$('#videos_ltl .contentDynamic:first').slideDown({
				duration:speedChangePage,
				easing:"easeInOutExpo",
				complete:function(){
					// si plus d'un bloc		
					if($('#videos_ltl .contentDynamic').length > 1)
					{
						// on supprime tous les autres blocs (ceux qui ne sont pas premiers)
						$('#videos_ltl .contentDynamic:not(:first)').remove();
					}
					initListLTLDisplayed(returnedJson["html_pagination"]);
				}
			});
			break;
		default:
			// par défaut on affiche directement la liste des vidéos
			$('#videos_ltl .listClassementVideos').html(htmlListVideos);
			// on montre sans effet le contenu
			$('#videos_ltl .contentDynamic').show();
			initListLTLDisplayed(returnedJson["html_pagination"]);
			break;
	}
}

function initListLTLDisplayed(htmlPagination){
	// pngFix
	$('#videos_ltl .listClassementVideos').pngFix();
	// initialisation de la pagination
	initPaginationLTL(htmlPagination);
	// mise à jour de la taille du conteneur
	resetHeightSliderLTL();
}

function resetHeightSliderLTL()
{
	// initialisation de la hauteur
	var height = 0;
	// pour chaque ligne de vidéo
	$('#videos_ltl .lineClassementVideo').each(function(){
		// On incrémente la hauteur générale de la hauteur de la ligne
		height += $(this).outerHeight();
	});
	
	// on réinitialise à la fin de l'animation les listes déroulantes pour prendre en compte des changements de position possible
	$('#videos_ltl .listClassementVideos').animate({height: height}, 100, initListesDeroulantes);
	$('#videos_ltl .contentDynamic').animate({height: height}, 100, initListesDeroulantes);
}

