@Override
  public DatePickerPanel waitForElementsToLoad() {
    for (Map.Entry<Month, ExtendedWebElement> entry : this.monthElements.entrySet()) {
      entry
          .getValue()
          .setUnderlyingWebElement(
              this.driver.findElement(
                  By.className(
                      appProps.getELEMENT_CLASS_PREFIX_MONTH() + (entry.getKey().getValue() - 1))));
    }
    List<WebElement> yearButtons =
        this.getDriver().findElementsByClassName(appProps.getELEMENT_CLASS_YEAR_BUTTON());
    for (WebElement yearButton : yearButtons) {
      Matcher yearButtonMatcher =
          YEAR_BUTTON_CLASS_PATTERN.matcher(
              yearButton.getAttribute(appProps.getATTRIBUTE_NAME_CLASS()));
      this.yearElements.put(
          yearButtonMatcher.replaceFirst("$1"), new ExtendedWebElement(this, yearButton));
    }

    this.okButton.setUnderlyingWebElement(
        this.driver.findElement(By.className(appProps.getELEMENT_ID_OK_BUTTON())));
    this.cancelButton.setUnderlyingWebElement(
        this.driver.findElement(By.className(appProps.getELEMENT_ID_CANCEL_BUTTON())));

    return this;
  }