// onload Event hinzufpgen (statt <body onload="..." onunload="...">)
        if (window.attachEvent) {
	        window.attachEvent("onload", function() {
		        load();	// Internet Explorer
	        });
	        window.attachEvent("onunload", function() {
		        GUnload();	// Internet Explorer
	        });
        } else {
	        window.addEventListener("load", function() {
		        load(); // Firefox and standard browsers
	        }, false);
	        window.addEventListener("unload", function() {
		        GUnload(); // Firefox and standard browsers
	        }, false);
        }

        
        // variables elevationchart
        var intTableHeight = 100;
        var intTableWidth = 450;
        
        // variables track
        var strUrlRootConCMS = "/App_Common/Images/Gps/";
        var strUrlRootSite = "/Media/Gps/";
        var trackColor = "#CC0000";
        var trackWidth = 2;
        var trackTrasparency = 1;
        var LatitudePoints = new Array();
        var LongitudePoints = new Array();
        var waypoint = new Array();
        var arrPoints = new Array();
        var sngHighest = 0;
        var sngCellWidth;
        var arrElevationPoints = new Array();
        var sngHighest;
        var oldmarker;
        var map;
        var iconWaypoint;
        var bounds;
        // variables waypoints
        var arrCategoryIds = new Array();
        var arrIconGMap = new Array();
        var arrDescriptions = new Array();
        var arrImages = new Array();
        var arrWPLatitudes = new Array();
        var arrWPLongitudes = new Array();
        var arrNames = new Array();
        var arrCategoryNames = new Array();
        var arrIcons = new Array();
        var icon = new Array();
        var MarkerArray = new Array();
        var waypointList = "";
        var j = 0;
        var oldCatId = -1;
        
        // define marker array
        arrCategoryIds = strCategoryIds.split(",");
        for(i=0;i<arrCategoryIds.length;i++){
            if(arrCategoryIds[i]!=oldCatId){
                MarkerArray[j] = new Array();
            j++;
            }
            oldCatId = arrCategoryIds[i];
        }
        
       
        function load() {
          if (GBrowserIsCompatible()) {
          
            arrElevationPoints = strElevationPoints.split(",");
            LatitudePoints = strLatitudePoints.split(",");
            LongitudePoints = strLongitudePoints.split(",");
            bounds = new GLatLngBounds();
            for(i=0; i < LongitudePoints.length;i++){
                arrPoints[i] = new GLatLng((LatitudePoints[i]), (LongitudePoints[i]));
                bounds.extend(arrPoints[i]);
            }
            // Extreme Elevation
            highestEle = parseFloat("0");
            numEle = 0;
            for(i = 0; i < arrElevationPoints.length;i++){
                
                numEle = parseFloat(arrElevationPoints[i]);
                   if (numEle > highestEle){ 
                            highestEle = numEle;
                   }
                
            }  
            // elevationchart
            sngHighest = highestEle;
            
            // draw map
            map = new GMap2(document.getElementById("map"));
            map.addControl(new GSmallMapControl());
            map.addControl(new GMapTypeControl());
            map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
            map.setMapType(G_HYBRID_MAP);
            map.enableContinuousZoom();
            map.enableDoubleClickZoom();
           
            // draw track 
            map.addOverlay(new GPolyline(arrPoints, trackColor, trackWidth, trackTrasparency));
            // Startpunkt einzeichnen
            //   map.addOverlay(new GMarker(arrPoints[0], iconStart));
            // ZielPunkt einzeichnen
            // map.addOverlay(new GMarker(arrPoints[arrPoints.length - 1], iconZiel));
            
           // draw elevationchart
           getElevationChart();
           // draw Waypoints
           setWaypoints();
           }
       }
       

        // draw-function for elevationchart
        function PrintCell(sngElevation,intArrElevationIndex) {
              returnString = ""
              height = (sngElevation/sngHighest*intTableHeight);
              if (height == 0){
                height = 1
              }
              sngElevation = parseInt(sngElevation);
              returnString = returnString + "<td height='100' align='left' valign='bottom'><img src='" + (strUrlRootSite) + "bar.gif' height='" + height + "px' width='" + sngCellWidth + "px' onmouseover='javascript:fncCellOnMouseOver(" + sngElevation + "," + intArrElevationIndex + ")' onmouseout='javascript:fncCellOnMouseOut(" + intArrElevationIndex + ")'></td>\n";
              return returnString;
          }
          
        // MouseOver for elevationchart
        function fncCellOnMouseOver(sngElevation,intArrElevationIndex){
			var o = document.getElementById("cellHeight");
            if (o!=null) o.innerHTML = "<font face='Arial' size='1'>" + sngElevation + " m</font>";
        
            oldmarker = new GMarker(arrPoints[intArrElevationIndex]);
            map.addOverlay(oldmarker);
        }
        
        // MouseOut for elevationchart
        function fncCellOnMouseOut(intArrElevationIndex){
			var marker = new GMarker(arrPoints[intArrElevationIndex]);
			map.removeOverlay(oldmarker);
	        
			var o = document.getElementById("cellHeight");
			if (o!=null) o.innerHTML = "<font face='Arial' size='1'>&nbsp;</font>";
        }
        
        // Elevationchart
        function getElevationChart(){
			var o = document.getElementById("elevationChart");
            if (o!=null) o.innerHTML = drawElevationChart();
        }
        function drawElevationChart(){
            returnString = "";
            if (arrElevationPoints.length <= ((intTableWidth-150)/2)){
            sngCellWidth = 2;
            }
            else{
            sngCellWidth = 1;
            }
          
            skipPointsHelp = 1;
            while((arrElevationPoints.length/skipPointsHelp) > (intTableWidth-150)){
                skipPointsHelp++;
            }
            
            intTableIWidth = (arrElevationPoints.length * sngCellWidth)/skipPointsHelp;
            sngTrackLength = parseFloat(sngTrackLength/3);
            
            //Höhenprofil ausgeben
            returnString = returnString + "<table width='" + (intTableWidth) + "' height='" + (intTableHeight) + "px' border='0' cellspacing='0' cellpadding='0'>\n<tr align='left' valign='bottom' height='100%'>";
            returnString = returnString + "<td width='50px' valign='top' align='right'><table height='100%' width='100%' border='0' cellspacing='0' cellpadding='0'><tr height='50%'><td valign='top' align='right' height='50%' width='100%'><font face='Arial' size='1'>" + parseInt(sngHighest) + "m -</font></td></tr><tr height='50%'><td valign='bottom' align='right' height='50%' width='100%'><font face='Arial' size='1'>0 m -</font></td></tr></table></td><td valign='bottom' align='left' width='" + (intTableIWidth) + "'><table height='100%' border='0' cellspacing='0' cellpadding='0' width='" + (intTableIWidth) + "'><tr valign='bottom' align='left'>";
            
            for(i = 0; i < arrElevationPoints.length; i = i + skipPointsHelp){
                returnString = returnString + PrintCell(arrElevationPoints[i],i);
            }
            returnString = returnString + "</tr></table></td><td width='*'></td><td><table cellspacin='0' cellpadding='0' border='0' width='100%' height='100%'><tr><td valign='top' id='cellHeight' align='right'><font face='Arial' size='1'>&nbsp;</font></td></tr><tr><td valign='top' id='cellElevation' align='right'><font face='Arial' size='1'>" + (strLangHoehenmeter) + ":&nbsp;" + (intTotEle) + "&nbsp;m</font></td></tr><tr><td valign='top' id='cellElevationStart' align='right'><font face='Arial' size='1'>" + (strLangStart) + ":&nbsp;" + parseInt(arrElevationPoints[0]) + "&nbsp;m</font></td></tr><tr><td valign='top' id='cellElevationEnd' align='right'><font face='Arial' size='1'>" + (strLangZiel) + ":&nbsp;" + parseInt(arrElevationPoints[arrElevationPoints.length-1]) + "&nbsp;m</font></td></tr></table></td></tr>";
            returnString = returnString + "<tr><td></td><td valign='top' align='left'><table width='100%' height='100%' border='0' cellspacing='0' cellpadding='0' valign='top'><tr valign='top' height='100%'><td width='33%' valign='top' align='left'><font face='Arial' size='1'>| 0 km</font></td><td width='33%' valign='top' align='left'><font face='Arial' size='1'>| " + (sngTrackLength).toFixed(1) + " km</font></td><td width='34%' valign='top' align='left'><font face='Arial' size='1'>| " + (sngTrackLength*2).toFixed(1) + " km</font></td></tr></table></td><td colspan='2' valign='top' align='left'><font face='Arial' size='1'>| " + (sngTrackLength*3).toFixed(1) + " km</font></td></tr></table>";
       
            return returnString;
        
      }
      
      
      // waypoints / markers
      function createMarker(point,html,category){
            var marker = new GMarker(point,icon[category]);
            GEvent.addListener(marker, "click", function() {
            marker.openInfoWindowHtml(html);
          });
          return marker;
      }
      
          
      function setWaypoints(){
      
          
          arrIconGMap = strIconsGMap.split(",");
          arrDescriptions = strDescriptions.split(",");
          arrImages = strImages.split(",");
          arrWPLatitudes = strWPLatitudes.split(",");
          arrWPLongitudes = strWPLongitudes.split(",");
          arrNames = strNames.split(",");
          arrCategoryNames = strCategoryNames.split(",");
          
          var oldID = -1;
          var a = -1;
          var oldA = -1;
          var b = 0;
          var description;
         
          for(i=0;i<arrCategoryIds.length;i++){
            if(arrCategoryIds[i]!=oldID){
                a++;
                b = 0;
                icon[a] = new GIcon();
                icon[a].image = strUrlRootConCMS + arrIconGMap[i];
                icon[a].iconSize = new GSize(20, 20);
                icon[a].iconAnchor = new GPoint(10, 10);
                icon[a].infoWindowAnchor = new GPoint(10, 10);
                
            }
            
            printWaypointCategory(arrCategoryNames,a,oldA,i);
                        
            arrIcons[i] = b;
            description = "";
            if(arrImages[i]!=""){
                description = "<img src='/App_Upload/GPS/images/" + arrImages[i] + "' border='0'><br>";
            }
            description += arrDescriptions[i];
            
            MarkerArray[a][b] = createMarker(new GLatLng(arrWPLatitudes[i], arrWPLongitudes[i]),"<table bgcolor='white'><tr><td><font size='1' face='Arial'><b>" + arrNames[i] + "</b><br>" + description + "</font></td></tr></table>",a);
            
            map.addOverlay(MarkerArray[a][b]);
            
            b++;
            oldA = a;
            oldID = arrCategoryIds[i];
          }
          
      }
      
      function printWaypointCategory(name,a,oldA,i){
            if((a==0) && (a!=oldA)){
                waypointList = "<table border='0' width='100%'><tr height='20'><td colspan=9 class='title'>" + strLangWaypoints + "</td></tr><tr height='20'>";
            }
            if(a % 3 == 0){
                waypointList += "</tr><tr height='20'>";
            }
            if(a!=oldA){
                waypointList += "<td valign='top' width='15'><input id='Waypoint" + a + "' type='checkbox' name='waypoints' value='waypoints' onclick='javascript:addRemoveWaypoints(" + a + ")' checked='checked' /></td><td width='20'><img src='" + icon[a].image + "' /></td><td class='text' align='left'>" + arrCategoryNames[i] + "</td>";
            }
            if(i==arrCategoryIds.length-1){
                waypointList += "</tr></table>"
               
               var o = document.getElementById("waypointList");
               if (o!=null) o.innerHTML = waypointList;
            }     
      }
      
      function addRemoveWaypoints(a){
            
            if (!eval(document.getElementById("Waypoint" + a)).checked){
            
                for ( b = 0; b < MarkerArray[a].length; b++){
                    map.removeOverlay(MarkerArray[a][b]);
                }
            }else{
                for ( b = 0; b < MarkerArray[a].length; b++){
                    map.addOverlay(MarkerArray[a][b]);
                }
            }
      }
      
 