var arrayEstadosChecks=null;
var _IE_ = navigator.userAgent.indexOf("MSIE")!=-1;
var map;
var markersIdentify = [];
//Variables para la toolbar
var activarBotoneraMapa = false;
//Variables para manejar el Zoom y el Centro del mapa
var zoomInicial = 7;
var zoomMinimo = 13;
var zoomActual = 7;
var boundsIdentificar = new GLatLngBounds();
var pointCenter = new GLatLng(37.27, -4.54833984375);
var pointCenterActual = new GLatLng(37.27, -4.54833984375);
var pointMax = pointCenter;
var pointMin = pointCenter;
var aplicarZoomSesion = false;
var hayEnvelopeIdentificar = false;
var hayMarkersIdentificar = false;
//Variables para los modos
var modoFichaCE = false;
var modoIdentificar = false;
//Variables para las busquedas
var capaConsultaMapServer = '';
var estaListadoChecksCreado = false; 
var configuracionCargada = false;
var botonCargado = false;

var capaClara;
var capaOscura;

	//Funcion para obtener la url del WMS cuando Ajax es el encargado de las llamadas
	function actualizaWMSURL(){
		var inputWMSURL = document.getElementById("wmsBaseURL");
		//alert('inputWMSURL='+inputWMSURL); //IMH
		if (inputWMSURL!=null){
			wmsBaseURL = inputWMSURL.value;
			//alert('wmsBaseURL=' + wmsBaseURL); //IMH
		}	
	}
	
	// Función para hacer el Identify sobre el mapa
	// NW {GLatLng}, NE {GLatLng}, SE {GLatLng}, SW {GLatLng}, NW {GPoint}, NE {GPoint}, SE {GPoint}, SW {GPoint}
	function identify(pNW , pNE , pSE, pSW , NWG , NEG , SEG, SWG) {		
		new Ajax.Updater('columnaBusqueda', 'busquedaMapServer.do', { method: 'get' ,parameters: {izq: pNW.lat(), der: pSE.lat(), sup: pNW.lng(), inf: pSE.lng(), capaConsulta: capaConsultaMapServer}, asynchronous: false});
		modoIdentificar = true;
		aplicarZoomSesion = true;
		pointCenterActual = map.getCenter();
		zoomActual = map.getZoom();
		
		botonCargado = false;
		configuracionCargada = false;
		estaListadoChecksCreado = false;
		refreshMarkersSeleccionFichaCE();		
		return false;
	}
	
	function refreshZoom() {
		cerrarDetalles();
		map.clearOverlays();		
		refreshMarkersZoomFichaCE();
		return false;
	}		
	
	// Función para "ir a" un lugar sobre el mapa
	function mostrarLocalizacion() {  
		var address = document.getElementById("location").value;
		
		if(address){
			address = address + ", Espa\u00f1a";
			geocoder.getLocations(address, addAddressToMap);
		}
	}
	
	function addAddressToMap(response)  
	{  		  
		if (!response || response.Status.code != 200) {  
			alert("Lo sentimos, no se ha encontrado su direcci\u00f3n.");  
		} else {  
			place = response.Placemark[0];  
			point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);   
  			map.setCenter(point, 15);    
  		}  
	}  

function offsetDivBloque1(document) {
	var ooo = document.getElementById('tdCabecera').offsetLeft;
	document.getElementById('bloque1').style.marginLeft=ooo+'px';
}

function cerrarDetalles() {
      if (lastOverlay != null) {
	      lastOverlay.closeDetailWin();
	  }
	  infowindowopened=false;
	}
	
//function centrar(lat,lon) {
//	cerrarDetalles();
//	map.setCenter(new GLatLng(lat,lon), zoomMapaGrande()); 
//	//Isaac refreshMarkers();
//}

//function zoomMapaGrande() {
//	var tmpZoom = map.getZoom();
//	if (tmpZoom < 14) {
//		tmpZoom = 16;
//	}
//	return tmpZoom;
//}

//var mapaPequenoTimer;

//function mapaPequeno(lat,lon, title, icono) {
//	if (mapaPequenoTimer) {
//		clearInterval(mapaPequenoTimer);
//		mapaPequenoTimer=null;
//	} 
//	mapaPequenoTimer=setInterval('centerMapaPequeno(\''+lat+'\',\''+lon+'\',\''+title+'\',\''+icono+'\')',200);
//}

//function tabDetalles(lat,lon, title, icono) {
//	if (mapaPequenoTimer) {
//		clearInterval(mapaPequenoTimer);
//		mapaPequenoTimer=null;
//	} 
//	mapaPequenoTimer=setInterval('centerMapaPequenoTabDetalle(\''+lat+'\',\''+lon+'\',\''+title+'\',\''+icono+'\')',200);
//}

//function centerMapaPequeno(lat,lon,title,icono) {
//	var j;
//	j=document.getElementById('resultadoForm:panelGroupDetalle:gMapaDetalle');
//	if(j) {
//	    centrar(lat,lon);
//		clearInterval(mapaPequenoTimer);
//		var p = new GMap2(j, {size:new GSize(320,128)});
//		var point = new GLatLng(lat,lon);
//		p.setCenter(point, 15); 
//		p.disableDragging();
//		p.disableInfoWindow();
//		p.disableDoubleClickZoom();
//		p.disableContinuousZoom();
//		p.disableScrollWheelZoom();
//
//		var iii=new GIcon({image:icono});
//		iii.iconSize=new GSize(24,23);
//		iii.iconAnchor=new GPoint(17,22);
//		iii.infoWindowAnchor=new GPoint(9,0);
//		iii.shadowSize=new GSize(24,23);
//	    var marker = new GMarker(point, 
//	    {title:'Pulse para centrar el mapa grande en este punto'
//		,icon:iii});
//		p.addOverlay(marker);
//		GEvent.addListener(marker, "click", function() {
//			map.setCenter(point);
//			map.setZoom(zoomMapaGrande());
//			//Isaac refreshMarkers();
//			//TODO marcar el punto en el mapa grande.
//			
//		});
//	}
//}

//function centerMapaPequenoTabDetalle(lat,lon,title,icono) {
//	var j;
//	var t=document.getElementById('resultadoForm:panelGroupDetalle.2');
//	j=document.getElementById('resultadoForm:panelGroupDetalle:gMapaDetalle');
//	if(j) {
//	    centrar(lat,lon);
//		clearInterval(mapaPequenoTimer);
//		var p = new GMap2(j, {size:new GSize(320,128)});
//		var point = new GLatLng(lat,lon);
//		p.setCenter(point, 15); 
//		p.disableDragging();
//		p.disableInfoWindow();
//		p.disableDoubleClickZoom();
//		p.disableContinuousZoom();
//		p.disableScrollWheelZoom();
//
//		var iii=new GIcon({image:icono});
//		iii.iconSize=new GSize(24,23);
//		iii.iconAnchor=new GPoint(17,22);
//		iii.infoWindowAnchor=new GPoint(9,0);
//		iii.shadowSize=new GSize(24,23);
//	    var marker = new GMarker(point, 
//	    {title:'Pulse para centrar el mapa grande en este punto'
//		,icon:iii});
//		p.addOverlay(marker);
//		GEvent.addListener(marker, "click", function() {
//			map.setCenter(point);
//			map.setZoom(zoomMapaGrande());
//			//Isaac refreshMarkers();
//			//TODO marcar el punto en el mapa grande.
//			
//		});
//		if (t) {
//			t.onclick();
//		}
//	}
//}

