var scale;
var map;
var marker;
var lBbox;
var alturaMinimaParaVerFicha = 16;

var maAux;

var FORMAT_DEFAULT="image/png";
var MERC_ZOOM_DEFAULT = 3;
var urlFichaCatastral;
var numeroDeMapasPorDefecto = 9;

var nombreCapa1='Catastro';
var nombreCapa2='Catastro +';
var nombreCapa3='Sigpac +';
var srs4326 = 'EPSG:4326'; 
var mostrandoListadoMapas = false;
var mapaCatastro;
var latlngMouse; 
var fechaCartografia = ''; 
var midiendo = false; 
var markerposition = ''; 
var numeroDeMapasAnadidos = 0;
var centro;
var nombreCapa5='Ponencias';  
var nombreCapa6='Ponencias+'; 

function obtenerURL(map, point){
	var bounds = map.getBounds(); var southWest = bounds.getSouthWest();var northEast = bounds.getNorthEast();
	lBbox = southWest.x + ',' + southWest.y + ','+ northEast.x + ',' + northEast.y;
	var aux1  = map.getCurrentMapType().getProjection().fromLatLngToPixel(southWest ,map.getZoom());
	var aux2  = map.getCurrentMapType().getProjection().fromLatLngToPixel(northEast ,map.getZoom());
	var aux3  = map.getCurrentMapType().getProjection().fromLatLngToPixel(point ,map.getZoom());
	var xaux = aux3.x - aux1.x; var yaux = aux3.y - aux2.y;var anchoDeMapa, altoDeMapa;//var map = $('map');
	/*
	if(esNetscape){anchoDeMapa = parseInt(getComputedStyle(map,null).getPropertyValue('width'));altoDeMapa = parseInt(getComputedStyle(map,null).getPropertyValue('height'));}
	else{anchoDeMapa = map.style.pixelWidth;altoDeMapa = map.style.pixelHeight;}
	*/
	if(esExplorer){anchoDeMapa = map.style.pixelWidth;altoDeMapa = map.style.pixelHeight;}
	else{anchoDeMapa = parseInt(getComputedStyle(map,null).getPropertyValue('width'));altoDeMapa = parseInt(getComputedStyle(map,null).getPropertyValue('height'));}
	
	return 'http://www.sedecatastro.gob.es/Cartografia/WMS/ServidorWMS.aspx?&REQUEST=GetFeatureInfo&SERVICE=WMS&QUERY_LAYERS=catastro&FEATURE_COUNT=1&VERSION=1.1.0&SRS=EPSG:4326&BBOX='+lBbox+'&WIDTH='+ anchoDeMapa +'&HEIGHT='+ altoDeMapa+'&LAYERS=catastro&STYLES=default&FORMAT=image/png&BGCOLOR=0xFFFFFF&TRANSPARENT=TRUE&EXCEPTIONS=XML&X=' + xaux +'&Y='+yaux;
}





function cambiarTipoMapaSigPac(){
	var tileLayer =mapTypePorNombreMapa(nombreCapa3).getTileLayers()[0];
	if (map.getZoom()<=14){
		tileLayer.myLayers = 'mtn_rasterizado';
		tileLayer.myBaseURL="http://idee.unizar.es/wms/MTN-Raster/MTN-Raster?&SERVICE=WMS&STYLES=default&BGCOLOR=0xFFFFFF&EXCEPTIONS=application/vnd.ogc.se_inimage";
		}
	else{
		tileLayer.myLayers = 'ORTOFOTOS';
		tileLayer.myBaseURL="http://wms.mapa.es/wms/wms.aspx?&reaspect=true&EXCEPTIONS=XML";
	}
}

function GenerarTextoLayerVista(){
	CargarAnchoYAltoDeMapa();
	return  (esNetscape)?'<object type="text/html" data="virtualearth.html?lat='+lat+'&lng='+lng+'&height='+altoDeMapa+'&width='+anchoDeMapa+'" style="width:100%;height:100%;border:none;overflow:hidden;padding:0px;margin:0px"></object>':'<div><iframe id="frameVirtualEarth" src="virtualearth.html?lat='+lat+'&lng='+lng+'&height='+altoDeMapa+'&width='+anchoDeMapa+'" style="width:100%;height:100%;border:none;" frameborder=0 marginheight=0 marginwidth=0 scrolling=no></iframe></div>';
}

