	var points = [];
	var markers = [];
	var counter = 0;
	var marker_html = [];
	var to_htmls = [];
	var from_htmls = [];
	var icon = Array();
	var map = null;
	var geocoder = null;
	var address = "";

	var XMLHTTP = null;
	if (window.XMLHttpRequest) XMLHTTP = new XMLHttpRequest();
	else if (window.ActiveXObject) {
		try { XMLHTTP = new ActiveXObject("Msxml2.XMLHTTP"); }
		catch (ex) {
			try { XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP"); } catch (ex) {}
		}
	}

	function decode() {
		var url = window.location.search;
		if (url == "") address = "Deutschland 47809 Krefeld Eltweg 4"; 

		else {
			url = url.substring(1,url.length);
			if (url != "")  {
				liste = url.split("&");
				for (i=0;i<=liste.length-1;i++) {
					temp = liste[i].split("=");
					if (temp[1]) {
						temp[1]=temp[1].replace(/\+/g," ");
						temp[1]=unescape(temp[1]);
						
						if (temp[0] == "land") address += " "+temp[1];
						if (temp[0] == "plz") address += " "+temp[1];
						if (temp[0] == "ort") address += " "+temp[1];
					}
				} //next
			} // end if
		} // else
		if (address == "") address = "Deutschland 47809 Krefeld Eltweg 4"; 
	} 

	function click_sidebar() {
		markers.openInfoWindowHtml(marker_html);
	}
	
	function showInfoWindow(html) {
		map.centerAtLatLng(points);
		markers.openInfoWindowHtml(html);
	}
	
	function tohere(i) {
		markers[i].openInfoWindowHtml(to_htmls[i]);
	}
	
	function fromhere(i) {
		markers[i].openInfoWindowHtml(from_htmls[i]);
	}
	
	function createMarker(point, html,i,www) {
		var marker = new GMarker(point);
	  to_htmls[i] = html + '<br><a href="'+ www +'" target="_blank">'+ www + '</a><br>Route berechnen: <b>Hierher</b> - <a href="javascript:fromhere('+i+')">Von hier</a>' +
	           '<br>Startadresse:<form action="http://maps.google.com/maps" method="get" target="_blank">' +
	           '<input type="text" SIZE=40 MAXLENGTH=40 name="saddr" id="saddr" value="" /><br>' +
	           '<INPUT value="Route berechnen" TYPE="SUBMIT">' +
	           '<input type="hidden" name="daddr" value="' + point.y + ',' + point.x + '"/>';
	  from_htmls[i] = html + '<br><a href="'+ www +'" target="_blank">'+ www + '</a><br>Route berechnen: <a href="javascript:tohere('+i+')">Hierher</a> - <b>Von hier</b>' +
	           '<br>Zieladresse:<form action="http://maps.google.com/maps" method="get"" target="_blank">' +
	           '<input type="text" SIZE=40 MAXLENGTH=40 name="daddr" id="daddr" value="" /><br>' +
	           '<INPUT value="Route berechnen" TYPE="SUBMIT">' + 
						 '<input type="hidden" name="saddr" value="' + point.y + ',' + point.x + '"/>'; 
		
		html += '<br><a href="'+ www +'" target="_blank">'+ www + '</a><br /><div id="gmapDirHead" class="gmapDir" style="white-space: nowrap; margin-bottom: 0px; padding-bottom: 0px;">Wegbeschreibung: <a href="javascript:tohere('+i+');">Hierher</a> - <a href="javascript:fromhere('+i+');">Von hier aus</a></div>';
		GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(html); });
		points[i] = point;
		markers[i] = marker;
		marker_html[i] = html;
		return marker;
	}

	function draw_map() {
		if (GBrowserIsCompatible()) {
			var mapObj = document.getElementById("googlemap");
			if (mapObj != "undefined" && mapObj != null) {
				map = new GMap(document.getElementById("googlemap"));
				GEvent.addListener(map, 'dragend', function() { 
					var bll = map.getBoundsLatLng();
					XMLHTTP.open("GET","fileadmin/misc/google_ajax.php?data="+escape(bll));
					XMLHTTP.onreadystatechange = add2;
					XMLHTTP.send(null);
				 } ); 
				GEvent.addListener(map, 'zoomend', function() { 
					var bll = map.getBoundsLatLng();
					XMLHTTP.open("GET","fileadmin/misc/google_ajax.php?data="+escape(bll));
					XMLHTTP.onreadystatechange = add2;
					XMLHTTP.send(null);
				 } ); 
	
	      geocoder = new GClientGeocoder();
				if (geocoder) {
	        geocoder.getLatLng(
						address,
	          function(point) {
							if (!point) {
								alert("Adresse nicht gefunden");
								map.centerAndZoom(new GPoint(7.880356,49.851452), 7);
							} else map.centerAndZoom(point, 7);
	            map.addControl(new GLargeMapControl());
							map.addControl(new GMapTypeControl()); 
	          }
	        );
	      }
			}
		}
		else {
			alert("Google Maps ist mit diesem Browser nicht kompatibel.");
		}
	}

	function add(address,i) {
		var ad = address.split("§");
		var p = ad[0].split("#");
		var point = new GPoint((p[0]*1),(p[1]*1));
		var www = ad[1].split("%");
	  var marker = createMarker(point, www[1].replace(/\+/g," "),i,www[0]);
	  map.addOverlay(marker);
	}

	function start() {
		var bll = map.getBoundsLatLng();
		XMLHTTP.open("GET","fileadmin/misc/google_ajax.php?data="+escape(bll));
		XMLHTTP.onreadystatechange = add2;
		XMLHTTP.send(null);
	}

	function add2() {
		if (XMLHTTP.readyState == 4) {
			// erst alle löschen
	    map.clearOverlays();
			// neue hinzufügen 
			var stri = unescape(XMLHTTP.responseText);
			if (stri == "ERROR") document.getElementById('googleerror').style.display = "block"; 
			else {
				document.getElementById('googleerror').style.display = "none"; 
				var liste = stri.split("|");
				for (var i=0; i<liste.length; i++) add(liste[i],i);
			}
		}
	}

	function search() {
		var land = document.getElementById("land").options[document.getElementById("land").options.selectedIndex].value;
		var loc = land+" "+document.getElementById("plz").value+" "+document.getElementById("ort").value;
		geocoder.getLatLng(
			loc,
			function(point) { 
				if (!point) {
					alert("Adresse nicht gefunden");
				} else map.centerAndZoom(point, 7);
			}
		);
		return false;
	}

	function init() {
	  decode();
		setTimeout('draw_map()', 500);
	}

