Source: Structure.js

/**
 * @constructor
 * @param {Object} options { element «Node | id», name: «String» }
 */
hui.ui.Structure = function(options) {
  this.name = options.name;
  this.options = options || {};
  this.element = hui.get(options.element);
  hui.ui.extend(this);
};

hui.ui.Structure.create = function(options) {
  options = hui.override({},options);

  options.element = hui.dom.parse('<div class="hui_structure">'+
    '<div class="hui_structure_middle">'+
    '<div class="hui_structure_left hui_context_sidebar"></div>'+
    '<div class="hui_structure_center"></div>'+
    '</div>'+
    '</div>');
  return new hui.ui.Structure(options);
};

hui.ui.Structure.prototype = {

  addLeft : function(widget) {
    var tbody = hui.get.firstByClass(this.element,'hui_structure_left');
    tbody.appendChild(widget.element);
  },

  addCenter : function(widget) {
    var tbody = hui.get.firstByClass(this.element,'hui_structure_center');
    tbody.appendChild(widget.element);
  },
  $$layout : function() {
    var t = hui.get.firstByClass(this.element,'hui_structure_top');
    var b = hui.get.firstByClass(this.element,'hui_structure_bottom');
    var m = hui.get.firstByClass(this.element,'hui_structure_middle');
    if (m) {
      m.style.top = (t ? t.clientHeight+2 : 0)+'px';
      m.style.bottom = (b ? b.clientHeight+2 : 0)+'px';
    }
  }
};