
function displaySubregions(elm, idregion, fromPage) {
    
    try { showElement('divCheckallSubregions') } catch (e) {}
    
    // Vidage de la section  
    hideElement("villesCheckboxes");
    
    if(currentSubregionId != -1 && !contains(subIds, currentSubregionId)){
        try { document.getElementById("subregion-" + currentRegionId + "-" + currentSubregionId).style.backgroundColor = WHITE; } catch (e) {}
    }
    
    /* desactivation du current */
    if(currentRegionId != -1 && !contains(regionIds, currentRegionId)){
        document.getElementById("region-" + currentRegionId).style.backgroundColor = WHITE;
        var spans = document.getElementById("region-" + currentRegionId).getElementsByTagName("span");
        for(var i = 0 ; i < spans.length ; i++){
            spans[i].style.color = FONT_COLOR;
        }
    }
    if(currentRegionId != -1){
        hideElement('subregions-' + currentRegionId);
    }
    
    /* activation du clicked */
    if(!contains(regionIds, idregion)){
        elm.style.backgroundColor = CURRENT;
        var elspans = elm.getElementsByTagName("span");
        for(var i = 0 ; i < elspans.length ; i++){
            elspans[i].style.color = FONT_COLOR;
        }
    }
    
    // Attribution de la région courante
    currentRegionId = idregion;
    document.getElementById("regionIdCurrentHidden").value = idregion;
    
    // envoyer la nouvelle region id au flash
    if(fromPage){
        setFlashCurrentRegionId(searchCategorie);
    }
    
    // On montre les sous-régions
    showElement('subregions-' + idregion);
    
    // commented by fleclerc 20 sept 2007 - too much overhead ... 
    // fillSubregionList(idregion);
    
    setCheckbox("checkboxAllVilles", false);
    
    if (listOfRegionWithAllSelected.contains(currentRegionId)) {
        setCheckbox("checkboxAllSubregions", true);
    }
    else {
        setCheckbox("checkboxAllSubregions", false);
    }
    
    // call ajax ici pour r�cup�rer le nombre de villes!
    http('GET', contextPath + '/' + lang + '/getcountvilles.rmx?idregion=' + idregion + '&cat=' + searchCategorie, getResultFromCountVille); 

}

function flashDisplayVilles(regid, id, categorie){
    displayVilles(regid, id, contextPath, lang, categorie);
}

function resetFlashMap(){
    var inner = '<object type="application/x-shockwave-flash" ';
    inner += 'data="' + contextPath + '/swf/searchregions.swf" ';
    inner += 'width="337" height="286"> ';
    inner += '<param name="movie" value="' + contextPath + '/swf/searchregions.swf" ;/>' ;
    inner += '<embed src="' + contextPath + '/swf/searchregions.swf" ';
    inner += 'width="337" height="286">' ;
    inner += '</embed> </object> ';
    document.getElementById("mapArea").innerHTML = inner;
}

function getCountVilleByRegionId(regionId) {
    http('GET', contextPath + '/' + lang + '/getcountvilles.rmx?regionid=' + regionId + '&cat=searchCategorie', getResultFromCountVille); 
}

function getResultFromCountVille(obj) {
    nbTotalVille = obj;
}

function getVilleByRegionList(arraySubregion) {
    
    currentTotalVilleByRegionList = [];
    
    for (var i = 0; i < arraySubregion.length; i++) {
        http('GET', contextPath + '/' + lang + '/getvilles.rmx?subregionid=' + arraySubregion[i] + '&cat=' + searchCategorie + '&regionid=' + currentRegionId, extractNumberOfVille);      
    }
    
    return currentTotalVilleByRegionList;
}

/**
 *  Cette méthode affiche les villes selon la sous-région passé en paramètre 
 */
