/*******************************************************************************
 * Javascript für twGmap01einfach
 ******************************************************************************/

var map = null;
var geocoder = null;
var gdir;

var geoXml1; 
var geoXml2;
var geoXml3;
var geoXml4;  
var geoXml5; 
var geoXml6;  
var geoXml7;
var geoXml8;
var geoXml10;//hinterm wädle  
var geoXml11;//lingenfelder
var geoXml12; 
var geoXml13;  
var geoXml14;
var geoXml15;
var geoXml16;
var geoXml17;

var gmarkers = new Array(100);
var poi    = new Array();
var icon   = new Array();
var cnt; // Anzahl POIs
var html;

var labelContainer;
//    var side_bar_html = "";
var labCont;
var bRoute=false;
var newMarkersR = [];
var latLngsR = [];
var iconsR = [];

var markerCluster;
var fromAdd;
var toAdd;
var rt=0;
  
   function initialize() {
	    
	   for (var i=0;i<100;i++)
	   {
	        gmarkers[i] = new Object();
	        gmarkers[i]["value"] = 0;//parseInt("0",10);
	   }

	    
	   makeIcons();
	   
        if (GBrowserIsCompatible()) {
        
            // === Create a custom Control ===
      
              
	      function GetTileUrl_Mapnik(a, z) {return "http://tile.openstreetmap.org/" +z + "/" + a.x + "/" + a.y + ".png";}
	     // function GetTileUrl_TaH(a, z) {return "http://tah.openstreetmap.org/Tiles/tile/" +z + "/" + a.x + "/" + a.y + ".png";}
	        
     
            LabelControl.prototype = new GControl();
 
             LabelControl.prototype.initialize = function(map) 
            {
                labelContainer = document.createElement("div");
                labelContainer.style.overflow="auto";
                labelContainer.style.backgroundColor = "#FFFFCC";
                labelContainer.style.border = "2px solid silver";
                labelContainer.style.height="400px";
                labelContainer.style.width="190px";
                labelContainer.style.paddingLeft="5px";
         
                map.getContainer().appendChild(labelContainer);
                return labelContainer;
            }
 
      LabelControl.prototype.getDefaultPosition = function() {
        return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7, 33));
      }
            labCont = new LabelControl();
            map = new GMap2(document.getElementById("map_canvas")); 
           // var directionsPanel = document.getElementById("labelContainer");
            gdir = new GDirections(map,labelContainer);//document.getElementById("dive"));// document.getElementById("dive"));
            
            //GEvent.addListener(gdir, "load", onGDirectionsLoad);
            GEvent.addListener(gdir, "addoverlay", onGDirectionsAddOverlay);
            GEvent.addListener(gdir, "error", handleErrors);
            
            map.setCenter(new GLatLng(47.701098,10.79587), 14); 
	        map.addControl(new GLargeMapControl());
            map.addControl(new GMapTypeControl());
            
            var copyright = new GCopyright(1,new GLatLngBounds(new GLatLng(-90,-180), new GLatLng(90,180)), 0,
                '(<a rel="license" href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>)');
    
            var copyrightCollection =new GCopyrightCollection('Kartendaten &copy; <a href="http://www.openstreetmap.org/">OpenStreetMap</a> Contributors');
            copyrightCollection.addCopyright(copyright);
 
            var tilelayers_mapnik = new Array();
            tilelayers_mapnik[0] = new GTileLayer(copyrightCollection, 0, 18);
            tilelayers_mapnik[0].getTileUrl = GetTileUrl_Mapnik;
            tilelayers_mapnik[0].isPng = function () { return true; };
            tilelayers_mapnik[0].getOpacity = function () { return 1.0; };
            var mapnik_map = new GMapType(tilelayers_mapnik,new GMercatorProjection(19), "OSM",
                                { urlArg: 'mapnik', linkColor: '#000000' });
             
            map.addMapType(mapnik_map);
            
  /*        var tilelayers_tah = new Array();
            tilelayers_tah[0] = new GTileLayer(copyrightCollection, 0, 17);
            tilelayers_tah[0].getTileUrl = GetTileUrl_TaH;
            tilelayers_tah[0].isPng = function () { return true; };
            tilelayers_tah[0].getOpacity = function () { return 1.0; };
            var tah_map = new GMapType(tilelayers_tah,new GMercatorProjection(19), "T@H",
                                { urlArg: 'tah', linkColor: '#000000' });
                                
            map.addMapType(tah_map);*/
            
            geocoder = new GClientGeocoder();
           
	        map.setMapType(G_HYBRID_MAP);
            map.enableContinuousZoom();
            map.enableScrollWheelZoom();
            
            markerCluster = new MarkerClusterer(map,null,null);
            
            GDownloadUrl("./common/pos.txt", processPOI);
            
     /*       GEvent.addListener(map, "click", function(overlay,latlng) {
            if (latlng) {
                var myHtml = "The GPoint value is: ," + latlng + ",0.0";
                map.openInfoWindow(latlng, myHtml);
                }
            });*/
            
            geoXml1 = new GGeoXml("http://lechsee.de/gpx/moorbad.kml");
	        geoXml2 = new GGeoXml("http://lechsee.de/gpx/mb1.kml");
	        geoXml3 = new GGeoXml("http://lechsee.de/gpx/mb2.kml");
	        geoXml4 = new GGeoXml("http://lechsee.de/gpx/lechsee.kml");
	        geoXml5 = new GGeoXml("http://lechsee.de/gpx/lechsee2.kml");
	        geoXml6 = new GGeoXml("http://lechsee.de/gpx/golf.kml");
	        geoXml7 = new GGeoXml("http://lechsee.de/gpx/ViaClaudiaAugusta.kml");
	        geoXml8 = new GGeoXml("http://lechsee.de/gpx/dampflok.kml");
	        geoXml9 = new GGeoXml("http://lechsee.de/gpx/auerbergrunde.kml");
	        geoXml12 = new GGeoXml("http://lechsee.de/gpx/panoramarunde.kml");
	        geoXml13 = new GGeoXml("http://lechsee.de/gpx/dessaurunde.kml");
	        geoXml14 = new GGeoXml("http://lechsee.de/gpx/auerbergweg.kml");
	        geoXml15 = new GGeoXml("http://lechsee.de/gpx/rehlerundweg.kml");
	        geoXml16 = new GGeoXml("http://lechsee.de/gpx/wieskirche.kml");
	        geoXml17 = new GGeoXml("http://lechsee.de/gpx/willi.kml");
	        
	        geoXml10 = new GGeoXml("http://lechsee.de/gpx/hintermw.kml");
	        geoXml11 = new GGeoXml("http://lechsee.de/gpx/lingenfelder.kml");
	        
	      function tonclick(id)
            {
			    
   				//doLog("Item "+tree.getItemText(id)+" was selected");
   				if(tree.isItemChecked(id))
   				{
   				  //  doLog("Item "+tree.getItemText(id)+" was unselected");
   				    tree.setCheck(id,false);
   				    toncheck(id,false);
   				}
   				else
   				{ 
   				  //  doLog("Item "+tree.getItemText(id)+" was selected");
   				    tree.setCheck(id,true);
   				    toncheck(id,true) 
   				}
		
			};
        
            function toncheck(id, state) 
            {
              // doLog("Item " + tree.getItemText(id) + " was " + ((state) ? "checked": "unchecked"));
               
                if(id==1)
                    toggleMyKml1(state);
                else if(id==2)
                    toggleMyKml2(state);
                else if(id==3)
                    toggleMyKml3(state);
                else if(id==4)
                    toggleMyKml4(state);
                else if(id==5)
                    toggleMyKml5(state);
                else if(id==6)
                    toggleMyKml6(state);
                else if(id==7)
                    toggleMyKml12(state);
                else if(id==8)
                    toggleMyKml13(state);
                else if(id==9)
                    toggleMyKml14(state);
                else if(id==10)
                    toggleMyKml15(state);
                else if(id==21)
                    toggleMyKml8(state);
                else if(id==22)
                    toggleMyKml7(state);
                else if(id==23)
                    toggleMyKml9(state);
                else if(id==911)
                    toggleMyKml10(state);
                else if(id==912)
                    toggleMyKml11(state);
                else if(id==24)
                    toggleMyKml16(state);
                 else if(id==11)
                    toggleMyKml17(state);
                else
                {
                    if(state)
                    {
                        var marker;
                        var pos=0;
                        for(var i=0;i<cnt;i++)
                        {
                            if(poi[i]["id"]==id)
                            {
                                marker = gmarkers[i];
                                if(marker.value != id)
                                {
                                 //   doLog("Item " + marker.value + " was clicked");
                                    marker = createMarker(i);
                                }
                                marker.value=id;
                                pos=i;
                                i=cnt;
                                
                                var latlng = new GLatLng(poi[pos]["lat"], poi[pos]["lon"]);
	                            map.addOverlay(marker);
	                            map.setCenter(latlng, 16);
	                            gmarkers[pos]=marker;
	                            markerCluster.addMarker(marker);
                            }
                        }
                        
	                }
	                else 
	                {
	                    for(var i=0;i<cnt;i++)
                        {
                            var marker = gmarkers[i];
                            //doLog("Item " + marker.value + " was clicked");
                            if(marker.value==id)
                            {
                             //   doLog("Item " + poi[i]["tooltip"] + " was clicked");
                                markerCluster.removeMarker(marker);
                                map.removeOverlay(gmarkers[i]);
                               
                                i=cnt;
                            }
                        }
	                    
	                }
                    
                }
               
                
            };
           
        
            tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0);

			tree.setSkin('dhx_skyblue');
			tree.setImagePath("./codebase/imgs/csh_bluebooks/");
		//	tree.enableDragAndDrop(0);
		//	tree.enableTreeLines(false);
			
			tree.enableCheckBoxes(true,true); 
			/*tree.disableCheckbox(900,true);
			tree.disableCheckbox(93,true);
			tree.showItemCheckbox(900,false);
		    tree.showItemCheckbox(92,false);
		    tree.showItemCheckbox(93,false);*/
			//tree.enableThreeStateCheckboxes(true);
            tree.setOnCheckHandler(toncheck);
            tree.setOnClickHandler(tonclick);
		//	tree.setXMLAutoLoading("./common/tree_a.xml");
			tree.loadXML("./common/tree_a.xml");
			
			//enze
	      //var latlng = new GLatLng(47.7055153,10.79190000);
	      //labelContainer.innerHTML = side_bar_html;
	      

       }//isBrowser
    }//end function
    
    function LabelControl() {  }
    
    function createMarker(i)
    {
        var myHtml;
        var ix = i;
            
        if(i<0)
        {
            var letteredIcon = new GIcon(G_DEFAULT_ICON);
	        letteredIcon.image = "http://maps.google.com/mapfiles/markerI.png";
	        markerOptions = { icon:letteredIcon };
            var latlng;
            if(i==-2)
            {
                latlng = new GLatLng(47.6985072,10.79710200);
                markerOptions.title = "Rathaus";
            }
            else if(i==-1)
            {
                latlng = new GLatLng(47.7055153,10.79190000);
                markerOptions.title = "emd";
            }
        
        }
        else if (poi[i]["typ"] == "3") 
        {
            var latlng = new GLatLng(poi[i]["lat"], poi[i]["lon"]);
            var letteredIcon = icon[poi[i]["icon"]];
            markerOptions = { icon:letteredIcon };
            markerOptions.title = poi[i]["tooltip"];
            //myHtml = message96;
        }
        else 
        {
            var latlng = new GLatLng(poi[i]["lat"], poi[i]["lon"]);
            var letteredIcon = icon[poi[i]["icon"]];
            markerOptions = { icon:letteredIcon };
            markerOptions.title = poi[i]["tooltip"];
            myHtml = poi[i]["text"];
        
        }
        
        var marker = new GMarker(latlng, markerOptions);
        //var marker = new GMarker(latlng);
        //marker.value = number;
       
        GEvent.addListener(marker,"click",function(){
            if (poi[i]["typ"] != "3")
	            map.openInfoWindowHtml(latlng,myHtml);
        });

        return marker;
    }
    
    function doLog(str) 
    {
        window.alert(str);
    };
            
    processPOI = function(doc) 
    {
		lines = doc.split("\n");
		var j = 0;
		
		//enz

		for (var i=0; i<lines.length; i++) {
			if (lines[i].length > 1) {
				parts = lines[i].split("|");

				poi[j] = new Array();
				
				poi[j]["id"] = parseInt(parts[0]);
				poi[j]["typ"] = parseInt(parts[1]);
				poi[j]["tooltip"] = parts[2];
				poi[j]["icon"] = parseInt(parts[3]);
				poi[j]["lat"] = parseFloat(parts[4]);
				poi[j]["lon"] = parseFloat(parts[5]);
				poi[j]["text"] = parts[6];
				
			//	doLog("Item " + poi[j]["id"] + poi[j]["typ"] + poi[j]["tooltip"]+ " was clicked");

				j++;
			}
		}
		//cnt = poi.length;
		//doLog("Item " + j + " was clicked");
		cnt = j;
		
		var marker = createMarker(0);
	      marker.value = 1;
	      map.addOverlay(marker);
	      gmarkers[0] = marker;
	      markerCluster.addMarker(marker);

          //gemeinde
          //latlng = new GLatLng(47.6985072,10.79710200);
          marker = createMarker(1);
	      marker.value = 91;
	      map.addOverlay(marker);
	      gmarkers[1] = marker;
	      markerCluster.addMarker(marker);
	      

	}
	
	function makeIcons() 
	{
	//enz
	//Info Gemeinde
	icon[0] = new GIcon(G_DEFAULT_ICON);
	icon[0].image = "http://maps.google.com/mapfiles/markerI.png";
//	icon[0].iconSize = new GSize(22, 27);
//	icon[0].iconAnchor = new GPoint(6, 20);
//	icon[0].infoWindowAnchor = new GPoint(5, 1);
	//Info Spielplatz
	icon[1] = new GIcon(G_DEFAULT_ICON);
	icon[1].image = "http://maps.google.com/mapfiles/markerS.png";
	
	//Info FFW
	icon[2] = new GIcon(G_DEFAULT_ICON);
	icon[2].image = "http://maps.google.com/mapfiles/markerF.png";
	
	//Info Schule
	icon[3] = new GIcon(G_DEFAULT_ICON);
	icon[3].image = "http://maps.google.com/mapfiles/markerG.png";
	
	//Info Bootsverleih
	icon[4] = new GIcon(G_DEFAULT_ICON);
	icon[4].image = "http://maps.google.com/mapfiles/markerB.png";
	
	//Info Camping
	icon[5] = new GIcon(G_DEFAULT_ICON);
	icon[5].image = "http://maps.google.com/mapfiles/markerC.png";
	
	//Sport
	icon[6] = new GIcon(G_DEFAULT_ICON);
	icon[6].image = "http://maps.google.com/mapfiles/marker_brownS.png";
	
	//Hotel
	icon[7] = new GIcon(G_DEFAULT_ICON);
	icon[7].image = "http://maps.google.com/mapfiles/marker_purpleH.png";
		
	//Gasthäuser
	icon[8] = new GIcon(G_DEFAULT_ICON);
	icon[8].image = "http://maps.google.com/mapfiles/marker_purpleG.png";
	
	//FEWO
	icon[9] = new GIcon(G_DEFAULT_ICON);
	icon[9].image = "http://maps.google.com/mapfiles/marker_greenF.png";
	
	//Kultur
	icon[10] = new GIcon(G_DEFAULT_ICON);
	icon[10].image = "http://maps.google.com/mapfiles/marker_orangeK.png";
	
	//Bergbahn
	icon[11] = new GIcon(G_DEFAULT_ICON);
	icon[11].image = "http://maps.google.com/mapfiles/marker_yellowB.png";
	
	//Restaurant
	icon[12] = new GIcon(G_DEFAULT_ICON);
	icon[12].image = "http://maps.google.com/mapfiles/marker_purpleR.png";
	
	//Cafe
	icon[13] = new GIcon(G_DEFAULT_ICON);
	icon[13].image = "http://maps.google.com/mapfiles/marker_purpleC.png";
	
	//Bar
	icon[14] = new GIcon(G_DEFAULT_ICON);
	icon[14].image = "http://maps.google.com/mapfiles/marker_purpleB.png";
	
	//Pizza
	icon[15] = new GIcon(G_DEFAULT_ICON);
	icon[15].image = "http://maps.google.com/mapfiles/marker_purpleP.png";
	
	//singles
	icon[16] = new GIcon(G_DEFAULT_ICON);
	icon[16].image = "http://google-maps-icons.googlecode.com/files/dates.png";
	
}
  
    function showAddress(Adresse) 
    {
      if (geocoder) 
      {
        geocoder.getLatLng(Adresse,function(point) {
            if (!point) 
            {
              window.alert(Adresse + " nicht gefunden");
            } else {
              map.setCenter(point, 15);
              var Markierung = new GMarker(point);
              map.addOverlay(Markierung);
              Markierung.openInfoWindowHtml(Adresse);
            }
          } );
        
      }
    }
    
    function toggleMyKml1(state) 
    {
          if (state == 0) 
          {
            map.removeOverlay(geoXml1);
          } 
          else 
          {
            map.addOverlay(geoXml1);
            
            var latlng = new GLatLng(47.715699,10.821708);
	        map.setCenter(latlng, 14);
          }
    }
    
    function toggleMyKml2(state) 
    {
      if (state == 0) {
        map.removeOverlay(geoXml2);
      } 
      else {
        map.addOverlay(geoXml2);
        var latlng = new GLatLng(47.711668,10.806911);
	    map.setCenter(latlng, 14);
      }
    }
    
    function toggleMyKml3(state) 
    {
      if (state == 0) 
      {
        map.removeOverlay(geoXml3);
      } 
      else 
      {
        map.addOverlay(geoXml3);
        var latlng = new GLatLng(47.711668,10.806911);
	    map.setCenter(latlng, 14);
      }
    }
    
    function toggleMyKml4(state) 
    {
      if (state == 0) {
        map.removeOverlay(geoXml4);
      } 
      else 
      {
        map.addOverlay(geoXml4);
        var latlng = new GLatLng(47.7049819,10.80115200);
	    map.setCenter(latlng, 13);
      }
    }
    
     function toggleMyKml5(state) 
     {
      if (state == 0) {
        map.removeOverlay(geoXml5);
      } 
      else 
      {
        map.addOverlay(geoXml5);
        var latlng = new GLatLng(47.695239,10.799439);
	    map.setCenter(latlng, 14);
      }
    }
    
    function toggleMyKml6(state) {//golfrunde
      if (state == 0) 
      {
        map.removeOverlay(geoXml6);
      } 
      else {
        map.addOverlay(geoXml6);
        var latlng = new GLatLng(47.7027080081779,10.7947558605491);
	    map.setCenter(latlng, 15);
      }
    }
    
    function toggleMyKml12(state) {//panorama
      if (state == 0) 
      {
        map.removeOverlay(geoXml12);
      } 
      else {
        map.addOverlay(geoXml12);
        var latlng = new GLatLng(47.702609420104,10.789032137031);
	    map.setCenter(latlng, 15);
      }
    }
    function toggleMyKml13(state) {//dessau
      if (state == 0) 
      {
        map.removeOverlay(geoXml13);
      } 
      else {
        map.addOverlay(geoXml13);
        var latlng = new GLatLng(47.740965312915,10.802670922672);
	    map.setCenter(latlng, 14);
      }
    }
    function toggleMyKml14(state) {//auerbergweg
      if (state == 0) 
      {
        map.removeOverlay(geoXml14);
      } 
      else {
        map.addOverlay(geoXml14);
        var latlng = new GLatLng(47.73936774349,10.754811644228);
	    map.setCenter(latlng, 14);
      }
    }
     function toggleMyKml15(state) {//schmuttersee
      if (state == 0) 
      {
        map.removeOverlay(geoXml15);
      } 
      else {
        map.addOverlay(geoXml15);
        var latlng = new GLatLng(47.689621927864,10.7873137652);
	    map.setCenter(latlng, 14);
      }
    }
    
    function toggleMyKml7(state) 
    {
      if (state == 0) {
        map.removeOverlay(geoXml7);
      } 
      else {
        map.addOverlay(geoXml7);
        var latlng = new GLatLng(47.7202394506,10.824981732);
	    map.setCenter(latlng, 13);
      }
    }
    
    function toggleMyKml8(state) 
    {
      if (state == 0) 
      {
        map.removeOverlay(geoXml8);
      } 
      else {
        map.addOverlay(geoXml8);
        var latlng = new GLatLng(47.6971733,10.7912160);
	    map.setCenter(latlng, 13);
      }
    }
    
    function toggleMyKml9(state) 
    {
      if (state == 0) {
        map.removeOverlay(geoXml9);
      } 
      else {
        map.addOverlay(geoXml9);
        var latlng = new GLatLng(47.7031,10.7942);
	    map.setCenter(latlng, 13);
      }
    }
    
    function toggleMyKml10(state) 
    {//hinterm wäldle
      if (state == 0) 
      {
        map.removeOverlay(geoXml10);
      } 
      else {
        map.addOverlay(geoXml10);
        var latlng = new GLatLng(47.71003587492105,10.79156756401062);
	    map.setCenter(latlng, 15);
      }
    }
    function toggleMyKml11(state) 
    {//lingenfelder
      if (state == 0) 
      {
        map.removeOverlay(geoXml11);
      } 
      else {
        map.addOverlay(geoXml11);
        var latlng = new GLatLng(47.71605638235647,10.82202672958374);
	    map.setCenter(latlng, 15);
      }
    }
    function toggleMyKml16(state) 
    {//wieskirche
      if (state == 0) 
      {
        map.removeOverlay(geoXml16);
      } 
      else {
        map.addOverlay(geoXml16);
        var latlng = new GLatLng(47.69569647055669,10.800939202308655);
	    map.setCenter(latlng, 13);
      }
    }
     
    function toggleMyKml17(state) 
    {//auf den auerberg
      if (state == 0) 
      {
        map.removeOverlay(geoXml17);
      } 
      else {
        map.addOverlay(geoXml17);
        var latlng = new GLatLng(47.734283,10.736032);
	    map.setCenter(latlng, 13);
      }
    }
    
