# See: http://wiki.flightgear.org/MapStructure
# Class things:
var name = 'WXR_live';
var parents = [canvas.SymbolLayer.Controller];
var __self__ = caller(0)[0];

canvas.SymbolLayer.Controller.add(name, __self__);
canvas.SymbolLayer.add(name, {
	parents: [canvas.MultiSymbolLayer],
	type: name, # Symbol type
	df_controller: __self__, # controller to use by default -- this one
	df_options: { # default configuration options
		viewport_radius: 670
	}
});

var wxr_tree = "/instrumentation/wxr";

var new = func(layer) {
	var m = {
		parents: [__self__],
		layer: layer,
		map: layer.map,
		listeners: [],
	};
	layer.searcher._equals = func(l,r) l.equals(r);
	m.addVisibilityListener();
	var aircraft_dir = split('/', getprop("sim/aircraft-dir"))[-1];
	var saved_conf = getprop("sim/fg-home") ~ "/Export/wxr_api.xml"; 
	var df_conf = getprop("sim/fg-root") ~ "/Aircraft/" ~ aircraft_dir ~  
		"/Models/Instruments/ND/canvas/wxr_api.xml";
	if(io.stat(saved_conf) != nil)
		io.read_properties(saved_conf, wxr_tree);
	else 
		io.read_properties(df_conf, wxr_tree);
	return m;
};
var del = func() {
	#print(name~".lcontroller.del()");
	foreach (var l; me.listeners)
		removelistener(l);
};

var searchCmd  = func {
	if(me.map.getRange() == nil) return [];
	var api_key = getprop(wxr_tree~"/api-key");
	if(!api_key or api_key == '' or api_key == 'YOUR API KEY')
		return [];
	var lat = getprop(wxr_tree~"/center/latitude-deg");
	var lon = getprop(wxr_tree~"/center/longitude-deg");
	
	if(lat == nil or lon == nil) {
		var pos = geo.aircraft_position();
		lat = pos.lat();
		lon = pos.lon();
	}
	
	var result = geo.Coord.new();
	result.set_latlon(lat, lon);
	result.rangeNm = me.map.getRange();
	result.key = api_key;
	result.res = getprop(wxr_tree~"/resolution");
	result.ltype = getprop(wxr_tree~"/layer-type");
	result.smooth = getprop(wxr_tree~"/smooth");
	result.fetchRad = getprop(wxr_tree~"/fetch-radius");
	result.equals = func(r){
		me.ltype == r.ltype and me.fetchRad == r.fetchRad and 
		me.lat == r.lat and me.lon == r.lon
	};
	
	return [result];
};