// Rechercher les localités correspondantes à l'entrée utilisateur fournie 
// dans inputLocalite.
// Si un résultat -> Mise-à-jour de l'élément Html inputLocalite
// Sinon Si plusieurs résultats affichage select avec la liste des résultats et masque l'inputLocalite
// Sinon Rne fait rien



if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();

	

            var question;
            var results;
            var CONST_SIZE_STATIONNEMENT_DOMICILE = 5;
            var CONST_ENTETE_STATIONNEMENT_DOMICILE = 2;
            var CONST_QUESTION_FLASH_COLOR = "red";

            function RechercherLocalites(idQuestion){
                question = idQuestion;
                results = null;
                var inputLocalite = recupereInputReponse(idQuestion);

                var regexCPCorse = new RegExp("^(2A|2a|2B|2b)", "g");
                var regexCP = new RegExp("\\d{3,5}", "g");
                var regexNom = new RegExp("\\D{3,}", "g");
                var entreeUtilisateur = trim(inputLocalite.value);
                
                entreeUtilisateur = entreeUtilisateur.replace(regexCPCorse,"20");
                
                var entreeCP = regexCP.exec(entreeUtilisateur);
                var entreeNom = regexNom.exec(entreeUtilisateur);

                if(entreeCP!=null && entreeNom==null)
                {
                    DA.WEB.PS.MoteurRendu.Auto.Web.RechercheLocalite.RecupererListeLocalitesParCP(entreeCP[0], OnRechercherLocalitesComplete, OnFailed);
                }
                if(entreeCP==null && entreeNom!=null)
                {
                    DA.WEB.PS.MoteurRendu.Auto.Web.RechercheLocalite.RecupererListeLocalitesParNom(entreeNom[0], OnRechercherLocalitesComplete, OnFailed);
                }
                if(entreeCP!=null && entreeNom!=null)
                {
                    DA.WEB.PS.MoteurRendu.Auto.Web.RechercheLocalite.RecupererListeLocalitesParCP(entreeCP[0], OnRechercherLocalitesComplete, OnFailed);
                    DA.WEB.PS.MoteurRendu.Auto.Web.RechercheLocalite.RecupererListeLocalitesParNom(entreeNom[0], OnRechercherLocalitesComplete, OnFailed);
                }
            }


            function OnRechercherLocalitesComplete(resultats){

                var inputLocalite = recupereInputReponse(question);
                var selectLocalite = recupereSelectReponse(question);
                    
                if(resultats.length > 0)
                {
                    viderFinListe(selectLocalite,CONST_ENTETE_STATIONNEMENT_DOMICILE);
                    if (results==null)
                    {
                        results = resultats;

                        if (resultats.length == 1){
                            inputLocalite.value = resultats[0].Nom + " (" + resultats[0].CodePostal + ")";
                            selectLocalite.style.display= 'none';
                            inputLocalite.style.display= '';
                            ajouterOptionDoubleVerif(selectLocalite, resultats[0].CodeINSEE, resultats[0].CodePostal, resultats[0].Nom + " (" + resultats[0].CodePostal + ")");
                            selectLocalite.selectedIndex = 2;
                        }
                        else if (resultats.length > 1){
                            for (var i=0; i<resultats.length; i++){
                                ajouterOptionDoubleVerif(selectLocalite, resultats[i].CodeINSEE, resultats[i].CodePostal, resultats[i].Nom + " (" + resultats[i].CodePostal + ")");
                            }
                            selectLocalite.style.display= '';
                            inputLocalite.style.display= 'none';
                            flasheQuestion(question,CONST_QUESTION_FLASH_COLOR);
                            selectLocalite.selectedIndex = 0;
                        }           
                    }
                    else
                    {
                        var compteur = 0;
                        for (var j=0; j<resultats.length; j++){
                            for (var k=0; k<results.length; k++){
                                if(resultats[j].CodeINSEE == results[k].CodeINSEE){
                                    compteur++;
                                    ajouterOptionDoubleVerif(selectLocalite, results[k].CodeINSEE, results[k].CodePostal, results[k].Nom + " (" + results[k].CodePostal + ")");
                                    inputLocalite.value = results[k].Nom + " (" + results[k].CodePostal + ")";
                                }
                            }
                        }
                        if(compteur>1)
                        {
                            inputLocalite.value = "";
                            selectLocalite.style.display= '';
                            inputLocalite.style.display= 'none';
                            flasheQuestion(question,CONST_QUESTION_FLASH_COLOR);
                            selectLocalite.selectedIndex = 0;             
                        } 
                        if(compteur == 1)
                        {
                            selectLocalite.selectedIndex = 2;
                            selectLocalite.style.display= 'none';
                            inputLocalite.style.display= '';
                        }
                    }
                    
                    if(selectLocalite.length <= CONST_SIZE_STATIONNEMENT_DOMICILE)
                    {
                        selectLocalite.size = selectLocalite.length;
                    }
                    else
                    {
                        selectLocalite.size = CONST_SIZE_STATIONNEMENT_DOMICILE;
                    } 
                }    
            }

            // Vide une liste déroulante en commençant par la fin (type Html : "SELECT")
            function viderFinListe(select,stop){
                for (var i=select.length; i>=stop; i--){
                    select.remove(i);
                }
            }
            
            // Ajoute une option dans une liste déroulante (type Html : "SELECT")
            function ajouterOptionDoubleVerif(select, code, confirm, texte){
                try {
                    var option = new Option(texte, code);
                    var existe = false;
                    for (var i=0; i<select.options.length; i++){
                        if (select.options[i].value == code)
                        {
                            var regexCode = new RegExp(confirm, "g");
                            if(regexCode.exec(select.options[i].innerText))
                            {
                                existe = true;
                            }
                        }
                    }
                    if (!existe)
                    {
                        select.options.add(option);
                    }
                }
                catch (Exception){
                    //alert(Exception);
                }
            } 


