/*******************************************************************************
 * Javascript für Google Map mit Uebersichtsausschnitt
 ******************************************************************************/


var elementId = "twGmap";  // muss im html an ein <div> als id vergeben werden
var lat       = "48.544";  // Breitengrad (Latitude) z.B: 51.041
var lon       = "9.475";  // Längengrad (Longitude) z.B: 13.748
var zoom      = 16;       // einen Wert von 1 bis ca 17 (nicht in "" setzen)

var directionMarkers   = [];
var directionHtmls     = [];
var directionHtmlsNach = [];
var directionHtmlsVon  = [];
 
var directionCount     = 0;


/**
 * Prüft auf kompatiblen Browser und vorhandene Variablen und ruft die
 * Funktion auf, die die GoogleMap erstellt.
 */
function twGmapLoad () 
{
  if (GBrowserIsCompatible ()) 
  {
    if (!document.getElementById (elementId)) 
	{
	  alert("Fehler: das Element mit der id "+ elementId+ " konnte nicht auf dieser Webseite gefunden werden!");
	  return false;
	} 
	else 
	{
	  if (lat == "" || isNaN (lat)) 
	  {
        lat = "9.475";
		alert ("Fehler: Der Breitengrad (lat) wurde im Skript nicht korrekt eingetragen!\nEin Defaultwert wird deshalb benutzt!");
      }
      
      if (lon == "" || isNaN (lon))
      {
        lon = "48.544";
        alert ("Fehler: Der Längengrad(lon) wurde im Skript nicht korrekt eingetragen!\nEin Defaultwert wird deshalb benutzt!");
      }

      if (typeof zoom == "undefined") 
      {
        zoom = 3;
        alert ("Fehler: Die Zoomstufe wurde im Skript nicht korrekt eingetragen!\nEin Defaultwert wird deshalb benutzt!");
      }
     
      machTwGmap (elementId, lat, lon, zoom);
    }
  }
}

/**
 * Erstellt die GoogleMap in dem <div>-Bereich mit der übergebenen id
 * @param {Object} id   -im div-Bereich mit dieser id wird die Map dargestellt
 * @param {Object} lat  -Breitengrad 
 * @param {Object} lon  -Längengrad
 * @param {Object} zoom -Zoomstufe 1 bis 17 (ganze Welt bis kleiner Ausschnitt)
 */
function machTwGmap(id, lat, lon, zoom) 
{
  // die Map (für das div mit der id="...")
  var map = new GMap2(document.getElementById(id));

  // mit Zoom zeigt das Zoom Tool links oben an! (auch noch: GSmallMapControl, GLargeMapControl, GSmallZoomControl, GScaleControl)
  //map.addControl(new GSmallMapControl());
  //map.addControl(new GSmallZoomControl());
  //map.addControl(new GScaleControl());
  map.addControl(new GLargeMapControl());

  // mit Typ-Auswahl (auch noch: GMapTypeControl, GHierarchicalMapTypeControl, GOverviewMapControl)
  //map.addControl(new GHierarchicalMapTypeControl());
  map.addControl(new GMapTypeControl());
  map.addControl(new GOverviewMapControl());

  // ((Breitengrad, Längengrad), Zoomstufe, G_NORMAL_MAP/G_SATELLITE_MAP/G_HYBRID_MAP)
  map.setCenter(new GLatLng(lat, lon), zoom, G_HYBRID_MAP);

  //setze einen Merker Punkt auf GiS mbH
//  var point = new GPoint (9.475, 48.544);  //ACHTUNG: (lon, lat) also vertauscht	
//  var marker = new GMarker (point);
//  map.addOverlay (marker); 

  // Marker setzen mit eigener Marker-Funktion
  map = setTwMarkers (map);
}


/**
 * Erstellt alle Marker für die übergebene Google Map.
 * (Ruft intern für jeden Marker eine eigene Funktion auf)
 * @param {Object} map
 */
function setTwMarkers (map) 
{
  var marker01 = machTwMarker01 ();
  map.addOverlay (marker01);
  return map;
}

function machTwMarker01 () 
{
  var point = new GPoint(9.475, 48.544);
  var adresse = "GiS mbH, Lenningen";
  var marker = new GMarker(point);
  var html = machTwHtmlInfofenster(marker, adresse);
  GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml(html)});	
	
  return marker;
}

