// -----------------------------------------------------------------------------------------------
//	Archivo: map.js
//	Tipo   : Javascript
//	Autor  : Javi Urrutia
//  Fecha  : 08.12.2007
//	Versión: 2.2
//	Objeto : Trabajo con el Mapa Google Map
// -----------------------------------------------------------------------------------------------

// El mapa es global
var map=null;
var id=getParameter('numero');
var pais=getParameter('pais');


// Arrays de Waypoints y TrackPoints
var wayPointIndex=0;
var trackPointIndex=0;

var waypoint=new Array();
var trackpoint=new Array();
var track=new Array();

var addMode="waypoints"; // Por defecto se añaden waypoints al hacer click sobre la imagen

window.onload=function ()
{

      if (GBrowserIsCompatible())
      {

        map = new GMap2(document.getElementById("map"));

        var point=new GLatLng(puntoGoogleMap.latitude,puntoGoogleMap.longitude);
        map.setCenter(point, 13);

        // Elimina el mapa Híbrico e introduce el mapa Terreno
        map.removeMapType(G_HYBRID_MAP);
        map.addMapType(G_PHYSICAL_MAP);
        // Seleccionar el mapa predeterminado
       if (puntoGoogleMap.loadTrack)
            map.setMapType(G_SATELLITE_MAP);
        else
            map.setMapType(G_PHYSICAL_MAP);

        // Crea el botón Guardar
        createSaveButton();
        // Crear botones para añadir waypoints y tracks
        createAddButtons();

        // Crea el indicador de distancia
        createDistance();


        // Añade controles al mapa
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());

        // Añade evento mousemove al mapa
         GEvent.addListener(map, "mousemove", function(point)
         {
            var deg2rad=Math.PI/180.0;
            var rad2deg=1/deg2rad;
            var lat1=puntoGoogleMap.latitude*deg2rad;
            var lon1=puntoGoogleMap.longitude*deg2rad;
            var lat2=point.y*deg2rad;
            var lon2=point.x*deg2rad;
            var k=111.3;
            var zoomFactor=map.getZoom()/13;
            var distancia=zoomFactor*k*rad2deg*Math.acos(Math.cos(90-lat1)*Math.cos(90-lat2)+Math.sin(90-lat1)*Math.sin(90-lat2)*Math.cos(lon1-lon2));
            var distanciaRedondeada=Math.round(distancia * Math.pow(10, 3)) / Math.pow(10, 3);

            var distancia=document.getElementById('distance');
            distancia.innerHTML="Distancia : "+distanciaRedondeada+" Km.";

            if( map.getCurrentMapType()==G_SATELLITE_MAP)
                distancia.style.color="yellow";
            else
                distancia.style.color="black";
         }
         );


        if (puntoGoogleMap.loadTrack)
        {
            var point=new GLatLng(puntoGoogleMap.latitude,puntoGoogleMap.longitude);
            var marker=createMarker(point,puntoGoogleMap.name,id,pais);
            map.addOverlay(marker);
            var gx = new GGeoXml("http://www.mendikat.net/modules.php?name=tracks&id="+puntoGoogleMap.track+"&op=kml");
            map.addOverlay(gx);
        }
        else
        {
            // Obtiene los picos cercanos
            getPeaks();
        }

        if (puntoGoogleMap.isImage)
        {

            var icon = new GIcon(G_DEFAULT_ICON);
            icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
            icon.infoWindowAnchor = new GPoint(0, 0);
            icon.infoShadowAnchor = new GPoint(0, 0);
            var point=new GLatLng(puntoGoogleMap.latitude,puntoGoogleMap.longitude);
            var marker= new GMarker(point,icon);
            GEvent.addListener(marker, "click", function() {
                marker.openInfoWindowHtml(puntoGoogleMap.image);
            });

            map.addOverlay(marker);

        }

         // Añade evento click al mapa

         GEvent.addListener(map, "click", function(overlay,point)
         {
            if (!overlay)
            {
              if (addMode=="waypoints")
              {
                  wayPointIndex++;
                  map.addOverlay(createWayPoint(point,wayPointIndex));
              }
              else
              {
                  trackPointIndex++;
                  map.addOverlay(createTrackPoint(point,trackPointIndex));
              }
            }
         }
         );

         // Añade evento dragend al mapa

         GEvent.addListener(map, "dragend", function()
         {
            if (!puntoGoogleMap.loadTrack)
            {
                getPeaks();
            }
         }
         );


      }
};


