function VisConfElement(el, list, pos) {

  var getByCls = 'getElementsByClassName';

  this.el = el;
  this.labelEl = el[getByCls]('vis-config-label')[0]
                 || el[getByCls]('vis-config-header')[0]
                 || el;
  var labelText = (this.labelEl.innerText || this.labelEl.textContent);
  this.label = labelText && labelText.match(/([a-zA-Z0-9]+)/)[1];
  this.level = parseInt(el.className.match(/.*vis-config-s(.).*/)[1]) || 0;

  this.path = this.label;

  if (this.level > 0) {
    for (var i = pos; i--;) {
      var prev = list[i];
      if (prev.level < this.level) {
        this.path = prev.path + '.' + this.path;
        break;
      }
    }
  }
}
@param {DOMElement} The config item element.
@param {Array<VisConfElement>} a list of VisConfElements of which
    this element is also part of.
@param {number} the position in the list