function load() {
	anchoDeVentana = window.innerWidth || document.body.offsetWidth;
	altoDeVentana = window.innerHeight || document.body.offsetHeight;

	map = new GMap2($("map"));
	
	if (GBrowserIsCompatible()) {
		prepararMapa();
		TratarParametros();
		if(lat!=0 && lng!=0){
			var point = new GLatLng(lat, lng);
			if(zoom==0)zoom = 18;
			map.setCenter(point, zoom);
			if(maptype==3){
				CambiarTamanioDePagina();
				$("map").style.display="none";
				
				$("layerVista").style.display="block";
				$("layerVista").innerHTML=GenerarTextoLayerVista();
				
				$("linkMostrarMarker").style.display="none";
				$("linkMostrarEscala").style.display="none";
				//$("linkOcultarMarker").style.display="none";
				
			}
			else if(maptype==8){
				//panoramaOptions = { latlng:point };
				//GStreetviewPanorama.prototype.printable=function(){return true}; 
				//myPano = new GStreetviewPanorama($("map"), panoramaOptions);
			}
			else{
				/*if(maptype>=numeroDeMapasPorDefecto)CambiarTipoDeMapa(maptype);
				else map.setMapType(map.getMapTypes()[maptype]);*/
				map.setMapType(map.getMapTypes()[maptype]);
				if(markerposition!=''){
					markerposition = markerposition.split(",");
					MostrarMarker();
					
					//var url = obtenerURL(map, point);
					//var html = '<iframe style="width:600px;height:220px;border:none;" frameborder=0 marginheight=0 marginwidth=0 src=' + url + '></iframe>';
					//marker.openInfoWindowHtml(html);
				}
				if(ma!=''){
					ma = ma.split("[");	
					maLength = ma.length;
					for(var i=1;i<maLength;i++){
						maAux = ma[i];
						maAux = maAux.split("$");
						map.addOverlay(new GTileLayerOverlay(new CustomTileLayer(1, 21,'GetMap', srs4326, maAux[1],maAux[3],"1.1.1", maAux[2],'1', maAux[0])));
						
					}
				}
			}
		}
		else if(dir!='')showAddress(dir);
		else map.setCenter(new GLatLng(40.413496, -3.779297), 5);
		//setTimeout('print()',4000);
		GEvent.addListener(map, "zoomend", function() {pedirMapaCatastro();});
		//GEvent.addListener(map, "dragend", function() {pedirMapaCatastro();});
		GEvent.addListener(map, "maptypechanged", function() {pedirMapaCatastro();});	
		GEvent.addListener(map, "moveend", function() {pedirMapaCatastro(); center = map.getCenter()});
		pedirMapaCatastro();
		IniciarlizarOpciones();
		PonerCoordenadas();
		var nombreCapaActual = map.getCurrentMapType().getName();
		if(((ma!="") || (nombreCapaActual==nombreCapa1) && (nombreCapaActual.indexOf("+")==-1))){
			$("divImprimirComoImagen").style.display = "block";
		} else $("divImprimirComoImagen").style.display = "none";
		
		
		if(acc==1)pagoYaRealizado=!pagoYaRealizado;
		if(comoimagen=='1'){
			setTimeout("ImprimirComoImagen(true)",1000);
			MostrarVentanaPagar(6,true);
			}
		else MostrarVentanaPagar(1,true);	
	}
}

function funcionCorrectoImprimirImagen(){
	//ocultarVentanaPagar();
	if($("checkBoxImprimirComoImagen").checked)ActualizarPedirComoImagen();
	$("tablaprincipal").className="imprimir";
	$("tablaprincipal").style.visibility="visible";
	$("mensajeRegistro").className="";
	$("mensajeRegistro").style.display="none";
	$("linkimprimir").style.display="inline";
	$("linkregistrarse").style.display="none";
}

