whole_func_string: function(config, existingEl) {
          config = config || {};
          var me = this,
              dh = Ext.DomHelper,
              cp = config.parentEl,
              pel = cp ? Ext.getDom(cp) : document.body,
              hm = config.hideMode,
              cls = Ext.baseCSSPrefix + (config.fixed && !(Ext.isIE6 || Ext.isIEQuirks) ? 'fixed-layer' : 'layer');
  
          // set an "el" property that references "this".  This allows
          // Ext.util.Positionable methods to operate on this.el.dom since it
          // gets mixed into both Element and Component
          me.el = me;
  
          if (existingEl) {
              me.dom = Ext.getDom(existingEl);
          }
          if (!me.dom) {
              me.dom = dh.append(pel, config.dh || {
                  tag: 'div',
                  cls: cls // primarily to give el 'position:absolute' or, if fixed, 'position:fixed'
              });
          } else {
              me.addCls(cls);
              if (!me.dom.parentNode) {
                  pel.appendChild(me.dom);
              }
          }
  
          if (config.id) {
              me.id = me.dom.id = config.id;
          } else {
              me.id = Ext.id(me.dom);
          }
  
          Ext.Element.addToCache(me);
  
          if (config.cls) {
              me.addCls(config.cls);
          }
          me.constrain = config.constrain !== false;
  
          // Allow Components to pass their hide mode down to the Layer if they are floating.
          // Otherwise, allow useDisplay to override the default hiding method which is visibility.
          // TODO: Have ExtJS's Element implement visibilityMode by using classes as in Mobile.
          if (hm) {
              me.setVisibilityMode(Ext.Element[hm.toUpperCase()]);
              if (me.visibilityMode == Ext.Element.ASCLASS) {
                  me.visibilityCls = config.visibilityCls;
              }
          } else if (config.useDisplay) {
              me.setVisibilityMode(Ext.Element.DISPLAY);
          } else {
              me.setVisibilityMode(Ext.Element.VISIBILITY);
          }
  
          if (config.shadow) {
              me.shadowOffset = config.shadowOffset || 4;
              me.shadow = new Ext.Shadow({
                  offset: me.shadowOffset,
                  mode: config.shadow,
                  fixed: config.fixed
              });
              me.disableShadow();
          } else {
              me.shadowOffset = 0;
          }
          me.useShim = config.shim !== false && Ext.useShims;
          if (config.hidden === true) {
              me.hide();
          } else {
              me.show();
          }
      }
func_code_string: function(config, existingEl) {
          config = config || {};
          var me = this,
              dh = Ext.DomHelper,
              cp = config.parentEl,
              pel = cp ? Ext.getDom(cp) : document.body,
              hm = config.hideMode,
              cls = Ext.baseCSSPrefix + (config.fixed && !(Ext.isIE6 || Ext.isIEQuirks) ? 'fixed-layer' : 'layer');
  
          // set an "el" property that references "this".  This allows
          // Ext.util.Positionable methods to operate on this.el.dom since it
          // gets mixed into both Element and Component
          me.el = me;
  
          if (existingEl) {
              me.dom = Ext.getDom(existingEl);
          }
          if (!me.dom) {
              me.dom = dh.append(pel, config.dh || {
                  tag: 'div',
                  cls: cls // primarily to give el 'position:absolute' or, if fixed, 'position:fixed'
              });
          } else {
              me.addCls(cls);
              if (!me.dom.parentNode) {
                  pel.appendChild(me.dom);
              }
          }
  
          if (config.id) {
              me.id = me.dom.id = config.id;
          } else {
              me.id = Ext.id(me.dom);
          }
  
          Ext.Element.addToCache(me);
  
          if (config.cls) {
              me.addCls(config.cls);
          }
          me.constrain = config.constrain !== false;
  
          // Allow Components to pass their hide mode down to the Layer if they are floating.
          // Otherwise, allow useDisplay to override the default hiding method which is visibility.
          // TODO: Have ExtJS's Element implement visibilityMode by using classes as in Mobile.
          if (hm) {
              me.setVisibilityMode(Ext.Element[hm.toUpperCase()]);
              if (me.visibilityMode == Ext.Element.ASCLASS) {
                  me.visibilityCls = config.visibilityCls;
              }
          } else if (config.useDisplay) {
              me.setVisibilityMode(Ext.Element.DISPLAY);
          } else {
              me.setVisibilityMode(Ext.Element.VISIBILITY);
          }
  
          if (config.shadow) {
              me.shadowOffset = config.shadowOffset || 4;
              me.shadow = new Ext.Shadow({
                  offset: me.shadowOffset,
                  mode: config.shadow,
                  fixed: config.fixed
              });
              me.disableShadow();
          } else {
              me.shadowOffset = 0;
          }
          me.useShim = config.shim !== false && Ext.useShims;
          if (config.hidden === true) {
              me.hide();
          } else {
              me.show();
          }
      }
func_documentation_string: Creates new Layer.
  @param {Object} [config] An object with config options.
  @param {String/HTMLElement} [existingEl] Uses an existing DOM element.
  If the element is not found it creates it.