



/**
* Insère un élément dans une liste à choix multiple
*
* @param destList Objet liste (<input type="select">) à enrichir
* @param string Valeur à insérer
* @param string Texte à insérer
*/					
function select_inserer(destList, v, t) {
			// créer nouvelle option
	  destList.options[destList.length] = new Option(t, v);
}
/**
* Affiche une alerte en fonction du message d'erreur present dans le document xml
* @param xml le document xml envoyé par le service de recherche des communes
*/			
function traiterErreur(xml){				
	var erreur = xml.getElementsByTagName("Error")[0];
	var message = erreur.getElementsByTagName("message")[0].firstChild.nodeValue;
	alert(message);				
}
/**
* Traite le document xml pour remplir le div de la liste des communes
* @param xml le document xml envoyé par le service de recherche des communes
*/						
function listerCommunes(xml){
			var racine = xml.getElementsByTagName("FindCommunesResponse")[0];
			var communes = racine.getElementsByTagName("XMLCommune");
			var htmlcache = ''; 
			var communeSelect = $('communeIdSelect');
			for (var i = communeSelect.length ; i > 0 ; i--) {
				communeSelect.options[i] = null;
			}
			gcCommunesBB.clear();		
			for (var i = 0 ; i < communes.length ; i++) {
				// get one item after another
				var commune = communes[i];
				var name = commune.getElementsByTagName("name")[0].firstChild.nodeValue;
				var code = commune.getElementsByTagName("code")[0].firstChild.nodeValue;
				var fullName = null;
				if (commune.getElementsByTagName("departementCode").length > 0) {
					fullName = name + ' (' + commune.getElementsByTagName("departementCode")[0].firstChild.nodeValue + ')';
				} else {
					fullName = name;
				}
				var maxx = commune.getElementsByTagName("maxX")[0].firstChild.nodeValue;
				var maxy = commune.getElementsByTagName("maxY")[0].firstChild.nodeValue;
				var minx = commune.getElementsByTagName("minX")[0].firstChild.nodeValue;
				var miny = commune.getElementsByTagName("minY")[0].firstChild.nodeValue;
				select_inserer(communeSelect,code,fullName);
				gcCommunesBB.add(code,new OpenLayers.Bounds(minx,miny,maxx,maxy));
			}													
			$('lienChoixCommune').href = 'javascript:viderCommunes()';
			$('lienChoixCommune').title = 'Vider la liste des communes';							
			$('lienChoixCommune').innerHTML = 'Pas trouvé ?';							
}
/*
* Envoie une requete au service de recherche des communes et redirige la reponse pour traitement
* Une fois la reponse traitée, met à jour l'affichage des divs de saisie d'une commune
*/

function findCommunes(){
	var url='/geocat/FindCommunes.do';	// Url du service de recherche des communes
	var communeName = $F('saisieCommune'); 
	$('choixCommune').style.display = 'none';
	$('choixCommuneLibre').style.display = 'none';
	$('loadCommunes').style.display = '';
	var http = new Ajax.Request(
		url, 
	{
		method: 'get', 
		parameters: 'name='+escape(communeName),
		requestHeaders: ['Content-type', 'application/xml'],
		onSuccess: function(originalRequest){
					var xmlString = originalRequest.responseText;	
					// convertir la string en un objet XML
					var xmlobject = (new DOMParser()).parseFromString(xmlString, "text/xml");
					if (xmlobject.getElementsByTagName("Error").length > 0){
						traiterErreur(xmlobject);
						$('loadCommunes').style.display = 'none';
						$('choixCommune').style.display = 'none';							
						$('choixCommuneLibre').style.display = '';			
					} else {					
						listerCommunes(xmlobject); 						
						$('choixCommuneLibre').style.display = 'none';
						$('loadCommunes').style.display = 'none';
						$('choixCommune').style.display = '';											
					 } 
		},
		onFailure: function(originalRequest){
						alert('Erreur');
						$('choixCommune').style.display = '';
						$('choixCommuneLibre').style.display = 'none';
						$('loadCommunes').style.display = 'none';							
					}
	});
}			
/*
* Vide le div de la liste des communes et reaffiche le div de saisie libre
*/
function viderCommunes(){
	$('lienChoixCommune').href = 'javascript:findCommunes()';
	$('lienChoixCommune').innerHTML = 'Trouver';
	$('lienChoixCommune').title = 'Rechercher les communes';
	$('choixCommuneLibre').style.display = '';
	var communeSelect = document.getElementById('SearchBean').communeIdSelect;
	for (var i = communeSelect.length ; i > 0 ; i--) {
		communeSelect.options[i] = null;
	}		
	$('choixCommune').style.display = 'none';
}						
/**
 * Search on communes on Enter key press.
 */
function searchCommunesOnEnter(e) {
	if (e.keyCode == 13) {
		findCommunes();
		return false;
	}
}
/**
 * Search on communes on Enter key press.
 */
function viderCommunesOnEnter(e) {
	if (e.keyCode == 13) {
		viderCommunes();
		return false;
	}
}
