docs: function (out) {
              var cfg = this._cfg;
              var tabIndexString = (cfg.tabIndex != null ? ' tabindex="' + this._calculateTabIndex() + '" ' : '');
              var titleString = cfg.tooltip ? ' title="' + ariaUtilsString.escapeHTMLAttr(cfg.tooltip) + '" ' : '';
              var isIE7 = ariaCoreBrowser.isIE7;
              var ariaTestMode = (Aria.testMode) ? ' id="' + this._domId + '_button" ' : '';
              var buttonClass = cfg.disabled ? "xButton xButtonDisabled" : "xButton";
  
              var waiAriaAttributes = this._getWaiAriaMarkup();
              var disableMarkup = "";
              if (cfg.disabled) {
                  if (!cfg.focusableWhenDisabled) {
                      disableMarkup = " disabled ";
                  } else if (cfg.waiAria) {
                      disableMarkup = " aria-disabled='true' ";
                  }
              }
              if (this._simpleHTML) {
                  var styleMarkup = cfg.width != "-1" ? " style='width:" + cfg.width + "px;' " : "";
  
                  out.write([
                      '<',
                      !cfg.waiAria
                          ? 'input type="button" value="' + ariaUtilsString.encodeForQuotedHTMLAttribute(cfg.label) + '"'
                          : 'button',
                      waiAriaAttributes,
                      ariaTestMode,
                      tabIndexString,
                      titleString,
                      disableMarkup,
                      styleMarkup,
                      !cfg.waiAria
                          ? '/>'
                          : '>' + ariaUtilsString.escapeForHTML(cfg.label, {text: true}) + '</button>'
                  ].join(''));
              } else {
                  if (isIE7) {
                      // FIXME: find a way to put a button also on IE7
                      // on IE7 the button is having display issues the current frame implementation inside it
                      out.write(['<span class="' + buttonClass + '" style="margin: 0;"', waiAriaAttributes, tabIndexString, titleString, ariaTestMode,
                              '>'].join(''));
                  } else {
                      out.write([
                          '<button',
                          ' type="button"',
                          ' class="' + buttonClass + '"',
                          waiAriaAttributes,
                          tabIndexString,
                          titleString,
                          ariaTestMode,
                          disableMarkup,
                          '>'
                      ].join(''));
                  }
                  this._frame.writeMarkupBegin(out);
                  // call the method to write the content of the button - here is is just
                  // the label cfg attribute, but the method can be overwritten in child classes
                  this._widgetMarkupContent(out);
                  this._frame.writeMarkupEnd(out);
                  if (isIE7) {
                      out.write('</span>');
                  } else {
                      out.write('</button>');
                  }
              }
          }