function checkEnter(e) { 
	var characterCode;
	if(e && e.which){ 
		e = e;
		characterCode = e.which;
	} else {
		e = event;
		characterCode = e.keyCode;
	}
	return (characterCode == 13);
}

function getParameter ( queryString, parameterName ) {
	var parameterName = parameterName + "=";
	if ( queryString.length > 0 ) {
		begin = queryString.indexOf ( parameterName );
		if ( begin != -1 ) {
			begin += parameterName.length;
			end = queryString.indexOf ( "&" , begin );
			if ( end == -1 ) {
			end = queryString.length
			}
			return unescape ( queryString.substring ( begin, end ) );
		}
		return null;
	}
}
	

//<!-- load event callback -->
//function mapLoaded() {
//	//Isaac refreshMarkers();
//	om.Clear();
//	om=null;
//}
<!-- network link con js -->

var infowindowopened=false;

function infoWindowClosed() {
	infowindowopened=false;
}

var lastOverlay= null;
function loadDetail(overlay, point) {	
	
	if (lastOverlay) {
	     lastOverlay.closeDetailWin();
	     lastOverlay=null;
   	}   	
   	if (overlay){
     	if (overlay.localizaId) {     		
        	if (overlay.localizaId.indexOf(',')==-1) {   
        		//BPM: nueva propiedad sonido. Diferenciando para llamar a un servlet u otro en funcion a lo q se vaya a mostrar
        		if(overlay.esSonido == true){
        			GDownloadUrl('dts/detail.html?id='+overlay.localizaId+"&rand="+new Date().getTime(), function (h,errCode) {
		       			//Esto saca la ventana típica de GMAPS con la info de un Markup	       			
			       		overlay.openInfoWindowHtml(h);
			       		//Esto asigna y saca una ventana propia con la info de un Markup
			       		//map.setCenter(overlay.getPoint());
			      		//overlay.setDetailWinHTML(h); 
			      		//overlay.showDetailWin();
			       		lastOverlay = overlay;
			       		infowindowopened=true;
			       		//Esto sustituye un icono por otro al hacer click
			       		//GMarker.prototype.setImage.call(overlay, 'img/iconosgmaps/4.gif');
			       		overlay.onClick();
	       			});	
        		} else { 
        			
        			
		       		GDownloadUrl('dt/detail.html?id='+overlay.localizaId+"&rand="+new Date().getTime(), function (h,errCode) {
		       			//Esto saca la ventana típica de GMAPS con la info de un Markup	       			
			       		overlay.openInfoWindowHtml(h);
			       		//Esto asigna y saca una ventana propia con la info de un Markup
			      		//overlay.setDetailWinHTML(h); 
			      		//overlay.showDetailWin();
			       		lastOverlay = overlay;
			       		infowindowopened=true;
			       		//Esto sustituye un icono por otro al hacer click
			       		//GMarker.prototype.setImage.call(overlay, 'img/iconosgmaps/4.gif');
			       		overlay.onClick();
		       		});	    
	       		}   
       		} else {
       	   		lista.value=overlay.localizaId;
       	   		boton.onclick();
       		}
     	}
   	} else if (point) {
     	//whatever you want to happen if you don't click on an overlay.
      	if (lastOverlay) {
	      	lastOverlay.closeDetailWin();
	      	lastOverlay=null;
	  	}
      	
      	infowindowopened=false;
   	}
}

function refreshMarkersZoomFichaCE() {	
	var peticion = 'nl/data.kml?modo=zoom&zoomLevel='+map.getZoom();
	sendCall(peticion,"drawMarkersZoom");
}


function refreshMarkersSeleccionFichaCE() {
	// Limpiamos los marcadores del mapa y los identificados
	map.clearOverlays();
    markersIdentify.length = 0;
	var peticion = 'nl/data.kml?modo=identify&capaConsulta='+capaConsultaMapServer;
	sendCall(peticion,"cargarMarkersBusqueda");
}

function drawMarkersZoom() {
	
	if (http.readyState == 4) {		
  		var xmlDoc = http.responseXML;
  		
  		//cargarCapasConfiguradas();
  		
  		if (xmlDoc == null){return false;}
  		if (xmlDoc.documentElement) {
   			var markers = xmlDoc.documentElement.getElementsByTagName("Placemark");
   			
   			var point;
			var name;
			var htmlDesc;
			var tagName;
			var tagValue;
			var urlicon;
			var id;

			for (var i = 0; i < markers.length; i++) {
     			point = null;
  				name = null;
  				htmlDesc = null;
     			urlicon = null;
     			id = null;
     			//BPM: nueva propiedad sonido
     			sonido = null;
     			
     			for (var j=0;j<markers[i].childNodes.length;j++) {
      				if (markers[i].childNodes[j].nodeType != 1) continue;
      				tagName = markers[i].childNodes[j].nodeName;      				      			
      				tagValue = markers[i].childNodes[j].firstChild.nodeValue;      				
      				
      				
					if (tagName=='name') {
						if ((tagValue==' ') || (tagValue=='')){
	      					tagValue = markers[i].childNodes[j].lastChild.nodeValue;
	      				}
						name = tagValue;
					} else if (tagName=='Point') {
						var nodes = markers[i].childNodes[j].getElementsByTagName('coordinates');
						
						if (nodes.length==1) {
							var s = nodes[0].firstChild.nodeValue.split(',');
							var lng = parseFloat(s[0]);
							var lat = parseFloat(s[1]);
							point = new GLatLng(lat,lng);
							lat = null;
							lng = null;
							s = null;
						}
					} else if (tagName=='description') {
						htmlDesc = tagValue;
					} else if (tagName=='id') {
						id = tagValue;
					} else if (tagName=='Style') {
    					if (markers[i].childNodes[j].getElementsByTagName("href").length==1) {
							urlicon = markers[i].childNodes[j].getElementsByTagName("href")[0].firstChild.nodeValue;							
						}
					// BPM: nueva propiedad
					} else if(tagName == 'sound'){
						sound = tagValue;
					}
        		}
        		
        		if (point!=null && name!=null) {
					urlicon = new GIcon({image:urlicon});	
					name = escaparCaracteres(name);	
					//BPM: nueva propiedad sonido				
					markerAdd = createMarker(point,name,id,urlicon,name,sound);
					map.addOverlay(markerAdd);        			        			
        		}
      		}      	
      		
      		drawMarkersIdentificar();
      		tagName = null;
      		tagValue = null;
      		markers = null;
      		xmlDoc = null;
      		inCall = false;
     	}  		
  		cargarCapasConfiguradas();
   	}
	
//  cargarCapasConfiguradas();

//  if (listaCapas.length > 1 && !botonCargado) {	
//	  
//	  alert('Carga boton');
//	  botonCargado = true;
//	  map.addControl(new desplegableCapasControl(),new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(margenXComponenteCapas,0)));
//  }		
}

