function SeaMapBuilder() {
	var map = null;
	var mapOptions = {
		zoom: 10,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	};

	this.initMap = function (mapId, options) {
		if (typeof (options) != 'undefined')
			mapOptions = options;
		map = new google.maps.Map(document.getElementById(mapId), mapOptions);
	};

	this.setPoints = function (data) {
		var latLngBounds = new google.maps.LatLngBounds();

		if (map == null)
			return;
		var length = data.length;
		for (var i = 0; i < length; i++) {
			var point = new google.maps.LatLng(data[i].lng, data[i].lat); /* long lat vertauscht */
			latLngBounds.extend(point);

			var pinFile = 'pin_open.png';
			if(typeof data[i+1] != 'undefined') {
				if(data[i].visited && data[i+1].visited)
					pinFile = 'pin_completed.png';
				if(data[i].visited && !data[i+1].visited)
					pinFile = 'pin_current.png';
			} else {
				if(data[i].visited)
					pinFile = 'pin_completed.png';
			}
			
			var markerImage = new google.maps.MarkerImage('ahab/images/' + pinFile,
							new google.maps.Size(32, 32),
							new google.maps.Point(0, 0),
							new google.maps.Point(0, 32));

			var marker = new google.maps.Marker({
				position: point,
				title: data[i].title,
				//icon: 'icon.jpg',
				icon: markerImage,
				map: map
			});

			marker.infowindow = new google.maps.InfoWindow({
				content: data[i].desc
			});

			google.maps.event.addListener(marker, 'click', function () {
				this.infowindow.open(map, this);
			});
		}

		map.fitBounds(latLngBounds);
	};

	this.setCenter = function (lat, lng) {
		map.setCenter(new google.maps.LatLng(lat, lng));
	};
};
