  var map;
  var gdir;
	var orte;
	var zielAdresse;
  var zoomLevel;
	
	window.onload = initialize;
	window.onunload = GUnload;

	function replaceGoogleLinkClass(str) {
		var res = str.replace(/gb/g,"textLink");
		return res;
	}
	
    function initialize() {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("boxen"));
        gdir = new GDirections(map, document.getElementById("directions"));
        GEvent.addListener(gdir, "load", onGDirectionsLoad);
        GEvent.addListener(gdir, "error", handleErrors);
        GEvent.addListener(map, 'click', onMapClick);
        map.addControl(new GSmallMapControl());
		geocoder = new GClientGeocoder();
		
		// Debug
		/*
        GEvent.addListener(map, "click", function(overlay, latlng) {     
          var myHtml = "The GLatLng value is: " + map.fromLatLngToDivPixel(latlng) + " at zoom level " + map.getZoom();
          map.openInfoWindow(latlng, myHtml);
		  setDirectionsLat(latlng);
        });*/
        
		orte = [];
		orte.push(["32052 Herford Gehrenberg 11", "Herford<br />Gehrenberg 11<br />32052 Herford<br />Tel. 05221 912-0<br /><a href='mailto:textilhaus.herford@klingenthal.com' class='gb'>textilhaus.herford@klingenthal.com</a>", 52.11475, 8.672757]);
		orte.push(["33330 Gütersloh Kolbeplatz 1", "Gütersloh<br />Kolbeplatz 1<br />33330 Gütersloh<br />Tel. 05241 22025-0<br /><a href='mailto:textilhaus.guetersloh@klingenthal.com' class='gb'>textilhaus.guetersloh@klingenthal.com</a>", 51.907124, 8.380787]);
		orte.push(["33154 Salzkotten Lange Straße 21", "Salzkotten<br />Lange Straße 21<br />33154 Salzkotten<br />Tel. 05258 9800-0", 51.672217, 8.605511]);
		orte.push(["33098 Paderborn Westernstraße 22", "Paderborn<br />Westernstraße 22-24<br />33098 Paderborn<br />Tel. 05251 286-0<br /><a href='mailto:textilhaus.paderborn@klingenthal.com' class='gb'>textilhaus.paderborn@klingenthal.com</a>", 51.716513, 8.7498]);

		ortGetName = deconcept.util.getRequestParameter('ort'); // Methode von SwfObject
        bounds = new GLatLngBounds();
        for (i=0; i < orte.length; i++) {
          bounds.extend(new GLatLng(orte[i][2], orte[i][3]));
        }
		zoomLevel = map.getBoundsZoomLevel(bounds);
        map.setCenter(bounds.getCenter(), zoomLevel);
		createMarkerHerford(orte[0]);
		createMarkerGuetersloh(orte[1]);
		createMarkerSalzkotten(orte[2]);
		createMarkerPaderborn(orte[3]);
		
		switch(ortGetName)
		{
			case 'guetersloh':
				ortId = 1;
				map.setCenter(new GLatLng(orte[ortId][2], orte[ortId][3]), 9); // Zentriere die Map auf den entsprechenden Ort
				//createMarkerGuetersloh(orte[ortId]);
				$('kontaktUnterueberschrift').innerHTML = replaceGoogleLinkClass(orte[ortId][1]);
				zielAdresse = orte[ortId][0];
				break;
			case 'herford':
				ortId = 0;
				map.setCenter(new GLatLng(orte[ortId][2], orte[ortId][3]), 9); // Zentriere die Map auf den entsprechenden Ort
				//createMarkerHerford(orte[ortId]);
				$('kontaktUnterueberschrift').innerHTML = replaceGoogleLinkClass(orte[ortId][1]);
				zielAdresse = orte[ortId][0];
				break;
			case 'salzkotten':
				ortId = 2;
				map.setCenter(new GLatLng(orte[ortId][2], orte[ortId][3]), 9); // Zentriere die Map auf den entsprechenden Ort
				//createMarkerSalzkotten(orte[ortId]);
				$('kontaktUnterueberschrift').innerHTML = replaceGoogleLinkClass(orte[ortId][1]);
				zielAdresse = orte[ortId][0];
				break;
			case 'paderborn':
				ortId = 3;
				map.setCenter(new GLatLng(orte[ortId][2], orte[ortId][3]), 9); // Zentriere die Map auf den entsprechenden Ort
				//createMarkerPaderborn(orte[ortId]);
				$('kontaktUnterueberschrift').innerHTML = replaceGoogleLinkClass(orte[ortId][1]);
				zielAdresse = orte[ortId][0];
				break;
			default:
				ortId = 3;
				$('kontaktUnterueberschrift').innerHTML = replaceGoogleLinkClass(orte[ortId][1]);
				zielAdresse = orte[ortId][0];
				break;
		}


