function ModuleXView(domId, model) {
    var _domId = '#' + domId;
    var _model = model;

    _model.dataChangeEvent(function(sender, data){
        _refresh(data);
    });

    function _refresh(data) {
        $(_domId + ' .liczba').html(data.liczba);
    }

    return {
        show: function() {
            $(_domId).html('<p>Jestem MODULEX</p><p[>Wylosowalem liczbe: <span class="liczba">ciagle losuje ;)</span></p><p><a href="/zmiana">zmien</a></p>');
        }
    }
}

function ModuleXModel() {
    var dataChange = new Event(this);

    return {
        getNumber: function() {
            $.ajax({
                url: '/random.php',
                dataType: 'json',
                success: function(data) {
                    dataChange.notify(data);
                }
            });
        },

        dataChangeEvent: function(listener) {
            dataChange.attach(listener);
        }
    }
}

function ModuleX(moduleId, domId, sandbox, cfg) {
    var _moduleId = moduleId;
    var isSleep = true;
    var _domId = domId;
    var _sandbox = sandbox;
    var _cfg = cfg;
    var _model = new ModuleXModel();
    var _view = new ModuleXView(_domId, _model);
    var setTimeoutId = null;

    return {
        init: function() {
           // setTimeout(function() {_model.getNumber();}, 2000);
           setInterval(function(){
               _sandbox.notify({type: 'cos', msg: 'plum'});
           }, 3000);
        },

        activate: function() {
            isSleep = false;
            setTimeoutId = setTimeout(function() {_model.getNumber();}, 2000);

            view.show();
        },

        deactivate: function() {
            isSleep = true;
            clearTimeout(setTimeoutId);
        },

        destroy: function() {

        },

        refresh: function(isLayoutChanged) {
           if (isLayoutChanged) {
               view.show();
               _model.getNumber();
           }
        }
    }
}