function prepararMapa(){
	map.addMapType(CustomMap3("Vista",1, 21, ''));
	map.addMapType(CustomMap3(nombreCapa1,1, 21, ''));
    //map.addMapType(CustomMap3(nombreCapa2,1, 18, G_SATELLITE_MAP));
    
    map.addMapType(customMapCatastroMas = CustomMap(nombreCapa2,1, 21,'GetMap', srs4326, 'pnoa','image/jpeg','1.1.1', 'TRUE','1', G_NORMAL_MAP, 'http://www.idee.es/wms/PNOA/PNOA?'));
    map.addMapType(customMapSigpac = CustomMap(nombreCapa3,1, 21,'GetMap', 'EPSG:4230', 'ORTOFOTOS','image/jpeg','1.1.1', 'FALSE','1', G_NORMAL_MAP, 'http://wms.mapa.es/wms/wms.aspx?&reaspect=false&EXCEPTIONS=XML'));
	map.addMapType(CustomMap3(nombreCapa2,1, 21, G_SATELLITE_MAP));
	
	map.addMapType(CustomMap3("",1, 21, ''));
	//map.addMapType(CustomMap(nombreCapa3,1, 21,'GetMap', 'EPSG:4230', 'ORTOFOTOS','image/jpeg','1.1.0', 'TRUE','1', G_NORMAL_MAP, 'http://wms.mapa.es/wms/wms.aspx?&reaspect=true&EXCEPTIONS=XML'));
	//mapTypePorNombreMapa(nombreCapa2).getMaximumResolution = function() {return 18;};
	
	
	mapControl = new GHierarchicalMapTypeControl();
	mapControl.clearRelationships();
    map.addControl(new GSmallZoomControl3D());
    GScaleControl.prototype.printable=function(){return true}; 
   	
	GEvent.addListener(map, "maptypechanged", function() {cambiarTipoMapaSigPac();});
	GEvent.addListener(map, "moveend", function() {PonerCoordenadas();});
}


function pedirMapaCatastro(){
	if(mapaCatastro)map.removeOverlay(mapaCatastro);
	var nombreCapaActual = map.getCurrentMapType().getName();
	if((nombreCapaActual==nombreCapa1)||(nombreCapaActual.indexOf("+")>0)){
		var bounds = map.getBounds(); var southWest = bounds.getSouthWest();var northEast = bounds.getNorthEast();
		var lBbox = southWest.x + ',' + southWest.y + ','+ northEast.x + ',' + northEast.y;
		var bounds = map.getBounds(); var southWest = bounds.getSouthWest();var northEast = bounds.getNorthEast();
		
		var mapa = $('map');
		if(esExplorer){anchoDeMapa = mapa.style.pixelWidth;altoDeMapa = mapa.style.pixelHeight;}
		else {anchoDeMapa = parseInt(getComputedStyle(mapa,null).getPropertyValue('width'));altoDeMapa = parseInt(getComputedStyle(mapa,null).getPropertyValue('height'));}

		var transparent = (nombreCapaActual==nombreCapa1)?"FALSE":"TRUE";
		var epsg = (nombreCapaActual==nombreCapa3)?"EPSG:4230":"EPSG:4326";
		var urlCatastro = "http://www.sedecatastro.gob.es/Cartografia/WMS/ServidorWMS.aspx?&TIME=" + fechaCartografia +"&REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&LAYERS=&STYLES=&FORMAT=image/png&BGCOLOR=0xFFFFFF&TRANSPARENT="+transparent+"&SRS="+epsg+"&BBOX="+lBbox+"&WIDTH="+anchoDeMapa+"&HEIGHT="+altoDeMapa+"&reaspect=false";
		
		mapaCatastro = new ProjectedOverlay ( urlCatastro, new GLatLngBounds(southWest,northEast)) ;
		map.addOverlay(mapaCatastro);
	}
}