function cargarMarkersBusqueda() {

	hayMarkersIdentificar = false;
	if (http.readyState == 4) {
  		var xmlDoc = http.responseXML;  		  		
  		if (xmlDoc == null){return false;}
  		
  		if (xmlDoc.documentElement) {
   			var markers = xmlDoc.documentElement.getElementsByTagName("Placemark");			
   			var point;
			var name;
			var htmlDesc;
			var tagName;
			var tagValue;
			var urlicon;
			var id;
			var bounds = new GLatLngBounds();
			boundsIdentificar = bounds; //Inicializamos el bounds general 

			for (var i = 0; i < markers.length; i++) {
     			point = null;
  				name = null;
  				htmlDesc = null;
     			urlicon = null;
     			id = null;
     			//BPM: nueva propiedad sonido
     			sound = null;
     			
     			for (var j=0;j<markers[i].childNodes.length;j++) {
      				if (markers[i].childNodes[j].nodeType != 1) continue;
      				tagName = markers[i].childNodes[j].nodeName;      				      			
      				tagValue = markers[i].childNodes[j].firstChild.nodeValue;      				
					
					if (tagName=='name') {
						if ((tagValue==' ') || (tagValue=='')){
	      					tagValue = markers[i].childNodes[j].lastChild.nodeValue;
	      				}
						name = tagValue;
					} else if (tagName=='Point') {
						var nodes = markers[i].childNodes[j].getElementsByTagName('coordinates');
					
						if (nodes.length==1) {
							var s = nodes[0].firstChild.nodeValue.split(',');
							var lng = parseFloat(s[0]);
							var lat = parseFloat(s[1]);
							point = new GLatLng(lat,lng);
							lat = null;
							lng = null;
							s = null;
						}
					} else if (tagName=='description') {
						htmlDesc = tagValue;
					} else if (tagName=='id') {
						id = tagValue;
					} else if (tagName=='Style') {
    					if (markers[i].childNodes[j].getElementsByTagName("href").length==1) {
							urlicon = markers[i].childNodes[j].getElementsByTagName("href")[0].firstChild.nodeValue;							
						}
					// BPM: nueva propiedad
					} else if(tagName == 'sound'){
						sound = tagValue;
					}
        		}
        		
        		if (point!=null && name!=null) {
					urlicon = new GIcon({image:urlicon});	
					name = escaparCaracteres(name);	
					//BPM: nueva propiedad sonido				
					markerAdd = createMarker(point,name,id,urlicon,name,sound);
					
					if ((name == 'PuntoMAX') || (name == 'PuntoMIN') || (id == 'PuntoMAX') || (id == 'PuntoMIN')){
						if((name == 'PuntoMIN') || (id == 'PuntoMIN')){
							pointMin = markerAdd.getPoint();
							hayEnvelopeIdentificar = true;
						}
						if((name == 'PuntoMAX') || (id == 'PuntoMAX')){
							pointMax = markerAdd.getPoint();
							hayEnvelopeIdentificar = true;
						}
					}else{
						markersIdentify.push(markerAdd);
						bounds.extend(markerAdd.getPoint());
						hayMarkersIdentificar = true;
					}					
        		}
      		}      	
			
			if(modoIdentificar){	
				boundsIdentificar = bounds; //Asignamos los marcadores encontrados								
				actualizaWMSURL();
				loadMap();
			}
			
			refreshMarkersZoomFichaCE();	
			
      		tagName = null;
      		tagValue = null;
      		markers = null;
      		xmlDoc = null;
      		inCall = false;
      		modoIdentificar = false;
      		hayEnvelopeIdentificar = false;
     	};
   	};   	
}

function drawMarkersIdentificar() {
	for (var i = 0; i < markersIdentify.length; i++) {
  		map.addOverlay(markersIdentify[i]);
  	}	 
}

function existeMarker(marcador) {
	var encontrado = false;	
	for (var i = 0; i < markersIdentify.length && !encontrado; i++) {
		if(markersIdentify[i].localizaId == marcador.localizaId){
			encontrado = true;
		}
  	}	 
	return encontrado;
}


var overInterval;
var overMarker;

// BPM: nueva propiedad - sound
function createMarker(point,name,id, urlicon, title, sound) {
	
	
 	  // tama�o del icono
  	  urlicon.iconSize=new GSize(24,24);
	  urlicon.infoWindowAnchor=new GPoint(9,0);
	  if(sound == true){
	  	// dnd se va a poner el icono en el mapa
        urlicon.iconAnchor=new GPoint(10,20);
	  	urlicon.shadowSize=new GSize(22,22);
	  } else{
	    urlicon.iconAnchor=new GPoint(17,22);
	  	urlicon.shadowSize=new GSize(24,24);
	  }
  var marker = new PdMarker(point, {icon:urlicon, title:title});
  marker.localizaId=id;  
  marker.setShowDetailOnClick(true);
  // BPM: nueva propiedad
  marker.esSonido = sound;
  //if (marker.localizaId.indexOf(',')!=-1) {
  	/*GEvent.addListener(marker, "mouseover", function() {
	  	if (overInterval) {
	  		clearInterval(overInterval);
	  		overInterval=null;
	  	}
	  	overMarker = marker;
	  	overInterval = setInterval("reloadList()",2500);
  	});
  	GEvent.addListener(marker, "mouseout", function() {
  		if (overInterval) {
	  		clearInterval(overInterval);
	  		overInterval=null;
	  	}
  	});*/
  //}
  return marker;
}

//function reloadList() {
//		if (overInterval) {
//	  		clearInterval(overInterval);
//	  		overInterval=null;
//	  	}
//	  	lista.value=overMarker.localizaId;
//	    boton.onclick();
//}
 
<!-- http queue --> 
var http=GXmlHttp.create();

var inCall = false;
var callToArray = new Array();
var returnToArray = new Array();

function sendCall(whereTo, returnTo){
  callToArray.push(whereTo);
  returnToArray.push(returnTo);
  while (callToArray.length > 1){	  	  
      whereTo = callToArray.shift();
      returnTo = returnToArray.shift();
  }
}

function callQueue(){
  if(!inCall && callToArray.length > 0){
    if(callToArray.length > 0){
      whereTo = callToArray.shift();
      returnTo = returnToArray.shift();
      doCall(whereTo, returnTo);
    } 
  } 
}

function doCall(whereTo, returnTo){	
  inCall = true;
  http.open('get', whereTo, true); 
  if(returnTo.length > 0){	  	  
    eval("http.onreadystatechange = "+returnTo);
  }
  http.send(null);
}

function hr_inCall(){
  if(http.readyState==4){
    inCall = false;
  }
}

var queueWatcher = setInterval(callQueue, 50);

