* ********************************************** FRONT END FUNCTIONALITY * ********************************************** ---------------------------------------------- PANE User Interface for the Microblog Pane ----------------------------------------------
function (s, doc, microblogPane) {
      var TabManager = function (doc) {
        this.tablist = {}
        this.doc = doc
        this.tabView = doc.createElement('ul')
        this.tabView.className = 'tabslist'
      }
      TabManager.prototype.create = function (id, caption, view, isDefault) {
        var tab = this.doc.createElement('li')
        tab.innerHTML = caption
        if (isDefault) { tab.className = 'active' }
        tab.id = id
        let change = this.change
        let tablist = this.tablist
        tab.addEventListener('click', function (evt) { change(evt.target.id, tablist, doc) }, false)

        this.tablist[id] = {'view': view.id, 'tab': tab}
        this.tabView.appendChild(tab)
      }
      TabManager.prototype.getTabView = function () {
        return this.tabView
      }
      TabManager.prototype.change = function (id, tablist, doc) {
        for (var tab in tablist) {
          if (tab === id) {
            tablist[id]['tab'].className = 'active'
            doc.getElementById(tablist[id]['view']).className += ' active'
          } else {
            var view = doc.getElementById(tablist[tab].view)
            view.className = view.className.replace(/\w*active\w*/, '')
            tablist[tab].tab.className = tablist[id].tab.className.replace(/\w*active\w*/, '')
          }
        }
      }
      this.microblogPane = microblogPane
      var accounts = kb.each(s, FOAF('holdsAccount'))
      for (var a in accounts) {
        if (kb.whether(accounts[a], RDF('type'), SIOC('User')) &&
          kb.whether(kb.any(accounts[a], SIOC('creator_of')), RDF('type'), SIOCt('Microblog'))) {
          var account = accounts[a]
          break
        }
      }
      this.Ifollow = kb.whether(kb.sym(mb.getMyURI()), SIOC('follows'), account)
      var resourceType = kb.any(s, RDF('type'))
      if (resourceType.uri === SIOCt('Microblog').uri || resourceType.uri === SIOCt('MicroblogPost').uri) {
        this.thisIsMe = (kb.any(s, SIOC('has_creator')).uri === mb.getMyURI())
      } else if (resourceType.uri === SIOC('User').uri) {
        this.thisIsMe = (s.uri === mb.getMyURI())
      } else if (resourceType.uri === FOAF('Person').uri) {
        let me = UI.authn.currentUser()
        let meUri = me && me.uri
        this.thisIsMe = (s.uri === meUri)
      } else {
        this.thisIsMe = false
      }

      this.Tab = new TabManager(doc)
    }