  var directionDisplay;
  var directionDisplay2;
  var directionsService = new google.maps.DirectionsService();
  var origin = null;
  var destination = null;
  var punto = null;
  var waypoints = [];
  var directionsVisible = false;
  var markers= new Collec();
  var respuestaRuta=null; 
  
 function calcRoute() {
    if (origin == null) {
      alert("Indique el punto de partida de la ruta");
      return;
    }
    
    if (destination == null) {
      alert("Indique el punto de destino de la ruta");
      return;
    }
	 waypoints = [];
	for (i=0;i<coleccionMarcas.length;i++)
		{
		coleccionMarcas.Items[i].Objeto.CerrarVentanas();
		// Añadimos al array solo los que están marcados
		if (coleccionMarcas.Items[i].Objeto.Marcado()==true)
			{waypoints.push({ location: coleccionMarcas.Items[i].Objeto.Punto, stopover: true });}
		}
	var mode = google.maps.DirectionsTravelMode.DRIVING;
    
    var request = {
        origin: origin,
        destination: destination,
        waypoints: waypoints,
        travelMode: mode,
		unitSystem: google.maps.DirectionsUnitSystem.METRIC ,
        optimizeWaypoints: true,
        avoidHighways: false,
        avoidTolls: false
    };
   
    directionsService.route(request, function(response, status) {
      if (status == google.maps.DirectionsStatus.OK) {
		respuestaRuta=response;
		directionsDisplay.setDirections(response);
      }
    });
    
    directionsVisible = true;
	var posLeftFormDesple=document.getElementById('container').offsetLeft+660;
	document.getElementById('panelRutas').style.left=posLeftFormDesple.toString()+"px";
	document.getElementById('panelRutas').style.top="190px";
	posLeftFormDesple+=178;
	document.getElementById('btnsRutas').style.left=posLeftFormDesple.toString()+"px";
	document.getElementById('btnsRutas').style.top="160px";
	document.getElementById('btnsRutas').style.visibility="visible";
	AbrirRutas();
	document.getElementById('directionsPanel2').style.visibility="hidden";
	document.getElementById('directionsPanel2').style.height="0";
  }
function updateMode() {
    if (directionsVisible) {
      calcRoute();
    }
  }
  
function clearMarkers() {
    while (markers.length>0)
			{
			markers.Quitar(markers.Items[0].Id);
			}
  }
  
function clearWaypoints() {
    origin = null;
    destination = null;
    waypoints = [];
    directionsVisible = false;
  }
  
function reset() {
    clearMarkers();
    clearWaypoints();
    directionsDisplay.setMap(null);
    directionsDisplay.setPanel(null);
    directionsDisplay = new google.maps.DirectionsRenderer();
    directionsDisplay.setMap(map);
    directionsDisplay.setPanel(document.getElementById("directionsPanel"));
	directionsDisplay2.setMap(null);
    directionsDisplay2.setPanel(null);
    directionsDisplay2 = new google.maps.DirectionsRenderer();
    directionsDisplay2.setMap(map);
    directionsDisplay2.setPanel(document.getElementById("directionsPanel2"));
	var i;
	for (i=0;i<coleccionMarcas.length;i++)
		{
		coleccionMarcas.Items[i].Objeto.CerrarVentanas();
		coleccionMarcas.Items[i].Objeto.recuperarIcono();
		coleccionMarcas.Items[i].Objeto.Marcar(false);
		coleccionMarcas.Items[i].Objeto.MenuDerecho(1);
		}
	CerrarRutas();
	document.getElementById('btnsRutas').style.visibility="hidden";
  }
  
  


function AbrirMenuRutas()
	{
	document.getElementById("MenuRutas").style.visibility="visible";
	var i;
	//Todas las marcas del mapa se le añade la opcion de menu con boton derecho.
	for (i=0;i<coleccionMarcas.length;i++)
		{
		coleccionMarcas.Items[i].Objeto.CerrarVentanas();
		coleccionMarcas.Items[i].Objeto.MenuDerecho(1);
		}	
	rutas=true;
	nuevoMenu.cerrarPrincipal();
	}

