﻿
var map = null;
var geocoder = null;
var first = true;

var mapdivid = "map";
var maptitledivid = "maptitle";

var geocodearray = new Array();
var geocodelenght = 0;
var geocodeindex = 0;

var baseIcon = new GIcon();
baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
baseIcon.iconSize = new GSize(20, 34);
baseIcon.shadowSize = new GSize(37, 34);
baseIcon.iconAnchor = new GPoint(9, 34);
baseIcon.infoWindowAnchor = new GPoint(9, 2);
baseIcon.infoShadowAnchor = new GPoint(18, 25);

function PlaceMarker(map, index, point, url, logo, name, stars, address, town) {
    var letter = String.fromCharCode("A".charCodeAt(0) + index);
    var letteredIcon = new GIcon(baseIcon);
    letteredIcon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";

    markerOptions = { title: name + stars, icon: letteredIcon };
    var marker = new GMarker(point, markerOptions);

    GEvent.addListener(marker, "click", function() {
        var html = '<div class="gmap_logo"><a href="' + url + '"><img src="' + logo + '" alt="" /></a></div>';
        html += '<div class="gmap_text"><strong><a target="_blank" href="' + url + '">' + name + stars + '</a></strong><br />' + address + '<br />' + town + '</div>';
        marker.openInfoWindowHtml(html);
    });

    map.addOverlay(marker);

    return (marker);
}

function ShowMap(last) {
    var bounds = new GLatLngBounds();
    for (var i = 0; i < s_name.length; i++)
        if ((s_lat[i] != 0) && (s_lng[i] != 0))
        bounds.extend(new GLatLng(s_lat[i], s_lng[i]));
    if (bounds.isEmpty()) return;

    document.getElementById(mapdivid).style.display = 'block';
    //document.getElementById(maptitledivid).style.display = 'block';

    if (map == null) {
        map = new GMap2(document.getElementById("map"));
        if (map) {
            map.addControl(new GLargeMapControl());
            map.addControl(new GMapTypeControl());
            map.addControl(new GScaleControl());
        }
    }
    if ((map) && ((last) || (first))) {
        map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds)-1);
        var index = 0;
        for (var i = 0; i < s_name.length; i++) {
            if ((s_lat[i] != 0) && (s_lng[i] != 0)) {

                var marker = PlaceMarker(map, index++, new GLatLng(s_lat[i], s_lng[i]), s_url[i], s_logo[i], s_name[i], s_stars[i], s_address[i], s_town[i]);
                if ((first) && (i == 0)) GEvent.trigger(marker, 'click');
            }
        }
        first = false;
    }
}

function GeocodeMarker() {
    if (!geocoder) geocoder = new GClientGeocoder();
    if (geocoder) {
        geocoder.getLatLng(
            s_address[geocodearray[geocodeindex]] + ", " + s_town[geocodearray[geocodeindex]] + ", Italy",
            function(point) {
                if (point != null) {
                    s_lat[geocodearray[geocodeindex]] = point.lat();
                    s_lng[geocodearray[geocodeindex]] = point.lng();
                }
                if (++geocodeindex < geocodelenght) {
                    ShowMap(false);
                    setTimeout("GeocodeMarker()", 100);
                }
                else ShowMap(true);
            }
        );
    }
}

function GoogleMap(p1, p2) {
    if (GBrowserIsCompatible()) {
        mapdivid = p1;
        maptitledivid = p2;

        for (var i = 0; i < s_name.length; i++)
            if ((s_lat[i] == 0) && (s_lng[i] == 0))
            geocodearray[geocodelenght++] = i;

        if (geocodelenght > 0) setTimeout("GeocodeMarker()", 100);
        else ShowMap(true);
    }

    window.onunload = GUnload;
}
