define([
        'jquery', 'knockout', 'text!./Aircraft.html', './SubtopicViewmodel'
], function(jquery, ko, htmlString, SubtopicViewmodel) {
    ko.components.register('Aircraft/Select', {
        require : 'topics/Aircraft/Select'
    });

    ko.components.register('Aircraft/Mass & Balance', {
        require : 'topics/Aircraft/MassBalance'
    });

    ko.components.register('Aircraft/Checklists', {
        require : 'topics/Aircraft/Checklists'
    });

    ko.components.register('Aircraft/Help', {
        require : 'topics/Aircraft/Help'
    });

    ko.components.register('Aircraft/Panel', {
        require : 'topics/Aircraft/Panel'
    });

    function Viewmodel(topics, prefix, params) {
        var self = this;
        SubtopicViewmodel.call(self, topics, prefix, params);

        self.config = ko.observable({});

        self.thumbnailUrl = "/aircraft-dir/thumbnail.jpg?N=" + Date.now();

        jquery.get('/aircraft-dir/Phi/config.json', null, function(config) {
            self.config(config);
            
            if (config && config.plugins && config.plugins.Aircraft) {
                for ( var p in config.plugins.Aircraft) {
                    var plugin = config.plugins.Aircraft[p];
                    if (plugin.component && plugin.component.key && plugin.component.lib) {
                        if (false == ko.components.isRegistered(plugin.component.key)) {
                            ko.components.register(plugin.component.key, { require: plugin.component.lib });
                        }
                    }
                    self.topics.push(p);
                }
            }
        });
    }

    // Return component definition
    return {
        viewModel : {
            createViewModel : function(params, componentInfo) {
                return new Viewmodel([
                        'Help', 'Mass & Balance', 'Checklists', 'Failures', 'Panel', 'Select'
                ], "Aircraft", params);
            },
        },
        template : htmlString
    };
});