function getPeaks(lat,lon)
{

    var marker = map.getFirstMarker();
    while (marker != null)
    {
	    if(marker.getId()>1000) map.removeOverlay(marker);
	    marker = map.getNextMarker();
    }


    var center=map.getCenter();
    var lat=Math.round(center.lat()*10)/10;
    var lon=Math.round(center.lng()*10)/10;

    var request = GXmlHttp.create();
    var url="ajax.php?file=obtenerMarcadores&lat="+lat+"&lon="+lon;
    request.open("GET", url, true);
    request.onreadystatechange = function()
    {
      if (request.readyState == 4)
      {
          var xmlDoc = request.responseXML;
          var markers =xmlDoc.documentElement.getElementsByTagName("marker");
          for (var i = 0; i < markers.length; i++)
          {
            var id=markers[i].getAttribute("id");
            var country=markers[i].getAttribute("country");
            var lat=parseFloat(markers[i].getAttribute("lat"));
            var lon=parseFloat(markers[i].getAttribute("lon"));
            var label=markers[i].getAttribute("label");
            var point = new GLatLng(lat,lon);
            var marker = createMarker(point,label,id,country);

            map.addOverlay(marker);

          }
      }
    }
    request.send(null);
}


function createMarker(point,name,id,country)
{
    //  Crea un icono
    var baseIcon = new GIcon();
    baseIcon.image = "/javascript/images/peak.png";
    baseIcon.iconSize = new GSize(24, 24);
    baseIcon.iconAnchor = new GPoint(12, 12);
    baseIcon.infoWindowAnchor = new GPoint(0, 0);
    baseIcon.infoShadowAnchor = new GPoint(0, 0);

    var marker = new PdMarker(point,baseIcon);
    marker.setTooltip(name);
    marker.setTooltipHiding(false);
    marker.setId(marker.getId()+1000);

    if (id==undefined) return marker;

    GEvent.addListener(marker, "click", function() {

        var request = GXmlHttp.create();
        var url="ajax.php?file=obtenerMonte&id="+id+"&pais="+country;
        request.open("GET", url, true);
        request.onreadystatechange = function()
        {
          if (request.readyState == 4)
          {
              var response = request.responseText;
              marker.openInfoWindowHtml(response);
          }
          else
          {
               marker.openInfoWindowHtml("Obteniendo datos...<br/><img src='images/loading.gif'/>");
          }
        }
        request.send(null);


    });

    return marker;
}


// Crea un marcador en el punto especificado

function createWayPoint(point, index)
{

  var baseIcon = new GIcon();
  baseIcon.image = "/javascript/images/point.png";
  baseIcon.iconSize = new GSize(24, 24);
  baseIcon.iconAnchor = new GPoint(8,24);
  baseIcon.infoWindowAnchor = new GPoint(9,22);
  baseIcon.infoShadowAnchor = new GPoint(18, 12);


  // Crea un nuevo marcador con un índice determinado
  // Estas variables son globales para su acceso desde el Evento Click de marker
  waypoint[index] = new GMarker(point, baseIcon);
  waypoint[index].index=index;
  waypoint[index].latitude=point.y;
  waypoint[index].longitude=point.x;
  waypoint[index].name="";
  waypoint[index].comment="";
  getAltitude(waypoint[index]);
  waypoint[index].active=true;
  waypoint[index].type="waypoint";

  GEvent.addListener(waypoint[index], "click", function() {

    var utmPosition=toUtm(point.y,point.x,puntoGoogleMap.datum);

    waypoint[index].openInfoWindowHtml("<table><tr><td colspan='2'><b>WayPoint núm. "+index+"</b></td></tr>"+
                              "<tr><td colspan='2'><font color='#0000FF'>"+utmPosition+"</font></td></tr>"+
                              "<tr><td>Nombre :</td><td> <input id='wptName' type='text' maxlength='10' size='20' value='"+waypoint[index].name+"'></td></tr>"+
                              "<tr><td>Comentario :</td><td> <input id='wptComment' type='text' maxlength='30' size='20' value='"+waypoint[index].comment+"'></td></tr>"+
                              "<tr><td>Altitud :</td><td> <input id='wptAltitude' type='text' maxlength='4' size='20' value='"+waypoint[index].altitude+"'></td></tr>"+
                              "<tr><td colspan='2' align='right'><input onclick='removeMarker(waypoint["+index+"])' type='button' value='Eliminar'>"+
                              "&nbsp;&nbsp;<input onclick='map.closeInfoWindow()' type='button' value='Aceptar'></td></tr>"+
                              "</table>"
                              );
  });

  GEvent.addListener(waypoint[index], "infowindowbeforeclose", function() {
        waypoint[index].name=document.getElementById('wptName').value.replace(",","_");
        waypoint[index].comment=document.getElementById('wptComment').value.replace(",","_");
        waypoint[index].altitude=document.getElementById('wptAltitude').value;
  }
  );

  return waypoint[index];

}

