/**
 *  Stellt ein JavaScript Objekt zur Verfügung, das über zwei Funktionen aus
 *  einem PHP-Program heraus konfiguriert wird.
 */

if(typeof(ibbGooglemap)=='undefined') {

  var ibbGooglemap = {

      // Alle anzuzeigenden Karten
    maps : {},

    /**
     *  Legt ein neues Map-Objekt mit der angegebenen ID an.
     *
     *  @param  string  eindeutige ID der Karte
     *  @param  string  eindeutiges Inhaltselement für die Karte
     *  @param  int  Breite der Karte; Pixel
     *  @param  int  Höhe der Karte; Pixel
     *  @param  real  Kartenmitte: Breitengrad
     *  @param  real  Kartenmitte: Längengrad
     *  @return  void
     */
    addMap : function( mapId, containerId, width, height, zoom, latitude, longitude ) {
      this.maps[mapId] = {
        containerId : containerId,
        width : width,
        height : height,
				zoom : zoom,
        latitude : latitude,
        longitude : longitude,
        markers : []
      };
    },

    /**
     *  Fügt der angegebenen Karte eine neue Markierung hinzu.
     *
     *  @param  string  Eindeutige ID der Karte
     *  @param  string  HTML-Code des Info-Fensters
     *  @param  real  Breitengrad des Markers
     *  @param  real  Längengrad des Markers
     */
    addMarkerToMap : function( mapId, infoWindowHtml, latitude, longitude ) {
      this.maps[mapId].markers[this.maps[mapId].markers.length] = {
        infoWindowHtml : infoWindowHtml,
        latitude : latitude,
        longitude : longitude
      };
    },

/**
 *	Google-Map Demo
 */
    render : function() {

      if( !GBrowserIsCompatible())  return;

			for( var mapId in this.maps ) {

				var mp = this.maps[mapId];

				var container = document.getElementById( mp.containerId );
				container.style.width = mp.width + "px";
				container.style.height= mp.height + "px";

        var map = new GMap2(container);
        map.setCenter(new GLatLng(mp.latitude, mp.longitude), mp.zoom);
        map.setUIToDefault();

				for( var i=0; i < mp.markers.length; i++ ) {
					var mk = mp.markers[i];
					map.addOverlay(
							this.createMarker(
									new GLatLng( mk.latitude, mk.longitude ),
									mk.infoWindowHtml
							)
					);
				}
      }
    },

		/**
		 *	Erzeugt einen Marker
		 */
		createMarker : function( point, html) {

			var marker = new GMarker(point);

			GEvent.addListener(marker, "click", function() {
				marker.openInfoWindowHtml( html );
			});

			return marker;
		}

  };

}