// js de animación 
var divWidth;
var finalWidth;
var resizeTimer;
var myVar;
var cnt;
var cntCover;
var velocidadResize=60;
var intervalResize=100;
var growing;
	
	var anchoNavegador = 0;
	var anchoColDesplegar = 0;
	var anchoColMapa = 0;
	var anchoColBusqueda = 0;
	var boolDespliegue = 0;	
	
	function obtenerDimensiones() {
		obtenerDimensionesPagina();
		
		if (anchoColBusqueda==0){
			anchoColBusqueda = document.getElementById("colResultados").clientWidth;			
		}
		
		anchoColMapa = document.getElementById("map").clientWidth;
		anchoColDesplegar = document.getElementById("colDesplegable").clientWidth;		 				
	}
	
	function obtenerDimensionesPagina() {
    	if (self.innerHeight) { // MOZ
        	anchoNavegador = self.innerWidth;
    	} else if (document.documentElement && document.documentElement.clientWidth) { // IE6 Strict
	        anchoNavegador = document.documentElement.clientWidth;    	    
    	} else if (document.body.clientHeight) { // IE quirks
        	anchoNavegador = document.body.clientWidth;
    	}        			
	}
		
	function redimensionarGMAP() {		
		obtenerDimensiones();	
		if (self.innerHeight) { // MOZ
			compensar = 34;
		}else{
			compensar = 0;
		}
		// Si estamos mostrando la columna de busqueda		
		if (boolDespliegue==0){		
			diferencia = parseInt(anchoNavegador - anchoColMapa - anchoColDesplegar - anchoColBusqueda - compensar);
		}else{
			diferencia = parseInt(anchoNavegador - anchoColMapa - anchoColDesplegar - compensar);
		}
		tamFinal = anchoColMapa + diferencia;
		divMapa = document.getElementById("map");											
		divMapa.style.width = tamFinal + "px"		
	}
		
function desplegar(){
	obtenerDimensiones();		
	if (self.innerHeight) { // MOZ
		compensar = 20;
	}else{
		compensar = -4;
	}
	var maxAncho = anchoColMapa + anchoColBusqueda - compensar;	
	var minAncho = anchoColMapa - anchoColBusqueda;
							
	if (boolDespliegue==0){
		document.getElementById('imgDesplegable').src = 'img/desplegable2.jpg';		
		//$('columnaBusqueda').fade({ duration: 1.0, from: 1, to: 0 });
		document.getElementById('columnaBusqueda').style.display ='none';		
		move(maxAncho,maxAncho,boolDespliegue);
		boolDespliegue = 1;
	}else{		
		document.getElementById('imgDesplegable').src = 'img/desplegable.jpg';
		//$('columnaBusqueda').appear({ duration: 1.0});
		document.getElementById('columnaBusqueda').style.display ='';
		move(minAncho,minAncho,boolDespliegue);
		boolDespliegue = 0;
	}						
}

function move(anchoMayor,anchoMenor,bDespliegue){
	cnt=document.getElementById('map');
	cntCover=document.getElementsByName('coverZoomMap');
	divWidth = cnt.clientWidth;	

	if(bDespliegue==0){
		finalWidth = anchoMayor;
	}else{
		finalWidth = anchoMenor;
	}
	
	myVar = cnt.clientWidth;
	clearInterval(resizeTimer);
	resize_element(finalWidth);
}

function resize_element(size) {
	if (myVar < size){
		resizeTimer=setInterval("increaseDiv()",intervalResize);
		growing = true;
	} else if (myVar > size) {
		resizeTimer=setInterval("decreaseDiv()",intervalResize);		
		growing = false;
	} else if (myVar==size) {
		
	} else {
		alert('error from: ' + myVar + ' to: ' + size);
	}
}

function increaseDiv(){
	divWidth+=velocidadResize;
	if( divWidth < finalWidth ){
		cnt.style.width = divWidth + 'px';
		for (var i = 0; i < cntCover.length; i++) {
			cntCover[i].style.width = divWidth + 'px';
		}
	} else if(divWidth >= finalWidth){
		cnt.style.width = finalWidth + 'px';
		for (var j = 0; j < cntCover.length; j++) {
			cntCover[j].style.width = finalWidth + 'px';
		}
		clearInterval(resizeTimer);
	} 
}

function decreaseDiv(){
	divWidth-=velocidadResize;
	if( divWidth > finalWidth ){
		cnt.style.width = divWidth + 'px';
		for (var i = 0; i < cntCover.length; i++) {
			cntCover[i].style.width = divWidth + 'px';
		}
	} else if(divWidth <= finalWidth){
		cnt.style.width = finalWidth + 'px';
		for (var j = 0; j < cntCover.length; j++) {
			cntCover[j].style.width = finalWidth + 'px';
		}
		clearInterval(resizeTimer);
	}
}


// Marco de cargando
OverlayMessage = function ( container )
    {
    // Terminology:
    // +-----------------+
    // |wrapper          |
    // |+---------------+|
    // ||container      ||
    // ||   +-------+   ||
    // ||   |overlay|   ||
    // ||   +-------+   ||
    // ||               ||
    // |+---------------+|
    // +-----------------+

    // Get the parent.
    var parent = container.parentNode;

    // Make the wrapper div.
    var wrapper = document.createElement( 'div' );
    wrapper.style.cssText = container.style.cssText;
    parent.insertBefore( wrapper, container );

    // Move the container into the wrapper.
    parent.removeChild( container );
    wrapper.appendChild( container );
    container.style.cssText = 'position: relative; width: 100%; height: 100%;';

    // Add the overlay div.
    this.overlay = document.createElement( 'div' );
    wrapper.appendChild( this.overlay );
    this.visibleStyle = 'position: relative; top: -55%; background-color: ' + OverlayMessage.backgroundColor + '; width: 40%; text-align: center; margin-left: auto; margin-right: auto; padding: 2em; border: 1px solid ' + OverlayMessage.borderColor + '; z-index: 100; opacity: .75; filter: alpha(opacity=75);';
    this.invisibleStyle = 'display: none;';
    this.overlay.style.cssText = this.invisibleStyle;
    };


OverlayMessage.backgroundColor = '#9999cc';
OverlayMessage.borderColor = '#666699';


OverlayMessage.prototype.Set = function ( message )
    {
    this.overlay.innerHTML = message;
    this.overlay.style.cssText = this.visibleStyle;
    };


OverlayMessage.prototype.Clear = function ()
    {
    this.overlay.style.cssText = this.invisibleStyle;
    };


OverlayMessage.SetBackgroundColor = function ( color )
    {
    OverlayMessage.backgroundColor = color;
    };


