// -*- mode: javascript; coding: utf-8 -*-

google.load('maps', '2');
//google.load('jquery', '1.2');

var Map = function(element, zoom, markers) {
    var G = google.maps;
    var map = null;

    var self;
    self = {
    };

    if(G.BrowserIsCompatible()) {

        var latmin = -90, latmax = 90,
            longmin = -180, longmax = 180;

        for(var i=0; i<markers.length; ++i) {
            var marker = markers[i];
            if(markers[i] === null)
                break;
            if(marker.lat > latmin) latmin = marker.lat;
            if(marker.lat < latmax) latmax = marker.lat;
            if(marker.long > longmin) longmin = marker.long;
            if(marker.long < longmax) longmax = marker.long;
        };

        var latcentre = (latmin+latmax)/2,
            longcentre = (longmin+longmax)/2;

        map = new G.Map2($(element)[0]);

        map.setCenter(new G.LatLng(latcentre, longcentre), zoom);

	map.enableScrollWheelZoom();
	//map.enableContinuousZoom();
	map.enableDoubleClickZoom();
	// map.addControl(new G.HierarchicalMapTypeControl());
	map.addControl(new G.MenuMapTypeControl());
	map.addControl(new G.SmallMapControl());

        for(var i=0; i<markers.length; ++i) {
            var marker = markers[i];
            if(markers[i] === null)
                break;
	    var marker_opts = {};
	    if(markers[i].icon !== undefined) {
		marker_opts.icon = new G.Icon(G_DEFAULT_ICON);
		marker_opts.icon.image = markers[i].icon;
	    }
            var gmarker = new G.Marker(new G.LatLng(marker.lat, marker.long), marker_opts);
            map.addOverlay(gmarker);
            if(marker.html) {
                gmarker.html = marker.html;
                G.Event.addListener(gmarker, 'click', function() {
                        this.openInfoWindowHtml(this.html, {maxWidth: 160});
                    });
            };
        };

    }

    return self;
}