function displayVilles(regId, subid, contextPath, lang, categorie){
    
    if (getCheckboxValue("checkboxAllSubregions")) {
        return;
    }
    
    try { hideElement("villesCheckboxes"); } catch (e) {}

    // desactivation du derier lien , s'il y a lieu
    if(currentSubregionId != -1 && !contains(subIds, currentSubregionId)) {

        try {
            document.getElementById("subregion-" + currentSubregionId).style.backgroundColor = WHITE;
            spans = document.getElementById("subregion-" + currentSubregionId).getElementsByTagName("span");
            for(var i = 0 ; i < spans.length ; i ++){
                spans[i].style.color = FONT_COLOR;
                
            }
        }
        catch (e) { }
    }
    
    // activation du lien present
    if(!contains(subIds, subid + "-" + regId)){
        
        document.getElementById("subregion-" + subid + "-" + regId).style.backgroundColor = CURRENT;
        spans = document.getElementById("subregion-" + subid + "-" + regId).getElementsByTagName("span");
        
        for(var i = 0 ; i < spans.length ; i ++){
            spans[i].style.color = FONT_COLOR;
        }

    }

    
    currentSubregionId = subid + "-" + regId;
        
    document.getElementById("subregionIdCurrentHidden").value = currentSubregionId;
    
    // debug
    //displayDebugInfo();
    
    // Effectue le call Ajax
    var ajaxPath = contextPath + '/' + lang + '/getvilles.rmx?subregionid=' + subid + '&rand=' + Math.random() + '&cat=' + categorie + '&regionid=' + currentRegionId;
    // alert(ajaxPath);

    http('GET', ajaxPath, fillVilles);    
    
}

/**
 *  Cette fonction est utilisé afin de compteur le nombre de région présente
 *  dans la page de recherche. La fonction parse du HTML afin d'en extraire 
 *  les IDs.
 *
 *  @return: Le nombre de sous-région ajouté a la liste
 */
function fillSubregionList(regionId) {
    
    currentSubregionList = [];
    currentTotalVilleByRegionList = [];
    
    var divs = document.getElementById('sousregions').getElementsByTagName('div');
    
    for (var i = 0; i < divs.length; i++) {
        
        var search = "subregions-" + regionId;
        
        if (divs[i].id.match(search)) {
            
            var spans = divs[i].getElementsByTagName("span");
            
            for (var j = 0; j < spans.length; j++) {
                
                if (spans[j].id.match('subregionSpan')) {
                    
                    var subId = extractVilleIdFromDiv(spans[j].id);
                    currentSubregionList.push(subId);
                    
                    http('GET', contextPath + '/' + lang + '/getvilles.rmx?subregionid=' + subId + '&cat=' + searchCategorie + '&regionid=' + currentRegionId, extractNumberOfVille);
                    
                }          
            }   
        }
    }
}

/*******************************************************************************
 *
 *  CETTE SECTION COMPORTE LES FONCTIONS QUI SONT APPELLÉ A LA SUITE D'UN CALL
 *  AJAX. CES FONCTIONS ONT TOUS UN obj EN PARAMÈTRE (REPONSE DU CALL AJAX)
 *
 ******************************************************************************/

/**
 *  Cette méthode est responsable d'ajouté les villes trouvé dans l'objet passé
 *  en parametre (a la suite d'un call AJAX)
 */
function extractNumberOfVille(obj) {
    
    var element = document.createElement("tempVillesCheckboxes");
    
    element.innerHTML = obj;
    
    var divs = element.getElementsByTagName('div');
    
    // Effectue le comptage des villes présente
    for (var j = 0; j < divs.length; j++) {
        
        if (divs[j].id.length > 0) {
            
            var values = extractDataFromTemplate(divs[j].id);
            currentTotalVilleByRegionList.push(values[INDEX_VILLE]);
        }        
    }
    
    displayDebugInfo();
}

/**
 *  Cette méthode est appellé après que la méthode checkAllVillesFromSubregion
 *  ai fait un call Ajax afin de récupéré la liste des villes pour une sous-région.
 *  Le paramètre obj contient les éléments HTML qui permet d'afficher les villes.
 *  Les ID des villes se retrouvent dans les tags HTML.
 */
function checkAllVilles(obj) {
    
    showLoading();
    
    
    
    // Effectue un parsing du chuck de HTML reçu pour en extraire les ids des villes.
    var subregion  = fillVilleListBySubRegion(obj);
    
    // Vérification du checkboxCheckedState
    var checkboxCheckedState = getCheckboxValue("checkboxAllVilles");
    
    //alert("checkAllVilles(obj): currentSubregionVilleList.length: " + currentSubregionVilleList.length);
    
    for (var i = 0; i < currentSubregionVilleList.length; i++) {
        
        if (checkboxCheckedState && !contains(villeIds, currentSubregionVilleList[i])) {
            villeCheck(currentSubregionVilleList[i], subregion, currentRegionId);
        }
        else if (!checkboxCheckedState && contains(villeIds, currentSubregionVilleList[i])) {
            villeCheck(currentSubregionVilleList[i], subregion, currentRegionId);
        }
    }
    
    hideLoading();
}

