var mapa;
var cadenaCodigos="";
var pixelConsultado=0;
var marcadores=null;

//var urlMapServer="../../cgi-bin/mapserv";
var urlMapServer="http://www.terrasatlanticas.es/cgi-bin/mapserv?map=/home/userftp01/gis/mapdata/maiv.map";
//var pathMapFile="/var/www/terrasatlanticas/gis/mapdata/maiv.map";
var pathMapFile="/home/userftp01/gis/mapdata/maiv.map";

//************************************
var size = new OpenLayers.Size(20,34);
var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
var icon = new OpenLayers.Icon('http://www.terrasatlanticas.es/gis/css/img/marker.png',size,offset);
//************************************

//***********************************************************************************************************************************************************************************************
//***********************************************************************************************************************************************************************************************

function objetoAjax(){
	var xmlhttp=false;
	try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
		   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			xmlhttp = false;
  		}
	}

	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
		xmlhttp = new XMLHttpRequest();
	}
	return xmlhttp;
};

//***********************************************************************************************************************************************************************************************
//***********************************************************************************************************************************************************************************************	

function init(idElemento, x, y)
{
	if(idElemento=="all")
	{
		document.getElementById("wrapper").innerHTML="<img src=\"css/img/no_georreferenciado.JPG\" title=\"ELEMENTO NO GEORREFERENCIADO\" onClick=\"javascript:window.close();\"/>";
		return;
	}
	
	mapa = new OpenLayers.Map( 'map',{
		maxExtent: new OpenLayers.Bounds(502318, 4651137, 559780, 4697366),
		maxResolution: 'auto',
		units: "m",
		projection: "EPSG:23029"
	});
	
	var ortofoto = new OpenLayers.Layer.WMS( "Aerial photography", "http://ideg.xunta.es/WMS-ORTO/Request.aspx?", {
	layers: "ortofotos2003",
	maxscale: 5000,
	isBaseLayer: true});
	mapa.addLayer(ortofoto);
	
    var layer = new OpenLayers.Layer.MapServer( "Layers", urlMapServer, {
			map: pathMapFile, 
			layers:['USOS_SOLO','MAR','CONCELLOS','VIAS_COMUNICACION','NUCLEOS','ETIQUETAS'],
			isBaseLayer: false,
			transparent: true} 
			);
    mapa.addLayer(layer);
	
    var recursos = new OpenLayers.Layer.MapServer( "Tourist resources", urlMapServer, {
			map: pathMapFile, 
			layers:['ACTIVIDADES','ALOJAMIENTO','ARTE','GASTRONOMIA','NATURALEZA','PUERTOS'],
			isBaseLayer: false,
			transparent: true} 
			);
    mapa.addLayer(recursos);	
	
	var sendeiro_das_greas = new OpenLayers.Layer.MapServer( "<span class=\"sendeiro\">Greas pathway</span>", urlMapServer, {
		map: pathMapFile, 
		layers: 'SENDEIRO_DAS_GREAS',
		isBaseLayer: false,
		transparent: true}
		);
	mapa.addLayer(sendeiro_das_greas);
	
	mapa.zoomToMaxExtent();
	mapa.addControl( new OpenLayers.Control.LayerSwitcher() );
	var escala = new OpenLayers.Control.ScaleLine();
    mapa.addControl(escala);
	
	if((idElemento!="all")&&(idElemento!="none"))
	{
		nombreElemento("<<"+idElemento+">>");
		mostrarElemento(idElemento, x, y);
	}
	
	mapa.events.register('click', mapa, function (e) {
		cadenaCodigos="";
		pixelConsultado=0;
		var urlElementos;
		var consultarCapas="ACTIVIDADES, ALOJAMIENTO, ARTE, GASTRONOMIA, NATURALEZA, PUERTOS";
		eliminarNodos(document.getElementById("listadoElementos"));
		//Consulto también los pixeles adyacentes
		//x-1,y+1
		urlElementos= alojamientos.getFullRequestString({
							REQUEST: "GetFeatureInfo",
							EXCEPTIONS: "application/vnd.ogc.se_xml",
							BBOX:  alojamientos.map.getExtent().toBBOX(),
							X: e.xy.x-1,
							Y: e.xy.y+1,
							INFO_FORMAT: 'text/plain',
							QUERY_LAYERS:  consultarCapas,
							WIDTH:  alojamientos.map.size.w,
							HEIGHT:  alojamientos.map.size.h});
		OpenLayers.loadURL(urlElementos, '', this, setHTML);
		
		//x,y+1
		urlElementos= alojamientos.getFullRequestString({
							REQUEST: "GetFeatureInfo",
							EXCEPTIONS: "application/vnd.ogc.se_xml",
							BBOX:  alojamientos.map.getExtent().toBBOX(),
							X: e.xy.x,
							Y: e.xy.y+1,
							INFO_FORMAT: 'text/plain',
							QUERY_LAYERS:  consultarCapas,
							WIDTH:  alojamientos.map.size.w,
							HEIGHT:  alojamientos.map.size.h});
		OpenLayers.loadURL(urlElementos, '', this, setHTML);
		
		//x+1,y+1
		urlElementos= alojamientos.getFullRequestString({
							REQUEST: "GetFeatureInfo",
							EXCEPTIONS: "application/vnd.ogc.se_xml",
							BBOX:  alojamientos.map.getExtent().toBBOX(),
							X: e.xy.x+1,
							Y: e.xy.y+1,
							INFO_FORMAT: 'text/plain',
							QUERY_LAYERS:  consultarCapas,
							WIDTH:  alojamientos.map.size.w,
							HEIGHT:  alojamientos.map.size.h});
		OpenLayers.loadURL(urlElementos, '', this, setHTML);
		
		//x-1,y
		urlElementos= alojamientos.getFullRequestString({
							REQUEST: "GetFeatureInfo",
							EXCEPTIONS: "application/vnd.ogc.se_xml",
							BBOX:  alojamientos.map.getExtent().toBBOX(),
							X: e.xy.x-1,
							Y: e.xy.y,
							INFO_FORMAT: 'text/plain',
							QUERY_LAYERS:  consultarCapas,
							WIDTH:  alojamientos.map.size.w,
							HEIGHT:  alojamientos.map.size.h});
		OpenLayers.loadURL(urlElementos, '', this, setHTML);
		
		//x,y
		urlElementos= alojamientos.getFullRequestString({
							REQUEST: "GetFeatureInfo",
							EXCEPTIONS: "application/vnd.ogc.se_xml",
							BBOX:  alojamientos.map.getExtent().toBBOX(),
							X: e.xy.x,
							Y: e.xy.y,
							INFO_FORMAT: 'text/plain',
							QUERY_LAYERS:  consultarCapas,
							WIDTH:  alojamientos.map.size.w,
							HEIGHT:  alojamientos.map.size.h});
		OpenLayers.loadURL(urlElementos, '', this, setHTML);
		
		//x+1,y
		urlElementos= alojamientos.getFullRequestString({
							REQUEST: "GetFeatureInfo",
							EXCEPTIONS: "application/vnd.ogc.se_xml",
							BBOX:  alojamientos.map.getExtent().toBBOX(),
							X: e.xy.x+1,
							Y: e.xy.y,
							INFO_FORMAT: 'text/plain',
							QUERY_LAYERS:  consultarCapas,
							WIDTH:  alojamientos.map.size.w,
							HEIGHT:  alojamientos.map.size.h});
		OpenLayers.loadURL(urlElementos, '', this, setHTML);
		
		//x-1,y-1
		urlElementos= alojamientos.getFullRequestString({
							REQUEST: "GetFeatureInfo",
							EXCEPTIONS: "application/vnd.ogc.se_xml",
							BBOX:  alojamientos.map.getExtent().toBBOX(),
							X: e.xy.x-1,
							Y: e.xy.y-1,
							INFO_FORMAT: 'text/plain',
							QUERY_LAYERS:  consultarCapas,
							WIDTH:  alojamientos.map.size.w,
							HEIGHT:  alojamientos.map.size.h});
		OpenLayers.loadURL(urlElementos, '', this, setHTML);
		
		//x,y-1
		urlElementos= alojamientos.getFullRequestString({
							REQUEST: "GetFeatureInfo",
							EXCEPTIONS: "application/vnd.ogc.se_xml",
							BBOX:  alojamientos.map.getExtent().toBBOX(),
							X: e.xy.x,
							Y: e.xy.y-1,
							INFO_FORMAT: 'text/plain',
							QUERY_LAYERS:  consultarCapas,
							WIDTH:  alojamientos.map.size.w,
							HEIGHT:  alojamientos.map.size.h});
		OpenLayers.loadURL(urlElementos, '', this, setHTML);
		
		//x+1,y-1
		urlElementos= alojamientos.getFullRequestString({
							REQUEST: "GetFeatureInfo",
							EXCEPTIONS: "application/vnd.ogc.se_xml",
							BBOX:  alojamientos.map.getExtent().toBBOX(),
							X: e.xy.x+1,
							Y: e.xy.y-1,
							INFO_FORMAT: 'text/plain',
							QUERY_LAYERS:  consultarCapas,
							WIDTH:  alojamientos.map.size.w,
							HEIGHT:  alojamientos.map.size.h});
		OpenLayers.loadURL(urlElementos, '', this, setHTML);
		
		OpenLayers.Event.stop(e);
		});
		
	    function setHTML(response) {
			pixelConsultado+=1;
			var cadena=response.responseText;
			if(cadena.indexOf("Search returned no results")==-1)
			{
				cadena=trim(cadena.substring(cadena.indexOf("=")+1));
				cadena=cadena.substring(1);
				cadena=cadena.replace("'","");
				var codigo=cadena;
				
				if(cadenaCodigos.indexOf(codigo)==-1)
				{
					if(cadenaCodigos=="")
					{
						cadenaCodigos+="<<"+codigo+">>";
					}
					else
					{
						cadenaCodigos+=",<<"+codigo+">>";
					}
				}
			}
			
			if(pixelConsultado==9)
			{
				if(cadenaCodigos=="")
				{
					var listaElementos=document.getElementById("listadoElementos");
					var novoElemento = document.createElement('li');
					novoElemento.innerHTML="Search returned no results";
					listaElementos.appendChild(novoElemento);
					noResultados()
				}
				else
				{
					nombreElemento(cadenaCodigos);
				}
			}
    }
};

