public static String generateTooltipUser(
      Locale locale, SimpleUser user, String siteURL, TimeZone timeZone) {
    try {
      if (user == null) {
        return generateTolltipNull(locale);
      }

      Div div = new Div();
      H3 userFullName =
          new H3()
              .setStyle(
                  "font: 12px Arial, Verdana, Helvetica, sans-serif !important;line-height: normal;");
      userFullName.setStyle("padding-left:10px;").appendText(user.getDisplayName());
      div.appendChild(userFullName);

      Table table = new Table();
      table.setStyle("padding-left:10px; width :380px; color: #5a5a5a; font-size:11px;");
      Tr trRow1 =
          new Tr()
              .appendChild(
                  new Td()
                      .setStyle("width: 110px; vertical-align: top; text-align: right;")
                      .appendText(LocalizationHelper.getMessage(locale, UserI18nEnum.FORM_EMAIL)))
              .appendChild(
                  new Td()
                      .setStyle("vertical-align: top;")
                      .appendChild(
                          new A()
                              .setHref("mailto:" + user.getEmail())
                              .appendText(StringUtils.trimHtmlTags(user.getEmail()))));

      Td trRow1_value =
          new Td()
              .setStyle("width:150px;text-align: right; vertical-align: top;")
              .appendChild(
                  new Img("", StorageFactory.getInstance().getAvatarPath(user.getAvatarid(), 100)));
      trRow1_value.setAttribute("rowspan", "5");
      trRow1.appendChild(
          new Td()
              .setStyle("width: 0px; vertical-align: top; text-align: right;")
              .appendChild(trRow1_value));

      Tr trRow2 =
          new Tr()
              .appendChild(
                  new Td()
                      .setStyle("width: 110px; vertical-align: top; text-align: right;")
                      .appendText(
                          LocalizationHelper.getMessage(locale, UserI18nEnum.FORM_TIMEZONE)))
              .appendChild(
                  new Td()
                      .setStyle("vertical-align: top;")
                      .appendText(
                          TimezoneMapper.getTimezoneExt(user.getTimezone()).getDisplayName()));
      Tr trRow3 =
          new Tr()
              .appendChild(
                  new Td()
                      .setStyle("width: 110px; vertical-align: top; text-align: right;")
                      .appendText(LocalizationHelper.getMessage(locale, UserI18nEnum.FORM_COUNTRY)))
              .appendChild(
                  new Td()
                      .setStyle("vertical-align: top;")
                      .appendText(StringUtils.trimHtmlTags(user.getCountry())));

      Tr trRow4 =
          new Tr()
              .appendChild(
                  new Td()
                      .setStyle("width: 110px; vertical-align: top; text-align: right;")
                      .appendText(
                          LocalizationHelper.getMessage(locale, UserI18nEnum.FORM_WORK_PHONE)))
              .appendChild(
                  new Td()
                      .setStyle("vertical-align: top;")
                      .appendText(StringUtils.trimHtmlTags(user.getWorkphone())));

      Tr trRow5 =
          new Tr()
              .appendChild(
                  new Td()
                      .setStyle("width: 110px; vertical-align: top; text-align: right;")
                      .appendText(
                          LocalizationHelper.getMessage(
                              locale, GenericI18Enum.FORM_LAST_ACCESSED_TIME)))
              .appendChild(
                  new Td()
                      .setStyle(
                          "word-wrap: break-word; white-space: normal;vertical-align: top; word-break: break-all;")
                      .appendText(
                          DateTimeUtils.getPrettyDateValue(user.getLastaccessedtime(), locale)));
      table.appendChild(trRow1, trRow2, trRow3, trRow4, trRow5);
      div.appendChild(table);
      return div.write();
    } catch (Exception e) {
      LOG.error("Error while generate tooltip for servlet project-task tooltip", e);
      return null;
    }
  }