﻿// Array de módulo al que asociaremos una lista de despachos para la generación dinámica de puntos en el mapa.
var Despachos = new Array();
// Array en el que almacenaremos las marcas dinámicas que se vayan generando para posteriormente poder interactuar con ellas y acceder a sus eventos.
var Marcardores = new Array();

// función que se encarga de añadir un elemento en el array de despachos.
function AddDespacho(despacho) {
    Despachos[Despachos.length] = despacho;
}

// recive una capa html y se encarga de generar un mapa usando google maps y lo configura para que en el aparezca
// tantos despachos tengamos en Despachos
function loadMap(div) {

    if (GBrowserIsCompatible()) {
        var map = new GMap2(div);
        
        //Centramos mapa para que se vea la península.
        map.setCenter(new GLatLng(40.044438, -4.108887), 6);

        //Configuramos opciones mapa.
        map.addControl(new GMapTypeControl());
        map.addControl(new GLargeMapControl());
        map.addControl(new GScaleControl());
        map.addControl(new GOverviewMapControl());

        //Añadimos tantas marcas como despachos tengamos en el array Despachos y rellenamos a su vez el array Marcardores.
        for (i = 0; i <= Despachos.length-1; i++) {
            var despacho = Despachos[i].split("$");
            var p = new GLatLng(despacho[0], despacho[1]);
            var d = despacho[2];

            var marker = getMarker(p, d, getIcon());
            Marcardores[Marcardores.length] = marker;
            map.addOverlay(marker);
        }
    }
}

//devuelve un objeto marca con el icono que le pasemos, el evento de ver dirección al clicar asociado y ubicada en el punto que hemos especificado por coordenadas.        
function getMarker(point, address, icon) {
    var marker = new GMarker(point,icon);
    GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(address); } );
    return marker;
}

//devuelve un icono con el logo de diagonalgest que podemos asociar a la marca del mapa.
function getIcon() {
    var iconDgest = new GIcon(G_DEFAULT_ICON);
    iconDgest.iconSize = new GSize(16, 16);
    iconDgest.iconAnchor = new GPoint(8, 8);
    iconDgest.image = "../img/Icon0064_16.gif";
    iconDgest.shadowSize = new GSize(0, 0);
    return iconDgest;
}

// se encarga de lanzar el evento de mostrar la ventana en el mapa con la dirección de la marca correspondinete a las coordenadas
// en resumen permite recibir unas coordenadas y dar el mismo efecto que si hubiesemos seleccionado con el ratón una delegación del mapa.
function seleccionaDespacho(latitud, longitud) {
    for (i = 0; i <= Despachos.length-1; i++) {
        despacho = Despachos[i].split("$");
        if (despacho[0] == latitud && despacho[1] == longitud) {
            Marcardores[i].openInfoWindowHtml(despacho[2]);
        }
    }
}
 

