function initSuggestCommune() {
    // On récupère tout les élément qui comportent la classe select_commune est departement
    var sc = getElementsByClass('sg');

    for(var i=0; i<sc.length; i++) {
        var el = sc[i];
        var matches = el.className.match(/sg (.*)/);
        // Création de la liste
        var ul = document.createElement('ul');
        ul.className       = 'sgr '+matches[1];
        ul.style.display   = 'none';
		ul.style.position  = 'absolute';
		ul.style.left      = '47px';
		ul.style.width     = (el.offsetWidth+20)+'px';
        el.parentNode.appendChild(ul);
        el.autoComplete = 'off';
        el.setAttribute("autocomplete", "off");

        // Ajout de l'évènement
        addEvent(el, 'keyup', Suggest);
        addEvent(el, 'focus', clean);
    }
    return;
}

function clean(e) {
    var evt = getStandardEvent(e);
    var elem = evt.target;
    elem.value = "";
}

function Suggest(e) {
    var evt = getStandardEvent(e);
    var elem = evt.target;

    // Test des caratères on ne prends pas les flêches enter et back
	keys = new Array(37, 38, 40, 39, 13);
	if(keys.in_array(e.keyCode)) {
	    evt.preventDefault();
	    return false;
	}
    q = elem.value;

    // On recherche la zone d'affichage de résultat
    var matches = elem.className.match(/sg (.*)/);
    var id = matches[1];    
    var sg_res = getElementsByClass('sgr '+id.toString())[0];

    if(sg_res != null) {
        sg_res.innerHTML = '';
    }
    
    // Si la recherche est suppérieur à 3 on envoi une requête
    if(q.length > 1) {
        // Création de l'objet
        var XHR = new XHRConnection();
        XHR.appendData('q', q);
        XHR.appendData('c', id);
        XHR.appendData('t', 's');
        XHR.appendData('asynchronous', 'on');
        // On soumet la requête
        // Signification des paramètres:               
        //      + On indique à l'objet qu'il faut appeler le fichier $path_to_search
        //      + On indique quelle fonction appeler lorsque l'opération a été effectuée
        XHR.sendAndLoad('/xml/suggest_communes.php', 'GET', SuggestResultat);
    } else {
        if(sg_res != null) {
            sg_res.innerHTML = '';
            sg_res.style.display = 'none';
        }
    }
}
function SuggestResultat(obj) {
    // Construction des noeuds
    if (!obj.responseXML)
        return;
    var tabResult = obj.responseXML.getElementsByTagName('commune');
    // On récupère l'id
    var id_res = obj.responseXML.getElementsByTagName('communes')[0].getAttribute('id');
    var t = getElementsByClass("sgr "+id_res);

    var sg_res = t[0];

    sg_res.innerHTML = '';
    sg_res.style.display = 'block';

    if(tabResult.length < 1) {
    sg_res.innerHTML = '';
    sg_res.style.display = 'none';
		return;
	}

    // Construction de la liste
    for (var i = 0; i < tabResult.length; i++) {
        resultat = tabResult.item(i); 
        var name = resultat.getAttribute('name');
        var id   = resultat.getAttribute('id');
        //this.q
        var texte = document.createTextNode(name + " [" + id + "]");

        var egt = document.createElement('li');
        var lnk = document.createElement('a');
        if(id == '')
            return;
        lnk.appendChild(texte);
        lnk.title = name;
        lnk.href = 'javascript:go("'+name+'", \''+id+'\', \''+id_res+'\')';
        egt.appendChild(lnk);
        sg_res.appendChild(egt);
    }
    
}

function go(name, id, input) {
    var elem = getElementsByClass('sg '+input)[0];
	elem.value = name;
    var liste = getElementsByClass('sgr '+input)[0];
    liste.innerHTML     = '';
    liste.style.display = 'none';
	var hidden = getElementsByClass('sgi '+input)[0];
	if(hidden) {
		hidden.value = id;
	}
}

// On défini la commune par default
var default_commune = null;
addEvent(window, 'load', initSuggestCommune);
