//obtener municipos y colocarlos en el despagable
	   
	   function colocaMunicipios(codProv,operacion){
		   new Ajax.Request('./Controlador', {
               method:'get',
               parameters: $H({codProvINE:codProv,Operacion:operacion}),
               onSuccess: function(response){
              		var municipios=response.responseXML.documentElement.getElementsByTagName('Municipio');
              		var html="<select class=\"selectListLarge\" id=\"listmuni\" name=\"listmuni\">";
                	html+="<option value=\"-1\">-- Seleccionar municipio --</option>";
					for (i=0;i<municipios.length;i++){
						var nombre=municipios[i].getElementsByTagName('Nombre').item(0).firstChild.data;
						var codigo=municipios[i].getElementsByTagName('Codigo').item(0).firstChild.data;
						html+="<option value=\""+codigo+"\">"+nombre+"</option>";
					}
					html+="</select>";
					document.getElementById('listnom_municipio').innerHTML=html;	
               },
              onFailure: function(){ 
                   alert('Error en la peticion para obtener los municipios de la provincia.');hideEsperaEnMapa(); 
                   }
              });
		   }
	   
//funciones de centrado
  
	   
function pedirCallejero(codProv,codMuni,calle,portal,operacionCentrarProvincia,operacionCentrarMunicipio,operacionBuscarDireccion){
	$('ResultadosPanel').hide();
	showEsperaEnMapa();
		//aseguramos que hay provincia seleccionada
		 if(codProv>-1){
			 //Si no selecionado municipio centradoProvincia
			 if(codMuni==-1){
				 centradoProvincia(codProv,operacionCentrarProvincia);
			 }
			 
			 else{
				 // la calle esta vacia. Corresponde a centrado de municipio
				 if (calle==""){
					centradoMunicipio(codProv,codMuni,operacionCentrarMunicipio);
				 }
				 //sino callesCoincidentes
				 else{
					 if(portal=="")pedirCallesCoincidentes(codProv,codMuni,calle,'',operacionBuscarDireccion);
					 else	pedirCallesCoincidentes(codProv,codMuni,calle,portal,operacionBuscarDireccion); 
				 }
				
			 }			 
		 }
		 else{
			 hideEsperaEnMapa();
			 }
	   
}
function  centradoProvincia(codProvincia,operacionCentrarProvincia){

  new Ajax.Request('./Controlador', {
	method:'get',
	parameters: $H({codProvINE:codProvincia,Operacion:operacionCentrarProvincia}),
	onSuccess: function(response){
	  var error=response.responseXML.documentElement.getElementsByTagName(ERRORTAGXML);
      if (error.length!=0){
    	  $('Resultados').innerHTML=error.item(0).firstChild.nodeValue;
    	  $('ResultadosPanel').show();
      }
      else{
    	  error=response.responseXML.documentElement.getElementsByTagName(ERRORTAGXML);
  	  	if(error.length>0){
  	  			showError(error.item(0).firstChild.nodeValue);
  	  		}
  	  		else{
				var lon=response.responseXML.documentElement.getElementsByTagName(LONTAGXMLCOORDENADAS).item(0).firstChild.nodeValue;
				var lat=response.responseXML.documentElement.getElementsByTagName(LATTAGXMLCOORDENADAS).item(0).firstChild.nodeValue;
				var srs=response.responseXML.documentElement.getElementsByTagName(SRSTAGXMLCOORDENADAS).item(0).firstChild.nodeValue;
				var enCartociudad=response.responseXML.documentElement.getElementsByTagName(ENCARTOCIUDADTAGXML).item(0).firstChild.nodeValue;
				//configurar la cartografia base
				cambiaBotonCartografiaBase(enCartociudad);
				//transforma coordenadas
				var p = new Proj4js.Point(lon,lat);
				var source = new Proj4js.Proj(srs);
				var dest = new Proj4js.Proj(map.projection); 
				Proj4js.transform(source, dest, p);
				
				map.setCenter(new OpenLayers.LonLat(p.x,p.y),ZOOMPROVINCIA,true,true);
				hideEsperaEnMapa();
				
    		}
      }
  },
   onFailure: function(){ alert('Error en la peticion para centrar la provincia.');hideEsperaEnMapa(); }
		
});
	
}
function  centradoMunicipio(codProvincia,codMunicipio,operacionCentrarMunicipio){
	
	  new Ajax.Request('./Controlador', {
		method:'get',
		parameters: $H({codProvINE:codProvincia,codMuniINE:codMunicipio,Operacion:operacionCentrarMunicipio}),
		onSuccess: function(response){
		  var error=response.responseXML.documentElement.getElementsByTagName(ERRORTAGXML);
	      if (error.length!=0){
	    	  $('Resultados').innerHTML=error.item(0).firstChild.nodeValue;
	    	  $('ResultadosPanel').show();
	      }
	      else{
	    	  error=response.responseXML.documentElement.getElementsByTagName(ERRORTAGXML);
	    	  	if(error.length>0){
	    	  			showError(error.item(0).firstChild.nodeValue);
	    	  		}
	    	  		else{
	    	  			var lon=response.responseXML.documentElement.getElementsByTagName(LONTAGXMLCOORDENADAS).item(0).firstChild.nodeValue;
	    	  			var lat=response.responseXML.documentElement.getElementsByTagName(LATTAGXMLCOORDENADAS).item(0).firstChild.nodeValue;
	    	  			var srs=response.responseXML.documentElement.getElementsByTagName(SRSTAGXMLCOORDENADAS).item(0).firstChild.nodeValue;
	    	  			var enCartociudad=response.responseXML.documentElement.getElementsByTagName(ENCARTOCIUDADTAGXML).item(0).firstChild.nodeValue;
	    	  			//configurar la cartografia base
	    				cambiaBotonCartografiaBase(enCartociudad);
	    	  			//transforma coordenadas
	    	  			var p = new Proj4js.Point(lon,lat);
						var source = new Proj4js.Proj(srs);
						var dest = new Proj4js.Proj(map.projection); 
						Proj4js.transform(source, dest, p);
						
						map.setCenter(new OpenLayers.LonLat(p.x,p.y),ZOOMMUNICIPIO,true,true);
						hideEsperaEnMapa();
						
		    		}
	      }
	  },
	   onFailure: function(){ alert('Error en la peticion para centrar el municipio.');hideEsperaEnMapa(); }
			
	});
		
	}