function PedirImagenImprimirComoImagen(){
	if(!pagoYaRealizado)return directorioImagenes+"usoexclusivousuariosregistrados.png";
	else{
		var nombreCapaActual = map.getCurrentMapType().getName();
		var mapCenter = map.getCenter();
		var centerLat = mapCenter.lat();
		var centerLng = mapCenter.lng();
		var zoom = map.getZoom();
		CargarAnchoYAltoDeMapa();
		if((nombreCapaActual==nombreCapa1 || nombreCapaActual==nombreCapa5)){
			var bounds = map.getBounds(); var southWest = bounds.getSouthWest();var northEast = bounds.getNorthEast();
			var lBbox = southWest.x + ',' + southWest.y + ','+ northEast.x + ',' + northEast.y;
			var transparent = "FALSE";
			var tipoMapaCatastro = (nombreCapaActual==nombreCapa5 || nombreCapaActual==nombreCapa6)?"ponenciasWMS.aspx":"ServidorWMS.aspx";
			var epsg = (nombreCapaActual==nombreCapa3)?"EPSG:4230":"EPSG:4326";
			return "http://www.sedecatastro.gob.es/Cartografia/WMS/"+tipoMapaCatastro+"?&TIME=" + fechaCartografia +"&REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&LAYERS=&STYLES=&FORMAT=image/png&BGCOLOR=0xFFFFFF&TRANSPARENT="+transparent+"&SRS="+epsg+"&BBOX="+lBbox+"&WIDTH="+anchoDeMapa+"&HEIGHT="+altoDeMapa+"&reaspect=false";
		}
		else {
			var bounds = map.getBounds(); var southWest = bounds.getSouthWest();var northEast = bounds.getNorthEast();
			var lBbox = southWest.x + ',' + southWest.y + ','+ northEast.x + ',' + northEast.y;

			var request = "GetMap";
			var baseUrl = maAux[0];
			var version = "1.1.1";
			var layers = maAux[1];
			var srs = srs4326;
			var transparent = maAux[2];
			var format = maAux[3];
			var url = baseUrl + "&REQUEST="+request+"&SERVICE=WMS&VERSION="+version+"&LAYERS="+layers+"&STYLES=&FORMAT="+format+"&TRANSPARENT="+transparent+"&SRS="+srs+"&BBOX="+lBbox+"&WIDTH="+anchoDeMapa+"&HEIGHT="+altoDeMapa+"";
			return url;
			
		}
		
		
	}
}

function MostrarMarker(){
	var point = (markerposition[0])?new GLatLng(markerposition[0], markerposition[1]): map.getCenter();
	marker = new GMarker(point,{draggable:true});
	map.addOverlay(marker);	
	$("linkMostrarMarker").style.display="none";
	$("linkOcultarMarker").style.display="inline";
}
function OcultarMarker(){
	map.removeOverlay(marker);	
	marker = null;
	$("linkMostrarMarker").style.display="inline";
	$("linkOcultarMarker").style.display="none";	
}


function MostrarCoordenadasDeLasEsquinas(){
	$("coord1").style.display = $("coord2").style.display = $("coord3").style.display = $("coord4").style.display= "inline";
	$("linkMostrarCoordenadas").style.display="none";
	$("linkOcultarCoordenadas").style.display="inline";
}

function OcultarCoordenadasDeLasEsquinas(){
	$("coord1").style.display = $("coord2").style.display = $("coord3").style.display = $("coord4").style.display= "none";
	$("linkMostrarCoordenadas").style.display="inline";
	$("linkOcultarCoordenadas").style.display="none";
}

function MostrarNotas(){
	$("notas").style.display = displayMostrar;
	$("linkMostrarNotas").style.display="none";
	$("linkOcultarNotas").style.display="inline";
}

function OcultarNotas(){
	$("notas").style.display = "none";
	$("linkMostrarNotas").style.display="inline";
	$("linkOcultarNotas").style.display="none";
}

function MostrarEscala(){
	GScaleControl.prototype.printable=function(){return true}; 
	scale = new GScaleControl(); 
	
	
	
   	map.addControl(scale); 
	$("linkMostrarEscala").style.display="none";
	$("linkBorrarEscala").style.display="inline";
}

function OcultarEscala(){
	map.removeControl(scale);
	$("linkMostrarEscala").style.display="inline";
	$("linkBorrarEscala").style.display="none";
}



function PonerCoordenadas(){
	var bounds = map.getBounds(); 
	var southWest = bounds.getSouthWest();
	var northEast = bounds.getNorthEast();
	$("coord1").innerHTML=northEast.y.toFixed(4) + "," + southWest.x.toFixed(4);
	$("coord2").innerHTML=northEast.y.toFixed(4) + "," + northEast.x.toFixed(4);
	$("coord3").innerHTML=southWest.y.toFixed(4) + "," + southWest.x.toFixed(4);
	$("coord4").innerHTML=southWest.y.toFixed(4) + "," + northEast.x.toFixed(4);	
}