//dann die Karte zentrieren und zoomen:
//Code:
//map.setCenter(rechteck.getCenter(),map.getBoundsZoomLevel(rechteck));
    
		/*
		for(var i = 0; i < orte.length; i++)
		{
			showAddress(orte[i][2], orte[i][3], orte[i][1]);
		}
		geocoder.getLatLng("Verl", function(point) {map.setCenter(new GLatLng(posy, posx), 9);});
		geocoder.getLatLng("Verl", function(point) {alert(point.y + "-" + point.x);});
		map.setCenter(new GLatLng(51.913029, 8.657198), 9);
		*/
      }
    }
	
	function setDirectionsLat(latlng) {
		gdir.loadFromWaypoints(new Array(latlng, new GLatLng(51.913029, 8.657198)));
		//$('ergebnis').hide();
	}
    
    function setDirections(fromAddress, fromStreet) {
		gdir.load("from: " + fromAddress + " " + fromStreet + " to: " + zielAdresse,
                { "locale": "de_DE" });
		//$('ergebnis').hide();
    }

    function handleErrors(){
	   if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS || gdir.getStatus().code == G_GEO_MISSING_QUERY)
	     alert("Die gesuchte Adresse wurde nicht gefunden.");
	   else if (gdir.getStatus().code == G_GEO_SERVER_ERROR || gdir.getStatus().code == G_GEO_BAD_KEY || gdir.getStatus().code == G_GEO_BAD_REQUEST)
	     alert("Der Geo-Server wurde nicht erreicht.");
	   else alert("Es ist ein fehler aufgetreten.");
	}

	function onGDirectionsLoad(){
		$('kontakt_such_ergebnis').show();
		$('kontakt_anleitung').hide();
		$('directions_wrap').show();
		$('kontakt_anfahrt_wrap').hide();
		//$('ergebnis').show();
		//marker.closeInfoWindow();
		//marker.hide();
	}
	
	function suchmaske() {
		$('directions_wrap').hide();
		$('kontakt_anfahrt_wrap').show();
		//showAddress();
		return false;
	}
	
	function ergebnis() {
		$('directions_wrap').show();
		$('kontakt_anfahrt_wrap').hide();
		//marker.closeInfoWindow();
		//marker.hide();
		return false;
	}
	
	/**
	* Wird aufgerufen, wenn auf die Map geklickt wird. 
	*
	* @param GMarker 
	*/
	function onMapClick(theMarker)
	{
		// Wenn auf ein Maker geklickt wurde 
		if(theMarker != null)
		{
			switch(theMarker.ortName)
			{
				case 'guetersloh':
					$('kontaktUnterueberschrift').innerHTML = replaceGoogleLinkClass(orte[1][1]);
					zielAdresse = orte[1][0];
					break;
				case 'herford':
					$('kontaktUnterueberschrift').innerHTML = replaceGoogleLinkClass(orte[0][1]);
					zielAdresse = orte[0][0];
					break;
				case 'salzkotten':
					$('kontaktUnterueberschrift').innerHTML = replaceGoogleLinkClass(orte[2][1]);
					zielAdresse = orte[2][0];
					break;
				case 'paderborn':
					$('kontaktUnterueberschrift').innerHTML = replaceGoogleLinkClass(orte[3][1]);
					zielAdresse = orte[3][0];
					break;
			}
      $('anfahrtBild').src = web_stammverzeichnis+"bilder/"+theMarker.ortName+".jpg";
		}
	}
  
  function subMenuClick(ort) {
    switch(ort) {
      case 'guetersloh':
        $('kontaktUnterueberschrift').innerHTML = replaceGoogleLinkClass(orte[1][1]);
        map.setCenter(new GLatLng(orte[1][2], orte[1][3]), zoomLevel);
        zielAdresse = orte[1][0];
        break;
      case 'herford':
        $('kontaktUnterueberschrift').innerHTML = replaceGoogleLinkClass(orte[0][1]);
        map.setCenter(new GLatLng(orte[0][2], orte[0][3]), zoomLevel);
        zielAdresse = orte[0][0];
        break;
      case 'salzkotten':
        $('kontaktUnterueberschrift').innerHTML = replaceGoogleLinkClass(orte[2][1]);
        map.setCenter(new GLatLng(orte[2][2], orte[2][3]), zoomLevel);
        zielAdresse = orte[2][0];
        break;
      case 'paderborn':
        $('kontaktUnterueberschrift').innerHTML = replaceGoogleLinkClass(orte[3][1]);
        map.setCenter(new GLatLng(orte[3][2], orte[3][3]), zoomLevel);
        zielAdresse = orte[3][0];
        break;
    }
    $('anfahrtBild').src = web_stammverzeichnis+"bilder/"+ort+".jpg";
  }

	/*
	function showAddress(posy, posx, text)
	{
		marker = new GMarker(new GLatLng(posy, posx));
		map.addOverlay(marker);
		
		GEvent.addListener(marker, "mouseover", function() {
          marker.openInfoWindowHtml(text);
        });
		
        GEvent.addListener(marker, "mouseout", function() {
          marker.closeInfoWindow();
        });
	}*/
	
	function createMarkerGuetersloh(arrOrt)
	{
        // Marker für Gütersloh
		markerGuetersloh = new GMarker(new GLatLng(arrOrt[2], arrOrt[3]));
		markerGuetersloh.ortName = 'guetersloh';
		map.addOverlay(markerGuetersloh);
		
		GEvent.addListener(markerGuetersloh, "mouseover", function() {
          markerGuetersloh.openInfoWindowHtml(arrOrt[1]);
        });
		
        GEvent.addListener(markerGuetersloh, "mouseout", function() {
          markerGuetersloh.closeInfoWindow();
        });
        
        zielAdresse = arrOrt[0];
    }

	function createMarkerHerford(arrOrt)
	{
		// Marker für Herford
		markerHerford = new GMarker(new GLatLng(arrOrt[2], arrOrt[3]));
		markerHerford.ortName = 'herford';
		map.addOverlay(markerHerford);
		
		GEvent.addListener(markerHerford, "mouseover", function() {
          markerHerford.openInfoWindowHtml(arrOrt[1]);
        });
		
        GEvent.addListener(markerHerford, "mouseout", function() {
          markerHerford.closeInfoWindow();
        });
        
        zielAdresse = arrOrt[0];
        $('kontaktUnterueberschrift').innerHTML = arrOrt[1];
	}
	
	function createMarkerSalzkotten(arrOrt)
	{
        // Marker für Salzkotten
		markerSalzkotten = new GMarker(new GLatLng(arrOrt[2], arrOrt[3]));
		markerSalzkotten.ortName = 'salzkotten';
		map.addOverlay(markerSalzkotten);
		
		GEvent.addListener(markerSalzkotten, "mouseover", function() {
          markerSalzkotten.openInfoWindowHtml(arrOrt[1]);
        });
		
        GEvent.addListener(markerSalzkotten, "mouseout", function() {
          markerSalzkotten.closeInfoWindow();
        });
        
        zielAdresse = arrOrt[0];
        $('kontaktUnterueberschrift').innerHTML = arrOrt[1];
	}
	
	function createMarkerPaderborn(arrOrt)
	{
        // Marker für Paderborn
		markerPaderborn = new GMarker(new GLatLng(arrOrt[2], arrOrt[3]));
		markerPaderborn.ortName = 'paderborn';
		map.addOverlay(markerPaderborn);
		
		GEvent.addListener(markerPaderborn, "mouseover", function() {
          markerPaderborn.openInfoWindowHtml(arrOrt[1]);
        });
		
        GEvent.addListener(markerPaderborn, "mouseout", function() {
          markerPaderborn.closeInfoWindow();
        });
        
        zielAdresse = arrOrt[0];
        $('kontaktUnterueberschrift').innerHTML = arrOrt[1];
	}