whole_func_string: 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)
      }
func_code_string: 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)
      }
func_documentation_string: * ********************************************** FRONT END FUNCTIONALITY * ********************************************** ---------------------------------------------- PANE User Interface for the Microblog Pane ----------------------------------------------