var maps = [];
var handles = [];

function initMap() {
    var lat = 52;
    var lon = 8.5;
    var zoom = 9;
    paramstr = location.search.substring(1, location.search.length);
    for (i=0; i<paramstr.split('&').length; i++) {
        var pair = paramstr.split('&')[i];
        var key = pair.split('=')[0];
        var val = pair.split('=')[1];
        switch(key) {
        case 'lon':
            lon=val; break;
        case 'lat':
            lat=val; break;
        case 'zoom':
            zoom=parseInt(val); break;
        }
    }

    if (GBrowserIsCompatible()) {
        for (var i=0; i<4; i++) {
            maps[i] = new GMap2(document.getElementById('map'+i));
            maps[i].addControl(new GLargeMapControl());
            maps[i].enableDoubleClickZoom();
            maps[i].enableScrollWheelZoom();
            maps[i].enableContinuousZoom();
            if (i == 0) {
                maps[i].enableGoogleBar();
            }
            maps[i].setCenter(new GLatLng(lat, lon), zoom);
            switch(i) {
            case 0: maps[i].setMapType(G_NORMAL_MAP); break;
            case 1: maps[i].setMapType(G_SATELLITE_MAP); break;
            case 2: maps[i].setMapType(G_SATELLITE_3D_MAP); break;
            case 3: maps[i].setMapType(G_PHYSICAL_MAP); break;
            }
            handles[i] = GEvent.addListener(maps[i], 'moveend', mapMoved);
        }
    }
}

function mapMoved() {
    var center = this.getCenter();
    var zoom = this.getZoom();
    for (var i=0; i<4; i++) {
        if (maps[i] != this) {
            GEvent.removeListener(handles[i]);
            maps[i].setCenter(center, Math.min(zoom,maps[i].getCurrentMapType().getMaximumResolution()));
            handles[i] = GEvent.addListener(maps[i], 'moveend', mapMoved);
        }
    }
}