// Obtiene la altitud de un punto

function getAltitude(point)
{

  var latitudRedondeada=Math.round(point.latitude*10000)/10000;
  var longitudRedondeada=Math.round(point.longitude*10000)/10000;
  var url = '/ajax/obtenerAltitud.php?lat='+latitudRedondeada+'&lon='+longitudRedondeada;
  GDownloadUrl(url, function(data, responseCode){
          if(data=="-32768")
          {
	    	var retval = 0;
    	  }
          else
          {
		    var retval = data;
	      }

          point.altitude=retval;
        });

}

function createTrackPoint(point, index)
{

  var baseIcon = new GIcon();
  baseIcon.image = "/javascript/images/trackPoint.png";
  baseIcon.iconSize = new GSize(24, 24);
  baseIcon.iconAnchor = new GPoint(12,12);
  baseIcon.infoWindowAnchor = new GPoint(9,22);
  baseIcon.infoShadowAnchor = new GPoint(18, 12);

  // Crea un nuevo marcador con un índice determinado
  trackpoint[index] = new GMarker(point, baseIcon);
  trackpoint[index].index=index;
  trackpoint[index].latitude=point.y;
  trackpoint[index].longitude=point.x;
  getAltitude(trackpoint[index]);
  var hoy=new Date();
  var dia=((hoy.getDate()<10)?"0":"")+hoy.getDate();
  var meses=["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"];
  var mes=meses[hoy.getMonth()];
  var ano=hoy.getFullYear().toString().substring(2,4);
  var fecha=dia+"-"+mes+"-"+ano;
  trackpoint[index].date=fecha;
  var horas=((hoy.getHours()<10)?"0":"")+hoy.getHours();
  var minutos=((hoy.getMinutes()<10)?"0":"")+hoy.getMinutes();
  var segundos=((hoy.getSeconds()<10)?"0":"")+hoy.getSeconds();
  trackpoint[index].time=horas+":"+minutos+":"+segundos;
  trackpoint[index].active=true;
  trackpoint[index].type="trackpoint";

  // Encontrar el punto de Track anterior e indicar el posterior
  var j=index-1;

  trackpoint[index].previous=null;
  trackpoint[index].next=null;

  while(trackpoint[index].previous==null )
  {
      if (j==0) break;
      if (trackpoint[j])
      {
        if (trackpoint[j].active)
        {
            trackpoint[index].previous=trackpoint[j];
            trackpoint[j].next=trackpoint[index];
            break;
        }
      }
      j--;
  }

  GEvent.addListener(trackpoint[index], "click", function() {

    var utmPosition=toUtm(point.y,point.x,puntoGoogleMap.datum);

    trackpoint[index].openInfoWindowHtml("<table><tr><td colspan='2'><b>Punto de Track núm. "+index+"</b></td></tr>"+
                              "<tr><td colspan='2'><font color='#0000FF'>"+utmPosition+"</font> <font color='#00AABB'>("+trackpoint[index].altitude+" m.)</font></td></tr>"+
                              "<tr><td colspan='2' align='right'><input onclick='removeMarker(trackpoint["+index+"])' type='button' value='Eliminar'>"+
                              "&nbsp;&nbsp;<input onclick='map.closeInfoWindow()' type='button' value='Aceptar'></td></tr>"+
                              "</table>"
                              );
  });

  // Crea al trazo
  if (trackpoint[index].previous)
  {
    createLine(trackpoint[index].previous,trackpoint[index]);
  }

  return trackpoint[index];

}

// Crea un Trazo entre dos TrackPoints
function createLine(startPoint,endPoint)
{
    var points=new Array();
    points[0]=new GLatLng(startPoint.latitude,startPoint.longitude);
    points[1]=new GLatLng(endPoint.latitude,endPoint.longitude);

    track[endPoint.index]=new GPolyline(points,"#F7B30F",3,.5);
    map.addOverlay(track[endPoint.index]);
}