OverlayMessage.SetBorderColor = function ( color )
    {
    OverlayMessage.borderColor = color;
    };
    
    /*
     * Funciones para interactuar con los Markers
     */
	var imagenIconoRestaurar;
	
	function esPuntoValido(punto){	
		var x = punto.lat(); 
		var y = punto.lng();
		if(isNaN(x) || isNaN(y)){
			return false;
		}else{
			return true;
		}		
	}		
			
	function resaltarMarker(id, rutaImg){
		//var markerAbrir;
		//var encontrado = false;
		try{
			for (var i = 0; i < markersIdentify.length; i++) {
				var markerSelec = markersIdentify[i];				
				if(markerSelec.localizaId==id){
					if (esPuntoValido(markerSelec.getPoint())){
						imagenIconoRestaurar = markerSelec.getIcon().image;
						var imgResaltar = imagenIconoRestaurar.replace('.jpg', '_res.gif');
						PdMarker.prototype.setImage.call(markerSelec, imgResaltar);
						//PdMarker.prototype.setImage.call(markerSelec, rutaImg);
						//markerAbrir = markerSelec;
						//encontrado = true;
					}		
				}	
			}
			//if (encontrado){
				//var funcion = "AbrirDetalleMarker(" + markerAbrir.localizaId + ",true,false)";
				//resaltarMarkerTimer=setTimeout(funcion,2000);
			//}			
	    }catch(error){
	       	//alert("No se ha encontrado el marcador " + id + ".");
	    }		
	}
	
	function restaurarMarker(id){			
		try{
			for (var i = 0; i < markersIdentify.length; i++) {
				var markerSelec = markersIdentify[i];		
				if(markerSelec.localizaId==id){
					PdMarker.prototype.setImage.call(markerSelec, imagenIconoRestaurar);
				}
			}
	    }catch(error){
	       	//alert("No se ha encontrado el marcador " + id + ".");
	    }	    	    	       			       	
	}
	
	function AbrirDetalleMarker(id, centrar, zoom){				
		
		try{
			var boundMarker = new GLatLngBounds();
			var encontrado = false;
			var markerMostrar;
			
			for (var i = 0; i < markersIdentify.length; i++) {
				var markerSelec = markersIdentify[i];
				
				if(markerSelec.localizaId==id){					
					if (esPuntoValido(markerSelec.getPoint())){
						if (!encontrado){
							markerMostrar = markerSelec;
						}						
						encontrado = true;
						boundMarker.extend(markerSelec.getPoint())
	    	   		}
				}
			} //End-For
				
			if (encontrado){
				if(centrar){
					map.setCenter(boundMarker.getCenter());
				}
				if(zoom){
					hacerZoomMapa(boundMarker);				
				}
				
				GDownloadUrl('dt/detail.html?id='+markerMostrar.localizaId+"&rand="+new Date().getTime(), function (h,errCode) {
	       			//Esto saca la ventana típica de GMAPS con la info de un Markup
					markerMostrar.openInfoWindowHtml(h);
		       		lastOverlay = markerMostrar;
		       		infowindowopened=true;
		       		markerMostrar.onClick();
				});
			}    	
		}catch(error){
	       	//alert("No se ha encontrado el marcador " + cont + ".");
	    }
				
	}
	
//***** Boton inicio
	function BotonInicioControl() {}

	BotonInicioControl.prototype = new GControl();

	BotonInicioControl.prototype.initialize = function(map) {   
		var zoomInDiv = document.createElement("div");  
		this.setButtonStyle_(zoomInDiv);  
		zoomInDiv.appendChild(document.createTextNode("Inicio"));
		zoomInDiv.innerHTML = '<img src="./img/iconosmapa/botonExtensionTotal.png">';		
		GEvent.addDomListener(zoomInDiv, "click", function() {
			if(modoFichaCE){
				var boundsBotonInicio = new GLatLngBounds();
				boundsBotonInicio.extend(pointMax);
				boundsBotonInicio.extend(pointMin);
				map.setCenter(boundsBotonInicio.getCenter());
				//map.setZoom(map.getBoundsZoomLevel(boundsBotonInicio));
				hacerZoomMapa(boundsBotonInicio);
			}else{
				map.setCenter(pointCenter, zoomInicial);
			}
		});  
		map.getContainer().appendChild(zoomInDiv);  
		return zoomInDiv;
	}

	BotonInicioControl.prototype.getDefaultPosition = function() {  
		return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(2, 100));
	} 

	BotonInicioControl.prototype.setButtonStyle_ = function(button) {  
		//button.style.textDecoration = "none";  
		//button.style.color = "black";  	 
		//button.style.font = "12px Arial"; 
		//button.style.fontWeight = "bold";
		//button.style.padding = "1px";  
		//button.style.marginBottom = "3px";
		//button.style.border = "1px solid black";
		//button.style.backgroundColor = "white";  
		button.style.textAlign = "center"; 
		button.style.width = "32px";
		button.style.height = "32px"; 	
		button.style.cursor = "pointer";
		if(modoFichaCE){
			button.title = getMensaje('mapaPulsar');
		}else{
			button.title = getMensaje('mapaAndalucia');
		}
		//button.style.block = "block";
	}

