﻿
function InicializarListas ()
{
	var listaIDs= new Array (0);
	for (i= 0; i < marcadores.length; i++) {
		listaIDs= listaIDs.concat (marcadores[i]["listaIds"]);
	}
	var scr= document.getElementById ("ScriptGis");
	scr.type = "text/javascript";
	scr.src = "http://services.sapo.pt/GIS/GetPOIByBoundingBoxJSON" +
		"?latitude1=" + mapa1.getBounds ().top + 
		"&latitude2=" + mapa1.getBounds ().bottom + 
		"&longitude1=" + mapa1.getBounds ().left + 
		"&longitude2=" + mapa1.getBounds ().right + 
		"&categoryId=" + listaIDs.toString() + 
		"&matchlevelId=" + "10" + 
		"&trustlevelId=" + "100" +
		"&pageNumber=" + "1" +
		"&recordsPerPage=" + "100" +
		"&jsonCallback=" + "RetornoGIS";
	
	var divJs= document.getElementById ("divJS");
	divJs.appendChild (scr);
}

function RetornoGIS (obj)
{
	if (obj == null
		|| obj.GetPOIByBoundingBoxResponse == null
		|| obj.GetPOIByBoundingBoxResponse.GetPOIByBoundingBoxResult == null
		|| obj.GetPOIByBoundingBoxResponse.GetPOIByBoundingBoxResult.POI == null)
	{
		return;
	}

	var listaPOIs = obj.GetPOIByBoundingBoxResponse.GetPOIByBoundingBoxResult.POI;
	for (iPOI = 0; iPOI < listaPOIs.length; iPOI++) {
		for (iMarcador= 0; iMarcador < marcadores.length; iMarcador++) {
			for (iIdCat= 0; iIdCat < marcadores[iMarcador]["listaIds"].length; iIdCat++) {
				if (marcadores[iMarcador]["listaIds"][iIdCat] == listaPOIs[iPOI]["CategoryId"]) {
					marcadores[iMarcador]["lista"].push (listaPOIs[iPOI]);
				}
			}
		}
	}
	for (i= 0; i < marcadores.length; i++) {
		PreencherNumero (i);
	}
	InserirPOIs();
}

function InserirPOIs ()
{
	for (i= 0; i < marcadores.length; i++)
	{
		if (marcadores[i]["lista"] != null)
		{
			var markers = new SAPO.Maps.Markers (marcadores[i]["titulo"]);
			marcadores[i].markers = markers;
			
			var lista= marcadores[i]["lista"];
			for (ii= 0; ii < lista.length; ii++)
			{
				var desc= "<b>" + lista[ii]["Name"] + "</b><br/>" + 
					"(" + lista[ii]["Category"] + ")";
				if (lista[ii]["Description"] != null) {
					desc += "<br/><div style='width:180px;'>" + lista[ii]["Description"] + "</div>";
				}
				var marcador = new SAPO.Maps.Marker (
					new OpenLayers.LonLat (lista[ii]["Longitude"], lista[ii]["Latitude"]), 
					{
						draggable: false,
						popupAnchor: new OpenLayers.Pixel (0, (marcadores[i]["icone"].iconSize.height/2)*-1)
					},
					{
						markerImage: marcadores[i]["icone"].image,
						size: new OpenLayers.Size (marcadores[i]["icone"].iconSize.width,
							marcadores[i]["icone"].iconSize.height),
						markerAnchor: new OpenLayers.Pixel ((marcadores[i]["icone"].iconSize.width/2)*-1, (marcadores[i]["icone"].iconSize.height/2)*-1)
					}
				);
				marcador.texto = desc;
				marcador.registerEvent ("mouseover", this, function() { mapa1.div.style.cursor = "pointer"; });
				marcador.registerEvent ("mouseout", this, function() { mapa1.div.style.cursor = ""; });
				marcador.registerEvent ("click", this, MostrarPopup);
				marcadores[i].listaMarkers.push (marcador);
			}
			
			marcadores[i].noMapa = true;
			mapa1.addMarkers (marcadores[i].markers);
			marcadores[i].markers.addMarkers (marcadores[i].listaMarkers);
		}
	}
	RefrescarMarcadorCentral();
}

function chk_onclick (obj)
{
	for (i= 0; i < marcadores.length; i++)
	{
		if ("chk" + marcadores[i]["titulo"] == obj.id)
		{
			if (marcadores[i].markers != null)
			{
				if (obj.checked)
				{
					if (!marcadores[i].noMapa)
					{
						marcadores[i].noMapa = true;
						marcadores[i].markers = new SAPO.Maps.Markers();
						marcadores[i].markers.addMarkers(marcadores[i].listaMarkers);
						mapa1.addMarkers (marcadores[i].markers);
						RefrescarMarcadorCentral();
					}
				}
				else
				{
					if (marcadores[i].noMapa)
					{
						marcadores[i].noMapa = false;
						mapa1.removeMarkers (marcadores[i].markers);
					}
				}
			}
		}
	}
}

function PreencherNumero (i)
{
	var span= document.getElementById ("sp" + marcadores[i]["titulo"]);
	if (marcadores[i]["lista"] != null)
	{
		if (marcadores[i]["lista"].length >= 0)
		{
			span.innerHTML= "(" + 
				marcadores[i]["lista"].length +
				")";
		}
		else
		{
			span.innerHTML= "(0)";
		}
	}
}

function AbrirMapa ()
{
	document.getElementById ('MapaSapoGIS').style.display= '';
}

function MostrarPopup (marcador)
{
	if (marcador.hasOpenedPopup())
	{
		if (marcadorComPopup !== undefined && marcadorComPopup.hasOpenedPopup())
		{
			marcadorComPopup.closePopup();
		}
		marcador.closePopup();
	}
	else
	{
		if (marcadorComPopup !== undefined && marcadorComPopup.hasOpenedPopup())
		{
			marcadorComPopup.closePopup();
		}
		marcador.openPopup (marcador.texto);
	}
	
	marcadorComPopup= marcador;
}