function CambiarTamanioDePagina(){
	var tamanoDePagina = $('tamanoDePagina');
	tamanoDePagina = tamanoDePagina.options[tamanoDePagina.selectedIndex].value;
	
	$('tamanoPersonalizado').style.display = (tamanoDePagina=='4')?"inline":"none";
	
	var textBoxAnchoDePagina = $("anchoPaginaPersonalizado");
	var textBoxAltoDePagina = $("altoPaginaPersonalizado");
	
	var centro = map.getCenter();
	var zoom = map.getZoom();
	var mapa = $("map");
	var layerVista = $("layerVista");
	var checkBoxImprimirComoImagen = $("checkBoxImprimirComoImagen");
	var imagenImprimirComoImagen = $("imagenImprimirComoImagen");
	var ancho1 = "650";
	var ancho2 = "950";
	var alto1 = "550";
	var alto2 = "850";
	if(tamanoDePagina=='1'){
		textBoxAltoDePagina.value = alto1;
		textBoxAnchoDePagina.value = ancho1;
	}
	else if(tamanoDePagina=='2'){
		textBoxAltoDePagina.value = alto2;
		textBoxAnchoDePagina.value = ancho1;
	}
	else if(tamanoDePagina=='3'){
		textBoxAltoDePagina.value = alto1;
		textBoxAnchoDePagina.value = ancho2;
	}else if(tamanoDePagina=='4'){
		
	}
	
	var alto = textBoxAltoDePagina.value;
	var ancho = textBoxAnchoDePagina.value;
	
	
	if(!IsNumeric(ancho))alert("El ancho de página no es un número válido");
	else if(!IsNumeric(alto))alert("El alto de página no es un número válido");
	else{
		imagenImprimirComoImagen.style.height = mapa.style.height= layerVista.style.height = alto + "px";
		imagenImprimirComoImagen.style.width = mapa.style.width= layerVista.style.width = ancho + "px";
		
		if(maptype==3)
			$("layerVista").innerHTML=GenerarTextoLayerVista();
		
		if(checkBoxImprimirComoImagen.checked){
			imagenImprimirComoImagen.style.display="none";
			mapa.style.display="block";
			map.checkResize();
			map.panTo(centro);
			PonerCoordenadas();
			imagenImprimirComoImagen.src = PedirImagenImprimirComoImagen();
			imagenImprimirComoImagen.style.display="inline";
			mapa.style.display="none";
			}
		else{
			map.checkResize();
			map.panTo(centro);
			PonerCoordenadas();
		}
	}
}

function IniciarlizarOpciones(){
	var tamanoDePagina = $('tamanoDePagina');
	tamanoDePagina.selectedIndex=0;	
}

function ImprimirComoImagen(clickFromText){
	var checkBoxImprimirComoImagen = $("checkBoxImprimirComoImagen");
	var imagenImprimirComoImagen = $("imagenImprimirComoImagen");
	var instruccionesGuardarImagen = $("instruccionesGuardarImagen");
	var tamanoDePagina = $("tamanoDePagina");
	var map = $("map");
	if(clickFromText)checkBoxImprimirComoImagen.checked = !checkBoxImprimirComoImagen.checked;
	if(checkBoxImprimirComoImagen.checked){
		ActualizarPedirComoImagen();
		instruccionesGuardarImagen.style.display = "block";
		tamanoDePagina.options.selectedIndex = 3;
		CambiarTamanioDePagina();
		OcultarEscala();
		$("linkMostrarEscala").style.display="none";
		
		if(markerposition!=''){
			$("linkOcultarMarker").style.display="none";
			$("linkMostrarMarker").style.display="none";		
			}
	}
	else{
		imagenImprimirComoImagen.style.display="none";
		instruccionesGuardarImagen.style.display = "none";
		map.style.display="block";
		$("linkMostrarEscala").style.display="inline";
		if(markerposition!='' && marker!=null){
			$("linkMostrarMarker").style.display="none";		
			$("linkOcultarMarker").style.display="inline";
			}
		else {
			$("linkMostrarMarker").style.display="inline";		
			$("linkOcultarMarker").style.display="none";
		}
		

	}
}

function ActualizarPedirComoImagen(){
	var imagenImprimirComoImagen = $("imagenImprimirComoImagen");
	var map = $("map");
	
	imagenImprimirComoImagen.style.display="none";
	map.style.display="block";
	imagenImprimirComoImagen.src = PedirImagenImprimirComoImagen();
	map.style.display="none";
	imagenImprimirComoImagen.style.display="inline";
	
}

function IsNumeric(sText){
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;
   for (i = 0; i < sText.length && IsNumber == true; i++)
      if (ValidChars.indexOf(sText.charAt(i)) == -1) 
         IsNumber = false;
      
   return IsNumber;
}