function CerrarMenuRutas()
	{
	document.getElementById("MenuRutas").style.visibility="hidden";
	nuevoMenu.cambiarMenu(menuMapa);
	reset();
	var i;
	for (i=0;i<coleccionMarcas.length;i++)
		{
		coleccionMarcas.Items[i].Objeto.CerrarVentanas();
		coleccionMarcas.Items[i].Objeto.MenuDerecho(0);
		coleccionMarcas.Items[i].Objeto.Marcar(false);
		}
	rutas=false;
	}



function RutaDA(id)
	{
	var puntoOri=markers.Devuelve("origen");
	if (puntoOri!=null)
		{
		puntoOri.recuperarIcono();
		puntoOri.MenuDerecho(1);
		markers.Quitar("origen");
		}
	var puntoOriDes=markers.Devuelve("origen-destino");
	if (puntoOriDes!=null)
		{
		puntoOriDes.recuperarIcono();
		puntoOriDes.MenuDerecho(1);
		markers.Quitar("origen-destino");
		origin = null;
		destination = null;
		}
	var marca = coleccionMarcas.Devuelve(id);
	origin = marca.Punto;
	marca.Marcar(false);
	marca.MenuDerecho(2);
	marca.cambiarIcono('iconos/inicio.gif',false,'');
	markers.Agregar("origen",marca);	
	marca.CerrarVentanas();
	}
	
function RutaHA(id)
	{
	var puntoDes=markers.Devuelve("destino");
	if (puntoDes!=null)
		{
		puntoDes.recuperarIcono();
		puntoDes.MenuDerecho(1);
		markers.Quitar("destino");
		}
	var puntoOriDes=markers.Devuelve("origen-destino");
	if (puntoOriDes!=null)
		{
		puntoOriDes.recuperarIcono();
		puntoOriDes.MenuDerecho(1);
		markers.Quitar("origen-destino");
		origin = null;
		destination = null;
		}
	var marca = coleccionMarcas.Devuelve(id);
	destination = marca.Punto;
	marca.Marcar(false);
	marca.MenuDerecho(2);
	marca.cambiarIcono('iconos/llegada.gif',false,'');
	markers.Agregar("destino",marca);
	marca.CerrarVentanas();
	}	

function RutaDH(id)
	{
	var puntoDes=markers.Devuelve("destino");
	if (puntoDes!=null)
		{
		puntoDes.recuperarIcono();
		puntoDes.MenuDerecho(1);
		markers.Quitar("destino");
		}
	var puntoOri=markers.Devuelve("origen");
	if (puntoOri!=null)
		{
		puntoOri.recuperarIcono();
		puntoOri.MenuDerecho(1);
		markers.Quitar("origen");
		}
	var puntoOriDes=markers.Devuelve("origen-destino");
	if (puntoOriDes!=null)
		{
		puntoOriDes.recuperarIcono();
		puntoOriDes.MenuDerecho(1);
		markers.Quitar("origen-destino");
		}
	var marca = coleccionMarcas.Devuelve(id);
	destination = marca.Punto;
	origin = marca.Punto;
	marca.Marcar(false);
	marca.MenuDerecho(2);
	marca.cambiarIcono('iconos/inicio-llegada.gif',false,'');
	markers.Agregar("origen-destino",marca);
	marca.CerrarVentanas();
	
	}
function AbrirRutas()
	{
	document.getElementById('panelRutas').style.visibility="visible";
	document.getElementById('panelRutas').style.height="300px";
	}
	
function CerrarRutas()
	{
	document.getElementById('panelRutas').style.visibility="hidden";
	document.getElementById('panelRutas').style.height="0px";
	}
	
