﻿var map = null;
var geocoder = null;
var old;

function load() {
  
  if (GBrowserIsCompatible()) {
  
    map = new GMap2(document.getElementById("map"));

    startIcon = new GIcon();
    startIcon.image = "/images/marker_start.gif";
    startIcon.shadow = "/images/shadow-marker.png";
    startIcon.iconSize = new GSize(15, 14);
    startIcon.shadowSize = new GSize(23, 14);
    startIcon.iconAnchor = new GPoint(7, 7);
    startIcon.infoWindowAnchor = new GPoint(7, 7);
    
    planIcon = new GIcon();
    planIcon.image = "/images/marker_plan.gif";
    planIcon.shadow = "/images/shadow-marker.png";
    planIcon.iconSize = new GSize(8, 8);
    planIcon.shadowSize = new GSize(12, 6);
    planIcon.iconAnchor = new GPoint(4, 4);
    planIcon.infoWindowAnchor = new GPoint(6, 3);
    
    tinyIcon = new GIcon();
    tinyIcon.image = "/images/marker.gif";
    tinyIcon.shadow = "/images/shadow-marker.png";
    tinyIcon.iconSize = new GSize(15, 14);
    tinyIcon.shadowSize = new GSize(23, 14);
    tinyIcon.iconAnchor = new GPoint(7, 7);
    tinyIcon.infoWindowAnchor = new GPoint(7, 7);

    GEvent.addListener(map, "click", function(marker,point) {
      var Punkte = point.toString().slice(1,(point.toString().length-1)).split(",");
      elat = Punkte[0];
      elong = Punkte[1].slice(1,(point.toString().length-1));
      addergebnis(elat,elong);

      if (old) { 
      	map.removeOverlay(old); 
      }

      var marker2 = new GMarker(point,{ icon:startIcon });
     
      marker2.show;
      marker2.setLatLng(point);
      map.addOverlay(marker2);
      old = marker2;
    });

    geocoder = new GClientGeocoder();
    map.setCenter(new GLatLng(51.158592, 10,406305), 6);
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl()); 
    map.enableContinuousZoom();
    map.enableScrollWheelZoom();
    //    map.setMapType(G_HYBRID_TYPE);


    addallPublishedPlaene();

    for (var i = 0; i < RPid.length; i++) {
      var rmarker = addRoutingPoint(RPname[i],RPid[i],RPlat[i],RPlong[i]);
    }


  }
}

function addallPublishedPlaene() {

    function createMarker(point, icon, name, link,anz) {
      var marker = new GMarker(point,icon);
      GEvent.addListener(marker, "click", function() {
      	text = "<b>"+name+"</b><br />Veröffenlichte Schulwegpläne:"+anz+"<br><a href='/plaene/index.htm?schoolid="+link+"'>Zeige Pläne...</a></p>";
        marker.openInfoWindowHtml(text);
      });
      return marker;
    }

    anzahl = xx.length;
    var markers = [];
       
    for (var i = 0; i < anzahl; i++) {
      var point  = new GLatLng(xx[i],yy[i]);
      var marker = createMarker(point, planIcon, name[i], link[i],swpanz[i]);
      map.addOverlay(marker);
    }    

}



function addRoutingPoint(arpname,id,lat,long) {

  punkt = new GLatLng(lat, long);
  var marker = new GMarker(punkt,{ icon:tinyIcon });

  GEvent.addListener(marker, "click", function() {
     text = "Routingzielpunkt:<br /><b>"+arpname+"</b>";
     marker.openInfoWindowHtml(text);
  });
  
  marker.show;
  marker.setLatLng(punkt);
  map.addOverlay(marker);
  
  return marker;
 
}


function addergebnis(elat,elong) {

  var Output = "";

  for (var i = 0; i < RPid.length; i++) {
    distance = dist(elat*1,elong*1,Schullat[i]*1,Schullong[i]*1)

    if (distance < 3000) {
      Output = Output+"<form action='/../main/get_wtsp.php' method='post' style='padding:5px;'>"
  +"<img src='/pixel/icon-haken.gif' /> "+RPname[i]+" " 
  +"<input type='hidden' id='error_callback' name='error_callback' value='../plaene/routing_error.htm'>"
  +"<input type='hidden' id='latitude'  name='latitude'       value='"+elat+"'>"
  +"<input type='hidden' id='longitude' name='longitude'      value='"+elong+"'>"
  +"<input type='hidden' id='school-id' name='school-id'      value='"+Schulid[i]+"'>"
  +"<input type='hidden' id='target-id' name='target-id'      value='"+RPid[i]+"'>"
  +"<input type='submit' value='anzeigen'></form>";
    }  
  }  
  
  if (Output) Output = "<p><b>Schulwegplanrouting möglich für:</b>"+Output+"<br /><br /></p><p style='font-size:0.8em;line-height:10px'>Hinweis:<br />Der Schulweg-Startpunkt, z.B. Ihre Wohnadresse, kann auch etwas abseits<br />eines empfohlenen Schulweges liegen, da nur die von dem Planersteller<br />festgelegten und überprüften Hauptwege angezeigt werden.</p>";
  document.getElementById("ergebnis").innerHTML  = Output;

}



function showAddress(address) {
  address = address+", Deutschland";
  if (geocoder) {
    geocoder.getLatLng(
      address,
      function(point) {
        if (!point) {
          alert(address + " not found");
        } else {
          map.setCenter(point, 14);

          var Punkte = point.toString().slice(1,(point.toString().length-1)).split(",");
          elat = Punkte[0];
          elong = Punkte[1].slice(1,(point.toString().length-1));
          addergebnis(elat,elong);

          if (old) { 
            map.removeOverlay(old); 
          }

          var marker2 = new GMarker(point,{ icon:startIcon });
      
          marker2.show;
          marker2.setLatLng(point);
          map.addOverlay(marker2);
          old = marker2;          
          
          
        }
      }
    );
  }
}

function dist(lat1,lon1,lat2,lon2) {

  theta = lon1 - lon2;
  distance = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) +  Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta));
  distance = Math.acos(distance);
  distance = rad2deg(distance);
  miles = distance * 60 * 1.1515;

  return (miles * 1609.344);
}


function deg2rad (angle) {
    return (angle/180)*Math.PI;
}

function rad2deg (angle) {
    return (angle/Math.PI) * 180;
}

function draw(pnt){
  map.clearOverlays();
  bounds = new GLatLngBounds();
  var givenRad = 0.75;
  var givenQuality = 60;
  var liColor   = "#C79500";
  var liWidth   = 1;
  var liOpa = 0.6;
  var fillColor = "#FFDD75";
  var fillOpa = 0.1;
  drawCircle(pnt, givenRad, givenQuality, liColor, liWidth, liOpa, fillColor, fillOpa);
  alert(pnt);
}