/**
 *  Cette fonction est appellé à la suite d'un call Ajax qui récupère la liste des
 *  villes selon une sous-région. En plus, d'afficher les cases cochées ou non, 
 *  cette fonction fait un comptage des villes affichées.
 */
function fillVilles(obj){ 
    
    document.getElementById("villesCheckboxes").innerHTML = obj;
    //alert("fillVilles(obj) = " + obj);
    
    var divs = document.getElementById("villesCheckboxes").getElementsByTagName('div');
    
    // Effectue le comptage des villes présentes
    currentSubregionVilleList = [];
    for (var j = 0; j < divs.length; j++) {

        if (divs[j].id.length > 0 && divs[j].className != "regionCheckbox noCheck") {
            
            var values = extractDataFromTemplate(divs[j].id);           
            currentSubregionVilleList.push(values[INDEX_VILLE]);
            
            if (contains(villeIds, values[INDEX_VILLE] + "-" + values[INDEX_SUB] + "-" + values[INDEX_REGION])) {
                setCheckbox("villeChk-" + values[INDEX_VILLE] + "-" + values[INDEX_SUB] + "-" + values[INDEX_REGION], true);
            }
        }
    }
    
    // Effectue une vérification si les villes sont tt sélectionnée
    checkIfAllSelected(parseInt(document.getElementById("subregionSpan-" + currentSubregionId).innerHTML), currentSubregionVilleList.length, "checkboxAllVilles");
    
    // Affiche la liste de villes
    showElement("villesCheckboxes");
    
    //displayDebugInfo();
    
}

function fillVillesIE(){
    var divs = document.getElementById("villesCheckboxes").getElementsByTagName('div');
    
    // Effectue le comptage des villes présentes
    currentSubregionVilleList = [];
    for (var j = 0; j < divs.length; j++) {    

        if (divs[j].id.length > 0 && divs[j].className != "regionCheckbox noCheck") {          
        
            var values = extractDataFromTemplate(divs[j].id);
            currentSubregionVilleList.push(values[INDEX_VILLE]);
            
            if (contains(villeIds, values[INDEX_VILLE] + "-" + values[INDEX_SUB] + "-" + values[INDEX_REGION])) {
                setCheckbox("villeChk-" + values[INDEX_VILLE] + "-" + values[INDEX_SUB] + "-" + values[INDEX_REGION], true);
            }
        }
    }
    
    // Effectue une vérification si les villes sont tt sélectionnée
    checkIfAllSelected(parseInt(document.getElementById("subregionSpan-" + currentSubregionId).innerHTML), currentSubregionVilleList.length, "checkboxAllVilles");
    // Affiche la liste de villes
    showElement("villesCheckboxes");
    
    displayDebugInfo();
}

/**
 *  Cette fonction parse du HTML afin d'extraire les IDs des villes pour une 
 *  sous-région donnée.
 *
 *  @return: Renvoie le nombre de Id de ville inséré dans la liste
 */
function fillVilleListBySubRegion(obj) {

    
    try{
        // Attribue la section des villes recu à parti de obj
        var element = document.createElement("tempVilleCheckboxes");
        element.innerHTML = obj;
                
        var divs = element.getElementsByTagName('div');

        
        // Effectue le comptage des villes présentes
        currentSubregionVilleList = [];
        
        for (var j = 0; j < divs.length; j++) {

            if(divs[j].className == "regionCheckbox noCheck"){
                // ne pas compter ... pas d'inscriptions dans cette ville
               
            }else{
                if (divs[j].id.length > 0 && divs[j].className != "regionCheckbox noCheck") {
                    
                    var values = extractDataFromTemplate(divs[j].id);
                    currentSubregionVilleList.push(values[INDEX_VILLE]);
                    
                }
            }
        }
        
        return values[INDEX_SUB];
        
    }catch(err){}
}


