$(document).ready
(
	function() 
	{
		var geocoder;
		var map;
		var bounds;

		$("div.adresse").mouseover
		(
			function()
			{
				if(! $(this).hasClass("over") && ! $(this).hasClass("selected"))
					$(this).addClass("over");
			}
		);
		
		$("div.adresse").mouseout
		(
			function()
			{
				if($(this).hasClass("over"))
					$(this).removeClass("over");
			}
		);

		$("div.adresse").click // not(".selected").
		(
			function()
			{
				//showAdress(this.id);
				showAdress($(this).attr("title"));
			}
		);
		
		function hideAdress(id)
		{
			var tmpThis = $("div.adresse").filter(".selected");
			$("div.adresse").filter(".selected").children(".more").hide(function()
			{
				tmpThis.removeClass("selected");
			});
		}

		function showAdress(id, noMapRefresh)
		{
			//alert("showAdress( "+id+" )");
			$("div").filter(".adresse").each
			(
				function()
				{
					//alert( "#"+$(this).attr("id")+"#\n#"+id+"#" );
					if( ""+$(this).attr("title") == ""+id )
					{
						//alert("TREFFER!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
						$(this).addClass("selected");
						
						// Übersichtskarte laden
						if( map && id == "" && noMapRefresh == null) 
						{
							// optimalen zoomlevel für die points setzen
							map.setZoom(map.getBoundsZoomLevel(bounds));

							// zusaetzlich soll die karte auch noch optimal zentriert werden
							var clat = (bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) /2;
							var clng = (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) /2;
							map.setCenter(new GLatLng(clat,clng));
						}

						var oThis = this;
						//var coordinaten = oThis.id;
						var coordinaten = $(this).attr("title");
						var coordinaten = coordinaten.replace(/[\(\)]/g, "");
						document.location.href = "#"+(coordinaten.replace(/\D+/g, ""));

						$(this).children(".more").show(function()
						{
							
							//var coordinaten = oThis.id;
							var coordinaten = oThis.title;
							var coordinaten = coordinaten.replace(/[\(\)]/g, "");
							
							if(map && noMapRefresh == null) 
							{
								var tmp = coordinaten.split(",");
								point = new GLatLng(tmp[0], tmp[1]);
								map.setCenter(point, 15);
							}
							//document.location.href = "#"+(coordinaten.replace(/\D+/g, ""));
						});
					}
					else
					{
						if($(this).hasClass("selected"))
							$(this).removeClass("selected");
						$(this).children(".more").hide();
					}
				}
			);
		}

		if (GBrowserIsCompatible()) 
		{
			function createMarker(point, number)
			{
				markerOptions = { icon:Icon };
				var marker = new GMarker(point, markerOptions);
				
				/*
				marker.tooltip({ 
						bodyHandler: function() 
						{ 
							return "Hello World!";
						}
					});
				*/
				
				/*
				GEvent.addListener(marker, "mouseover", function()
				{
					marker.openInfoWindowHtml("<strong>Hello World</strong>");
				});
				*/

				/*
				GEvent.addListener(marker, "mouseover", function()
				{
					marker.openInfoWindowHtml("TEST!");
					//var coordinaten = (""+point);
					//coordinaten = coordinaten.replace(/  /g, " "); // doppelte leerzeichen ver"ein"fachen
					//alert(coordinaten);
					//showAdress(coordinaten, true);
					
					
				});
				
				GEvent.addListener(marker, "mouseout", function()
				{
					//var coordinaten = (""+point);
					//coordinaten = coordinaten.replace(/  /g, " "); // doppelte leerzeichen ver"ein"fachen
					//alert(coordinaten);
					//hideAdress(coordinaten, true);
					//marker.closeInfoWindowHtml();
				});
				*/
				
				GEvent.addListener(marker, "click", function()
				{
					var coordinaten = (""+point);
					coordinaten = coordinaten.replace(/  /g, " "); // doppelte leerzeichen ver"ein"fachen
					showAdress(coordinaten);
				});
				
				return marker;
			}

			map = new GMap2(document.getElementById("stage"));
		
			map.addControl(new GSmallMapControl());
			map.addControl(new GMapTypeControl());
        
			map.setCenter(new GLatLng(37.4419, -122.1419), 13);
			//geocoder = new GClientGeocoder();

			var allpoints = $("#allecoordinaten").val().split("#");
			//alert(allpoints);
			
			var Icon = new GIcon(G_DEFAULT_ICON);
			Icon.image = "http://www.rwtuev-akademie.de/templates/files/googlemapsicon.png";
			//Icon.shadow = "http://www.rwtuev-akademie.de/templates/files/googlemapsiconshadow.png";
			Icon.iconSize = new GSize(71, 50);
			Icon.shadowSize = new GSize(71, 50);
			Icon.iconAnchor = new GPoint(24, 50);
			Icon.imageMap=[24,48,16,29,6,26,1,18,0,11,9,5,17,1,25,0,37,2,45,6,49,15,46,23,39,28,32,31];
			Icon.infoWindowAnchor = new GPoint(25, 10);
			
			// Set up our GMarkerOptions object
			// leeres bounds setzen
			bounds = new GLatLngBounds();

			for(var p=0; p < allpoints.length; p++)
			{
				curpoint = allpoints[p];
				var coordinaten = curpoint.replace(/[\(\)]/g, "");
				var tmp = coordinaten.split(",");
				point = new GLatLng(tmp[0], tmp[1]);
				bounds.extend(point);

				map.addOverlay(createMarker(point));
			}
			//map.setCenter(point, 15);

			// optimalen zoomlevel für die points setzen
			map.setZoom(map.getBoundsZoomLevel(bounds));

			// zusaetzlich soll die karte auch noch optimal zentriert werden
			var clat = (bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) /2;
			var clng = (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) /2;
			map.setCenter(new GLatLng(clat,clng));
		}
	}
);


