function getLibArret(element, maxlength, arretenlv, arretendz) {
    // Cette fonction affiche le libelle de l'arret a coté du code qui vient d'etre saisi.
    // données de carcassonne les codes Arrets sont sur 4 Chiffres.
    
    // Désactiver les autres champs
    disable(element);
    // Si le code l'arrêt est saisi en entier...
    if ($F(element).length == maxlength) {
        // si oui, récupérer le libellé de l'arrêt
        var url = 'ajax/getArrets.php';
        var parametres = { liste: 0, codeArret: $F(element), iebug: (new Date()).getTime(), arretLV: arretenlv, arretDZ: arretendz};
        var myAjax = new Ajax.Updater(
            $(element.id+'_lib'),
            url,
            {
                method: 'post',
                parameters: parametres
            }
        );
    } else {
        // si non, vider le libellé de l'arrêt
        $(element.id+'_lib').innerHTML = '';
        // Si le champ est vide...
        if ($F(element).length == 0) {
            // Réactiver les autres champs pour que l'utilisateur puisse choisir son mode de saisie
            enable(element);
        }
    }
}

function disable(element) {
// Cette fonction désactive les champs non utilisés en fonction de l'élement actif passé en paramètre.
    switch (element.id) {
        case 'arret_depart_codifie':
            $('commune_depart').options[0].selected = true;
            $('commune_depart').disabled = true;
            if ($('arret_depart').options[0]) $('arret_depart').options[0].selected = true;
            $('arret_depart').disabled = true;
            if ($('arret_depart_fav')) {
                $('arret_depart_fav').options[0].selected = true;
                $('arret_depart_fav').disabled = true;
            }
            break;
        case 'commune_depart' :
            $('arret_depart_codifie').disabled = true;
            $('arret_depart_codifie').value = '';
            if ($('arret_depart_fav')) {
                $('arret_depart_fav').options[0].selected = true;
                $('arret_depart_fav').disabled = true;
            }
            break;
        case 'arret_arrivee_codifie':
            $('commune_arrivee').options[0].selected = true;
            $('commune_arrivee').disabled = true;
            if ($('arret_arrivee').options[0]) $('arret_arrivee').options[0].selected = true;
            $('arret_arrivee').disabled = true;
            if ($('arret_arrivee_fav')) {
                $('arret_arrivee_fav').options[0].selected = true;
                $('arret_arrivee_fav').disabled = true;
            }
            break;
        case 'commune_arrivee' :
            $('arret_arrivee_codifie').disabled = true;
            $('arret_arrivee_codifie').value = '';
            if ($('arret_arrivee_fav')) {
                $('arret_arrivee_fav').options[0].selected = true;
                $('arret_arrivee_fav').disabled = true;
            }
            break;
    }
}

function enable(element) {
// Cette fonction ré-ésactive les champs désactivés en fonction de l'élement actif passé en paramètre.
    switch (element.id) {
        case 'arret_depart_codifie':
            $('commune_depart').disabled = false;
            $('arret_depart').disabled = false;
            if ($('arret_depart_fav')) $('arret_depart_fav').disabled = false;
            break;
        case 'commune_depart' :
            $('arret_depart_codifie').disabled = false;
            if ($('arret_depart_fav')) $('arret_depart_fav').disabled = false;
            break;
        case 'arret_arrivee_codifie':
            $('commune_arrivee').disabled = false;
            $('arret_arrivee').disabled = false;
            if ($('arret_arrivee_fav')) $('arret_arrivee_fav').disabled = true;
            break;
        case 'commune_arrivee' :
            $('arret_arrivee_codifie').disabled = false;
            if ($('arret_arrivee_fav')) $('arret_arrivee_fav').disabled = false;
            break;
    }
}

