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

var speedChangeStep = 500;

var speedChangePage = 500;
var currentPageQCM = 1;
var numPagesTotalesQCM = 0;

/* ------------------------ INIT ------------------------ */
$(document).ready(function(){	
	initEvents();
	
	// On cache l'info bulle
	$(".infoBulle").hide();
	
	// On cache la step 2
	$("#step02").hide();
	
	initListesDeroulantes();
});

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

function initEvents(){
	// On init les elements particulier de formulaire
	initRadios();
	
	// on init les forms
	initEventsForms();
	
	// si on doit récupérer les QCM... on le fait !
	getQCM('');	
}

function initLinkLogin(){
	// Lorsque'on clique sur le lien de login, on affiche le formulaire d'authentification
	$(".linkLogin").click(showOverlayLogin);
	
	$(".linkLogin").hover(
      function(){	
	  	
		$(this).css({"color":"#006699"});
      }, 
      function(){
	  	$(this).css({"color":"#999999"});
      }
    );
}

function initEventsForms(){
	// on neutralise la soumission du formulaire d'envoi de vidéo
	$('[name=form_save_qcm]').bind('submit', function(){
		return false;
	});
	
	// on redéfinit l'event sur le submit du formulaire d'envoi de vidéo
	$('[name=form_save_qcm]').submit(function(){
		saveQCM();
	});
}

function saveQCM(){

	// On récupère l'action du formulaire
	curAction = $('[name=form_save_qcm]').attr("action");

	aPost = new Array();
	
	// on récupère les données du formulaire
	aPost = {
		save_qcm: true,
		id_qcm: $('[name=form_save_qcm] [name=id_qcm]').val()
	};	
	
	var i = 1;
	$('[name=form_save_qcm] [name^="radio_id_reponse_question"]').each(function(){
		curIdQuestion = $(this).attr('name').replace('radio_id_reponse_question_','');
		aPost["a_reponses["+i+"][id_question]"] = curIdQuestion;
		var reg = new RegExp('[0-9]\.');
		curLibelleQuestion = $('#question_'+curIdQuestion).html();
		curLibelleQuestion = curLibelleQuestion.match(reg,'');
		aPost["a_reponses["+i+"][libelle_question]"] = curLibelleQuestion;
		aPost["a_reponses["+i+"][id_reponse]"] = $(this).val();
		i++;
	});
	
	$('[name=form_save_qcm] [name^="champ_"]').each(function(){
		curIdChamp = $(this).attr('name').replace('champ_','');
		aPost["a_champs["+i+"][id_champ]"] = curIdChamp;
		aPost["a_champs["+i+"][value]"] = $(this).val();
		i++;
	});

	// on soumet le form en ajax
	$.ajax({
		type: "POST",
		url: curAction,
		data: aPost,
		dataType:"json",
		success:function(returnedJson){			
			if (!returnedJson["b_error"]) {
				$("#step01:visible").slideUp(speedChangeStep, "easeInOutExpo");
				$("#step02").slideDown(speedChangeStep, "easeInOutExpo");
			}
			else{
				setInfoBulleAtElement(returnedJson["html_err"], $('[name=form_save_qcm] [name=save_qcm]'), 0, 21, true);
				initLinkLogin();
			}
		}
	});
}

function getQCM(sens){
	aPost = {
		get_qcm: true,
		page_to_display: currentPageQCM
	};	

	// on soumet le form en ajax
	$.ajax({
		type: "POST",
		url: "ws/qcm/get_qcm.php",
		data: aPost,
		dataType:"json",
		success:function(returnedJson){			
			if (!returnedJson["b_error"]) {
				// mise à jour de la liste des QCM
				updateListQCM(sens, returnedJson);
			}
		}
	});
}


function initPaginationQCM(){
	// click sur le bouton précédent
	$('.paginationQCM .btnLast').bind('click',handleClickLastPaginationQCM);
	
	// click sur le bouton suivant
	$('.paginationQCM .btnNext').bind('click',handleClickNextPaginationQCM);
	
	// click sur une page
	$('.paginationQCM .numPage:not(.off)').bind('click',handleClickPagePaginationQCM);
}

function handleClickLastPaginationQCM(){
	$(this).unbind('click',handleClickLastPaginationQCM);
	if(currentPageQCM > 1) currentPageQCM--;
	getQCM('last');
}

function handleClickNextPaginationQCM(){
	$(this).unbind('click',handleClickNextPaginationQCM);
	if(currentPageQCM < numPagesTotalesQCM) currentPageQCM++;
	getQCM('next');
}

function handleClickPagePaginationQCM(){
	$(this).unbind('click',handleClickPagePaginationQCM);
	curSens = (currentPageQCM > $(this).html()) ? 'last' : 'next';
	currentPageQCM = $(this).html();
	getQCM(curSens);
}

function updateListQCM(sens, returnedJson){
	// on récupère le html de la liste des vidéos
	htmlListQCM = returnedJson["html_list_qcm"];
	// mise à jour de la pagination
	$('.contentPaginationQCM').html(returnedJson["html_pagination"]);
	// mise à jour du nombre de page
	numPagesTotalesQCM = 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é
			$('#listQCM .contentDynamic').after(htmlListQCM);
			
			// On cache la liste affiché (le premier bloc)
			$('#listQCM .contentDynamic:first').slideUp({
				duration:speedChangePage,
				easing:"easeInOutExpo",
				complete:function(){
					// si plus d'un bloc, on supprime le bloc caché
					if($('#listQCM .contentDynamic').length > 1)
					{
						$(this).remove();
					}
				}
			});

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

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

function initListQCMDisplayed(htmlPagination){
	// pngFix
	$('#listQCM').pngFix();
	// initialisation de la pagination
	initPaginationQCM(htmlPagination);
	// mise à jour de la taille du conteneur
	resetHeightSliderQCM();
}

function resetHeightSliderQCM()
{
	// initialisation de la hauteur
	var height = 0;
	// pour chaque ligne de vidéo
	$('#listQCM .lineListConcours').each(function(){
		// On incrémente la hauteur générale de la hauteur de la ligne
		height += $(this).outerHeight();
	});
	$('#listQCM').animate({height: height}, 100);
	$('#listQCM .contentDynamic').animate({height: height}, 100);
}