/*
 * Parseamos el xml devuelto de calles coincidentes y guardamos en un array de objetos 
 * javascript cada calle. En objeto será:
 * 
 * {
 * 		direccion,
 * 		tipo,
 * 		numero,
 * 		longitud,
 * 		latitud,	
 * 		srs,
 * 		isInCartociudad,
 * 		RC,
 * 		prov,
 * 		muni
 * }
 * 
 */
var callesCoincidentes;

function pedirCallesCoincidentes(codProvincia,codMunicipio,via,numero,operacionBuscarDireccion){
	showEspera();
	new Ajax.Request('./Controlador', {
		method:'get',
		parameters: $H({codProvINE:codProvincia,codMuniINE:codMunicipio,Operacion:operacionBuscarDireccion,via:via,numero:numero}),
		onSuccess: function(response){
		
		  var error=response.responseXML.documentElement.getElementsByTagName(ERRORTAGXML);
		  
	      if (error.length>0){
	    	  $('Resultados').innerHTML=error.item(0).firstChild.nodeValue;
	    	  $('ResultadosPanel').show();
	      }
	      else{		
	    	  			var isInCartociudad=response.responseXML.documentElement.getElementsByTagName(ENCARTOCIUDADTAGXML);
	    	  			callesCoincidentes=new Array();
	    	  			
	    	  			if(isInCartociudad.length>0){
	    	  				if(isInCartociudad.item(0).firstChild.nodeValue=='true'){
									var direccion=response.responseXML.documentElement.getElementsByTagName(NOMBRECALLEXMLUBICACIONES);
									var tipo=response.responseXML.documentElement.getElementsByTagName(TIPOCALLEXMLUBICACIONES);
									var numero=response.responseXML.documentElement.getElementsByTagName(NUMEROXMLUBICACIONES);
									var longitud=response.responseXML.documentElement.getElementsByTagName(LONXMLUBICACIONES);
									var latitud=response.responseXML.documentElement.getElementsByTagName(LATXMLUBICACIONES);
									var srs=response.responseXML.documentElement.getElementsByTagName(SRSXMLUBICACIONES);
									
									var i;
									for (i=0;i<direccion.length;i++){
										var calle={
												direccion:direccion.item(i).firstChild.nodeValue,
												tipo:tipo.item(i).firstChild.nodeValue,
												numero:numero.item(i).firstChild.nodeValue,
												longitud:longitud.item(i).firstChild.nodeValue,
												latitud:latitud.item(i).firstChild.nodeValue,	
												srs:srs.item(i).firstChild.nodeValue,
												isInCartociudad:isInCartociudad.item(i).firstChild.nodeValue
										};
										callesCoincidentes[i]=calle;
									}
	    	  			}	
						else{
							var direccion=response.responseXML.documentElement.getElementsByTagName(NOMBRECALLEXMLUBICACIONES);
							var tipo=response.responseXML.documentElement.getElementsByTagName(TIPOCALLEXMLUBICACIONES);
							var numero=response.responseXML.documentElement.getElementsByTagName(NUMEROXMLUBICACIONES);
							var srs=response.responseXML.documentElement.getElementsByTagName(SRSXMLUBICACIONES);
							var rc=response.responseXML.documentElement.getElementsByTagName(RCXMLUBICACIONES);
							var provincia=response.responseXML.documentElement.getElementsByTagName(PROVXMLUBICACIONES);
							var municipio=response.responseXML.documentElement.getElementsByTagName(MUNIXMLUBICACIONES);
							
							var i;
							for (i=0;i<direccion.length;i++){
								var calle={
										direccion:direccion.item(i).firstChild.nodeValue,
										tipo:tipo.item(i).firstChild.nodeValue,
										numero:numero.item(i).firstChild.nodeValue,
										srs:srs.item(i).firstChild.nodeValue,
										isInCartociudad:isInCartociudad.item(i).firstChild.nodeValue,
										RC:rc.item(i).firstChild.nodeValue,
										prov:provincia.item(i).firstChild.nodeValue,
										muni:municipio.item(i).firstChild.nodeValue
								};
								callesCoincidentes[i]=calle;
							}
							
							
						}
	    	  		}	
	    	  		showCalles(callesCoincidentes);	
			 }
	      hideEsperaEnMapa();			     
	  },
	   onFailure: function(){ alert('Error en la peticion para obtener las vías coincidentes.');hideEsperaEnMapa();	 }
			
	});
	
}


