docs: function (config, options) {
              if (this._subWindow) {
                  if (this._subWindow.closed) {
                      // we probably did not catch correctly the unload event
                      this.close();
                  } else {
                      // TODO: log error
                      return;
                  }
              }
  
              var skinPath = config.skinPath;
              if (!skinPath && !(aria.widgets && aria.widgets.AriaSkin)) {
                  var frameworkHref = ariaUtilsFrameATLoader.getFrameworkHref();
                  var urlMatch = /aria\/aria-?templates-([^\/]+)\.js/.exec(frameworkHref);
                  if (urlMatch && urlMatch.length > 1) {
                      skinPath = ariaCoreDownloadMgr.resolveURL("aria/css/atskin-" + urlMatch[1] + ".js", true);
                  } else if (/aria\/bootstrap.js/.test(frameworkHref)) {
                      skinPath = ariaCoreDownloadMgr.resolveURL("aria/css/atskin.js", true);
                  } else {
                      return;
                  }
              }
  
              // default options
              if (!options) {
                  options = "width=1024, height=800";
              }
  
              // create sub window. Use date to create a new one each time
              this._subWindow = Aria.$frameworkWindow.open("", config.title + ("" + (new Date()).getTime()), options);
              // this is for creating the same window (usefull for debugging)
              //this._subWindow = Aria.$frameworkWindow.open("", config.title, options);
  
              // The _subWindow can be null if the popup blocker is enabled in the browser
              if (this._subWindow == null) {
                  return;
              }
  
              this._config = config;
              ariaUtilsAriaWindow.attachWindow();
              ariaUtilsAriaWindow.$on({
                  "unloadWindow" : this._onMainWindowUnload,
                  scope : this
              });
  
              ariaUtilsFrameATLoader.loadAriaTemplatesInFrame(this._subWindow, {
                  fn: this._onFrameLoaded,
                  scope: this
              }, {
                  crossDomain: true,
                  skipSkinCopy: !!skinPath,
                  extraScripts: skinPath ? [skinPath] : [],
                  keepLoadingIndicator: true,
                  onBeforeLoadingAria: {
                      fn: this._registerOnPopupUnload,
                      scope: this
                  }
              });
          }