// JavaScript Document
var points = [];
var xmlDoc;
var map;

// Funci?n que crea el mapa con la vista de sat?lite
function crearMapa( recorrido )
{
	if (GBrowserIsCompatible())
	{
		map = new GMap2(document.getElementById("map"));
    map.setCenter(new GLatLng(41.636672973632812,-0.89662998914718628), 14);
		map.setMapType(G_SATELLITE_MAP);
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());

		if( recorrido != "" )
		{
			recorrido = "recorridos/" + recorrido + ".xml";
			loadXML( recorrido );
		}
		else
		{
			var marker = new GMarker(map.getCenter());
			GEvent.addListener(marker, "click",function(){
				marker.openInfoWindowHtml("<b>&#161;Bienvenidos a nuestro punto de reuni?n&#33;<b>");
			});
			map.addOverlay(marker);
		}
//		map.addControl(new GOverwiewMapControl());
	}
	else
		alert("Browser es demasiado antiguo");
}

function loadXML( recorrido )
{
//load xml file
// code for IE
	if (window.ActiveXObject)
	{
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async=false;
		xmlDoc.load( recorrido );
		cargarDatos();
	}
	// code for Mozilla, Firefox, Opera, etc.
	else if (document.implementation && document.implementation.createDocument)
	{
		xmlDoc=document.implementation.createDocument("","",null);
		xmlDoc.load( recorrido );
		xmlDoc.onload=cargarDatos;
	}
	else
	{
		alert('Your browser cannot handle this script');
	}
}

function cargarDatos()
{
	var latMinina;
	var latMaxima;
	var lonMinina;
	var lonMaxima;
	var latitud;
	var longitud;
	var attlist;
	var ptosKm = [];
	var horaInicio;
	var horaActual;

		// Create our "tiny" marker icon
		var icon = new GIcon();
		icon.image = "iconos/poste0.png";
		icon.iconSize = new GSize(16, 22);
		icon.iconAnchor = new GPoint(8, 11);
//		icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
//		icon.shadowSize = new GSize(22, 20);
//		icon.infoWindowAnchor = new GPoint(5, 1);

	// Recupero el recorrido realizado
	var trkpt=xmlDoc.documentElement.getElementsByTagName("trkpt");

    //Inicializo los maximos y minimos
	attlist=trkpt[0].attributes;
	latMinima=attlist.getNamedItem("lat").value;
	latCenter = latMinima;
//	latMaxima = latMinima;
	lonMinima=attlist.getNamedItem("lon").value;
	lonCenter = lonMinima;
//	lonMaxima = lonMinima;
	map.addOverlay(new GMarker(new GLatLng(latMinima, lonMinima), icon));

	var numKm = 1;
	var paso = 0.0;
	var distancia = 0.0;
	var distanciaTotal = 0.0;
	var lat1 = latMinima;
	var lon1 = lonMinima;

	for( var i=1; i < trkpt.length; i++)
	{
		attlist = trkpt.item(i).attributes;
		latitud = attlist.getNamedItem("lat").value;
		longitud = attlist.getNamedItem("lon").value;
		points.push(new GLatLng(latitud, longitud));
		
//		if( latitud < latMinima )
//			latMinima = latitud;

//		if( latitud > latMaxima )
//			latMaxima = latitud;

//		if( longitud < lonMinima )
//			lonMinima = longitud;

//		if( longitud > lonMaxima )
//			lonMaxima=longitud;		

		// Calculo los puntos kilometricos
		paso = calcularDistancia( lat1, lon1, latitud, longitud );
		distancia += paso;
		distanciaTotal += paso;
		lat1 = latitud;
		lon1 = longitud;
		if( distancia >= 1000.0 )
		{
			icon.image = "iconos/poste" + numKm + ".png";
			map.addOverlay(new GMarker(new GLatLng(latitud,longitud), icon));
			distancia = 0.0;
			numKm += 1;
		}
	}

//	var latCenter = (parseFloat(latMaxima) + parseFloat(latMinima))/2.0;
//	var lonCenter = (parseFloat(lonMaxima) + parseFloat(lonMinima))/2.0;

	window.setTimeout(function() {
		map.panTo(new GLatLng(latCenter, lonCenter));
	}, 1000);	
	map.addOverlay(new GPolyline(points));

	//Informa la distancia total del recorrido
	var distTotal = distanciaTotal.toString();
	var punto = distTotal.indexOf(".");
	var distancia;
	if( punto == -1 )
		distancia = distTotal;
	else
		distancia = distTotal.substring(0, punto);

	document.getElementById("distancia").innerHTML = distancia;

	//Recupera e informa el nombre del recorrido
	if (window.ActiveXObject)
		attlist = xmlDoc.documentElement.childNodes[0].childNodes[0].attributes;
	else
		attlist = xmlDoc.documentElement.childNodes[1].childNodes[1].attributes;

	var recorrido = attlist.getNamedItem("location").value;
	document.getElementById("recorrido").innerHTML = recorrido;
	// Fin textos	
}

// A esta funcion le paso las coordenadas de los puntos inicio y fin y devuelve la distancia en metros
function calcularDistancia( latitud1, longitud1, latitud2, longitud2 )
{
	var dist = 0.0;
	var lat1 = latitud1 * Math.PI / 180.0;
	var lon1 = longitud1 * Math.PI / 180.0;
	var lat2 = latitud2 * Math.PI / 180.0;
	var lon2 = longitud2 * Math.PI / 180.0;
	dist = 6371000 * Math.acos(Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1) );
	return dist;
}