function centraCalle(i){
	
	var enCartociudad=callesCoincidentes[i].isInCartociudad;
	var lon;
	var lat;
	var srs=callesCoincidentes[i].srs;;
	
	if(enCartociudad=="true"){
		lon=callesCoincidentes[i].longitud;
		lat=callesCoincidentes[i].latitud;
		//configurar la cartografia base
		cambiaBotonCartografiaBase(enCartociudad);
		//transforma coordenadas
		var p = new Proj4js.Point(lon,lat);
		var source = new Proj4js.Proj(srs);
		var dest = new Proj4js.Proj(map.projection); 
		Proj4js.transform(source, dest, p);
		map.setCenter(new OpenLayers.LonLat(p.x,p.y),ZOOMCALLE,true,true);
	}
	else{
		showEsperaEnMapa();
		new Ajax.Request('./Controlador', {
			method:'get',
			parameters: $H({Prov:callesCoincidentes[i].prov,Muni:callesCoincidentes[i].muni,RC:callesCoincidentes[i].RC,Operacion:OBTENERCOORDCATASTRO}),
			onSuccess: function(response){
			  
		    	  lon=response.responseXML.documentElement.getElementsByTagName(LONXMLUBICACIONES).item(0).firstChild.nodeValue;
		    	  lat=response.responseXML.documentElement.getElementsByTagName(LATXMLUBICACIONES).item(0).firstChild.nodeValue;//configurar la cartografia base
		  		cambiaBotonCartografiaBase(enCartociudad);
				//transforma coordenadas
				var p = new Proj4js.Point(lon,lat);
				var source = new Proj4js.Proj(srs);
				var dest = new Proj4js.Proj(map.projection); 
				Proj4js.transform(source, dest, p);
				map.setCenter(new OpenLayers.LonLat(p.x,p.y),ZOOMCALLE,true,true);
				hideEsperaEnMapa();
		  },
		   onFailure: function(){ 
			  					alert('Error en la peticion para centrar la vía.'); 
		   						hideEsperaEnMapa();
		   						}
				
		});
		
	}
	
	
}

//Todo lo necesario para getfeatureinfo
var popup=null;
var maxFeatures=10;
var infoPopUp="infoPopUp";	
var maxScaleGF=15000;