/*******************************************************************************
 *
 *  CETTE SECTION COMPORTE LES FONCTIONS QUI SONT REPONSABLES DE LA GESTION DES
 *  VILLES. QUELQUES-UNES DE CES FONCTION FONT DES CALL AJAX.
 *
 ******************************************************************************/

/**
 *  Cette méthode est appellé lorsque le bouton TOUS est cliqué à partir des 
 *  SOUS-RÉGIONS. En fait, cette méthode doit effectuer la sélection de toutes
 *  les villes dans toutes les sous-régions.
 */
// ajout d'un boolean pour valider si le travail du check est vraiment termine parce que ca peut prendre un moment
// dans le cas ou la region contient beaucoup de villes
var checkingSubregions = false;

function checkAllSubregionFromRegion() {

    // On set les deux checkbox
    checkingSubregions = true;
    setCheckbox("checkboxAllSubregions", getCheckboxValue("checkboxAllSubregions"));
    http('GET', contextPath + '/' + lang + '/getvillesfromregion.rmx?regionid=' + currentRegionId + '&cat=' + searchCategorie, checkAllSubregion);
 
}

function checkAllSubregion(obj) {

    try { hideElement('villesCheckboxes')} catch (e) {}
    
    var addAll = getCheckboxValue("checkboxAllSubregions");
    
    if (addAll) {
        // d�sactiv� le checkbox des bvilles
    }
    
    document.getElementById("tempSelectAllSubregion").innerHTML = obj;  
    var listOfSubIds = document.getElementById("listOfSubIds").innerHTML;
    
    var listOfSubArray = listOfSubIds.split("-");

    for (var i = 0; i < listOfSubArray.length; i++) {


        var listOfVille = document.getElementById("subIdCheckAll-" + listOfSubArray[i]).innerHTML;
        var listOfVilleArray = listOfVille.split("-");
        
        for (var j = 0; j < listOfVilleArray.length; j++) {

            // Cette méthode renvoie true s'il y eu un ajout de ville
            if (addAll && !contains(villeIds, listOfVilleArray[j] + "-" + listOfSubArray[i] + "-" + currentRegionId)) {
                var adding = toggleVilleFromList(listOfVilleArray[j] + "-" + listOfSubArray[i] + "-" + currentRegionId);
                updateNumberOfSelectedItem(adding, listOfSubArray[i], currentRegionId);
                
                document.getElementById("subregion-" + listOfSubArray[i] + "-" + currentRegionId).style.backgroundColor = SELECTED_BG;
        
                var spans = document.getElementById("subregion-" + listOfSubArray[i] + "-" + currentRegionId).getElementsByTagName("span");

                for (var l = 0; l < spans.length; l++) {
                    spans[l].style.color = FONT_COLOR;
                }
                
            }
            else if (!addAll && contains(villeIds, listOfVilleArray[j] + "-" + listOfSubArray[i] + "-" + currentRegionId)) {
                
                var adding = toggleVilleFromList(listOfVilleArray[j] + "-" + listOfSubArray[i] + "-" + currentRegionId);
                updateNumberOfSelectedItem(adding, listOfSubArray[i], currentRegionId);
                
                document.getElementById("subregion-" + listOfSubArray[i] + "-" + currentRegionId).style.backgroundColor = WHITE;
        
                var spans = document.getElementById("subregion-" + listOfSubArray[i] + "-" + currentRegionId).getElementsByTagName("span");

                for (var k = 0; k < spans.length; k++) {
                    spans[k].style.color = FONT_COLOR;
                }

            }
    
        }

        
    }
    
    if (addAll) {

        listOfRegionWithAllSelected.push(currentRegionId);
    }
    else {
        
        listOfRegionWithAllSelected = remove(listOfRegionWithAllSelected, currentRegionId);

    }

    // Update les champs cachés du formulaire
    updateHiddenFields();
    
    checkingSubregions = false;
       
    
}

/**
 *  Cette méthode est appellé lorsque le bouton TOUS est cliqué à partir des 
 *  VILLES. En fait, cette méthode doit effectuer la sélection de toutes
 *  les villes dans la sous-région sélectionné
 */