//***********************************************************************************************************************************************************************************************
//***********************************************************************************************************************************************************************************************

function trim(cadena)
{
	for(i=0; i<cadena.length; )
	{
		if(cadena.charAt(i)==" ")
			cadena=cadena.substring(i+1, cadena.length);
		else
			break;
	}

	for(i=cadena.length-1; i>=0; i=cadena.length-1)
	{
		if(cadena.charAt(i)==" ")
			cadena=cadena.substring(0,i);
		else
			break;
	}
	
	return cadena;
};

//***********************************************************************************************************************************************************************************************
//***********************************************************************************************************************************************************************************************

function eliminarNodos(padre)
{
	while(padre.hasChildNodes())
	{
		padre.removeChild(padre.lastChild);
	}
};

//***********************************************************************************************************************************************************************************************
//***********************************************************************************************************************************************************************************************

function nombreElemento(cadenaCodigos)
{
	cargandoElementos("mostrar");
	var url="nombreElemento.php?idioma=en-GB&cadenaCodigos="+cadenaCodigos;

	var nElemento=objetoAjax();
	nElemento.open("GET", url, true);
	nElemento.onreadystatechange=function() {
		if (nElemento.readyState==4) {
			cargandoElementos("ocultar");
			var listaElementos=document.getElementById("listadoElementos");
			var respuesta=nElemento.responseText;
			var arrayNodos=respuesta.split("<#nodo#>");
			
			var x=0;
			while (x <arrayNodos.length)
			{
				var novoElemento = document.createElement('li');
				novoElemento.innerHTML=arrayNodos[x];
				listaElementos.appendChild(novoElemento);
				x+=1;
			}
		}
	}
	nElemento.send(null)
};

