/************************************************************
 * Fonction javascript pour la télécommande de réservation  *
 ************************************************************/

/*
 * Gestion des région
 */

/*
 * Changement du curseur au passage sur une région cliquable
 */
function mousehand() {
    document.body.style.cursor="pointer";
    document.body.style.cursor="hand";
}

function mousedefault() {
    document.body.style.cursor="default";
}


/**
 * Action à mener lors du clic sur la carte
 * @param id identifiant de la région
 */
function timeTableRegionChange(id) {
    //On affecte la région choisie
    document.getElementById("region").value=id;
    //On reintialise les sélections plus basses (quartier et complexe)
    document.getElementById("district").value="";
    document.getElementById("complex").value="";
    if(id!=0){
        $("div.submitLink a").attr("href","javascript:document.HoraireForm.submit();");
        $("div.submitLink a").removeClass("color3-g");
        $("div.submitLink a").addClass("color5-g");
        //Affichage du retour carte de france
        $("#miniCarte").html("<img src=\"img/mini-carte-fr.jpg\" title=\"retour carte de france\" alt=\"retour carte de france\"/><br>");
        dwr_localization.renderRegionNameById(id, renderRegionName);
    }else{
        $("div.submitLink a").removeAttr("href");
        $("div.submitLink a").removeClass("color5-g");
        $("div.submitLink a").addClass("color3-g");
        $("div.selectedRegion").html("");
        //retrait du retour carte de france
        $("#miniCarte").html("");
    }
    //On enleve le zoom out car on est au plus bas
    $("div.backLink a").removeAttr("href");
    $("div.backLink a").removeClass("color5-g");
    $("div.backLink a").addClass("color3-g");
    $("div.backLink a").html("");

    timeTableChangeMap(id);
    //interaction telecommande
    reservationChangeMap(id);
}

//Replace la map dans son état hiérarchique précédent (hiérarchie = Region, district, Complexe)
function previousMapState(){
    var region = document.getElementById("region").value;
    var district = document.getElementById("district").value;
    var complex = document.getElementById("complex").value;
    if(complex != "" && district !=""){
        timeTableDistrictChange(district);
    }else{
        timeTableRegionChange(region);
    }
}


var renderRegionName = function(data0) {
    $("div.selectedRegion").html("Votre r&eacute;gion : <strong>"+ data0+"</strong>");
}

/**
 * Fonction changeant la région
 * @param id identifiant de la région
 */
function timeTableChangeMap(id) {
    createCookie('REGION', id, 30);
    dwr_localization.renderMap("timetable",id,replyTimeTableRenderMap);
}

/**
 * Action à mener lors du choix d'une région sur la résa express
 * @param id identifiant de la région
 */
function reservationRegionExpress(id) {
    $(":input[name=resRegion]").val(id);
    createCookie('REGION', id, 30);
    dwr_localization.chooseDistrict(0);
    dwr_localization.chooseComplex("00000");
    reservationChangeComplexList(0,id);

    dwr_localization.renderRemoteAdvertisement(
        $(":input[name=resRegion]").val(),
        $(":input[name=resComplex]").val(),
        renderRemoteAdvertisementCallback
    );

}

var renderRemoteAdvertisementCallback = function(remoteAdvertisement) {
    $("#remoteAdvertisementCode").html(remoteAdvertisement);
}

/**
 * Action à mener lors du clic sur la carte
 * @param id identifiant de la région
 */
function reservationRegionChange(id) {
    $(':input[name=resRegion]').selectOptions(id,true);
    reservationChangeMap(id);
}

/**
 * Fonction changeant la région
 * @param id identifiant de la région
 */
function reservationChangeMap(id) {
    createCookie('REGION', id, 30);
    dwr_localization.renderMap("res",id,replyRenderMap);
    dwr_localization.chooseDistrict(0);
    dwr_localization.chooseComplex("00000");
    reservationChangeComplexList(0,id);
}

var replyRenderMap = function(data1) {
    $("div#resMap").replaceWith(data1);
}

var replyTimeTableRenderMap = function(data2) {
    $("div#ttmap").replaceWith(data2);
}

/*
 * Gestion des quartiers
 */

/**
 * Action à mener lors du changement du quartier
 * @param id identifiant du quartier
 */
function reservationDistrictChange(id) {
    dwr_localization.chooseDistrict(id);
    dwr_localization.chooseComplex("00000");
    reservationChangeComplexList(1,id);
}

/**
 * Action à mener lors du changement du quartier
 * @param id identifiant du quartier
 */
function timeTableDistrictChange(id) {

        $("div.backLink a").attr("href","javascript:previousMapState();");
        $("div.backLink a").removeClass("color3-g");
        $("div.backLink a").addClass("color5-g");
        $("div.backLink a").html("pr&eacute;c&eacute;dent");

    dwr_localization.chooseDistrict(id);
    dwr_localization.chooseComplex("00000");
    //On affecte le quartier
    document.getElementById("district").value=id;
    //On reinitialise le complexe
    document.getElementById("complex").value="";
    dwr_localization.renderDistrictNameById(id, renderDisctrictName);
    //Interaction telecommande
    reservationDistrictChange(id);
}

var renderDisctrictName = function(data3) {
    $("div.selectedRegion").html("Votre quartier : <strong>"+data3+"</strong>");
}

/**
 * Action à mener pour le changement du complexe
 * @param loc 0 pour la liste des complexes d'une région, 1 pour la liste des complexes d'un quartier
 * @param id identifiant du quartier ou de la région
 */