function checkAllVillesFromSubregion() {

    var checkBoxValue = getCheckboxValue("checkboxAllVilles");
    var cpt = 0;
    // var imgs = document.getElementsByTagName("img");
    var imgs = document.getElementById("villesCheckboxes").getElementsByTagName("img");

    for (var i = 0; i < imgs.length; i++) {
    
        var elementId = imgs[i].id;

        var data = elementId.split("-");

        if (elementId.indexOf('villeChk-') != -1) {

            var idVille = data[1];

            if (checkBoxValue && !contains(villeIds,  data[1] + "-" + data[2] + "-" + data[3])) {
                villeCheck(idVille, data[2], data[3]);
            }
            
            if (!checkBoxValue && contains(villeIds,  data[1] + "-" + data[2] + "-" + data[3])) {
                villeCheck(idVille, data[2], data[3]);
            }       
        }

    }
    
    var regionNb = parseInt(document.getElementById("regionSpan-" + currentRegionId).innerHTML)
    
    if (regionNb == nbTotalVille) {
        setCheckbox('checkboxAllSubregions', true);
        listOfRegionWithAllSelected.push(currentRegionId);
        try { hideElement('villesCheckboxes')} catch (e) {}
    }
    else {
        setCheckbox('checkboxAllSubregions', false);
    }
    
    updateHiddenFields();
    
    
}

/*
 *  C'est un comportement de toggle qui est implémenté ici. Si la ville est 
 *  est déjà sélectionné, elle est enlevé de la liste, sinon, on l'ajoute
 */
function toggleVilleFromList(villeid) {
    
    var adding = false;
    
    
    if(contains(villeIds, villeid)){      
        villeIds = remove(villeIds, villeid);
    }
    else {
        
        villeIds.push(villeid);
        adding = true;
    }
    
    return adding;    
    
}


function addVilleFromListCheckAllSubregion(villeid) {
    
    var adding = false;
    
    if (!contains(villeIds, villeid)) {      
       villeIds.push(villeid); 
       adding = true;
    }

    return adding;    
    
}

function removeVilleFromListCheckAllSubregion(villeid) {

    var adding = true;
    
    if (contains(villeIds, villeid)) {
        villeIds = remove(villeIds, villeid);
        adding = false;
    }

    return adding;
    
}

/**
 *  Cette fonction est appellé quand une ville est coché/décoché dans la liste.
 *  La ville est ajouté/enlevé de la liste, son checkbox updaté et ensuite 
 *  une vérification est faite pour savoir si toutes les villes sont cochés!
 */
function villeCheck(villeid, subregionid, regionid){


    // Cette méthode renvoie true s'il y eu un ajout de ville
    var adding = toggleVilleFromList(villeid + "-" + subregionid + "-" + regionid);
    
    // Update le nombre d'item sélectionné
    
    updateNumberOfSelectedItem(adding, subregionid, regionid);
    
    // Update les champs cachés du formulaire
    updateHiddenFields();
    
    // Update le checkbox de la ville correspondante
    setCheckbox("villeChk-" + villeid + "-" + subregionid + "-" + regionid, adding);
    
    // Valide si toutes les villes sont sélectionnées
    checkIfAllSelected(parseInt(document.getElementById("subregionSpan-" + subregionid + "-" + regionid).innerHTML), currentSubregionVilleList.length, "checkboxAllVilles");


    // Valide si toutes les régions sont sélectionnés
    //checkIfAllSelected(parseInt(document.getElementById("regionSpan-" + regionid).innerHTML), currentTotalVilleByRegionList.length, "checkboxAllSubregion");
    
    // Affiche de l'information de déboguage
    //displayDebugInfo();
}

/**
 *  Cette fonction rempli les champs cachés du formulaire
 */
function updateHiddenFields() {
    
    var element = document.getElementById("villeIdsHidden");
    element.value = villeIds.toString();
    
    element = document.getElementById("subregionIdsHidden");
    element.value = subIds.toString();
    
    element = document.getElementById("regionIdsHidden");
    element.value = regionIds.toString();
    
    element = document.getElementById("listOfCurrentRegionWithAllSelected");
    element.value = listOfRegionWithAllSelected.toString();
    
}

/**
 *  Cette fonction gère le comptage de villes à travers les régions et sous-régions
 *  @param: add - Détermine si l'opération est d'ajouter une ville ou non
 */