//********** Boton ira
	function BotonIRAControl() {}

	BotonIRAControl.prototype = new GControl();

	BotonIRAControl.prototype.initialize = function(map) {   
		var zoomInDiv = document.createElement("div");  
		this.setButtonStyle_(zoomInDiv);  
		zoomInDiv.appendChild(document.createTextNode("IrA"));
		zoomInDiv.innerHTML = '<div style="width; 230px"><input type="text" id="location" name="q" value="" style="float: left;font-size:14px; margin-top:5px;" size="25" /><img src="' + rutaImg + '/iconosmapa/botonIrA.png" onclick="mostrarLocalizacion();" style="cursor: pointer; padding-left: 2px; float: left; height: 30px" /></div>';
		map.getContainer().appendChild(zoomInDiv);  
		return zoomInDiv;
	}
	BotonIRAControl.prototype.getDefaultPosition = function() {  
		return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(50, 50));
	}         	
	BotonIRAControl.prototype.setButtonStyle_ = function(button) {
		button.title = getMensaje('mapaIrA');
	}

	
	//jjb: codigo del boton de control de capas	
	
	
	/*******************************************************************/
	
	var estanCapasDesplegadas = false;     // variable para controlar si esta la lista de capas disponibles desplegada o no		
	
	var listaCheckBoxCapas = null;  //listado que contiene los checkbox de las capas
	var listaCapas = new Array();   //Contiene todos los elementos Tiles de capas
	var listaCapasMarcadas = new Array();   //Contiene el estado marcado de la capa
	var listaEtiquetas = new Array();  //Contiene los nombres de etiquetas de cada capa	
		
	var anchoPixelesCheck = 17;	//constante: ancho de pixeles de los checkboxs
	var margenXComponenteCapas = 100; //constante: pixel de inicio del listado de checkboxs X
	var margenYComponenteCapas = 25; //constante: pixel de inicio del listado de checkboxs Y. Esta calculado a OJO: 5px del padding del boton y el ancho del boton (20px)
	
	
	//Contenedor de lista de checkbox
	function componenteListadoCheck() {	}
	componenteListadoCheck.prototype = new GControl();
	componenteListadoCheck.prototype.initialize = function(map) {   
		var div = document.createElement("div");  						
		div.innerHTML = '<div id="contenedorChecks" style="margin: 0px 0px 0px 0px;width:180px;border-width:1px;border-left-style:solid;border-right-style:solid;border-top-style:solid;border-bottom-style:solid;float:left;text-align: left"></div>';
		map.getContainer().appendChild(div);  
		return div;
	}
	componenteListadoCheck.prototype.getDefaultPosition = function() {  
		return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(0, 0));
	}   
	
	
	
	//checkbox de capas. Componente checkbox para cada una de las capas WMS
	function checkBoxControl(posicion,checado) {				
		this.posicion = posicion;
		this.checado = checado;   //IMH
	}
	checkBoxControl.prototype = new GControl();
	checkBoxControl.prototype.initialize = function(map) {   		
		var div = document.getElementById("contenedorChecks");					
		div.innerHTML += '<div style="margin: 0px 0 px 0px 0px;float:left;width:100%;height:auto; background-color:#FFFFFF;cursor:pointer;font-size:12px;font-family: arial;" onmouseover="javascript:remarcarCasillaCapa(this)" onmouseout="desmarcarCasillaCapa(this)"><input type="checkbox" onclick="javascript:gestionarCapa('+ this.posicion +')" style="vertical-align: middle;float:left;cursor:pointer;font-size:12px;font-family: arial;vertical-align:top;" '+ seleccionarCheckbox(this) +'/>' + listaEtiquetas[this.posicion] + '</div>';// + anadirUltimoNodo(this);
		map.getContainer().appendChild(div);  
		return div;
	}
	checkBoxControl.prototype.getDefaultPosition = function() {  
		return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(0, 0));
	}         	
	
	
	  	
	
	
	/**********************************************************************/
	
	function anadirUltimoNodo(elemento) {
		if (elemento.posicion == listaCapas.length - 1) {				
			return '</div>';
		} 		
		return '';
	}
	
	function seleccionarCheckbox(elemento) {
		var resultado;
		(elemento.checado ? resultado = "checked" : resultado = "");			
		return resultado;
	}
	
	
	function remarcarCasillaCapa(div) {		
		div.style.backgroundColor="#ffeac0" ;
	}
	
	function desmarcarCasillaCapa(div) {
		div.style.backgroundColor="#ffffff" ;
	}
	
	
	//jjb: oculta una capa
	function desactivarCapa(elemento) {						
		map.removeOverlay(listaCapas[elemento]);
		arrayEstadosChecks[elemento] = 0; //IMH
	}
	
	//jjb: activar una capa
	function activarCapa(elemento) {				
		
		map.addOverlay(listaCapas[elemento]);	
		
		arrayEstadosChecks[elemento] = 1; //IMH
	}
	
	//jjb: permite mostrar u ocultar capas mediante el click del checkbox
	function gestionarCapa(elemento) {
		var checkbox = listaCheckBoxCapas[elemento];
		checkbox.checado = !checkbox.checado;			
		if (!checkbox.checado) {
			desactivarCapa(elemento);			
		} else {				
			activarCapa(elemento);
		}
		//IMH		
		AjaxPeticionSimple("./capasMapa.do?estadoCapas="+arrayEstadosChecks.toString());
	}
	
	function gestionarCapasMarcadas() {
		if(listaCheckBoxCapas!=null){
			for(elemento=1; elemento<listaCheckBoxCapas.length; elemento++) {
				var checkbox = listaCheckBoxCapas[elemento];
				try{				
					if (!checkbox.checado) {
						desactivarCapa(elemento);
					} else {
						activarCapa(elemento);
					}
				}catch(err){
					alert(err);
				}
			}
		}
	}	
	
	//jjb: crea la lista que contiene los checkbox de capas
	function crearCheckBoxCapas() {		
		listaCheckBoxCapas = new Array();
		estaListadoChecksCreado = true;
		for (i = 0; i < listaCapas.length; i++) {
			listaCheckBoxCapas[i] = new checkBoxControl(i, estadoCheck(i)); //IMH
		}
		gestionarCapasMarcadas(); //IMH
	}
	
	//jjb: despliega un listado con las capas disponibles. Controlar los tamaños y espacios de la lista de Capas
	function desplegarListadoCapas() {			
		if (!estanCapasDesplegadas) {
			listarCheckBoxesCapas();
		} else {
			quitarCheckBoxesCapas();
		}				
		estanCapasDesplegadas = !estanCapasDesplegadas;
	}
	
	//IMH
	function estadoCheck(indice){				
		if(arrayEstadosChecks[indice]==1){
			return true;
		}else{
			return false;
		}
	}
	
	//jjb: muestra el listado de capas mediante los checkboxes
	function listarCheckBoxesCapas() {	
		map.addControl(new componenteListadoCheck(), new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(margenXComponenteCapas,margenYComponenteCapas)));	
		for (i = 1; i < listaCapas.length; i++) {
			//var posicionY = pixelInicioListadoChecksY + (i * anchoPixelesCheck);
			map.addControl(listaCheckBoxCapas[i] ,new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(margenXComponenteCapas,margenYComponenteCapas)));			
		}		
	}
	
	//jjb: elimina la lista de capas. Hay que controlar que el puntero del raton no salga del componente
	function quitarCheckBoxesCapas() {	
		for (i = 0; i < listaCapas.length; i++) {			
			map.removeControl(listaCheckBoxCapas[i]);	
		}
	}
	
	//listado desplegable de checkbox de capas. Componente que muestra el listado de capas del mapa (BOTON)
	function desplegableCapasControl() {}

	desplegableCapasControl.prototype = new GControl();

	desplegableCapasControl.prototype.initialize = function(map) {   
		var div = document.createElement("div");  		
		div.appendChild(document.createTextNode("CheckBox"));
//		div.innerHTML = '<div id="contenedorBoton" style="padding-top:6px;"><button type="button" name="botonCapas" onFocus="this.blur();" onclick="javascript:desplegarListadoCapas()" style="text-align:left;vertical-align:top;width:auto;height:20px;background-color:#FFFFFF;border-style:solid; border-width:2px;border-color:black; font-weight:bold; font-size:12px; font-family: arial; cursor: pointer; display:block;text-align:left;" >Capas<img src="./img/iconosmapa/marcadorCapas.PNG" ></button></div>';
		div.innerHTML = '<div id="contenedorBoton" style="padding-top:7px;"><div name="botonCapas" onFocus="this.blur();" onclick="javascript:desplegarListadoCapas()" style="padding-left:7px;padding-top:1px;text-align:left;vertical-align:top;width:70px;height:15px;background-color:#FFFFFF;border-style:solid;font-weight:bold; font-size:12px; font-family: arial; cursor: pointer; display:block;text-align:left;border-top:1px solid black;border-left:1px solid black;border-bottom:2px solid black;border-right:2px solid black" >Capas<div style="position: absolute; top: 10px; right: 6px; vertical-align: middle;"><img src="./img/iconosmapa/marcadorCapas.PNG" ></div></div></div>';
		map.getContainer().appendChild(div);  
		return div;
	}
	desplegableCapasControl.prototype.getDefaultPosition = function() {  
		return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(0, 0));
	}   

	function trim (myString){
		return myString.replace(/^\s+/g,'').replace(/\s+$/g,'')
	}	
	
	function cargarTransparencias(http) {
		if (http.readyState == 4) {		
			var xmlDoc = http.responseXML;
			
			if (xmlDoc == null) {
				return false;
			}
			if (xmlDoc.documentElement) {					
				var capas = xmlDoc.documentElement.getElementsByTagName("Capa");
				
				for (var i = 0; i < capas.length; i++) {
					var tagName;
					var tagValue;

					for (var j = 0; j < capas[i].childNodes.length; j++) {						
						var opacidad = 0.7;
						//if (capas[i].childNodes[j].nodeType != 1) continue;
						tagName = capas[i].childNodes[j].nodeName;   						
	      				tagValue = capas[i].childNodes[j].lastChild.nodeValue;	      					      					      				
	      				if (tagName == 'opacidad') {
	      					opacidad = parseFloat(tagValue);
	      					var valor = opacidad;
	      					listaCapas[i].getTileLayer().getOpacity = function() {
	      						return valor;
	      					}		      					
	      				}
					}
					if (i == 0) {							
						desactivarCapa(0);
  						activarCapa(0); 
  						continue;
					}
  					if (listaCheckBoxCapas[i].checado) {    								
  						desactivarCapa(i);
  						activarCapa(i);
  					}

				}
			}
		}	
	}
	
	
	function cargarCapasConfiguradas() {
		if (configuracionCargada) {	
			cargarTransparencias(http);
			return true; 
		}
			
		if (http.readyState == 4) {		
			var xmlDoc = http.responseXML;
			
			if (xmlDoc == null) {
				return false;
			}
			if (xmlDoc.documentElement) {					
				var capas = xmlDoc.documentElement.getElementsByTagName("Capa");					
					
				for (var i = 1; i < capas.length; i++) {
					var tagName;
					var tagValue;					
					var capaACrear = new GTileLayer(new GCopyrightCollection(""), 1, 17);					
									
					for (var j = 0; j < capas[i].childNodes.length; j++) {						
						var opacidad = 0.7;
						if (capas[i].childNodes[j].nodeType != 1) continue;
						tagName = capas[i].childNodes[j].nodeName;      				      			
	      				tagValue = capas[i].childNodes[j].lastChild.nodeValue;
	      				
	      				if (tagName == 'titulo') {	      					      					
	      					listaEtiquetas[i] = String(tagValue);
	      				}else if (tagName == 'nombre') {	      					
	      					capaACrear.myLayers = trim(tagValue);
	      				}else if (tagName == 'url') {
	      					capaACrear.myBaseURL = trim(tagValue);
	      				}else if (tagName == 'formato') {	      					
	      					capaACrear.myFormat = trim(tagValue);
	      				}else if (tagName == 'marcado') {
	      					//IMH
	      					//if(arrayEstadosChecks!=null && arrayEstadosChecks=='null'){
	      					listaCapasMarcadas[i] = trim(tagValue);
	      					//}
		      			}
					}
					capaACrear.getTileUrl = CustomGetTileUrl;
					configuracionCargada = true;      				      				
					listaCapas[i] = new GTileLayerOverlay(capaACrear); //guardamos como capa en el array		
					
					if (listaCapas.length > 1 && !botonCargado) {							  						  
						  botonCargado = true;
						  map.addControl(new desplegableCapasControl(),new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(margenXComponenteCapas,0)));
					  }		
				}					
			}

		}
		if (!estaListadoChecksCreado && listaCapas.length > 1) {					
			crearCheckBoxCapas();  //jjb: creamos los componentes checkbox de capas
		} 
		
		if (listaCapas.length == 1) {				
			cargarTransparencias(http);
			configuracionCargada = true; //jjb: ver si funciona con esto
	    } else {	    	
	    	activarCapa(0);
	    }
	}
			
	/*******************************************************/
		
