// wird zyklisch aufgerufen:

function animate(d) {
	if (d>eol) {
    	$("step").innerHTML = "<b>Ziel erreicht</b>";
        $("distance").innerHTML =  (d/1000.000).toFixed(2) + ' km';
        $("button").value    = 'Start';
        Effect.Appear($('startpoint'));
       	Effect.Appear($('endpoint'));
        Effect.Appear($('lang'));
        var startpoint = $F("startpoint");
        var endpoint   = $F("endpoint");
        $('startpoint').value = endpoint;
        $('endpoint').value   = '';
        return;
    }
    //1609.344
    var p = poly.GetPointAtDistance(d);
    if (k++>=180/step) {
    	map.panTo(p);
        k=0;
    }
    marker.setPoint(p);
    $("distance").innerHTML =  (d/1000).toFixed(2) + ' km<br />' + speed ;
  
  	if (stepnum+1 < dirn.getRoute(0).getNumSteps()) {
    	if (dirn.getRoute(0).getStep(stepnum).getPolylineIndex() < poly.GetIndexAtDistance(d)) {
			stepnum++;
			var steptext = dirn.getRoute(0).getStep(stepnum).getDescriptionHtml();
			$("step").innerHTML = steptext;
			var stepdist = dirn.getRoute(0).getStep(stepnum-1).getDistance().meters;
			var steptime = dirn.getRoute(0).getStep(stepnum-1).getDuration().seconds;
			var stepspeed = ((stepdist/steptime) * 3.1).toFixed(0);
			//    step = stepspeed/2.5*1.609344;
			speed = "<br>momentane Geschwindigkeit: " + stepspeed +"&nbsp;km/h";
			speed = stepspeed +"&nbsp;km/h";
		}
    } else {
    	if (dirn.getRoute(0).getStep(stepnum).getPolylineIndex() < poly.GetIndexAtDistance(d)) {}
    }
    setTimeout("animate("+(d+step)+")", tick);
}

