function System (dPage, cPage, pageTitle, sesid) {

    this.defaultPage = dPage;
    this.page = cPage;
    this.lastPage = null;
    this.pageTitle = pageTitle;
    this.onsetpage = null;
    this.sesid = sesid;
    this.rpcFrame = null;

    this.setup = function() {
        this.rpcFrame = new RPC('SystemRPC', this.sesid);
    };

    this.setPage = function(title) {
        if (page[title] !== undefined) {
            this.rpcFrame.doTask('setPage', 'page=' + title);
            if (title !== this.page) {
                this.lastPage = this.page;
                if (title !== this.lastPage) {
                    page[this.lastPage].hide();
                    if (page[this.lastPage].unload !== null) {
                        page[this.lastPage].unload();
                    }
                }
                this.page = title;
            }
            page[title].show();
            if (page[this.page].load !== null) {
                page[this.page].load();
            }
            if (this.onsetpage !== null) {
                this.onsetpage();
            }
            document.title = this.pageTitle + ' | ' + this.page;
        }
    };

    return this;
    
}