/*    function setDirections(fromAddress, toAddress, locale) {
        gdir.load("from: " + fromAddress + " to: " + toAddress,
            { "locale": locale , "getSteps":true});
    }*/
    
    function setDirections(fromAddress, toAddress, locale) 
    {
        if(!bRoute)
        {
            map.addControl(labCont);
            bRoute=true;
        }
      var opts = {};
      opts.getPolyline = true;
      opts.locale = locale;
      opts.getSteps = true;
      //opts.preserveViewport = true;
      fromAdd = fromAddress;
      toAdd = toAddress;
      
      gdir.load("from: " + fromAddress + " to: " + toAddress,opts);
      //          { "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_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.");
      
      map.removeControl(labCont);
      bRoute=false;
    }
    function onGDirectionsLoad()
    {
/*      labelContainer.innerHTML = '<h2>Route<\/h2>';
      labelContainer.innerHTML += gdir.getSummaryHtml() + '<\/br>';
  
   
         var route = gdir.getRoute(0);
         var x = route.getNumSteps();
     
         for( var i = 0; i < x; i++)
         {
           var step = route.getStep(i);
         
           labelContainer.innerHTML +=    '<h2>Bei '+step.getDistance().meters / 1000+
           'km: <\/h2>'+step.getDescriptionHtml();
           
           labelContainer.innerHTML += '<br>'+step.getLatLng() + '<br>';
         }
         
        labelContainer.innerHTML += '<br>' + gdir.getCopyrightsHtml() + '<\/br>';*/
        //labelContainer.innerHTML += gdir.getCopyrightsHtml()
    }
    
