var dirn; 
var eol;
var poly;
var k=0;
var stepnum=0;
var speed = "";   
var step = 5; // metres
var tick = 100; // milliseconds
var marker;
var map;
      	     
      
var rules = {
	'#type' : function(el) {
		el.onchange = function() {
		var type = el.value;
	if (type==0) map.setMapType(G_NORMAL_MAP);
    if (type==1) map.setMapType(G_SATELLITE_MAP);
    if (type==2) map.setMapType(G_HYBRID_MAP);
    if (type==3) map.setMapType(G_PHYSICAL_MAP);
	}
	},
	'#button' : function(el) {
		el.onclick = function() {
			 el.disabled = 'true';
			 Element.setOpacity($('controls'),0.7);
		     var startpoint = $F("startpoint");
        	 var endpoint   = $F("endpoint");
             var locale     = $F("lang");
          	 // Starten:
          	 if (el.getAttribute('rel') =='stop') {
          	 	el.setAttribute('rel','start'); 
          	 	var locale = $F('lang'); 
          	 	dirn.loadFromWaypoints([startpoint,endpoint],{
          			locale:locale,
          			getPolyline:true,
          			getSteps:true
          		});
			} else {
				el.setAttribute('rel','stop'); 
          	    GUnload();
				initGMap();
				$("button").disabled = null;
   	     	    $("button").value    = 'Start';
   	     	    $('startpoint').disabled=null;
   	     	    $('endpoint').disabled=null;
   	     	    $('lang').disabled=null;
   	     	}
		  }
	}
 };


Event.observe(window, 'load', init_app);
Event.observe(window, 'unload', GUnload);


function init_app(event) {
  Behaviour.register(rules);
  Behaviour.apply(rules);
  initGMap();	  	
}

function saveLocation() {
}


function dbg(i) {
	Try.these(function(){console.log(i);});
		
}

function initGMap() {
 	if (!GBrowserIsCompatible())  return 0;
 		Element.setOpacity($('map'),0.9);
   		map = new GMap2($("map"));
        map.setCenter(new GLatLng($F('lng'),$F('lat')),13,G_HYBRID_MAP);
        map.addControl(new GSmallZoomControl());
	    dirn = new GDirections();
        var car = new GIcon();
            car.image="caricon.png"
            car.iconSize=new GSize(32,18);
            car.iconAnchor=new GPoint(16,9);
            GEvent.addListener(dirn,"load", function() {
				$('startpoint').disabled='disabled';
				$('endpoint').disabled='disabled';
				$('lang').disabled='disabled';
				$('button').value    = 'Stop';
				poly = dirn.getPolyline();
			    var geocoder = new GClientGeocoder(); // nur für das Speichern
  				geocoder.getLatLng($F("endpoint"),function(point) {
  					new Ajax.Request('saveloc.ajax.php', {
							parameters:'label=' + encodeURI($F('endpoint')) + '&lat='+ point.x+ '&lng='+point.y, 
							evalScripts:true, 
							asynchronous:true,
							onComplete : function() {Behaviour.apply(rules);}
				  		}		
			   		);
  				});
				eol = poly.Distance();
				map.setCenter(poly.getVertex(0),14);
				map.addOverlay(new GMarker(poly.getVertex(0),G_START_ICON));
				map.addOverlay(new GMarker(poly.getVertex(poly.getVertexCount()-1),G_END_ICON));
				marker = new GMarker(poly.getVertex(0),{icon:car});
				map.addOverlay(marker);
				var steptext = dirn.getRoute(0).getStep(stepnum).getDescriptionHtml();
				$("step").innerHTML = steptext;
				setTimeout("animate(0)",2000);  // Allow time for the initial map display
				$('button').disabled = null;
				Element.setOpacity($('controls'),0.9999);
				Element.setOpacity($('map'),0.9999);
   	     
      	   });
      	GEvent.addListener(dirn,"error", function() {
      			$("button").disabled = null;
   	     	    $("button").value    = 'Start';
   	     	    alert("Standort nicht auflösbar.");
        	
      	});
}


 