//***********************************************************************************************************************************************************************************************
//***********************************************************************************************************************************************************************************************

function mostrarElemento(codigo, x, y)
{
	fichaElemento(codigo, x, y);
	galeriaElemento(codigo);
	var coordenadasElemento=new OpenLayers.LonLat(x,y);
	mapa.zoomToScale(5000);
	mapa.panTo(coordenadasElemento);
	
	//Y AÑADIMOS EL MARCADOR
	if(marcadores==null) 
	{
		marcadores = new OpenLayers.Layer.Markers( "Marcadores" );
		marcadores.displayInLayerSwitcher=false;
		mapa.addLayer(marcadores);
	}
	else
	{
		marcadores.removeMarker(marcadores.markers[0]);	
	}
	marcadores.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(x,y),icon));
	marcadores.markers[0].events.register('click', marcadores.markers[0], function(evt) { marcadores.removeMarker(marcadores.markers[0]); OpenLayers.Event.stop(evt); });
};

//***********************************************************************************************************************************************************************************************
//***********************************************************************************************************************************************************************************************

function fichaElemento(codigo, x, y)
{
	cargandoFicha("mostrar");
	var url="fichaElemento.php?idioma=en-GB&idElemento="+codigo+"&x="+x+"&y="+y;

	var fElemento=objetoAjax();
	fElemento.open("GET", url, true);
	fElemento.onreadystatechange=function() {
		if (fElemento.readyState==4) {
			cargandoFicha("ocultar");
			var respuesta=fElemento.responseText;
			var fichaElemento=document.getElementById("ficha");
			fichaElemento.innerHTML=respuesta;
		}
	}
	fElemento.send(null)
};

//***********************************************************************************************************************************************************************************************
//***********************************************************************************************************************************************************************************************