// Note the 'addoverlay' GEvent listener inside initialize() function of the original code (above).
// 'load' event cannot be used

function onGDirectionsAddOverlay()
{ 
  // Remove the draggable markers from previous function call.
  for (var i=0; i<newMarkersR.length; i++){
    map.removeOverlay(newMarkersR[i]);
    markerCluster.removeMarker(newMarkersR[i]);
  }

  // Loop through the markers and create draggable copies
  for (var i=0; i<=gdir.getNumRoutes(); i++)
  {
    var originalMarker = gdir.getMarker(i);
    latLngsR[i] = originalMarker.getLatLng();
    iconsR[i] = originalMarker.getIcon();
    newMarkersR[i] = new GMarker(latLngsR[i],{icon:iconsR[i], draggable:true, title:'Marker verschieben für neue Route'});
    map.addOverlay(newMarkersR[i]);
    
    

    // Get the new waypoints from the newMarkers array and call loadFromWaypoints by dragend
    GEvent.addListener(newMarkersR[i], "dragend", function()
    {
      var points = [];
      for (var i=0; i<newMarkersR.length; i++){
        points[i]= newMarkersR[i].getLatLng();
      }
      var opts = {};
   //   opts.getPolyline = true;
   //   opts.locale = locale;
      opts.getSteps = true;
      opts.preserveViewport = true;
      gdir.loadFromWaypoints(points,opts);
    });
    
    
    

    //Bind 'click' event to original markers 'click' event
    copyClick(newMarkersR[i],originalMarker);

    // Now we can remove the original marker safely
    map.removeOverlay(originalMarker);
    markerCluster.addMarker(newMarkersR[i]);
  }

  function copyClick(newMarker,oldMarker){
    GEvent.addListener(newMarker, 'click', function(){
      GEvent.trigger(oldMarker,'click');
    });
  }
  rt=0;
  getNewLocation();
}