// Borra un marcador
function removeMarker(overlay)
{
    map.closeInfoWindow();

    if(overlay.type=="trackpoint")
    {
        if (!overlay.previous && overlay.next)
        {
            overlay.next.previous=null;
            map.removeOverlay(track[overlay.next.index]);
        }
        if (overlay.previous && overlay.next)
        {
              map.removeOverlay(track[overlay.index]);
              map.removeOverlay(track[overlay.next.index]);
              createLine(overlay.previous,overlay.next);

              overlay.previous.next=overlay.next;
              overlay.next.previous=overlay.previous;

        }
        if (overlay.previous && !overlay.next)
        {
            overlay.previous.next=null;
            map.removeOverlay(track[overlay.index]);
        }

    }

    overlay.active=false;
    map.removeOverlay(overlay);

}

// Convierte Coordenadas Geográficas en UTM

function toUtm(latitud,longitud,datum)
{

	var deg2rad=Math.PI/180.0;

    // Parámetros del elipsoide
    var a,f;
    if (datum=="WGS84")
    {
        a = 6378137.0;
	    f=	1/298.257223563;
    }
    else if (datum=="ED50")
    {
	    a = 6378388.0;
		f=1/297.0;
    }

    // Calcula los restantes parámetros
    var b=a*(1-f);
    var c=a*a/b;
    var e2=1-Math.pow(b/a,2);
    var e=Math.sqrt(e2);
    var ep2=Math.pow(a/b,2)-1;
    var ep =Math.sqrt(ep2);

	var eprima =ep2;

	var k0 = 0.9996;
	var long2 = ((longitud + 180) - Math.floor((longitud + 180) / 360) * 360 - 180);
	var zona = (Math.floor((long2 + 180) / 6) + 1);

	var latitudRad = latitud * deg2rad;
	var longitudRad = long2 * deg2rad;

	if ((latitud >= 56) && (latitud < 64) && (long2 >= 3) && (long2 < 12)) zona = 32;
	if ((latitud >= 72) && (latitud < 84))
	{
		if ((long2 >= 0) && (long2 < 9))
			zona = 31;
		else if ((long2 >= 9) && (long2 < 21))
			zona = 33;
		else if ((long2 >= 21) && (long2 < 33))
			zona = 35;
		else if ((long2 >= 33) && (long2 < 42))
			zona = 37;
	}

	var longOrigin = (zona - 1) * 6 - 180 + 3;
	var longOriginRad = longOrigin * deg2rad;
	var deltalong=longitudRad-longOriginRad;

	// Proceso de cálculo
	var A= Math.cos(latitudRad)*Math.sin(deltalong);
	var e= Math.log((1+A)/(1-A))/2;
	var n= Math.atan(Math.tan(latitudRad)/Math.cos(deltalong))-latitudRad;
	var v= k0*c/Math.sqrt(1+eprima*Math.cos(latitudRad)*Math.cos(latitudRad));
	var s= eprima*Math.pow(e*Math.cos(latitudRad),2)/2;
	var A1=Math.sin(2*latitudRad);
	var A2=A1*Math.cos(latitudRad)*Math.cos(latitudRad);
	var J2=latitudRad+A1/2;
	var J4=(3*J2+A2)/4;
	var J6=(5*J4+A2*Math.cos(latitudRad)*Math.cos(latitudRad))/3;
	var alfa=3*eprima/4;
	var beta=5*alfa*alfa/3;
	var gamma=35*alfa*alfa*alfa/27;
	var betaPhi=k0*c*(latitudRad-alfa*J2+beta*J4-gamma*J6);

	var x=Math.round(e*v*(1+s/3)+500000);
	var y=Math.round(n*v*(1+s)+betaPhi);

	if (latitud < 0) y+= 10000000; // Expresión de coordenada Y para el hemisferio Sur

	// Obtención de la zona UTM
	var zonaUtm = zona+ getUtmLetter(latitud);
    var posicionUtm=datum+" "+zonaUtm+" "+x+" "+y;

	return posicionUtm;
}

