/************************************************************
 * Fonction javascript pour la télécommande de réservation  *
 ************************************************************/
/*
Appels entre fonctions et callback

reservationTimeChange <----------- reservation.jsp
	A
	|
replyRenderReservationTimeList
	A
	|
reservationChangeTimeList <------------\	
	A                                   \
	|                                    \
reservationDayChange <----------- replyRenderReservationDayList <---- reservationChangeMovie <--\---- cinema-search.jsp
	A                                        A                                                   \--- movie.jsp
	|                                        |
reservation.jsp                  reservationChangeDayList <----------\
	\                                        A                        \
	 \                                       |                         \
	  \------------------------> reservationMovieChange <--- replyRenderReservationMovieList
                                                                        A
                                                                        |
                                                            reservationChangeMovieList
                                                                        A
                                                                        |
                                                               (localisation.js) ***
 */

/**
 * Action à mener pour le changement du film sélectionné depuis une autre page
 * @param id identifiant du film
 */
function reservationChangeMovie(id) {
	$(':input[name=resMovie]').selectOptions(id,true);
	dwr_program.chooseMovie(id);
	dwr_program.renderDayList($(":input[name=resComplex]").val(), id, replyRenderReservationDayList);
}
 
/**
 * Action à mener pour le changement de la liste de film
 * @param id identifiant du complexe
 */
function reservationChangeMovieList(id) {
	dwr_program.renderMovieList(id, replyRenderReservationMovieList);
}
 

 /**
 * Callback donnant la liste html des options pour la liste de films d'un complexe
 */
var replyRenderReservationMovieList = function(options) {
	var select;
	// champ inactif si pas de film proposé
	if (options.indexOf("option><option", 0) == -1) {
		select = "<select name=\"resMovie\" tabindex=\"5\" size=\"1\" class=\"color2 movieSelect\" disabled=\"disabled\">"
	} else {
		select = "<select name=\"resMovie\" tabindex=\"5\" size=\"1\" class=\"color2 movieSelect\" onChange=\"javascript:reservationMovieChange(this.value);\">"
	}
	select = select + options + "</select>"
	$(":input[name=resMovie]").replaceWith(select);
	reservationChangeDayList("00000","0000_00");
}

/**
 * Action à mener lorsque le film sélectionné a changé
 * @param id identifiant du complexe
 */
function reservationMovieChange(id) {
	dwr_program.chooseMovie(id);
    var value=$(":input[name=resComplex]").val();
	reservationChangeDayList(value, id);
}

/**
 * Action à mener pour le changement de la liste des jours
 * @param complexId identifiant du complexe
 * @param movieId identifiant du film
 */
function reservationChangeDayList(complexId, movieId) {
	dwr_program.renderDayList(complexId, movieId, replyRenderReservationDayList);
}

/**
* Trouve le texte de l'option resTime selectionné
* $(":input[name=resTime]").text()) est uuencodé
*/
function getTextForPreviousResTimeSelected() {
	var previousText = "no_previous_item";
	var candidats = document.getElementsByName("resTime");
	if (candidats) {	
		var resTime = candidats[0];
		if (resTime.selectedIndex != -1) {
			previousText =  resTime.options[resTime.selectedIndex].text;
		}
	}
	return previousText;
}

/**
 * Callback donnant la liste html des options pour la liste des jours de projection d'un film
 */
var replyRenderReservationDayList = function(options) {
	var select;
	// champ inactif si pas de jour proposé
	if (options.indexOf("-1", 0) == -1) {
		select = "<select name=\"resDay\" tabindex=\"5\" size=\"1\" class=\"color2 daySelect\" onChange=\"javascript:reservationDayChange(this.value);\">"
	} else {
		select = "<select name=\"resDay\" tabindex=\"5\" size=\"1\" class=\"color2 daySelect\" disabled=\"disabled\">"
	}
	select = select + options + "</select>"
	$(":input[name=resDay]").replaceWith(select);
	var previousText = getTextForPreviousResTimeSelected();
	reservationChangeTimeList($(":input[name=resComplex]").val(), $(":input[name=resMovie]").val(), $(":input[name=resDay]").val(), previousText);
}

/**
 * Action à mener lorsque le jour sélectionné a changé
 * @param id identifiant du jour
 */
function reservationDayChange(id) {
	dwr_program.chooseDay(id);
	var previousText = getTextForPreviousResTimeSelected();
	reservationChangeTimeList($(":input[name=resComplex]").val(), $(":input[name=resMovie]").val(), id, previousText);
}

/**
 * Action à mener pour le changement de la liste des séances
 * @param complexId identifiant du complexe
 * @param movieId identifiant du film
 * @param dayId identifiant du jour
 * @param timeLabelSelected libellé lisible de l'heure ex. 11:50
 */
function reservationChangeTimeList(complexId, movieId, dayId, timeLabelSelected) {
	dwr_program.renderTimeList(complexId, movieId, dayId, timeLabelSelected, replyRenderReservationTimeList);
}

/**
 * Callback donnant la liste html des options pour la liste des séances de projection d'un film
 */
var replyRenderReservationTimeList = function(options) {
	/* TODO expliquer la difference entre replyRenderReservationTimeList / replyRenderCardsTimeList ?? */
	var select;
	// champ inactif si pas de séance proposée
	if (options.indexOf("-1", 0) == -1) {
		select = "<select name=\"resTime\" tabindex=\"5\" size=\"1\" class=\"color2 daySelect\" onChange=\"javascript:reservationTimeChange(this.value);\">"
		$("div.jeReserveReservez a").attr("href","reservation-entry.do");
		$("div.jeReserveReservez a").removeClass("color3-tg");
		$("div.jeReserveReservez a").addClass("color5-tg");
		
	} else {
		select = "<select name=\"resTime\" tabindex=\"5\" size=\"1\" class=\"color2 daySelect\" disabled=\"disabled\">"
		$("div.jeReserveReservez a").removeAttr("href");
		$("div.jeReserveReservez a").removeClass("color5-tg");
		$("div.jeReserveReservez a").addClass("color3-tg");
	}
	select = select + options + "</select>"
	$(":input[name=resTime]").replaceWith(select);
	dwr_program.chooseTime($(":input[name=resTime]").val());
}

/**
 * reservation.jsp : Action à mener lorsque la séance sélectionnée a changé
 * @param id identifiant de la séance
 */
function reservationTimeChange(id) {
	dwr_program.chooseTime(id);
}