function machTwHtmlInfofenster (marker, adresse) 
{
  var point = marker.getLatLng();
  directionCount++;	
  directionMarkers[directionCount] = marker;
		
  // das Infofenster vor der Auswahl von Start- oder Zieladresse
  //htmlDefault = '';
  //htmlDefault += '<div class="twGmapInfo">';
  //htmlDefault += ' <p class="headline">Straßenverbindung anzeigen</p>';
  //htmlDefault += ' <br />Möchten Sie diesen Punkt als Startpunkt oder<br />als Zielpunkt benutzen?';
  //htmlDefault += ' <br /><a href="javascript:openTwInfofensterVon('+directionCount+')">&rarr; diesen Punkt als Startpunkt benutzen<\/a>';
  //htmlDefault += ' <br /><a href="javascript:openTwInfofensterNach('+directionCount+')">&rarr; diesen Punkt als Zielpunkt benutzen<\/a>';
  //htmlDefault += '</div>';
  //directionHtmls[directionCount] = htmlDefault;
	
  // das Infofenster, in dem die Startadresse eingegeben werden kann
  //htmlVon = '';
  //htmlVon += '<div class="twGmapInfo">';
  //htmlVon += ' <p class="headline">Straßenverbindung anzeigen</p>';
  //htmlVon += ' <p>Okay, Sie starten bei:</p>';
  //htmlVon += ' <p><input type="text" size=40 maxlength=40 value="' + adresse + '" readonly="readonly" /></p>';
  //htmlVon += ' <p>Geben Sie nun noch Ihre Ziel-Adresse ein:</p>';
  //htmlVon += ' <p class="klein">(Beispiel: Koblenz, Rheinstraße)</p>';
  //htmlVon += ' <form action="http://maps.google.com/maps" method="get" target="_blank">';
  //htmlVon += '  <p><input type="text" size=40 maxlength=40 name="daddr" id="daddr" value="" tabindex="1" /></p>';
  //htmlVon += '  <p><input type="hidden" name="saddr" value="' + point.lat() + ',' + point.lng() + ' (' + adresse + ')' + '" /></p>';
  //htmlVon += '  <p class="submit"><input value="Straßenverbindung anzeigen" type="submit" /></p>';
  //htmlVon += '  <p class="submit klein">(die Verbindung wird in einem neuen Fenster/Tab angezeigt)</p>';
  //htmlVon += ' </form>';
  //htmlVon += '</div>';
  //directionHtmlsVon[directionCount] = htmlVon;
	
  // das Infofenster, in dem die Zieladresse eingegeben werden kann
  htmlDefault = '';
  htmlDefault += '<div class="twGmapInfo">';
  htmlDefault += ' <p class="headline">Get Directions</p>';
  htmlDefault += ' <p>Your destination is:</p>';
  htmlDefault += ' <p><input type="text" size=40 maxlength=40 value="' + adresse + '" readonly="readonly" /></p>';
  htmlDefault += ' <p>Please enter the address you are starting from:</p>';
  htmlDefault += ' <p class="klein">(Example: Berlin, Alexanderplatz 1)</p>';
  htmlDefault += ' <form action="http://maps.google.com/maps" method="get" target="_blank">';
  htmlDefault += '  <p><input type="text" size=40 maxlength=40 name="saddr" id="saddr" value="" /></p>';
  htmlDefault += '  <p><input type="hidden" name="daddr" value="' + point.lat() + ',' + point.lng() + ' (' + adresse + ')' + '" /></p>';
  htmlDefault += '  <p class="submit"><input type="submit" value="Get Directions" /></p>';
  htmlDefault += '  <p class="submit klein">(the direction will be displayed in a new Window/Tab)</p>';
  htmlDefault += ' </form>';
  htmlDefault += '</div>';
  directionHtmls[directionCount] = htmlDefault;
	
  // das Infofenster, in dem die Zieladresse eingegeben werden kann
  //htmlNach = '';
  //htmlNach += '<div class="twGmapInfo">';
  //htmlNach += ' <p class="headline">Straßenverbindung anzeigen</p>';
  //htmlNach += ' <p>Okay, Ihr Ziel ist:</p>';
  //htmlNach += ' <p><input type="text" size=40 maxlength=40 value="' + adresse + '" readonly="readonly" /></p>';
  //htmlNach += ' <p>Geben Sie nun noch Ihre Start-Adresse ein:</p>';
  //htmlNach += ' <p class="klein">(Beispiel: Passau, Bräugasse 7)</p>';
  //htmlNach += ' <form action="http://maps.google.com/maps" method="get" target="_blank">';
  //htmlNach += '  <p><input type="text" size=40 maxlength=40 name="saddr" id="saddr" value="" /></p>';
  //htmlNach += '  <p><input type="hidden" name="daddr" value="' + point.lat() + ',' + point.lng() + ' (' + adresse + ')' + '" /></p>';
  //htmlNach += '  <p class="submit"><input type="submit" value="Straßenverbindung anzeigen" /></p>';
  //htmlNach += '  <p class="submit klein">(die Verbindung wird in einem neuen Fenster/Tab angezeigt)</p>';
  //htmlNach += ' </form>';
  //htmlNach += '</div>';
  //directionHtmlsNach[directionCount] = htmlNach;
	
  return htmlDefault;
}

// functions that open the directions forms
function openTwInfofensterNach (i) 
{
  directionMarkers[i].openInfoWindowHtml(directionHtmlsNach[i]);
}

function openTwInfofensterVon (i) 
{
  directionMarkers[i].openInfoWindowHtml(directionHtmlsVon[i]);
}