function updateNumberOfSelectedItem(add, subregionid, regionid) {
    
    if (add) {
        
        if(!contains(subIds, subregionid + "-" + regionid)){
            subIds.push(subregionid + "-" + regionid);
            document.getElementById("subregion-" + subregionid + "-" + regionid).style.backgroundColor = SELECTED_BG;
        }
        
        var nb = parseInt(document.getElementById("subregionSpan-" + subregionid + "-" + regionid).innerHTML);
        
        if(isNaN(nb)){
            nb = 1;
        }else{
            nb = nb + 1;
        }
        
        document.getElementById("subregionSpan-" + subregionid + "-" + regionid).innerHTML = nb;
        
        var reNb = parseInt(document.getElementById("regionSpan-" + regionid).innerHTML)
        
        if(isNaN(reNb)){
            regionIds.push(regionid);
            document.getElementById("region-" + regionid).style.backgroundColor = SELECTED_BG;
            reNb = 1;
        }else{
            reNb = reNb + 1;
        }
        
        document.getElementById("regionSpan-" + regionid).innerHTML = reNb;    
        
    }
    else {
        
        var nb = parseInt(document.getElementById("subregionSpan-" + subregionid + "-" + regionid).innerHTML);
        
        if(!isNaN(nb) && nb > 1){
            nb = nb - 1;
        }else{
            subIds = remove(subIds, subregionid + "-" + regionid);
            document.getElementById("subregion-" + subregionid + "-" + regionid).style.backgroundColor = CURRENT;
            nb = "";
        }
        
        document.getElementById("subregionSpan-" + subregionid + "-" + regionid).innerHTML = nb;
        
        var reNb = parseInt(document.getElementById("regionSpan-" + regionid).innerHTML)
        
        if(!isNaN(reNb) && reNb > 1){
            reNb = reNb - 1;
        }else{
            regionIds = remove(regionIds, regionid);
            document.getElementById("region-" + regionid).style.backgroundColor = CURRENT;
            reNb = "";
        }
        
        document.getElementById("regionSpan-" + regionid).innerHTML = reNb;
    }    
}

function selectAllGenres() {
    
    var elementGenre = document.getElementById("genreCheckboxes");
    var listOfCheckbox = elementGenre.getElementsByTagName("input");
    var value = false;
    
    if (listOfCheckbox[0].checked) {
        value = true;
    }
    
    for (var i = 1; i < listOfCheckbox.length; i++) {
        listOfCheckbox[i].checked = value;
    }
    
    // Hack car la liste des genres suppl�mentaires se trouve dans un autre 
    // bloc de code HTML
    
    try {
        var elementGenreSupp = document.getElementById("autresCheckboxes");
        listOfCheckbox = elementGenreSupp.getElementsByTagName("input");

        for (var i = 0; i < listOfCheckbox.length; i++) {
            listOfCheckbox[i].checked = value;
        }    
    }
    catch (ex) {
        // dans le cas ou la section n'est pas pr�sente dans le forumulaire
    }

}

function checkIfAllGenreSelected() {
    
    var elementGenre = document.getElementById("genreCheckboxes");
    var listOfCheckbox = elementGenre.getElementsByTagName("input");
    var value = true;

    for (var i = 1; i < listOfCheckbox.length; i++) {
        
        if (!listOfCheckbox[i].checked) {
            value = false;
        }
    }
    
    try {
        
        elementGenre = document.getElementById("autresCheckboxes");
        var listOfCheckboxSupp = elementGenre.getElementsByTagName("input");
        
        for (var i = 0; i < listOfCheckboxSupp.length; i++) {
        
            if (!listOfCheckboxSupp[i].checked) {
                value = false;
            }
        }
    }
    catch (e) {
        // il est possible que la section des genres supp ne soit pas pr�sente
    }
    
    listOfCheckbox[0].checked = value;
}

function checkUnifamilliale(elm) {
    // la liste des inufamilliales : 11,4,2,3,5,6,10
    document.getElementById("genreChk-11").checked = elm.checked;
    document.getElementById("genreChk-4").checked = elm.checked;
    document.getElementById("genreChk-2").checked = elm.checked;
    document.getElementById("genreChk-3").checked = elm.checked;
    document.getElementById("genreChk-5").checked = elm.checked;
    document.getElementById("genreChk-6").checked = elm.checked;
}

