define([
        'jquery', 'knockout', 'text!./Screenshot.html', 'kojqui/spinner'
], function(jquery, ko, htmlString ) {
    
    function ViewModel(params) {
        var self = this;
        
        self.imageUrl = ko.observable("");
        self.updateInterval = ko.observable(5);
        self.spinUpdateInterval = function(evt, ui) {
            $(evt.target).spinner("value",ui.value);
            return true;
        }
        
        self.updateId = 0;
        
        self.update = function( id ) {
            if( id != self.updateId )
                return;
            self.imageUrl("/screenshot?type=jpg&t=" + Date.now());
            setTimeout( function() { self.update(id); }, self.updateInterval()*1000);
        };

        self.update(++self.updateId);
    }

    ViewModel.prototype.dispose = function() {
        ++self.updateId;
    }

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