function addMarker(map, point, ico, desc) {
  var marker = new PdMarker(point, ico);
  GEvent.addListener(marker,"click",function(){marker.openInfoWindowHtml(desc)});
  map.addOverlay(marker);
}


function displayMap(points, noofpoints, skip, linedef) {	
  // Wstepna inicjalizacja mapy
  //
  var map = new GMap(document.getElementById('map'));
  map.addControl(new GLargeMapControl());
  map.addControl(new GMapTypeControl());
  map.addControl(new GScaleControl());
  map.setCenter(new GLatLng(22, 72), 5);
 
  
  var bounds = new GLatLngBounds();	
  var icon = new GIcon();
  icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
  icon.iconSize = new GSize(12,20);
  icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
  icon.shadowSize = new GSize(22, 20);
  icon.iconAnchor = new GPoint(8, 8);
  icon.infoWindowAnchor = new GPoint(5, 1);	

  // Wyznacz obszar (bound) obejmujacy ostatnie noofpoints odwiedzonych punktow
  //
  for(var a=0;a<points.length;a++) {
    var point = new GLatLng(points[a][0], points[a][1]);
    addMarker(map, point, icon, points[a][2]);
    if( a+noofpoints >= points.length ) bounds.extend(point);
  }

  // Wycentruj i wyskaluj mape
  //
  map.setZoom(map.getBoundsZoomLevel(bounds));
  map.setCenter(new GLatLng((bounds.getNorthEast().lat()+bounds.getSouthWest().lat())/2, (bounds.getNorthEast().lng()+bounds.getSouthWest().lng())/2));	

  var disAll=0, disNoPlane=0;

  // Narysuj trase i oblicz jej dlugosc (calkowita i bez lotu PL-IN)
  //  			
  for (var a=points.length-1; a>0; a--) {
    var pts = [new GLatLng(points[a][0], points[a][1]), new GLatLng(points[a-1][0], points[a-1][1])];

    var cdist = disAll > linedef[6] ? linedef[6] : disAll;
    var cr = (linedef[3]-linedef[0])*cdist/linedef[6]+linedef[0];
    var cg = (linedef[4]-linedef[1])*cdist/linedef[6]+linedef[1];
    var cb = (linedef[5]-linedef[2])*cdist/linedef[6]+linedef[2];

    colour = "rgb("+cr.toFixed(0)+","+cg.toFixed(0)+","+cb.toFixed(0)+")";

    map.addOverlay(new GPolyline(pts, colour, 5, 1));

    var distans = pts[0].distanceFrom(pts[1])/1000;
    disAll = parseInt(disAll) + parseInt(distans.toFixed(0));
    if( a>skip ) disNoPlane = parseInt(disNoPlane) + parseInt(distans.toFixed(0));
  }
  
  // Wypisz liczbe kilometrow na stronie
  //
  var e = document.getElementById("distmade");
  if( e ) e.innerHTML = disNoPlane+' km';	

  e = document.getElementById("coords");
  if( e ) {
    e.innerHTML = map.getCenter().lat().toFixed(6) + ', ' + map.getCenter().lng().toFixed(6);
    GEvent.addListener(map, "moveend", function() { document.getElementById("coords").innerHTML = map.getCenter().lat().toFixed(6) + ', ' + map.getCenter().lng().toFixed(6); });
  }
}
