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

var speedChangePageGTL = 1000;

var currentPageGTL = 1;
var numPagesTotalesGTL = 0;
var typeClassementGTL = 'classement_date_gtl';

/* ------------------------ INIT ------------------------ */
$(document).ready(function(){
	if(displayVideosGTL)
	{
		// initialisation des évènements
		initEventsClassementVideosGTL();
		
		// on récupère les vidéos GTL en arrivant sur la page
		getClassementVideosGTL('');
		initPaginationGTL();
	}
	
});

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

function initEventsClassementVideosGTL(){
	// on met la classe active au menu du classement par défaut
	$('#videos_gtl #'+typeClassementGTL).attr('class','activeMenuContentPage');
	
	initHoversOnMenuContentPageGTL();
	
	initClickOnMenuContentPageGTL();
	
	initEventsClassementVideosGTLForms();
	
}

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

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

function initClickOnMenuContentPageGTL(){
	// init des clics sur les types de classement
	$('#videos_gtl .linkMenuContentPage').bind('click',handleClickonMenuPageContentGTL);
}

function handleClickonMenuPageContentGTL(event)
{
	event.preventDefault();

	// on récupère le type de classement
	typeClassementGTL = $(this).attr('id');
	
	// si c'est pour une recherche, on affiche le formulaire
	if(typeClassementGTL == 'classement_recherche_gtl')
	{
		showGTLFormSearch();
	}
	// sinon on récupère les vidéos classés et on cache le formulaire de recherche
	else
	{
		currentPageGTL = 1;
		getClassementVideosGTL('');
		hideGTLFormSearch();
	}
	
	// on change les styles du menu
	$('#videos_gtl .activeMenuContentPage').attr('class','curseur linkMenuContentPage');
	$(this).attr('class','activeMenuContentPage');
	initHoversOnMenuContentPageGTL();
	initClickOnMenuContentPageGTL();
	
	$(this).unbind('click',handleClickonMenuPageContentGTL);
}

function initEventsClassementVideosGTLForms(){
	// On init les elements particulier de formulaire
	initCheckBoxes();
	initRadios();
	initListesDeroulantes();
	
	// on neutralise la soumission du formulaire de recherche
	$('[name=form_recherche_gtl_video]').bind('submit',function(){
		return false;
	});
	
	// event sur la soumission du formulaire de recherche
	$('[name=form_recherche_gtl_video]').submit(function(){
		typeClassementGTL = 'classement_recherche_gtl';
		currentPageGTL = 1;
		getClassementVideosGTL('');
	});
}

function getClassementVideosGTL(sens){
	aPost = {
		get_classement_videos: true,
		page_to_display: currentPageGTL, 
		type_classement: typeClassementGTL,
		id_gtl: $('[name=form_recherche_gtl_video] [name=id_gtl]').val(),
		search_pseudo: $('[name=form_recherche_gtl_video] [name=pseudo]').val(),
		search_departement: $('[name=form_recherche_gtl_video] [name=departement]').val(),
		search_ville: $('[name=form_recherche_gtl_video] [name=ville]').val(),
		num_max_video_per_page: numMaxVideoPerPageGTL
	};	

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

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

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

function initPaginationGTL(){
	// click sur le bouton précédent
	$('#videos_gtl .btnLast').bind('click',handleClickLastPaginationGTL);
	
	// click sur le bouton suivant
	$('#videos_gtl .btnNext').bind('click',handleClickNextPaginationGTL);
	
	// click sur une page
	$('#videos_gtl .numPage:not(.off)').bind('click',handleClickPagePaginationGTL);
}

function handleClickLastPaginationGTL(event){
	event.preventDefault();
	$(this).unbind('click',handleClickLastPaginationGTL);
	if(currentPageGTL > 1) currentPageGTL--;
	getClassementVideosGTL('last');
}

function handleClickNextPaginationGTL(event){
	event.preventDefault();
	$(this).unbind('click',handleClickNextPaginationGTL);
	if(currentPageGTL < numPagesTotalesGTL) currentPageGTL++;
	getClassementVideosGTL('next');
}

function handleClickPagePaginationGTL(event){
	event.preventDefault();
	$(this).unbind('click',handleClickPagePaginationGTL);
	curSens = (currentPageGTL > $(this).html()) ? 'last' : 'next';
	currentPageGTL = $(this).html();
	getClassementVideosGTL(curSens);
}

function updateListVideosGTL(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_gtl .contentPaginationClassementVideo').html(returnedJson["html_pagination"]);
	// mise à jour du nombre de page
	numPagesTotalesGTL = 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_gtl .contentDynamic').after(htmlListVideos);
			
			// On cache la liste affiché (le premier bloc)
			$('#videos_gtl .contentDynamic:first').slideUp({
				duration:speedChangePageGTL,
				easing:"easeInOutExpo",
				complete:function(){
					// si plus d'un bloc, on supprime le bloc caché
					if($('#videos_gtl .contentDynamic').length > 1)
					{
						$(this).remove();
					}
				}
			});

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

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

function initListGTLDisplayed(htmlPagination){
	// pngFix
	$('#videos_gtl .listClassementVideos').pngFix();
	// initialisation de la pagination
	initPaginationGTL(htmlPagination);
	// mise à jour de la taille du conteneur
	resetHeightSliderGTL();
}

function resetHeightSliderGTL()
{
	// initialisation de la hauteur
	var height = 0;
	// pour chaque ligne de vidéo
	$('#videos_gtl .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_gtl .listClassementVideos').animate({height: height}, 100, initListesDeroulantes);
	$('#videos_gtl .contentDynamic').animate({height: height}, 100, initListesDeroulantes);
}

