var FJManyMarkerGoogleMaps = {};

FJManyMarkerGoogleMaps.markers = [];
FJManyMarkerGoogleMaps.infoWindows = [];

FJManyMarkerGoogleMaps.init = function(map_param, loc_params) {
    if (!map_param.lat)  map_param.lat  = 35.681886;
    if (!map_param.lng)  map_param.lng  = 139.766042;
    if (!map_param.zoom) map_param.zoom = 15;
    if (!map_param.maxWidth)  map_param.maxWidth  = 300;

    var latlng = new google.maps.LatLng(map_param.lat, map_param.lng);
    var myOptions = {
        zoom: map_param.zoom,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        sensor : true
    };
    FJManyMarkerGoogleMaps.map = new google.maps.Map(document.getElementById(map_param.id), myOptions);

    for (var i = 0, j = loc_params.length; i < j; i++) {
        var loc_param = loc_params[i];
        var loc_latlng = new google.maps.LatLng(loc_param.lat, loc_param.lng);
        FJManyMarkerGoogleMaps.markers[i] = new google.maps.Marker({
            position: loc_latlng, 
            map: FJManyMarkerGoogleMaps.map, 
            title: loc_param.title
        });
        FJManyMarkerGoogleMaps.markers[i].number = i;
        FJManyMarkerGoogleMaps.infoWindows[i] = new google.maps.InfoWindow({
            content: loc_param.content,
            maxWidth: map_param.maxWidth
        });
    }

    for (var i = 0, j = loc_params.length; i < j; i++) {
        google.maps.event.addListener(FJManyMarkerGoogleMaps.markers[i], 'click', function() {
            for (j = 0, k = FJManyMarkerGoogleMaps.infoWindows.length; j < k; j++) {
                if (j == this.number) {
                    FJManyMarkerGoogleMaps.infoWindows[j].open(FJManyMarkerGoogleMaps.map, this);
                }
                else {
                    FJManyMarkerGoogleMaps.infoWindows[j].close();
                }
            }
        });
    }
}

FJManyMarkerGoogleMaps.mouseover = function(num) {
    for (i = 0, j = FJManyMarkerGoogleMaps.infoWindows.length; i < j; i++) {
        if (i == num) {
            FJManyMarkerGoogleMaps.infoWindows[i].open(FJManyMarkerGoogleMaps.map, FJManyMarkerGoogleMaps.markers[i]);
        }
        else {
            FJManyMarkerGoogleMaps.infoWindows[i].close();
        }
    }
};

FJManyMarkerGoogleMaps.mouseout = function(num) {
    FJManyMarkerGoogleMaps.infoWindows[num].close();
};

FJManyMarkerGoogleMaps.show = function(map_param, loc_params) {
    google.maps.event.addDomListener(window, 'load', function() { FJManyMarkerGoogleMaps.init(map_param, loc_params) });
}