function getNewLocation()
{
    if (geocoder) 
    {
        var latlng = newMarkersR[0].getLatLng();
        // Retrieve location information, pass it to addToMap()
     //   alert("An unknown error occurred."+newMarkersR[0].getLatLng());
        geocoder.getLocations(latlng, geoCall);
        
        var latlng = newMarkersR[newMarkersR.length-1].getLatLng();
        geocoder.getLocations(latlng, geoCall);
    //    alert("An unknown error occurred."+newMarkersR[newMarkersR.length-1].getLatLng());
        
    /*    geocoder.getLocations(latlng,function(Adresse) {
            if{Adresse){
              fromAdd = Adresse;
            }
          });*/
          
   /*     var latlng = new GLatLng(newMarkersR[newMarkersR.length-1].getLatLng());    
        geocoder.getLocations(latlng,function(Adresse(response)) {
            if{response){
              //toAdd = Adresse;
              // Retrieve the object
                place = response.Placemark[0];
            }
          });*/
    }
      
 }     

function geoCall(response)
{
    if(rt==0)
    {
      // Retrieve the object
      if (response.Placemark.length > 1) { 
            //place = response.Placemark[0];
            fromAdd = response.Placemark[0].address;//place.AddressDetails.Country.AdministrativeArea.SubAdministrative;
         //   alert("Occurred 1 "+response.Placemark.length);
            rt=1;
        }
    }

    else if(rt==1)
    {
      // Retrieve the object
      if (response.Placemark.length > 1) { 
            //place = response.Placemark[0];
            toAdd = response.Placemark[0].address;//place.AddressDetails.Country.AdministrativeArea.SubAdministrative;
            rt=0;
          //  alert("Occurred 1 "+response.Placemark.length);
        }
   
      addToRoute(fromAdd,toAdd);
    }

}
 
