google.load("maps", "2", {"locale" : "it_IT"});

var mappacentro = js_datimappa["centro"];
var mappazoom = js_datimappa["zoom"];
var mappamarkers = js_datimappa["markers"];
var mappatipo = js_datimappa["tipo"];
var mappaactive = new Object();
var mappa;

/*
function tohere2() {
    marker2.openInfoWindowHtml(to_html2 );
}
function fromhere2() {
    marker2.openInfoWindowHtml(from_html2 );
}
function tohere3() {
    marker3.openInfoWindowHtml(to_html3 );
}
function fromhere3() {
    marker3.openInfoWindowHtml(from_html3 );
}
function centra1() {
    marker1.openInfoWindowHtml(m_html1 + vt_html1);
}
function centra2() {
    marker2.openInfoWindowHtml(m_html2 + vt_html2);
}
function centra3() {
    marker3.openInfoWindowHtml(m_html3 + vt_html3);
}
*/

function createMarker(point, number, message) {
  var marker = new GMarker(point);
  marker.value = number;
  GEvent.addListener(marker, "click", function() {
    mappa.openInfoWindowHtml(point, message);
  });
  return marker;
}


function mapsload() {
    if (google.maps.BrowserIsCompatible()) {



        mappa = new google.maps.Map2(document.getElementById("googlemap"));
        mappa.addControl(new google.maps.SmallMapControl());
        mappa.addControl(new google.maps.MapTypeControl());
        mappa.setCenter(new google.maps.LatLng(mappacentro["latitudine"],mappacentro["longitudine"]), mappazoom);
        if (mappatipo == 'G_NORMAL_MAP') {
            mappa.setMapType( G_NORMAL_MAP );
        } else {
            mappa.setMapType( G_HYBRID_MAP );
        }

        //mappa.disableDoubleClickZoom().

        i=1;
        for (marker in mappamarkers) {
            tmpmark = mappamarkers[marker];
            point = new google.maps.LatLng(tmpmark["latitudine"],tmpmark["longitudine"]);
            testo = tmpmark["titolo"];
            if (tmpmark["indicazioni"]) {
                testo = testo + '<br><a href="javascript:tohere('+marker+');">Vai qui</a> - <a href="javascript:fromhere('+marker+');">Parti da qui</a>';
            }
            mymark = createMarker(point, marker, testo);
            mappa.addOverlay(mymark);
            mappaactive[marker] = mymark;
            i++;

        }

        if (js_datimappa["debug"]) {
            GEvent.addListener(mappa, "click", function(overlay,punto) {
                if (punto) {
                    dati = 'lat:'+punto.lat()+' / long:'+punto.lng();
                    document.getElementById('gmaplat').value = punto.lat();
                    document.getElementById('gmaplng').value = punto.lng();
                }
            });
        }

    }
}

function check_enable_gmap() {
    lat = document.getElementById('gmaplat').value;
    lng = document.getElementById('gmaplng').value;
    if (isNaN(lat) || isNaN(lng) || lat == '' || lng == '') {
        alert('Cliccare sulla mappa per selezionare il punto.');
        return false;
    }
    return true;
}

function tohere(marker) {
    mymark = mappaactive[marker];
    tmpmark = mappamarkers[marker];
    mymark.openInfoWindowHtml(tmpmark["html_a"]);
}

function fromhere(marker) {
    mymark = mappaactive[marker];
    tmpmark = mappamarkers[marker];
    mymark.openInfoWindowHtml(tmpmark["html_a"]);
}



function centra(marker) {
    if (typeof marker == 'object') {
        punto = marker;
    } else {
        tmpmark = mappamarkers[marker];
        punto = new google.maps.LatLng(tmpmark["latitudine"],tmpmark["longitudine"]);
    }
    mappa.panTo(punto);
}

function mapsunload() {
    google.maps.Unload();
}

window.onload = function(e) { mapsload(); }
window.onunload = function(e) { mapsunload(); }

function gcode(frm) {
    if (js_datimappa["debug"]) {
        indirizzo = frm.indirizzo.value;

        geocoder = new GClientGeocoder();

        if (typeof indirizzo == 'string') {
            // alert(indirizzo);
        } else {
            alert('Inserire un indirizzo.');
        }
        geocoder.getLatLng(indirizzo, function(punto) {
            if (!punto) {
                alert('"'+indirizzo + '" non trovato.');
            } else {
                mappa.panTo(punto, 13);
                var marker = new GMarker(punto);
                mappa.addOverlay(marker);
                marker.openInfoWindowHtml(indirizzo+"<br>"+punto.lat()+' '+punto.lng());
                document.getElementById('gmaplat').value = punto.lat();
                document.getElementById('gmaplng').value = punto.lng();
            }
        });

    }
    return false;
}