function toggleUnifamilliale() {
    if(
        document.getElementById("genreChk-11").checked &&
        document.getElementById("genreChk-4").checked &&
        document.getElementById("genreChk-2").checked &&
        document.getElementById("genreChk-3").checked &&
        document.getElementById("genreChk-5").checked &&
        document.getElementById("genreChk-6").checked ){
            document.getElementById("genreChk-0").checked = true;
    }else{
        document.getElementById("genreChk-0").checked = false;
    }

}

/********************************************************************************
 *                                                                              *
 *   CETTE SECTION CONTIENT LES FONCTIONS QUI PERMETTENT DE REMPLIR LE BEAN     *
 *   DE RECHERCHE CORRECTEMENT                                                  *
 *                                                                              *
 *******************************************************************************/
function setCharAt(str, index, chr) {
    if(index > str.length-1){
        return str;
    }
    return str.substr(0,index) + chr + str.substr(index+1);
}


function addCaracteristiqueToBean(element) {

    var elementName = element.name;
    var bitpos = elementName.substring(elementName.indexOf("-") + 1);
    var elementValue = element.value;
    var completeString = setCharAt(document.getElementById("caracteristiquesHidden").value, bitpos - 1, elementValue);
    document.getElementById("caracteristiquesHidden").value = completeString;
}

/**
 *  Affiche les critères avancés
 */
function toggleAdvancedCriteria(categorie){
    
    if (categorie == 'residentielle') {
        
        if(isVisible("typesAutres")) {
            hideElement("typesAutres");
            hideElement("autresTypes");
            hideElement("autresCheckboxes");
            hideElement("autreCac");
            hideElement("autreCaracteristiques");
            hideElement("advancedSubmitBtn");
            document.getElementById("advancedCriteriaVisibleHidden").value = "false";
        }
        else {
            showElement("typesAutres");
            showElement("autresTypes");
            showElement("autresCheckboxes");
            showElement("autreCac");
            showElement("autreCaracteristiques");
            showElement("advancedSubmitBtn");
            document.getElementById("advancedCriteriaVisibleHidden").value = "true";
        }
        
    }
    else if (categorie == 'commerciale') {
        
        if(isVisible("autreCaracteristiques")){
            hideElement("autreCaracteristiques");
            document.getElementById("advancedCriteriaVisibleHidden").value = "false";
        }
        else{
            showElement("autreCaracteristiques");
            document.getElementById("advancedCriteriaVisibleHidden").value = "true";
        }
    }
    else if (categorie == 'terrain') {
        
        if (isVisible("autreCaracteristiques")) {
            hideElement("autreCaracteristiques");
            document.getElementById("advancedCriteriaVisibleHidden").value = "false";
        }
        else{
            showElement("autreCaracteristiques");
            document.getElementById("advancedCriteriaVisibleHidden").value = "true";
        }
    }
    else if (categorie == 'ferme') {
        
        if(isVisible("autreCac")) {
            hideElement("autreCac");
            hideElement("autreCaracteristiques");
            document.getElementById("advancedCriteriaVisibleHidden").value = "false";
        }
        else {
            showElement("autreCac");
            showElement("autreCaracteristiques");
            document.getElementById("advancedCriteriaVisibleHidden").value = "true";
        }
    }
}

function setTransactionType() {
    var sale = document.getElementById("forSaleChk").checked;
    var rent = document.getElementById("forRentChk").checked;
    var transactionType = "";
    
    if (sale == true && rent == true) {
        transactionType= 'locavente';
    }
    else if (sale == false && rent == true) {
        transactionType = 'location';
    }
    else if (sale == true && rent == false) {
        transactionType = "vente";
    }
    else {
        transactionType = "";
    }
    
    document.getElementById("transactionTypeHidden").value = transactionType;
}

function submitInscriptionSearchForm() {
    if(checkingSubregions){
        // alert("checkingSubregions : " + checkingSubregions);
    }else{
        document.getElementById('inscriptionSearchForm').submit();
    }
}


function setIdsArray(cities, subregions, regions) {
    villeIds = getArrayFromString(cities);
    subIds = getArrayFromString(subregions);
    regionIds = getArrayFromString(regions);   
}

function getArrayFromString(text) {
    return text.split(',');
}