function addToRoute(newFrom,newTo)
{
    var latlngS = newMarkersR[newMarkersR.length-1].getLatLng();
    var latlngE = newMarkersR[newMarkersR.length-1].getLatLng();
    
    labelContainer.innerHTML = '<h2>Route<\/h2>';
    labelContainer.innerHTML += '<strong>Von</strong><br>' + newFrom + '<br><br>Navi: Latitude/Longitude <br> ' + latlngS + '<br><br><strong>Nach</strong><br>' + newTo + '<br><br>Navi: Latitude/Longitude <br> ' + latlngE  + '<br><br>' + gdir.getSummaryHtml() + '<\/br>';
    //labelContainer.innerHTML += '<h2>Von</h2>' + '<p class="Stil7">' + newFrom + '<br><br>Navi: Latitude/Longitude <br> ' + latlngS + '</p><br><h2>Nach</h2>' + '<p class="Stil7">' + newTo + '<br><br>Navi: Latitude/Longitude <br> ' + latlngE + '</p><br><p class="Stil7">' +gdir.getSummaryHtml() + '<br><br></p>';

 //   document.getElementById("fromAddress"). = newFrom;
 //   document.getElementById("toAddress").setAttribute("toAddress",newTo);
    var fromList = newFrom.split(','); // split on commas
    var toList = newTo.split(','); // split on commas
    
//    alert(newFrom + ' - ' + fromList[1]);
//    alert(newTo + ' - ' + toList[1]);

/*    f = new File("./gpx/abc.txt");
    if(f.open("w") == true)
    {
     var str = 'Route: Von ' + newFrom + ' Nach: ' + newTo;
     f.write(str);
     f.close();
    }*/

    document.forms[1].elements[3].value = fromList[1];
    document.forms[1].elements[4].value = toList[1];
    
    var Nroute = gdir.getNumRoutes();
    for( var r = 0; r < Nroute; r++)
    {
        var route = gdir.getRoute(r);
        var x = route.getNumSteps();
        
        var geocode = route.getStartGeocode();
 
        for( var i = 0; i < x; i++)
        {
            var div = document.createElement('div');
            var step = route.getStep(i);
            var mapname="test";
     
            var html =    '<h3>Bei '+step.getDistance().meters / 1000+
                'km: <\/h3>'+step.getDescriptionHtml();
                
            div.innerHTML=html;
            div.style.cursor = 'pointer';
            div.style.marginBottom = '5px';
            
            
       
       //     labelContainer.innerHTML += '<br> <a href="http://javascript:myclick()">'+step.getLatLng()+' </a>' + '<br>';
            
      //      var point = step.getLatLng(); 
      //      var target = '"' + mapname+".showMapBlowup(new GLatLng("+point.toUrlValue(6)+"))"  +'"'; 
            
           // var html += '<a style="cursor: pointer;" onclick='+target +'>';
           // labelContainer.innerHTML += html;
            
      //      labelContainer.innerHTML += '<br> <a href="http://javascript:void(0)">'+step.getLatLng()+'</a><a zoomMarker='+target+'</a><br>'; 
            var marker = new GMarker(step.getLatLng());
      //      map.addOverlay(marker);
            GEvent.addListener(marker,"click",function()
            {
                    //if (poi[i]["typ"] != "3")
                    //map.openInfoWindowHtml(latlng,myHtml);
                    var latlng = marker.getLatLng();
                    map.setCenter(latlng, 13);
             });
             
             
              
            
             GEvent.addDomListener(labelContainer, 'click', function() {
                GEvent.trigger(marker, 'click');
             });
            GEvent.addDomListener(labelContainer, 'mouseover', function() {
                labelContainer.style.backgroundColor = '#fff';
            });
            GEvent.addDomListener(labelContainer, 'mouseout', function() {
                labelContainer.style.backgroundColor = '#eee';
            });
            
            labelContainer.appendChild(div);
            
        }
     }
     
    labelContainer.innerHTML += '<br>' + gdir.getCopyrightsHtml() + '<\/br>';
    
    
}