//**** Carga del MAPA	
	function loadMap() {
		if (GBrowserIsCompatible()) {			
			// Cremos el mapa y su mensaje de carga
			map = new GMap(document.getElementById("map"));														
								
			var tileCapaClaro = new GTileLayer(new GCopyrightCollection(""), 1, 17);			
			tileCapaClaro.myLayers = myLayersMS;
			tileCapaClaro.myFormat = myFormatMS;
			tileCapaClaro.myBaseURL = wmsBaseURL;
			tileCapaClaro.getTileUrl = CustomGetTileUrl;
			tileCapaClaro.getOpacity = function(){				
				return 0.7;
			}	

			var tileCapaOscura = new GTileLayer(new GCopyrightCollection(""), 1, 17);			
			tileCapaOscura.myLayers = myLayersMS;
			tileCapaOscura.myFormat = myFormatMS;
			tileCapaOscura.myBaseURL = wmsBaseURLOscuro;
			tileCapaOscura.getTileUrl = CustomGetTileUrl;
			tileCapaOscura.getOpacity = function(){				
				return 0.7;
			}
			
			//jjb: añadimos los datos para el control de capas:
			//dicha capa es fija, por eso se declara aqui manualmente

			capaClara = new GTileLayerOverlay(tileCapaClaro);
			capaOscura = new GTileLayerOverlay(tileCapaOscura);
			
			listaCapas[0] = capaClara; //guardamos como capa en el array
			listaEtiquetas[0] = 'Espacios protegidos';									
			
			// Creamos el mapa CMA Normal
			//var layerVV_Normal = [ G_NORMAL_MAP.getTileLayers()[0], tileCapaVV ];
			var layerVV_Normal = [ G_NORMAL_MAP.getTileLayers()[0] ];
			// BPM: distinci�n entre idiomas
			var titMapa = getMensaje('mapa');

			var mapVV_Normal = new GMapType(layerVV_Normal, G_SATELLITE_MAP
					.getProjection(), titMapa);
					
			// Creamos el mapa CMA Hibrido
			var hib = getMensaje('hib');
			//var layerVV_Hibrido = [ G_HYBRID_MAP.getTileLayers()[0],G_HYBRID_MAP.getTileLayers()[1], tileCapaVV ];
			var layerVV_Hibrido = [ G_HYBRID_MAP.getTileLayers()[0],G_HYBRID_MAP.getTileLayers()[1] ];
			var mapVV_Hibrido = new GMapType(layerVV_Hibrido, G_HYBRID_MAP
					.getProjection(), hib);
					
			// Creamos el mapa CMA Satelite
			var sat = getMensaje('sat');
			var layerVV_Satelite = [ G_SATELLITE_MAP.getTileLayers()[0] ];
			//var layerVV_Satelite = [ G_SATELLITE_MAP.getTileLayers()[0], tileCapaVV ];
			var mapVV_Satelite = new GMapType(layerVV_Satelite, G_SATELLITE_MAP
					.getProjection(), sat);

			// Creamos el mapa CMA Relieve
			var rel = getMensaje('rel');
			var layerVV_Fisico = [ G_PHYSICAL_MAP.getTileLayers()[0] ];
			//var layerVV_Fisico = [ G_PHYSICAL_MAP.getTileLayers()[0], tileCapaVV ];
			var mapVV_Fisico = new GMapType(layerVV_Fisico, G_PHYSICAL_MAP
					.getProjection(), rel);
			
			// Añadimos los tipos de mapas que queramos 
			
			map.getMapTypes().length = 0;			      	       	
			map.addMapType(mapVV_Normal);			
			map.addMapType(mapVV_Satelite);
			map.addMapType(mapVV_Hibrido);
			map.addMapType(mapVV_Fisico);
			
			//var geoXml = new GGeoXml('http://localhost:8085/ventana/espacios.kml');			
			//map.addOverlay(geoXml);
			// Definimos propiedades de mapa
			
			if(modoIdentificar){				
				if(hayEnvelopeIdentificar){
					// Hacemos zoom a los dos puntos del envelope
					hacerZoomA2Puntos();
				}else{
					if (hayMarkersIdentificar){
						// Hacemos zoom a todos los puntos encontrados
						map.setCenter(boundsIdentificar.getCenter());
						//map.setZoom(map.getBoundsZoomLevel(boundsIdentificar));
						hacerZoomMapa(boundsIdentificar);
					}else{
						map.setCenter(pointCenterActual);
						map.setZoom(zoomActual);
					}
				}
			}else{
				if((modoFichaCE) || (aplicarZoomSesion)){
					hacerZoomA2Puntos();				
				}else{
					map.setCenter(pointCenter, zoomInicial);
				}
			}
			
			map.enableDoubleClickZoom();
			map.enableScrollWheelZoom();
			map.enableContinuousZoom(); 
			
			// Añadimos los listener necesarios			
			GEvent.addListener(map, "zoomend", refreshZoom);
			GEvent.addListener(map, "movestart", cerrarDetalles);			
			GEvent.addListener(map, "markerclick", cerrarDetalles);
			GEvent.addListener(map, "click", cerrarDetalles);
			//GEvent.addListener(map, "dragend", refreshMarkers);
			//GEvent.addListener(map, "zoomend", refreshMarkers);
			//GEvent.addListener(map, "moveend", refreshMarkers);
			GEvent.addListener(map, "infowindowclose", infoWindowClosed);
			GEvent.addListener(map, "infowindowbeforeclose", infowindowbeforeclose);
			//GEvent.addListener(map, "load", mapLoaded);
			GEvent.addListener(map, "click", loadDetail);			    			
			    
			// Creamos las opciones necesarias para los DragButtons
			var mapaZoom = getMensaje('mapaZoom');
			var optsZoomDZC = { 
          		buttonStartingStyle: {width:'32px',height:'32px',cursor:'pointer',textAlign:'center'},
          		buttonHTML:"<img src='./img/iconosmapa/botonZoomMasOff.png' title='" + mapaZoom + "'/>",
          		buttonZoomingHTML:"<img src='./img/iconosmapa/botonZoomMasOn.png' title='" + mapaZoom + "'/>",
          		backButtonEnabled: false
        	}
        	
        	var mapaBuscar = getMensaje ('mapaBuscar');
        	var optsIdentify = { 
          		buttonStartingStyle: {width:'32px',height:'32px',cursor:'pointer',textAlign:'center'},
          		buttonHTML:"<img src='./img/iconosmapa/botonIdentifyOff.png' title='" + mapaBuscar +  "'/>",
          		buttonZoomingHTML:"<img src='./img/iconosmapa/botonIdentifyOn.png' title='" + mapaBuscar +  "'/>",
          		backButtonEnabled: false
        	}
			    
			// Añadimos controles al mapa, para interaccion con el usuario
			map.addControl(new GLargeMapControl(), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(8,3))); //Boton con los controles se Zoom y Move
			map.addControl(new BotonIRAControl(),new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(80,3)));
			map.addControl(new DragZoomControl({}, optsZoomDZC, {}),new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(310,3))); //Boton de zoom
			map.addControl(new BotonInicioControl(),new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(340,3))); //Boton de inicio con el zoom a andalucia
			if (activarBotoneraMapa){								
				map.addControl(new DragZoomControl({}, optsIdentify, {predragend: identify}),new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(370,3))); //Boton de identificar								
			}

			map.addControl(new GMenuMapTypeControl()); //Habilitamos los controles de seleccion de tipo de mapa
			map.setMapType(mapVV_Fisico); // Establecemos por defecto el mapa relieve
			map.addControl(new GScaleControl()); //Control que muestra la escala del mapa			
			
			GEvent.addListener(map, "maptypechanged", cambiarVistaMapa);
			
			// Creamos el Geocoder
			geocoder = new GClientGeocoder();
		}
	}	
	
	function cargarVistaSeleccionada(mapa) {
		/*var caja = map.getBounds();
		var puntoSW = caja.getSouthWest();
		var puntoNE = caja.getNorthEast();			   
	    var puntoSE = new GLatLng(puntoSW.lat(), puntoNE.lng());
	    var puntoNW = new GLatLng(puntoNE.lat(), puntoSW.lng());*/
		//cambiar URL
		//new Ajax.Updater('', 'busquedaMapServer.do', { method: 'get' ,parameters: {identificar: "no", izq: puntoNW.lat(), der: puntoSE.lat(), sup: puntoNW.lng(), inf: puntoSE.lng(), capaConsulta: capaConsultaMapServer, mapaSeleccionado: mapa}, asynchronous: false});
		
		//comprobar el mapa actual y cargar el que nos convenga
	    map.removeOverlay(listaCapas[0]);
		if (mapa.toUpperCase() == 'RELIEVE' || mapa.toUpperCase() == 'MAPA') {
			listaCapas[0] = capaClara;
		} else {
			listaCapas[0] = capaOscura;
		}
						
	    refreshZoom();
	    map.addOverlay(listaCapas[0]);
				
	}
	
	
	function cambiarVistaMapa() {
		var mapa = map.getCurrentMapType();
		cargarVistaSeleccionada(mapa.getName());
		
	}
	
	function hacerZoomA2Puntos(){
		var boundsMapa = new GLatLngBounds();
		boundsMapa.extend(pointMax);
		boundsMapa.extend(pointMin);
		map.setCenter(boundsMapa.getCenter());
		//map.setZoom(map.getBoundsZoomLevel(boundsMapa));
		hacerZoomMapa(boundsMapa);
	}
	
	function hacerZoomMapa(boundsMapa){		
		var zoomBounding = map.getBoundsZoomLevel(boundsMapa);
		//alert('hacerZoomMapa zoomBounding='+zoomBounding);
		//alert('hacerZoomMapa zoomMinimo='+zoomMinimo);
		if (zoomBounding > zoomMinimo){
			map.setZoom(zoomMinimo);
		}else{
			map.setZoom(zoomBounding);
		}
	}
			
	function escaparCaracteres(cadena){			
		cadena = cadena.replace('á', '\u00e1');
		cadena = cadena.replace('é', '\u00e9');
		cadena = cadena.replace('í', '\u00ed');
		cadena = cadena.replace('ó', '\u00f3');
		cadena = cadena.replace('ú', '\u00fa');
		cadena = cadena.replace('Á', '\u00c1');
		cadena = cadena.replace('É', '\u00c9');
		cadena = cadena.replace('Í', '\u00cd');
		cadena = cadena.replace('Ó', '\u00d3');		
		cadena = cadena.replace('Ú', '\u00da');
		cadena = cadena.replace('ñ', '\u00f1');
		cadena = cadena.replace('Ñ', '\u00d1');
		return cadena;
	}
	
	function infowindowbeforeclose(){
		// Necesario para parar el sonido en IE
		var embed = document.getElementById('embed');
		if(embed != null){
			embed.innerHTML = '';
		}
	}