function infoFeatureToPopUpAntenas(url,popup){
	
	   new Ajax.Request("./GetFeatureProxy", {
			method:'get',
			parameters: $H({urlWFSServer:url}),
			onSuccess: function(response){
            	 var j;
            	 	var m=response.responseXML.documentElement.getElementsByTagName('elemento');
					for(j=0;j<m.length;j++){
						//la antena es un unico feature
						var emplazamiento=m[j].getElementsByTagName('emplazamiento').item(0).firstChild!=null?m[j].getElementsByTagName('emplazamiento').item(0).firstChild.nodeValue:"";
						var direccion=m[j].getElementsByTagName('direccion').item(0).firstChild!=null?m[j].getElementsByTagName('direccion').item(0).firstChild.nodeValue:"";
						var municipio=m[j].getElementsByTagName('municipio').item(0).firstChild!=null?m[j].getElementsByTagName('municipio').item(0).firstChild.nodeValue:"";
						var provincia=m[j].getElementsByTagName('provincia').item(0).firstChild!=null?m[j].getElementsByTagName('provincia').item(0).firstChild.nodeValue:"";
							popup.div.style.visibility="visible";
							document.getElementById("infoPopUp").innerHTML+=	
							"<br><a href=\"#\" class=\"hoverPopup\"  onclick=\"window.open('infoEmplazamiento.jsp?emplazamiento="+emplazamiento+"','_blank');\">DIRECCIÓN: "+direccion+
							"<br>MUNICIPIO: "+municipio+
							"<br>PROVINCIA: "+provincia+"</span><br>";
							
						popup.panMapIfOutOfView=true;
						popup.updateSize();
					}
				
			},
			onFailure: function(){ popup=null;alert('fallo en la peticion para formar la popup');hideEsperaEnMapa(); }
			});
	   }

function infoFeatureToPopUpSondas(url,popup){
  	
	   new Ajax.Request("./GetFeatureProxy", {
			method:'get',
			parameters: $H({urlWFSServer:url}),
			onSuccess: function(response){
         	 var j;
         	 	var m=response.responseXML.documentElement.getElementsByTagName('elemento');
					for(j=0;j<m.length;j++){
						var emplazamiento=m[j].getElementsByTagName('emplazamiento').item(0).firstChild!=null?m[j].getElementsByTagName('emplazamiento').item(0).firstChild.nodeValue:"";
						var descripcion=m[j].getElementsByTagName('descripcion').item(0).firstChild!=null?m[j].getElementsByTagName('descripcion').item(0).firstChild.nodeValue:"";
						
							popup.div.style.visibility="visible";
							document.getElementById("infoPopUp").innerHTML+=	
							"<br><a href=\"#\" class=\"hoverPopup\" onclick=\"window.open('"+URLSONDAS+emplazamiento+"','_blank');\">EMPLAZAMIENTO: "+emplazamiento+
							"<br>DESCRIPCION: "+descripcion+"</a><br>";
							
						popup.panMapIfOutOfView=true;
						popup.updateSize();
					}
			},
			onFailure: function(){ popup=null;alert('fallo en la peticion para formar la popup');hideEsperaEnMapa(); }
			});
	   }	

//Este metodo generico solo parsea el xml que devuelve la peticion AJAX
//y crea HTML para el XML devuelto. No añade funcionalidad adicional
//como para antenas y sondas (en ese caso era mostrar una ventana nueva con toda la informacion)
function infoFeatureToPopUpGenerico(url,popup){
	   new Ajax.Request("./GetFeatureProxy", {
			method:'get',
			parameters: $H({urlWFSServer:url}),
			onSuccess: function(response){
		    var j;
   	 	    var m=response.responseXML.documentElement.getElementsByTagName('elemento');
					for(j=0;j<m.length;j++){
						var html="<br>";
						for(var i=0;i<m[j].childNodes.length;i++){
							if(m[j].childNodes.item(i).nodeType==1){
								if( m[j].childNodes.item(i).nodeName!=null) html+=m[j].childNodes.item(i).nodeName+" : ";
								if( m[j].childNodes.item(i).firstChild!=null) html+=m[j].childNodes.item(i).firstChild.nodeValue;
								html+="<br>";
							}	
						}
						html+="<br>";
						//
						popup.div.style.visibility="visible";
						document.getElementById("infoPopUp").innerHTML+=html;
						popup.panMapIfOutOfView=true;
						popup.updateSize();
					}
			},
			onFailure: function(){ popup=null;alert('fallo en la peticion para formar la popup');hideEsperaEnMapa(); }
			});
	   }
	   