function getUtmLetter(latitud)
{
	var letraUtm="";

	if ((84 >= latitud) && (latitud >= 72))
		letraUtm = "X";
	else if ((72 > latitud) && (latitud >= 64))
		letraUtm = "W";
	else if ((64 > latitud) && (latitud >= 56))
		letraUtm = "V";
	else if ((56 > latitud) && (latitud >= 48))
		letraUtm = "U";
	else if ((48 > latitud) && (latitud >= 40))
		letraUtm = "T";
	else if ((40 > latitud) && (latitud >= 32))
		letraUtm = "S";
	else if ((32 > latitud) && (latitud >= 24))
		letraUtm = "R";
	else if ((24 > latitud) && (latitud >= 16))
		letraUtm = "Q";
	else if ((16 > latitud) && (latitud >= 8))
		letraUtm = "P";
	else if ((8 > latitud) && (latitud >= 0))
		letraUtm = "N";
	else if ((0 > latitud) && (latitud >= -8))
		letraUtm = "M";
	else if ((-8 > latitud) && (latitud >= -16))
		letraUtm = "L";
	else if ((-16 > latitud) && (latitud >= -24))
		letraUtm = "K";
	else if ((-24 > latitud) && (latitud >= -32))
		letraUtm = "J";
	else if ((-32 > latitud) && (latitud >= -40))
		letraUtm = "H";
	else if ((-40 > latitud) && (latitud >= -48))
		letraUtm = "G";
	else if ((-48 > latitud) && (latitud >= -56))
		letraUtm = "F";
	else if((-56 > latitud) && (latitud >= -64))
		letraUtm = "E";
	else if ((-64 > latitud) && (latitud >= -72))
		letraUtm = "D";
	else if ((-72 > latitud) && (latitud >= -80))
		letraUtm = "C";

	return letraUtm;

}

function createSaveButton()
{
      var mapa=document.getElementById("map");
      var leftMap=getOffsetLeft(mapa);
      var topMap=getOffsetTop(mapa);

      var leftSave=leftMap+204;
      var topSave=topMap+7;
      var saveButton=document.createElement('div');
      saveButton.setAttribute("id","save");
      saveButton.style.position="absolute";
      saveButton.style.left=leftSave;
      saveButton.style.top=topSave;
      saveButton.style.color="FFFFFF";
      saveButton.style.backgroundColor="000000";
      saveButton.style.fontFamily="Verdana";
      saveButton.style.fontSize="12px";
      saveButton.innerHTML="<a href='javascript:showSaveDialog()'><img id='saveButton' title='Guardar Track/WayPoints' border='0' src='/javascript/images/botonGuardar.jpg'></a>";


      document.body.appendChild(saveButton);
}

function createAddButtons()
{
      var mapa=document.getElementById("map");
      var leftMap=getOffsetLeft(mapa);
      var topMap=getOffsetTop(mapa);

      // Botón Añadir Waypoint
      var leftAddButtons=leftMap+68;
      var topAddButtons=topMap+27;
      var addButtons=document.createElement('div');
      addButtons.style.position="absolute";
      addButtons.style.left=leftAddButtons;
      addButtons.style.top=topAddButtons;
      addButtons.innerHTML="<a href='javascript:void(0)'><img id='addWayPointButton' onclick='selectAddMode(\"waypoints\")' title='Añadir WayPoints' border='0' src='/javascript/images/addWayPointSelect.gif'></a>"+
                           "&nbsp;<a href='javascript:void(0)'><img id='addTrackPointButton' onclick='selectAddMode(\"trackpoints\")' title='Añadir Puntos al Track' border='0' src='/javascript/images/addTrackPoint.gif'></a>";
      document.body.appendChild(addButtons);
}

function createDistance()
{
      var mapa=document.getElementById('map');
      var leftMap=getOffsetLeft(mapa);
      var topMap=getOffsetTop(mapa);
      var leftDistance=leftMap+60;
      var topDistance=topMap+7;

      var distancia=document.createElement('div');
      distancia.setAttribute("id","distance");

      distancia.innerHTML="Distancia : 0 Km.";
      distancia.style.position="absolute";
      distancia.style.left=leftDistance;
      distancia.style.top=topDistance;
      distancia.style.color="black";
      distancia.style.fontFamily="Verdana";
      distancia.style.fontSize="12px";

      document.body.appendChild(distancia);

}

// Muestra el diálogo antes de Guardar
function showSaveDialog()
{
    map.openInfoWindowHtml(map.getCenter(),
                "<form name='saveDialog'><table>"+
                "<tr><td><b>¿ Qúe Desea Guardar ?</b></td></tr>"+
                "<tr><td><input type='radio' id='docType' name='docType' value='WayPoints' checked>&nbsp;WayPoints</td></tr>"+
                "<tr><td><input type='radio' id='docType' name='docType' value='Track'>&nbsp;Track</td></tr>"+
                "<tr><td align='right'><input onclick='map.closeInfoWindow();' type='button' value='Cancelar'>&nbsp;&nbsp;"+
                "<input onclick='saveDocument(document.saveDialog.docType[0].checked);map.closeInfoWindow();' type='button' value='Aceptar'>"+
                "</table></form>"
    );
}

