/*******************************************************************************
 * Javascript für twGmap02MarkerUndInfo
 ******************************************************************************/

var elementId = "map";  // muss im html an ein <div> als id vergeben werden
var lat       = "50.05";  // Breitengrad (Latitude) z.B: 51.041
var lon       = "8.1";  // Längengrad (Longitude) z.B: 13.748
var zoom      = 11;         // einen Wert von 1 bis ca 17 (nicht in "" setzen)
var map;
var gdir;
var geocoder = null;
var addressMarker;

/**
 * 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 = 51.041;
        alert("Fehler: Der Breitengrad(lat) wurde im Skript nicht korrekt eingetragen!\nEin Defaultwert wird deshalb benutzt!");
      }
      if (lon=="" || isNaN(lon)) {
        lon = "13.748";
        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 (auch noch: GSmallMapControl, GLargeMapControl, GSmallZoomControl, GScaleControl)
  map.addControl(new GLargeMapControl());
  // mit Typ-Auswahl (auch noch: GMapTypeControl, GHierarchicalMapTypeControl, GOverviewMapControl)
  map.addControl(new GMapTypeControl());
  // ((Breitengrad, Längengrad), Zoomstufe, G_NORMAL_MAP/G_SATELLITE_MAP/G_HYBRID_MAP)
  map.setCenter(new GLatLng(lat, lon), zoom, G_NORMAL_MAP);
  
  // Marker setzen mit eigener Marker-Funktion
  map = setTwMarkers(map);
  
          gdir = new GDirections(map, document.getElementById("directions"));
        GEvent.addListener(gdir, "load", onGDirectionsLoad);
        GEvent.addListener(gdir, "error", handleErrors);
   
}


  
    function setDirections(fromAddress, toAddress, locale) {
    gdir.load("from: " + fromAddress + " to: " + toAddress,
                { "locale": locale });
    }

    function handleErrors(){
     if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
       alert("No corresponding geographic location could be found for one of the specified addresses. This may be due to the fact that the address is relatively new, or it may be incorrect.\nError code: " + gdir.getStatus().code);
     else if (gdir.getStatus().code == G_GEO_SERVER_ERROR)
       alert("A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.\n Error code: " + gdir.getStatus().code);
     
     else if (gdir.getStatus().code == G_GEO_MISSING_QUERY)
       alert("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\n Error code: " + gdir.getStatus().code);

  //   else if (gdir.getStatus().code == G_UNAVAILABLE_ADDRESS)  <--- Doc bug... this is either not defined, or Doc is wrong
  //     alert("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.\n Error code: " + gdir.getStatus().code);
       
     else if (gdir.getStatus().code == G_GEO_BAD_KEY)
       alert("The given key is either invalid or does not match the domain for which it was given. \n Error code: " + gdir.getStatus().code);

     else if (gdir.getStatus().code == G_GEO_BAD_REQUEST)
       alert("A directions request could not be successfully parsed.\n Error code: " + gdir.getStatus().code);
      
     else alert("An unknown error occurred.");
     
  }
  
    function onGDirectionsLoad(){ 
          // Use this function to access information about the latest load()
          // results.

          // e.g.
    // document.getElementById("getStatus").innerHTML = gdir.getStatus().code;
    // and yada yada yada...
  }
  
var switch_direction_2 = 0;
var switch_direction_1 = 0;
  
function blubb() {
  var dummy3 = $('#pretxt').text();
  if(dummy3 == "Von:") {
    $('#pretxt').text('Nach:');
  } else {
    $('#pretxt').text('Von:');
  }

  if(switch_direction_1==0){
    switch_direction_1 = 1;
  } else {
    switch_direction_1 = 0;
  }
}
  
function set1(form) {
  if(switch_direction_1==0){
    setDirections(form.from.value, form.to.value, 'de_DE');
  } else {
    setDirections(form.to.value, form.from.value, 'de_DE');
  }
}
  
function blubb2() {
  var dummy3 = $('#pretxt2').text();
  if(dummy3 == "Von:") {
    $('#pretxt2').text('Nach:');
  } else {
    $('#pretxt2').text('Von:');
  }

  if(switch_direction_2==0){
    switch_direction_2 = 1;
  } else {
    switch_direction_2 = 0;
  }
}
  
function set2(form) {
  if(switch_direction_2==0){
    setDirections(form.from2.value, form.to2.value, 'de_DE');
  } else {
    setDirections(form.to2.value, form.from2.value, 'de_DE');
  }
}


function blubb3() {
  var dummy4 = $('#pretxt2').text();
  if(dummy4 == "Von:") {
    $('#pretxt2').text('Nach:');
  } else {
    $('#pretxt2').text('Von:');
  }

  if(switch_direction_3==0){
    switch_direction_3 = 1;
  } else {
    switch_direction_3 = 0;
  }
}
  
function set3(form) {
  if(switch_direction_3==0){
    setDirections(form.from3.value, form.to2.value, 'de_DE');
  } else {
    setDirections(form.to3.value, form.from2.value, 'de_DE');
  }
}




function setTwMarkers(map) {

  // Erstellt ein Basissymbol für alle Markierungen, das den Schatten, die Symbolabmessungen usw. angibt
  var icon = new GIcon();
  icon.image = "fileadmin/omnimago/images/omnikreis.png";
  icon.shadow = "fileadmin/omnimago/images/omnikreis-shadow.png";
  icon.iconSize = new GSize(30.0, 28.0);
  icon.shadowSize = new GSize(45.0, 28.0);
  icon.iconAnchor = new GPoint(15.0, 14.0);
  icon.infoWindowAnchor = new GPoint(15.0, 4.0); 
  
  markerOptions = { icon:icon };
  
  
  var point_1  = new GPoint(8.050752, 49.984444);  //ACHTUNG: (lon, lat) also vertauscht
  var marker_1 = new GMarker(point_1,markerOptions);
  var html_1   = "";
  
  html_1 += "<div class='twGmapInfo'>";
  html_1 += "<img src='fileadmin/omnimago/images/omnimago-small.jpg' width='203' height='25' alt='OMNIMAGO GmbH' />";
  html_1 += "<p>";
  html_1 += "<strong>Verwaltung & Produktion</strong><br /><br />"
  html_1 += "Konrad-Adenauer-Str. 42<br />";
  html_1 += "55218 Ingelheim<br />";
  html_1 += "<br />";
  html_1 += "Tel.: +49 6132 79002-0<br />";
  html_1 += "Fax: +49 6132 40043<br />";
  html_1 += "<br />";
  html_1 += "<form action=\"#\" onsubmit=\"set1(this); return false;\">";
  html_1 += "<strong>Routenplaner</strong><br /><br />";
  html_1 += "<span id=\"pretxt\">Von:</span>";
  html_1 += "<br style=\"line-height: 1px; height: 1px; overflow: none;\"/>";
  html_1 += "<input type=\"text\" size=\"25\" id=\"fromAddress\" name=\"from\" value=\"Ihre Straße, Ort\" onFocus=\"if(this.value=='Ihre Straße, Ort') this.value='';\" onBlur=\"if(this.value=='') this.value='Ihre Straße, Ort';\" />";
  html_1 += "<input name=\"submit\" type=\"submit\" style=\"margin-top: 10px;\" value=\"Los\" />";  
  html_1 += "<input type=\"hidden\" name=\"to\" id=\"toAddress\" value=\"Konrad-Adenauer-Str. 42, Ingelheim\" />";
  html_1 += "<br />";
  html_1 += "<a href=\"javascript:blubb();\" id=\"AdressSwitch\" style=\"background: none;\">Start- und Zielpunkt tauschen</a>";
  html_1 += "<br />";
  html_1 += "</form>";
  html_1 += "</div>";
  
  
  map.addOverlay(marker_1);
  GEvent.addListener(marker_1, "click", function() {
      marker_1.openInfoWindowHtml(html_1);     
  });
  
  marker_1.openInfoWindowHtml(html_1);
  
  /*** MARKER 2 ***/
  
  var point_2  = new GPoint(8.218413, 50.095547);  //ACHTUNG: (lon, lat) also vertauscht
  var marker_2 = new GMarker(point_2,markerOptions);
  var html_2   = "";
  
  html_2 += "<div class='twGmapInfo'>";
  html_2 += "<img src='fileadmin/omnimago/images/omnimago-small.jpg' width='203' height='25' alt='OMNIMAGO GmbH' />";
  html_2 += "<p>";
  html_2 += "<strong>Produktion</strong><br /><br />"
  html_2 += "Unter den Eichen 5<br />";
  html_2 += "65195 Wiesbaden<br />";
  html_2 += "<br />";
  html_2 += "Tel.: +49 611 9599505<br/>";
  html_2 += "Fax: +49 611 9599506<br />"; 
  html_2 += "<br />";
  html_2 += "<form action=\"#\" onsubmit=\"set2(this); return false;\">";
  html_2 += "<strong>Routenplaner</strong><br /><br />";
  html_2 += "<span id=\"pretxt2\">Von:</span>";
  html_2 += "<br style=\"line-height: 1px; height: 1px; overflow: none;\"/>";  
  html_2 += "<input type=\"text\" size=\"25\" id=\"fromAddress2\" name=\"from2\" value=\"Ihre Straße, Ort\" onFocus=\"if(this.value=='Ihre Straße, Ort') this.value='';\" onBlur=\"if(this.value=='') this.value='Ihre Straße, Ort';\" />";
  html_2 += "<input name=\"submit\" type=\"submit\" style=\"margin-top: 10px;\" value=\"Los\" />";  
  html_2 += "<input type=\"hidden\" name=\"to2\" id=\"toAddress2\" value=\"Unter den Eichen 5, 65195 Wiesbaden\" />";
  html_2 += "<br />";
  html_2 += "<a href=\"javascript:blubb2();\" id=\"AdressSwitch\" style=\"background: none;\">Start- und Zielpunkt tauschen</a>";
  html_2 += "</form>";  
  html_2 += "</div>";

  map.addOverlay(marker_2);
  GEvent.addListener(marker_2, "click", function() {marker_2.openInfoWindowHtml(html_2)});
  
  /*** MARKER 3 ***/
  
  var point_3  = new GPoint(8.248951, 50.067241);  //ACHTUNG: (lon, lat) also vertauscht
  var marker_3 = new GMarker(point_3,markerOptions);
  var html_3   = "";
  
  html_3 += "<div class='twGmapInfo'>";
  html_3 += "<img src='fileadmin/omnimago/images/omnimago-small.jpg' width='203' height='25' alt='OMNIMAGO GmbH' />";
  html_3 += "<p>";
  html_3 += "<strong>Deutsches Filmhaus</strong><br /><br />"
  html_3 += "Murnaustr. 6<br />";
  html_3 += "65189 Wiesbaden<br />";
  html_3 += "<br />";
  html_3 += "Tel.: +49 611 5050100<br/>";
  html_3 += "Fax: +49 611 5050222<br />"; 
  html_3 += "<br />";
  html_3 += "<form action=\"#\" onsubmit=\"set2(this); return false;\">";
  html_3 += "<strong>Routenplaner</strong><br /><br />";
  html_3 += "<span id=\"pretxt2\">Von:</span>";
  html_3 += "<br style=\"line-height: 1px; height: 1px; overflow: none;\"/>";  
  html_3 += "<input type=\"text\" size=\"25\" id=\"fromAddress3\" name=\"from2\" value=\"Ihre Straße, Ort\" onFocus=\"if(this.value=='Ihre Straße, Ort') this.value='';\" onBlur=\"if(this.value=='') this.value='Ihre Straße, Ort';\" />";
  html_3 += "<input name=\"submit\" type=\"submit\" style=\"margin-top: 10px;\" value=\"Los\" />";  
  html_3 += "<input type=\"hidden\" name=\"to2\" id=\"toAddress3\" value=\"Gartenfeldstraße 57, 65189 Wiesbaden\" />";
  html_3 += "<br />";
  html_3 += "<a href=\"javascript:blubb2();\" id=\"AdressSwitch\" style=\"background: none;\">Start- und Zielpunkt tauschen</a>";
  html_3 += "</form>";  
  html_3 += "</div>";

  map.addOverlay(marker_3);
  GEvent.addListener(marker_3, "click", function() {marker_3.openInfoWindowHtml(html_3)});
    
  return map;
}