//Handler de click para info

	   OpenLayers.Control.ClickInfo = OpenLayers.Class(OpenLayers.Control, {                
	            defaultHandlerOptions: {
	   			'single': true,
	   			'pixelTolerance': null,
	   			'stopSingle': true
	            },

	            initialize: function(options) {
	                this.handlerOptions = OpenLayers.Util.extend(
	                    {}, this.defaultHandlerOptions
	                );
	                OpenLayers.Control.prototype.initialize.apply(
	                    this, arguments
	                ); 
	                this.handler = new OpenLayers.Handler.Click(
	                    this, {
	                        'click': this.onClick
	                    }, this.handlerOptions
	                );
	            }, 

	            onClick: function(e) {
	            	
	            	if(popup)popup.destroy();	
	        			popup=new OpenLayers.Popup.FramedCloud(
	        					"popup",
	        					map.getLonLatFromViewPortPx(e.xy),
	        					new OpenLayers.Size(200,200),
	        					"<div style=\" padding: 3px; padding-botton:5px; border-bottom: 1px solid white; solid; font-size: 8pt; font-style: italic;color: white\">"+
	        					"Para más información pulse en el texto contenido<br></div>"+
	        					"<div style=\"font-size: 10pt; top: 10px; border-bottom: 1px solid white;font-weight: bold; color:"+ 
	        					"#FFFFFF; background-color: #733B43;\">Información:<br></div>"+
	        					"<div style=\"padding: 3px;font-size: 8 pt;color: white;\"><div id=\""+infoPopUp+"\"></div></div>"
	        					,
	        					new OpenLayers.Icon('../img/feature.png',new OpenLayers.Size(35,35),new OpenLayers.Pixel(-20, -20)),
	        					true,
	        					function cierra(e){
	        			            OpenLayers.Event.stop(e);
	        						popup.destroy();
	        						popup=null;
	        					}		
	        			);
	        
	        			popup.panMapIfOutOfView=true;
	        			popup.backgroundColor='#31577b';
	        			map.addPopup(popup);
	        			popup.div.style.visibility="hidden";
	        			
	        		for(var i=0;i<map.layers.length;i++){	
	            //caso ANTENAS	
	              if(map.layers[i].id=="Antenas"&&map.layers[i].getVisibility()&&map.getScale()<=maxScaleGF){
	            	 var url =  map.layers[i].getFullRequestString({
	            		REQUEST: "GetFeatureInfo",
	            		EXCEPTIONS: "application/vnd.ogc.se_xml",
	            		BBOX:map.getExtent().toBBOX(),
	            		X: e.xy.x,
	                 	Y: e.xy.y,
	                 	INFO_FORMAT: 'gml',
	                 	QUERY_LAYERS: map.layers[i].queryLayers,
	                 	WIDTH: map.size.w,
	                 	HEIGHT: map.size.h,
	                 	FEATURE_COUNT:maxFeatures
	                 },URLMAPSERVER);
	            	 //peticion Ajax para actualizar la popup
	            	 infoFeatureToPopUpAntenas(url,popup);	
	                }
	              //caso SONDAS
	              else{
	            	  if(map.layers[i].id=="Sondas"&&map.layers[i].getVisibility()&&map.getScale()<=maxScaleGF){
	            	  
		            	 var url =  map.layers[i].getFullRequestString({
		            		REQUEST: "GetFeatureInfo",
		            		EXCEPTIONS: "application/vnd.ogc.se_xml",
		            		BBOX:map.getExtent().toBBOX(),
		            		X: e.xy.x,
		                 	Y: e.xy.y,
		                 	INFO_FORMAT: 'gml',
		                 	QUERY_LAYERS: map.layers[i].queryLayers,
		                 	WIDTH: map.size.w,
		                 	HEIGHT: map.size.h,
		                 	FEATURE_COUNT:maxFeatures
		                 },URLMAPSERVER);
		            	 //peticion Ajax para actualizar la popup
		            	 infoFeatureToPopUpSondas(url,popup);	
		                }
	            	  //implementaciones a otros posibles casos
	            	  //se deja un metodo generico
	            	  else{
	            		  if(map.layers[i].queryLayers!=""&&map.layers[i].getVisibility()&&map.getScale()<=maxScaleGF){
	    	            	  
	 		            	 var url =  map.layers[i].getFullRequestString({
	 		            		REQUEST: "GetFeatureInfo",
	 		            		EXCEPTIONS: "application/vnd.ogc.se_xml",
	 		            		BBOX:map.getExtent().toBBOX(),
	 		            		X: e.xy.x,
	 		                 	Y: e.xy.y,
	 		                 	INFO_FORMAT: 'gml',
	 		                 	QUERY_LAYERS: map.layers[i].queryLayers,
	 		                 	WIDTH: map.size.w,
	 		                 	HEIGHT: map.size.h,
	 		                 	FEATURE_COUNT:maxFeatures
	 		                 },URLMAPSERVER);
	 		            	 //vemos que se llama a este metodo generico con el queryLayers de la configuracion
	 		            	 infoFeatureToPopUpGenerico(url,popup);	
	 		                }
	            	  }
	              //	  
	              }
	            }
	            OpenLayers.Event.stop(e);
	            }             	
	        });	   