 //		Routen-Klasse
 //		 Autor: Hajo Schmitt
 //		 Letzte Änderung: 30.3.2007
 //		 TO DO:
 
 // var Route = null; // globale aktuelle Route, aus JSON
 // var XMLOverlay = null; // globaler handle auf das Overlay

 function VFRRoute(oKaMap) {
  this.KaMap = oKaMap; // Referenz auf Root-KaMap
  this.XMLOverlay = null; // das XML-Overlay
  this.Route = null; // die eigentliche Route
 }
 
 VFRRoute.prototype.load = function(thisRoute, bCenter){
 // initialisiert aus  JSON, es wird das Routen-Array ausgewertet (query.route)
  if (thisRoute) {
	this.Route = thisRoute;
	dojo.lang.forEach(this.Route, 
		function(Wpt) {
		// Wpts mit X/Y versorgen
		var xy = latlon2mercator(Wpt.lat, Wpt.lon); 
		Wpt.x = xy[0];
		Wpt.y = xy[1];
		}
	);
   
    this.addToMap(); // ab in die Karte

	if (this.Route.length > 1) {
		if (bCenter) this.ZoomToRoute();
		else this.CenterToRoute();
	}
	else if (this.Route.length == 1) this.CenterToRoute(); // bei einem Punkt: IMMER Center
	else this.Clear(); // leere Route->Clear
  }
}
 
 // Private: fügt geladene Route als Overlay hinzu
 VFRRoute.prototype.addToMap = function() {
 
	try {
		if (this.XMLOverlay)  this.XMLOverlay.remove(); // weg mit dem alten
		this.XMLOverlay = new kaXmlOverlay( this.KaMap, 49 ); // Zorder Bullets: 50, 49 = eins drunter
		var linestr = "";
		if ( !this.Route ) {
			return;
		}

		for (var i=0;i<this.Route.length;i++) {
//			alert ( this.Route[i].key );
			var my_point = this.XMLOverlay.addNewPoint(this.Route[i].key, this.Route[i].x, this.Route[i].y);
			var my_symbol = new kaXmlSymbol();
			my_symbol.size = 12;
			my_symbol.color = '#ff0000';
			my_point.addGraphic(my_symbol);
			if (linestr.length>0) linestr += ",";
			linestr += this.Route[i].x + " " + this.Route[i].y;
		}

		// und jetzt demn Linestring in das Overlay, wenn min. 2 Punkte
		if (this.Route.length > 1) {
			var my_line = this.XMLOverlay.addNewPoint("RouteLegs",this.Route[0].x, this.Route[0].y);
			var line = new kaXmlLinestring(my_line);
			line.readCoordinates(my_line, linestr);
			line.color = 'red';
			line.stroke = 2;
			my_line.addGraphic(line);
		}
		
	} catch (e) {
		alert ( 'addToMap: ' + e );
	}
  }
 
 VFRRoute.prototype.ZoomToRoute = function() {
   // BoundBox bestimmen und zoomen
   //kaMap.zoomToExtents( minx, miny, maxx, maxy )
	if (this.Route) {
		if (this.Route.length > 1) {
			var minx=this.Route[0].x;
			var miny=this.Route[0].y;
			var maxx=this.Route[0].x;
			var maxy=this.Route[0].y;
			var padding=20000; // 50 km drumrum
			for (var i=0;i<this.Route.length;i++) {
				if (this.Route[i].x > maxx) maxx = this.Route[i].x;
				if (this.Route[i].y > maxy) maxy = this.Route[i].y;
				if (this.Route[i].x < minx) minx = this.Route[i].x;
				if (this.Route[i].y < miny) miny = this.Route[i].y;
			}
			this.KaMap.zoomToExtents(minx-padding, miny-padding, maxx+padding, maxy+padding );
		}
	
	}  
 }
  
 VFRRoute.prototype.CenterToRoute = function() {
   // Centered auf den letzten Punkt der Route
   if (this.Route) {
		if (this.Route.length > 0) {
			this.KaMap.zoomTo(this.Route[this.Route.length-1].x,this.Route[this.Route.length-1].y);
		}
	
	}  
 }
 
 VFRRoute.prototype.Clear = function() {
	if (this.XMLOverlay)  this.XMLOverlay.remove(); // weg mit dem alten
	this.XMLOverlay = null;
    this.Route = null; 
 }
	
  