function galeriaElemento(codigo)
{
	cargandoGaleria("mostrar");
	
	var url="galeriaElemento.php?idioma=en-GB&idElemento="+codigo;

	var gElemento=objetoAjax();
	gElemento.open("GET", url, true);
	gElemento.onreadystatechange=function() {
		if (gElemento.readyState==4) {
			cargandoGaleria("ocultar");
			var respuesta=gElemento.responseText;
			var galeriaElemento=document.getElementById("galeria");
			galeriaElemento.innerHTML=respuesta;
		}
	}
	gElemento.send(null)
};

//***********************************************************************************************************************************************************************************************
//***********************************************************************************************************************************************************************************************

function cargandoElementos(accion)
{
	var listaElementos=document.getElementById("listadoElementos");
	if(accion=="mostrar")
	{
		var novoElemento = document.createElement('li');
		novoElemento.innerHTML="<img src=\"css/img/cargando.gif\" title=\"Cargando...\" />";
		listaElementos.appendChild(novoElemento);
	}
	else
	{
		eliminarNodos(listaElementos);
	}
};

//***********************************************************************************************************************************************************************************************
//***********************************************************************************************************************************************************************************************

function cargandoFicha(accion)
{
	var fichaElemento=document.getElementById("ficha");
	if(accion=="mostrar")
	{
		fichaElemento.innerHTML="<strong class=\"titulos\">SPECIFICATIONS</strong></br><img src=\"css/img/cargando.gif\" title=\"Cargando...\" />";
	}
	else
	{
		fichaElemento.innerHTML="<strong class=\"titulos\">SPECIFICATIONS</strong>";
	}
};

//***********************************************************************************************************************************************************************************************
//***********************************************************************************************************************************************************************************************

function cargandoGaleria(accion)
{
	var galeriaElemento=document.getElementById("galeria");
	if(accion=="mostrar")
	{
		galeriaElemento.innerHTML="<strong class=\"titulos\">GALLERY</strong></br><img src=\"css/img/cargando.gif\" title=\"Cargando...\" />";
	}
	else
	{
		galeriaElemento.innerHTML="<strong class=\"titulos\">GALLERY</strong>";
	}
};

//***********************************************************************************************************************************************************************************************
//***********************************************************************************************************************************************************************************************

function noResultados()
{
	var fichaElemento=document.getElementById("ficha");
	fichaElemento.innerHTML="<strong class=\"titulos\">SPECIFICATIONS</strong>";
	var galeriaElemento=document.getElementById("galeria");
	galeriaElemento.innerHTML="<strong class=\"titulos\">GALLERY</strong>";
}

//***********************************************************************************************************************************************************************************************
//***********************************************************************************************************************************************************************************************

function ficha2Tomtom(idElemento)
{
	var nombreArchivo=prompt("Introduzca un nombre para el archivo de PDI's","punto");
	if((nombreArchivo=="")||(nombreArchivo==null))
	{
		alert("Procedimento abortado");
	}
	else
	{
		//MSG
		document.getElementById("msgExportar").innerHTML="Exporting..."; 
		//
		var url;
		url="ficha2tomtom.php?idElemento="+idElemento+"&nombreArchivo="+nombreArchivo+"&idioma=es-ES";
		f2T=objetoAjax();
		f2T.open("GET", url);
		f2T.onreadystatechange=function() {
			switch (f2T.readyState){
	            case 4:
	                if(f2T.status==200)
	                {	
					//MSG	
					document.getElementById("msgExportar").innerHTML="OK.";
					//
					var respuesta=f2T.responseText;
					//alert(respuesta);
					var inicioCadena=respuesta.indexOf("<##_NAT_##>", 0);
					var finCadena=respuesta.indexOf("</##_NAT_##>", 0);
					var archivoPoi=respuesta.substring(inicioCadena + 11, finCadena);
					descargarPoi(archivoPoi, nombreArchivo);
					}
					break;
			}
		}
		f2T.send(null);
	}
}

//***********************************************************************************************************************************************************************************************
//***********************************************************************************************************************************************************************************************

function descargarPoi(archivo, nombreArchivo)
{
	//MSG
	document.getElementById("msgExportar").innerHTML="Preparing download...";
	//
	var url;
	url="descargarPoi.php?archivo="+archivo+"&nombreArchivo="+nombreArchivo;
	dPoi=objetoAjax();
	dPoi.open("GET", url);
	dPoi.onreadystatechange=function() {
		switch (dPoi.readyState){
            case 4:
                if(dPoi.status==200)
                {	
					//MSG
					document.getElementById("msgExportar").innerHTML="";
			        //
					var respuesta=dPoi.responseText;
					location.href=respuesta;
	            }
	            break;
		}
	}
	dPoi.send(null)
}

