﻿var Map;
var CapaMapa = "#map";
var ContenedoraMapa = "#contenedoraMapa";
var idPuntoDelMapa = "#puntoDelMapa";
var plantillaHtmlPuntoMapa;
var BaseIcon;
var BaseIconMini;
var zoom = 0;
var anchoMapa=676;
var altoMapa=270;
var NavegadorCompatible = false;
var RutaImagenIconoViaje;
var RutaImagenIconoVuelos;
var RutaImagenIconoVuelosMini;
var RutaImagenIconoVuelosSombra;
var RutaImagenIconoVuelosSombraMini;
var rutaGoogleJs = "http://maps.google.com/maps?file=api&amp;v=2&amp;key=";
var iconoMapa = new Image();
var googleKey;
var centroMapa;



function InicializarMapa(tipo) {

    CargaImagen(iconoMapa, RutaImagenIconoViaje, "Viaje");
    BindPlantillasMapa();
    var tamano;
    if ($(CapaMapa) != undefined && GBrowserIsCompatible()) {
        tamano = new GSize(anchoMapa,altoMapa);
        Map = new GMap2($(CapaMapa)[0], { size: tamano });      
        CompletarControlMapa();
        CentrarMapa(0, 0, zoom);
    }

}




function BindPlantillasMapa() {
    plantillaHtmlPuntoMapa = $(idPuntoDelMapa).clone(true);
}


function CompletarControlMapa(listaPuntos) {
    Map.addControl(new GLargeMapControl());
    var mapControl = new GMapTypeControl();
    Map.addControl(mapControl);
    CrearIconoBase();
    CrearIconoBaseMini();
    NavegadorCompatible = true;

}

function DescargarMapa() {
    if ($(Map) && GBrowserIsCompatible() != undefined) GUnload();
}

function IniciarMapas() {
    //$.getScript(rutaGoogleJs + googleKey);
    InicializarMapa();
}

function CrearIconoBase() {

    switch (tipoMapa) {
        case enumTipoMapa_Vuelos:
            BaseIcon = new GIcon(G_DEFAULT_ICON);
            BaseIcon.iconSize = new GSize(25, 38);
            BaseIcon.shadowSize = new GSize(36, 38);
            BaseIcon.iconAnchor = new GPoint(9, 38);
            BaseIcon.infoWindowAnchor = new GPoint(9, 2);
            CrearIconoBaseMini();
            break;

        case enumTipoMapa_Ofertas:
            BaseIcon = new GIcon(G_DEFAULT_ICON);
            BaseIcon.iconSize = new GSize(25, 38);
            BaseIcon.shadowSize = new GSize(42, 38);
            BaseIcon.iconAnchor = new GPoint(9, 38);
            BaseIcon.infoWindowAnchor = new GPoint(9, 2);
            break;
    }
 
}

function CrearIconoBaseMini() {
    switch (tipoMapa) {
        case enumTipoMapa_Vuelos:
            BaseIconMini = new GIcon(G_DEFAULT_ICON);
            BaseIconMini.iconSize = new GSize(21, 32);
            BaseIconMini.shadowSize = new GSize(37, 32);
            BaseIconMini.iconAnchor = new GPoint(9, 32);
            BaseIconMini.infoWindowAnchor = new GPoint(9, 2);
            break;

        case enumTipoMapa_Ofertas:
            BaseIconMini = new GIcon(G_DEFAULT_ICON);
            BaseIconMini.iconSize = new GSize(21, 32);
            BaseIconMini.shadowSize = new GSize(37, 32);
            BaseIconMini.iconAnchor = new GPoint(9, 32);
            BaseIconMini.infoWindowAnchor = new GPoint(9, 2);
            break;
    }
   
}

function BindPuntosDelMapa(borrarMapa, listaPuntos) {

    var bounds = new GLatLngBounds();
    if (borrarMapa) Map.clearOverlays();
    
    $(listaPuntos).each(function() {
        var nuevoMarcador = this;
        if (nuevoMarcador.visible = true && nuevoMarcador.longitud != null && nuevoMarcador.latitud != null) {
            var latlng = new GLatLng(ParseaNumeroANeutro(nuevoMarcador.latitud), ParseaNumeroANeutro(nuevoMarcador.longitud));
            bounds.extend(latlng);
            Map.addOverlay(CrearPuntoEnMapa(nuevoMarcador.nombre, nuevoMarcador.descripcion, nuevoMarcador.latitud, nuevoMarcador.longitud,nuevoMarcador.principal))
        }
    });

    Map.setZoom(Map.getBoundsZoomLevel(bounds));
    centroMapa =bounds.getCenter()
    Map.setCenter(centroMapa);
   

}

function CrearPuntoEnMapa(nombre, descripcion,latitud, longitud,principal) {

    var popUpMapa = CreaPopupMapa(nombre, descripcion);
    var point = new GLatLng(ParseaNumeroANeutro(latitud),ParseaNumeroANeutro(longitud));
   

    switch (tipoMapa)
    {
        case enumTipoMapa_Vuelos:
            if (principal == true) {
                var Icono = new GIcon(BaseIcon);
                Icono.image = RutaImagenIconoVuelos;
                Icono.shadow = ""; // RutaImagenIconoVuelosSombra;
            }
            else {
                var Icono = new GIcon(BaseIconMini);
                Icono.image = RutaImagenIconoVuelosMini;
                Icono.shadow = ""; // RutaImagenIconoVuelosSombraMini;
            }
            break;

        case enumTipoMapa_Ofertas:
            var Icono = new GIcon(BaseIcon);
            Icono.image = RutaImagenIconoViaje;
            Icono.shadow = "";
            break;      
    }
    
    markerOptions = { icon: Icono };
    var marker = new GMarker(point, markerOptions);
    
    GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowTabsHtml(popUpMapa.html(), { maxWidth: 450});
    });
    GEvent.addListener(marker, "infowindowclose", function() {
    Map.setCenter(centroMapa);
    });


    Map.addOverlay(marker);
    return marker;


}

function CreaPopupMapa(nombre, descripcion) {
    var popUp = $(plantillaHtmlPuntoMapa).clone(false);
    $(popUp).find("p.descripcion").html(descripcion);
    $(popUp).find("p.titulo").html(nombre);
    return popUp.append("<p></p>");

}

function CentrarMapa(latitud, longitud, zoom) {
    Map.setCenter(new GLatLng(latitud, longitud), zoom);
}