function getListeArret(select, codezonegeo,arretenlv, arretendz) {
    // Cette fonction affiche la liste des arrets connus pour la zone géographique dont le code est passé en parametre

    var url = 'ajax/getArrets.php';
    var parametres = { liste: 1, codeZoneGeo: codezonegeo, iebug: (new Date()).getTime(), arretLV: arretenlv, arretDZ: arretendz};

    var myAjax = new Ajax.Request(
        url,
        {
            method: 'post',
            parameters: parametres,
            onComplete: function(request) {
                select.options.length = 0;
                var optionsXML = request.responseXML;
                var options = optionsXML.getElementsByTagName('option');
                $A(options).each(function(noeudOption) {
                    select.options[select.options.length] = new Option(noeudOption.firstChild.data,noeudOption.getAttribute("value"));
                });
            }
        }
    );
}

function getTableArret(codezonegeo) {
    // Cette fonction affiche la liste des arrets connus pour la zone géographique dont le code est passé en parametre

    var url = 'ajax/getArrets.php';
    var parametres = { codeZoneGeo: codezonegeo, iebug: (new Date()).getTime() };

    var myAjax = new Ajax.Request(
        url,
        {
            method: 'post',
            parameters: parametres,
            asynchronous: false
        }
    );
    if (myAjax.success) {
        return myAjax.transport.responseText;
    } else {
        return 'erreur';
    }
}

function changeCommune (select,arretenlv, arretendz) {
// Cette fonction gère les traitements à effectuer lors du changement de commune dans la liste de choix
    disable(select);
    switch (select.id) {
        case 'commune_depart' :
            if (select.selectedIndex == 0) {
                enable(select);
                $('arret_depart').options.length = 0;
                $('arret_depart').options[0] = new Option('--sélectionnez un arrêt--');
            } else {
                getListeArret($('arret_depart'),$F(select),arretenlv, arretendz);
            }
            break;
        case 'commune_arrivee' :
            if (select.selectedIndex == 0) {
                enable(select);
                $('arret_arrivee').options.length = 0;
                $('arret_arrivee').options[0] = new Option('--sélectionnez un arrêt--');
            } else {
                getListeArret($('arret_arrivee'),$F(select),arretenlv, arretendz);
            }
            break;
    }
}

function verifierFormulaire(formulaire) {
// Cette fonction verifie que le code adherent et le numéro ne sont
// composés que de chiffres et retourne un booléen.
    var OK = true;
    var message = '';
    if (isNaN(document.getElementById(formulaire).CODE_ADHERENT.value)||document.getElementById(formulaire).CODE_ADHERENT.value=='') {
        message = '-> Le code adhérent ne peut être vide et ne doit contenir que des chiffres';
        OK = false;
    }

    if (isNaN(document.getElementById(formulaire).NO_ADHERENT.value)||document.getElementById(formulaire).NO_ADHERENT.value=='') {
        message = message+'\n-> Le code confidentiel ne peut être vide et ne doit contenir que des chiffres';
        OK = false;
    }

    if (message.length>0) alert(message);
    return OK;
}

function crypte() {
// Cette fonction est appelée pour crypter le mot de passe avant l'envoie du formulaire.

    if ($F('NO_ADHERENT') != '')
        $('NO_ADHERENT').value = hex_md5($F('NO_ADHERENT'));
    else
        return false;
}

/*
 * Fonction utilisée pour activer/désactiver des lignes sélectionnées dans une table.
 * Paramètres : thElement balise <th> à activer
 * Variables :  thElement_old <th> à désactiver (précédemment activée)
 */
var thElement_old;
function activeTableRow(thElement) {
    if (thElement_old && $(thElement_old)) {
        $(thElement_old).className = '';
    }
    if ($(thElement)) {
        thElement_old = thElement;
        $(thElement).className = 'active';
    }
}

/*
 * Fonction utilisée pour afficher un message d'attente pendant la soumission des formulaires.
 * Paramètres : divattente DIV à montrer (utilise la classe CSS "taxitub_attente")
 *              divboutons DIV à cacher
 */
function form_attente(divattente, divboutons) {
    divattente = $(divattente);
    divboutons = $(divboutons);
    if (divattente) {
        $(divattente).removeClassName('hidden');
    }
    if (divboutons) {
        $(divboutons).addClassName('hidden');
    }
    return true;
}