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

    ko.components.register('Simulator/Config', {
        require : 'topics/Simulator/Config'
    });

    ko.components.register('Simulator/Reset', {
        require : 'topics/Simulator/Reset'
    });

    ko.components.register('Simulator/Exit', {
        require : 'topics/Simulator/Exit'
    });

    function ViewModel(params) {
        var self = this;

        self.topics = [
                'Properties', 'Config', 'Reset', 'Exit'
        ];

        self.selectedTopic = ko.observable();

        self.selectedComponent = ko.pureComputed(function() {
            return "Simulator/" + self.selectedTopic();
        });

        self.selectTopic = function(topic) {
            self.selectedTopic(topic);
        }

        self.selectTopic(self.topics[0]);

    }

    ViewModel.prototype.dispose = function() {
    }

    // Return component definition
    return {
        viewModel : ViewModel,
        template : htmlString
    };
});