﻿//This file created by Barry Hunter www.nearby.org.uk (c) July 2007
var map;

//the ajax request object
var request;

//the 'dafault' icon
var baseicon;

//array of markers so we can keep track of which to remove
var marks = new Array();

//shortcut to the message div
var m;

//is the a fetch in progress?
var running = false;

//these are for zoomin optimization (if prev zoom had all markers then no need to load them again for zooming in)
var prevZoom = -1;
var shownall = false;
var sentBounds = '';

/* El directorio de las imágenes desde donde se sacarán los iconos */
var urlDirectorioIconos;

function createMarker(point,Nom_masa,Cod_masa_dem_r,id,Lat,Lon,categoria) 
{
	ii = new GIcon(baseicon);
	if (categoria != null)
	{
		ii.image = urlDirectorioIconos + categoria + ".png";
		ii.shadow = urlDirectorioIconos + "shadow.png";
	}
	var marker = new GMarker(point,ii);
	var html = '<div><a onclick="Redireccionar(' + id + ',' + Lat + ',' + Lon + ')">'+ Cod_masa_dem_r +'</a></div><div><a onclick="Redireccionar(' + id + ',' + Lat + ',' + Lon + ')">'+Nom_masa+'</a></div>';
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(html);
	});
	return marker;
}

function Redireccionar(id,latitud,longitud)
{
	var selectedMapType=-1;
	var tipo = map.getCurrentMapType().getName()
	switch(tipo)
	{
		case "Normal": selectedMapType = 0; break;
		case "CHE": selectedMapType = 1; break;
		case "CHE+Hib.": selectedMapType = 2; break;
	}
	location.href ="./wbfDetalleMasa.aspx?IdMSPF=" + id + "&Zoom=" + map.getZoomLevel() + "&Lat=" + latitud + "&Lon=" + longitud + "&TipoMapa=" + selectedMapType;
}

function CambiarTipoMapaYZoom(TipoMapa,Zoom,Lat,Lon,TipoMapa)
{
	map.setCenter(new GLatLng(Lat,Lon), Zoom);
	while(map.getZoomLevel() > Zoom)
	{
		map.zoomIn();
	}
	while(map.getZoomLevel() < Zoom)
	{
		map.zoomOut();
	}
	var a = map.getMapTypes();
	map.setMapType(a[TipoMapa]);
}
function clear_map() {
	map.clearOverlays();
	marks = new Array();
	m.innerHTML = "Mostrando 0 masas";
}
function update_map(filtrarPor,filtro,CodMinimo,NbMinimo,NbMaximo,IdMinimo,IdMaximo,urlIconos) {
	if (running) {
		request.abort();
		running = false;
	}
	if (shownall == false || map.getZoomLevel() >= prevZoom) {
		var bounds = map.getBoundsLatLng();
		var center = map.getCenterLatLng();
		var zoom = map.getZoomLevel();

		sentBounds = bounds.toString();
		
	    //setup links that utalise the current map location
		
		
		var url;
		
		if (filtro=='')
		{
			url = "wbfListadoPuntosXML.aspx?filtro=";
		}
		else
		{
			url = "wbfListadoPuntosXML.aspx?filtro=" + filtro + "&filtrarPor=" + filtrarPor + "&CodMinimo=" + CodMinimo + "&NbMinimo=" + NbMinimo + "&NbMaximo=" + NbMaximo + "&IdMinimo=" + IdMinimo + "&IdMaximo=" + IdMaximo ;             
		}
		//Nota de LLT: Esto del random es porque el ie lo cachea y luego no recarga la url.
		url = url + "&Random=" + Math.random();
		
		request = GXmlHttp.create();
		
		request.open("GET",url, true);

		request.onreadystatechange = function() {

			if (request.readyState == 4 && running) {
				m.innerHTML = "Analizando información XML..";
				var xmlDoc = request.responseXML;
				
				if (!xmlDoc.documentElement) {
					m.innerHTML = "Error: Incapaz de analizar la información XML";
					running = false;
					return;
				}
				
				var markers = xmlDoc.documentElement.getElementsByTagName("Table");   
			
                               
				//flag all current markers as old
				for (i in marks)
				{
					if (marks[i] != null) 
					{
						marks[i].old = true;
					}
				}
				m.innerHTML = "Añadiendo Masas...";
				for (var i = 0; i < markers.length; i++) {
					
					id = markers[i].getAttribute("IdMSPF");
					
					if (marks[id] && marks[id] != null) {
						//we have this one so lets flag it as valid
						marks[id].old = false;
						
					} else {
						urlDirectorioIconos = urlIconos;
						var point = new GPoint(parseFloat(markers[i].getAttribute("Longitud")), parseFloat(markers[i].getAttribute("Latitud")));
						//add any extra fields to this line
						marks[id] = createMarker(point,markers[i].getAttribute("Nom_masa"),markers[i].getAttribute("Cod_masa_dem_r"),id,markers[i].getAttribute("Latitud"),markers[i].getAttribute("Longitud"),markers[i].getAttribute("Nom_categ"));
						map.addOverlay(marks[id]); 
					}
				}
				
				m.innerHTML = "Quitando las masas viejas...";
				for (i in marks) 
					if (marks[i] != null) 
						if (marks[i].old == true) {
							map.removeOverlay(marks[i]);
							marks[i] = null; //marks.splice(i,1);
						}

				m.innerHTML = "Mostrando " + markers.length + " masas";
				shownall = true;
				running = false;
			}
		}//end function
		m.innerHTML = "Solicitando resultados...";
		running = true;
		request.send(null);
	}
	prevZoom = map.getZoomLevel();
}
