/*
    Google Maps API 3
    MarkerManager class
    @ author: Björn Wikström <bjorn@bwit.se>
*/
/*
    Usage:
    -----
    var map = new google.maps.Map(document.getElementById('MapLayerId'), {
        zoom: 7,
        position: new google.maps.LatLng(latitude, longitude),
        mapTypeId: google.maps.MapTypeId.ROADMAP
    });
    var marker1 = new google.maps.Marker({
        position: new google.maps.LatLng(latitude, longitude),
        map: map
    });
    var marker2 = new google.maps.Marker({
        position: new google.maps.LatLng(latitude, longitude),
        map: map
    });
    var manager = new MarkerManager(map, {fitBounds: true});
    manager.add(marker1);
    manager.add(marker2);
    manager.show();
*/
    
var MarkerManager = function(map, options) {
	this.map     = map;
	this.markers = Array();
	this.bounds  = new google.maps.LatLngBounds();
    if (options && options.fitBounds)
        this.fitBounds = true;
}

MarkerManager.prototype.add        = function(marker) {
	if (!this.bounds.contains(marker.getPosition()))
		this.bounds.extend(marker.getPosition());
	
	this.markers[this.markers.length] = marker;
}
MarkerManager.prototype.show       = function() {
	for (var i = 0; i < this.markers.length; i++)
		this.markers[i].setMap(this.map);

    if (this.fitBounds)
        this.map.fitBounds(this.bounds);
}
MarkerManager.prototype.hide       = function() {
	for (var i = 0; i < this.markers.length; i++)
		this.markers[i].setMap(null);
}
MarkerManager.prototype.clear      = function() {
	for (var i = this.markers.length - 1; i >= 0; i--) {
		this.markers[i].setMap(null);
		this.markers[i] = undefined;
	}
	
	this.markers = Array();
}
MarkerManager.prototype.size       = function() {
	return this.markers.length;
}
MarkerManager.prototype.get_bounds = function() {
	return this.bounds;
}