// Guardar el documento
function saveDocument(documentTypeWayPoints)
{

   var doc="";
   var file="";
   var finLinea="\r\n";

   if (documentTypeWayPoints)
   {

       // Crear un documento de Waypoints en formato OziExplorer

        doc="OziExplorer Waypoint File Version 1.1"+finLinea+
                "WGS 84"+finLinea+
                "Reserved 2"+finLinea+
                "garmin"+finLinea;

        for(var i=0;i<waypoint.length;i++)
            if (waypoint[i] && waypoint[i].active)
              doc+=(i+1)+","+waypoint[i].name+","+waypoint[i].latitude+","+waypoint[i].longitude+","+
                   "0,70,0,3,0,65535,"+waypoint[i].comment+",0,0,0,"+Math.floor(waypoint[i].altitude/.3048)+",6, 0,17,0,10.0,2,,,"+finLinea;

        file="[Archivo de WayPoints de "+puntoGoogleMap.name+"].wpt";

    }
    else
    {

        // Contabiliza el número de puntos del Track
        var numberOfTrackPoints=0;
        for(var i=0;i<trackpoint.length;i++)
           if (trackpoint[i] && trackpoint[i].latitude!=0 && trackpoint[i].longitude!=0) numberOfTrackPoints++;

        // Crear un documento de Track en formato OziExplorer
        doc="OziExplorer Track Point File Version 2.1"+finLinea+
                "WGS 84"+finLinea+
                "Altitude is in Feet"+finLinea+
                "Reserved 3"+finLinea+
                "0,2,255,ACTIVE LOG                         ,0,0,2,8421376"+finLinea+
                numberOfTrackPoints+finLinea;

        for(var i=0;i<trackpoint.length;i++)
            if (trackpoint[i] && trackpoint[i].active)
              doc+=trackpoint[i].latitude+","+trackpoint[i].longitude+","+
                   "0,"+Math.floor(trackpoint[i].altitude/0.3048)+",0,"+trackpoint[i].date+","+trackpoint[i].time+finLinea;

        file="[Archivo de Track de "+puntoGoogleMap.name+"].plt";

    }

          var saveHiddenForm=document.createElement('form');
          saveHiddenForm.setAttribute("name","saveDocumentForm");
          saveHiddenForm.setAttribute("method","post");
          saveHiddenForm.setAttribute("action","zipDocument.php");
          var saveHiddenData=document.createElement('input');
          saveHiddenData.setAttribute("type","hidden");
          saveHiddenData.setAttribute("name","document");
          saveHiddenData.setAttribute("value",doc);
          saveHiddenForm.appendChild(saveHiddenData);
          var saveHiddenData2=document.createElement('input');
          saveHiddenData2.setAttribute("type","hidden");
          saveHiddenData2.setAttribute("name","file");
          saveHiddenData2.setAttribute("value",file);
          saveHiddenForm.appendChild(saveHiddenData2);
          var saveHiddenData3=document.createElement('input');
          saveHiddenData3.setAttribute("type","hidden");
          saveHiddenData3.setAttribute("name","zip");
          saveHiddenData3.setAttribute("value","false");
          saveHiddenForm.appendChild(saveHiddenData3);

          document.body.appendChild(saveHiddenForm);
          saveHiddenForm.submit();
}

function selectAddMode(modo)
{
    var botonAddWayPoints=document.getElementById('addWayPointButton');
    var botonAddTrackPoints=document.getElementById('addTrackPointButton');

    if (modo=="waypoints")
    {
       botonAddWayPoints.setAttribute("src","/javascript/images/addWayPointSelect.gif");
       botonAddTrackPoints.setAttribute("src","/javascript/images/addTrackPoint.gif");
    }
    else
    {
       botonAddWayPoints.setAttribute("src","/javascript/images/addWayPoint.gif");
       botonAddTrackPoints.setAttribute("src","/javascript/images/addTrackPointSelect.gif");
    }

    addMode=modo; // Establece el modo en que se añaden puntos ( waypoints o trackpoints )

}

// Obtener Parámetro desde URL
function getParameter(parameter){
// Obtiene la cadena completa de URL
var url = location.href;
var index = url.indexOf("?");
index = url.indexOf(parameter,index) + parameter.length;
if (url.charAt(index) == "=")
{
    // Obtiene el valor del parametro
    var result = url.indexOf("&",index);
    if (result == -1){result=url.length;};
     return(url.substring(index + 1,result));
}
}



