# See: http://wiki.flightgear.org/MapStructure
# Class things:
var name = 'DEBUG';
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: {
        update_t : 'autopilot/route-manager/debug/update_t',
        listen: ['update_t']
    },
    df_style: {
        default_color: [1,0,0],
    }
});

var new = func(layer) {
    var m = {
        parents: [__self__],
        layer: layer,
        map: layer.map,
        listeners: [],
    };
    layer.searcher._equals = func(a,b) a.equals(b);

    return m;
};

var del = func() {
    foreach (var l; me.listeners)
        removelistener(l);
};

var searchCmd = func {
    var result = [];
    #return result;
    var node = me['node'];
    if (node == nil) {
        node = props.globals.getNode('autopilot/route-manager/debug/', 1);
        me.node = node;
    }
    var points = me.node.getNode('points', 1).getChildren();
    #var count = getprop('autopilot/route-manager/debug/num') or 0;
    var count = size(points);
    #print('Map DEBUG: querying '~ count ~' results.');
    for(var idx = 0; idx < count; idx += 1){
        var point = points[idx];
        #var id = getprop('autopilot/route-manager/debug/point['~idx~']/id');
        #var lat = getprop('autopilot/route-manager/debug/point['~idx~']/lat');
        #var lon = getprop('autopilot/route-manager/debug/point['~idx~']/lon');
        var id = point.getValue('id');
        var lat = point.getValue('lat');
        var lon = point.getValue('lon');
        if (id == nil or id == '') continue;
        #print('Map DEBUG: found '~ id ~' debug point.');
        var model = {
            id: id,
            lat: lat,
            lon: lon,
            equals: func(o){
                me.id == o.id and me.lat == o.lat and me.lon == o.lon
            }
        };
        append(result, model);
    }
    return result;
}