function writeConsole(content) {
 top.consoleRef=window.open('','myconsole',
  'width=350,height=250'
   +',menubar=0'
   +',toolbar=0'
   +',status=0'
   +',scrollbars=1'
   +',resizable=1')
// top.consoleRef.document.open("text/html","replace");
 top.consoleRef.document.writeln(
  '<html><head><title>Route</title></head>'
 +'<body bgcolor=white onLoad="self.focus()">'
 +'<center><font color=red><b><i>Die Route <a href=# onclick="window.print();return false;">drucken</a> </i></b></font>'
 +content
 +'</body></html>'
 )
 top.consoleRef.document.close()
}

function clearRoute()
{
    if(bRoute)
    {
        for (var i=0; i<newMarkersR.length; i++)
        {
            map.removeOverlay(newMarkersR[i]);
            markerCluster.removeMarker(newMarkersR[i]);
        }
        //gdir.removeOverlay(qdir.getPloyline());
        gdir.clear();
        map.removeControl(labCont);
        bRoute=false;
    }
  
}

function saveRoute()
{
    //alert("An unknown error occurred.");
    if(bRoute)
        writeConsole(labelContainer.innerHTML);
}

// This function picks up the click and opens the corresponding info window
function myclick(i)
{
    var latlng = newMarkersR[i].getLatLng();
  //  newMarkersR[i].openInfoWindowHtml(html);
 // map.setCenter(latlng, 15);
  
  var str = "An unknown error occurred." + i + newMarkersR[i].getLatLng();
  alert(str);
}