function reservationChangeComplexList(loc,id) {
    dwr_localization.renderComplexList(loc,id,replyRenderReservationComplexList);
    if (loc==0) {
        dwr_localization.chooseDistrict(0);
    } else {
        dwr_localization.chooseDistrict(id);
    }
}

/**
 * Actions à mener lorsque le complexe à changé sur la carte ou sur une autre page
 * @param loc 0 si région 1 si quartier
 * @param locId identifiant de la région ou du quartier
 * @param complexId identifiant du complexe
 */
function reservationMapComplexChange(loc, locId, complexId) {
    dwr_localization.chooseComplex(complexId);
    reservationChangeComplexList(loc,locId)
    reservationChangeMovieList(complexId);
}

/**
 * Actions à mener lorsque le complexe à changé sur la carte ou sur une autre page
 * @param loc 0 si région 1 si quartier
 * @param locId identifiant de la région ou du quartier
 * @param complexId identifiant du complexe
 */
function timeTableMapComplexChange(loc, locId, complexId) {

        $("div.backLink a").attr("href","javascript:previousMapState();");
        $("div.backLink a").removeClass("color3-g");
        $("div.backLink a").addClass("color5-g");
        $("div.backLink a").html("pr&eacute;c&eacute;dent");

    dwr_localization.chooseComplex(complexId);
    document.getElementById("complex").value=complexId;
    dwr_localization.renderComplexNameById(complexId, renderComplexName);
    //Interaction telecommande
    reservationMapComplexChange(loc, locId, complexId);
}

var renderComplexName = function(data4) {
    $("div.selectedRegion").html("Votre cin&eacute;ma : <strong>"+data4+"</strong>");
}

/**
 * Actions à mener lorsque le complexe sélectionné a changé dans la liste
 * @param id identifiant du complexe
 */
function reservationComplexChange(id) {
    dwr_localization.chooseComplex(id);
    reservationChangeMovieList(id);

    dwr_localization.renderRemoteAdvertisement(
        $(":input[name=resRegion]").val(),
        $(":input[name=resComplex]").val(),
        renderRemoteAdvertisementCallback
    );
}


/**
 * Callback donnant la liste html des options pour la liste de complexes
 */
var replyRenderReservationComplexList = function(options) {
    var select;
    // champ inactif si pas de complexe proposé
    if (options.indexOf("option><option", 0) == -1) {
        select = "<select name=\"resComplex\" tabindex=\"5\" size=\"1\" class=\"color2 complexSelect\" disabled=\"disabled\">"
    } else {
        select = "<select name=\"resComplex\" tabindex=\"5\" size=\"1\" class=\"color2 complexSelect\" onChange=\"javascript:reservationComplexChange(this.value);\">"
    }
    select = select + options + "</select>"
    $(":input[name=resComplex]").replaceWith(select);
    reservationChangeMovieList($(":input[name=resComplex]").val());
}


//Autre

/**
 * Action à mener pour le changement du complexe
 * @param loc 0 pour la liste des complexes d'une région, 1 pour la liste des complexes d'un quartier
 * @param id identifiant du quartier ou de la région
 */
function displayProgChangeComplex(loc,id) {
    //On génére la liste des complexes
    dwr_localization.renderComplexList(loc,id,replyRenderDisplayProgComplexList);
    //On change la région de la télécommande de réservation
    reservationRegionChange(id);
}

/**
 * Actions à mener lorsque le complexe sélectionné a changé
 * @param id identifiant du complexe
 */
function displayProgComplexChange(id) {
    //On change le complex de la télécommande de réservation
    createCookie('REGION', $(":input[name=region]").val(), 30);
    reservationMapComplexChange(0,$(":input[name=region]").val(),id);
}

/**
 * Callback donnant la liste html des options pour la liste de complexes
 */
var replyRenderDisplayProgComplexList = function(options) {
    var select;
    // champ inactif si pas de complexe proposé
    if (options.indexOf("option><option", 0) == -1) {
        select = "<select name=\"complex\"  size=\"1\" class=\"color2 complexChoice\" disabled=\"disabled\">"
    } else {
        select = "<select name=\"complex\"  size=\"1\" class=\"color2 complexChoice\" onChange=\"javascript:displayProgComplexChange(this.value);document.searchCinema.submit();\" >"
    }
    select = select + options + "</select>"
    $(":input[name=complex]").replaceWith(select);
    if($(":input[name=complex]/option").length == 2) {
        $("form[name=searchCinema]").trigger("submit");

    }
}

/********************************************************
 * Fonction javascript pour le formulaire d'inscription *
 ********************************************************/
/**
 * Action à mener lors du changement de la région
 * @param id identifiant de la région
 */
function registrationRegionChange(id) {
    // paramètre loc à 0 pour la liste des complexes d'une région
    dwr_localization.renderComplexList(0,id,replyRenderRegistrationComplexList);
}

/**
 * Callback donnant la liste html des options pour la liste de complexes
 */
var replyRenderRegistrationComplexList = function(options) {
    var select;
    // champ inactif si pas de complexe proposé
    if (options.indexOf("option><option", 0) == -1) {
        select = "<select name=\"regComplexSelection\" size=\"1\" class=\"color2\" disabled=\"disabled\">"
    } else {
        select = "<select name=\"regComplexSelection\" size=\"1\" class=\"color2\">"
    }
    select = select + options + "</select>"
    $(":input[name=regComplexSelection]").replaceWith(select);
}


//mettez ce que vous voulez
