<?php

/**
 * @copyright (c) Kufer Software GmbH, Loisachstrasse 4, D-84453 Mühldorf
 */


class PageMaAnmeldung extends PageBaseWT
{
  private $_dataTn;
  private $_dataKurs;
  
  private $_isAnmSend;

  private $_freiWaehlbareFelder;
  
  private $_isAnmSuccess;

  private $_statusMessage;

  
  private $_backLinkTitle = '';

  private $_infoMailSentArray;

  
  public function __construct($pTool, $pPageId, $pDataTn, $pDataKurs, $pFreiWaehlbareFelder, $pIsAnmSend = false, $pIsAnmSuccess = false, $pStatusMessage = '', $pInfoMailSentArray = array())
  {
    $sprachsettings = new SprachSettingsObject();
    
    parent::__construct($sprachsettings->Teilnehmer['Plural']['Nominativ'] . ' Anmelden', $pPageId, $pTool);
    $this->_dataTn = $pDataTn;
    $this->_dataKurs = $pDataKurs;
    
    
    $this->_searchkurs = ((GetOperations::getVarValue('searchkurs', false)) ? '&amp;searchkurs=1' : '');

    $this->_freiWaehlbareFelder = $pFreiWaehlbareFelder;

    $this->_isAnmSend = $pIsAnmSend;
    $this->_isAnmSuccess = $pIsAnmSuccess;
    $this->_statusMessage = $pStatusMessage;

    $this->_infoMailSentArray = $pInfoMailSentArray;
  }

  
  private function _isReadOnly()
  {
    return $this->_isAnmSend && $this->_isAnmSuccess;
  }

  public function setBackLinkTitle($pTitle)
  {
    $this->_backLinkTitle = $pTitle;
  }

  public function getContent()
  {
    $kursAusgefallen = false;
    $kursAbgeschlossen = false;
    $kursAnmEndeErreicht = false;
    $kursBeginnErreicht = false;
    if (!empty($this->_dataKurs->id)) {
      if ($this->_dataKurs->abschluss == 'J') {
        $kursAbgeschlossen = true;
      }
      if ($this->_dataKurs->ausfall) {
        $kursAusgefallen = true;
      }
      
      
      if ((! (isset($this->links['anmEndeErreicht']) && $this->links['anmEndeErreicht']))
              && DateTimeOperations::isValidDate($this->_dataKurs->anm_ende) && DateTimeOperations::isDatebeforeNow($this->_dataKurs->anm_ende)) {
        $kursAnmEndeErreicht = true;
      }
      if ((! (isset($this->links['anmKursBeginnErreicht']) && $this->links['anmKursBeginnErreicht']))
              && DateTimeOperations::isValidDate($this->_dataKurs->beginn_dat) && DateTimeOperations::isDatebeforeNow($this->_dataKurs->beginn_dat)) {
        $kursBeginnErreicht = true;
      }
    }


    $result = '';

    if ($this->_isAnmSend) {
      if ($this->_isAnmSuccess) {
        $bestaetigungsEmailDrucken = $this->getEmailBestaetigungPrint();
        

        
        if (empty($this->_infoMailSentArray)) {
          $result .= HTMLOperations::getSuccessBox('Ihre Anmeldung wurde erfolgreich versendet.' . $bestaetigungsEmailDrucken, 'Anmeldung erfolgreich versendet', 'in_background anmSuccessMsg');
        } elseif ($this->_infoMailSentArray['email'] === 'valid' && $this->_infoMailSentArray['sent']) {
          $infoMailText = '<br /><br /> Eine Bestätigungs-E-Mail wurde ebenfalls an den Teilnehmer versendet.';
          $result .= HTMLOperations::getSuccessBox('Ihre Anmeldung wurde erfolgreich versendet.' . $bestaetigungsEmailDrucken . $infoMailText, 'Anmeldung erfolgreich versendet', 'in_background anmSuccessMsg');
        }

        
        else {
          $result .= HTMLOperations::getSuccessBox('Ihre Anmeldung wurde erfolgreich versendet.' . $bestaetigungsEmailDrucken, 'Anmeldung erfolgreich versendet', 'in_background anmSuccessMsg');
          $infoMailTextFehler = 'Die Bestätigungs-E-Mail wurde nicht an den Teilnehmer mitgeschickt. ';

          if ($this->_infoMailSentArray['email'] === 'empty' || $this->_infoMailSentArray['email'] === 'invalid') {
            $result .= HTMLOperations::getWarningBox($infoMailTextFehler . '<br /><br />Bitte überprüfen Sie die folgende Eigenschaft:'
                      . '<br /> - Die E-Mail-Adresse des Hauptteilnehmers', '', 'in_background anmWarningMsg');
          } else {
            $result .= HTMLOperations::getWarningBox($infoMailTextFehler . '<br /><br />Bitte überprüfen Sie die folgende Eigenschaft:'
                      . '<br /> - Die zentralen Einstellungen für die ausgehenden E-Mails.', '', 'in_background anmWarningMsg');
          }
        }
      }
      
      else {
        $result .= HTMLOperations::getAlertBox('Bei Ihrer Anmeldung ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut, oder wenden Sie sich an die Einrichtung.', 'Anmeldung fehlgeschlagen', 'in_background anmErrorMsg');
      }
    } else {
      
      if ($kursAbgeschlossen) {
        $result .= HTMLOperations::getWarningBox('Zum ausgewählten Kurs ist keine Anmeldung möglich, da der Kurs abgeschlossen ist.', 'Anmeldung nicht m&ouml;glich', 'in_background anmKursstatusMsg');
      } elseif ($kursAusgefallen) {
        $result .= HTMLOperations::getWarningBox('Zum ausgewählten Kurs ist keine Anmeldung möglich, da der Kurs ausgefallen ist.', 'Anmeldung nicht m&ouml;glich', 'in_background anmKursstatusMsg');
      } elseif ($kursAnmEndeErreicht) {
        
        $result .= HTMLOperations::getWarningBox('Zum ausgewählten Kurs ist keine Anmeldung möglich, da der Anmeldeschluss erreicht wurde.', 'Anmeldung nicht m&ouml;glich', 'in_background anmKursstatusMsg');
      } elseif ($kursBeginnErreicht) {
        
        $result .= HTMLOperations::getWarningBox('Zum ausgewählten Kurs ist keine Anmeldung möglich, da der Kurs bereits begonnen hat.', 'Anmeldung nicht m&ouml;glich', 'in_background anmKursstatusMsg');
      }
    }

    $result .= $this->_statusMessage;

    $result .= '<div class="maAnmeldDiv">';

    
    $xsrfKey = Xsrf::getXsrfGetParameter('wt_ma_anmeldung', $this->_dataTn->id . '_' . $this->_dataKurs->id);
    $result .= '<form action="' . CleanOperations::cleanStringForHtml(ConstantOperations::getHTTPSPath4Url(ANMELDUNG)) . 'usertools.php?tool_id=6&toolsection_id=145' . CleanOperations::cleanStringForHtml($xsrfKey) . '" method="post">'
                . $this->_getTnDiv() . $this->_getKursDiv();



    if (!empty($this->_dataTn->id) && !empty($this->_dataKurs->id)
       && !$kursAbgeschlossen && !$kursAusgefallen && !$kursAnmEndeErreicht && !$kursBeginnErreicht) {
      $result .= $this->_getAnmSettingBarDiv();
    }
    $result .= '</form></div>';

    return $result;
  }

  
  private function _getTnDiv()
  {
    $result = '<div class="maAnmeld_TnDiv">';

    if (!$this->_isReadOnly()) {
      $result .= HTMLOperations::createButtonSpan('Teilnehmerauswahl', 'Teilnehmer ausw&auml;hlen', 'maAnmeld_TnDiv_TnAuswahl', '', 'images/tn.gif');
    } else {
      
      $result .= HTMLOperations::createButtonSpan('weiteren Teilnehmer anmelden', 'Einen weiteren Teilnehmer zum Kurs anmelden', 'maAnmeld_TnDiv_TnAuswahl', '', 'images/tn.gif');
    }
    $result .= $this->_getTnUebersichtDialog();

    if (empty($this->_dataTn->id)) {
      $result .= '<span class="noTn">Bitte Teilnehmer ausw&auml;hlen</span>';
    } else {
      $result .= $this->_getRow4TnDiv('<span class="maAnmeld_TnDiv_name">' . CleanOperations::cleanStringForHtml($this->_dataTn->namevorname) . '</span>', 'Tel:', CleanOperations::cleanStringForHtml($this->_dataTn->getVarValueEx('tel', 'kommunikation')));
      $result .= $this->_getRow4TnDiv(CleanOperations::cleanStringForHtml($this->_dataTn->zusatz) . '<span class="maAnmeld_TnDiv_tnr">(' . CleanOperations::cleanInt($this->_dataTn->id) . ')</span>', '', CleanOperations::cleanStringForHtml($this->_dataTn->getVarValueEx('tel2', 'kommunikation')));
      $result .= $this->_getRow4TnDiv('', 'Mail:', CleanOperations::cleanStringForHtml($this->_dataTn->getVarValueEx('email', 'kommunikation')));

      $tnGuthaben = MathOperations::stringToFloat($this->_dataTn->guthaben);
      if ($tnGuthaben > 0) {
        $result .= $this->_getRow4TnDiv('', 'Guthaben:', '', CleanOperations::cleanFloatMitKomma($this->_dataTn->guthaben), 'maAnmeld_TnDiv_Guthaben');
      } elseif ($tnGuthaben < 0) {
        $result .= $this->_getRow4TnDiv('', 'Schulden:', '', CleanOperations::cleanFloatMitKomma($this->_dataTn->guthaben), 'maAnmeld_TnDiv_Guthaben');
      }
      $result .= $this->_getRow4TnDiv(CleanOperations::cleanStringForHtml($this->_dataTn->strasse));
      $result .= $this->_getRow4TnDiv(CleanOperations::cleanStringForHtml($this->_dataTn->ort));

      if (!DateTimeOperations::isDateTimeEmptyOrDefault($this->_dataTn->gebdat)) {
        $geburtstag = 'Geburtsdatum: ' . CleanOperations::cleanDateString($this->_dataTn->gebdat);
      } elseif (!empty($this->_dataTn->gebjahr)) {
        $geburtstag = 'Geburtsjahr: ' . CleanOperations::cleanInt($this->_dataTn->gebjahr);
      } else {
        $geburtstag = 'kein Geburtstag eingetragen';
      }

      if ($this->_dataTn->alterskl != '') {
        $geburtstag .= '; Ak: ' . CleanOperations::cleanStringForHtml($this->_dataTn->alterskl);
      }

      $result .= $this->_getRow4TnDiv($geburtstag);

      if ($this->_dataTn->erm_grund == 0) {
        $ermaessigung = 'keine Erm&auml;&szlig;igung';
      } else {
        if ($this->_dataTn->erm_proz == '' || $this->_dataTn->erm_proz == 0) {
          $ermaessigung = 'kursbezogene Erm&auml;&szlig;igung';
        } else {
          $ermaessigung = 'Erm&auml;&szlig;igung:  ' . CleanOperations::cleanInt($this->_dataTn->erm_proz) . ' %';
        }
        if (!DateTimeOperations::isDateTimeEmptyOrDefault($this->_dataTn->erm_ende)) {
          $ermaessigung .= ' bis ' . CleanOperations::cleanDateString($this->_dataTn->erm_ende);
        }
      }

      $result .= $this->_getRow4TnDiv($ermaessigung);
      $result .= $this->_getRow4TnDiv('&nbsp;');

      $bankZeile1 = $bankZeile2 = $bankZeile3 = '';
      $sepaMandat = '';
      if ($this->_dataTn->konto == '' && $this->_dataTn->iban == '') {
        $bankZeile1 = 'keine Bankverbindung';
      } elseif (StringOperations::strpos($this->_dataTn->konto, '*') !== false || StringOperations::strpos($this->_dataTn->iban, '*') !== false) {
        $bankZeile1 = 'Bankverbindung bekannt';
        if ($this->_dataTn->iban != '') {
          $sepaMandat = $this->_getSepaMandatMessage();
        }
      } else {
        $bankZeile1 = 'Bankverbindung: ' . CleanOperations::cleanStringForHtml($this->_dataTn->bankbez);
        $bankZeile2 = '';
        if ($this->_dataTn->iban == '') {
          $bankZeile2 = 'BLZ: ' . CleanOperations::cleanStringForHtml($this->_dataTn->blz) . '  Konto:' . CleanOperations::cleanStringForHtml($this->_dataTn->konto);
        } else {
          $bankZeile2 = 'IBAN:' . CleanOperations::cleanStringForHtml($this->_dataTn->iban);
          $sepaMandat = $this->_getSepaMandatMessage();
        }

        if (trim($this->_dataTn->kontoinhaber) != '') {
          $bankZeile3 = 'Kontoinhaber: ' . CleanOperations::cleanStringForHtml($this->_dataTn->kontoinhaber);
        }
      }
      $result .= $this->_getRow4TnDiv($bankZeile1);
      $result .= $this->_getRow4TnDiv($bankZeile2, '', '', $sepaMandat);
      $result .= $this->_getRow4TnDiv($bankZeile3);

      
      $result .= $this->_getRow4TnDiv('<span class="infozeile_kinder"></span>');

      

      if (! empty($this->_dataKurs->id)) {
        $dbwBelegung = new DBWorkBelegung();
        $belegung = $dbwBelegung->getBelegungenbyKursTeilnehmerNR($this->_dataKurs->id, $this->_dataTn->id);
        if (count($belegung) > 0) {
          $result .= $this->_getRow4TnDiv('<span class="anm_kursstatus_rot">Teilnehmer angemeldet</span>');
        }
      }
    }

    $result .= '</div>';

    return $result;
  }

  
  private function _getSepaMandatMessage()
  {
    if (!DateTimeOperations::isDateTimeEmptyOrDefault($this->_dataTn->mandatam)) {
      $str = '<span class="sepa_mandat_vorhanden">Mandat vorhanden</span>';
    } else {
      $str = '<span class="kein_sepa_mandat">kein Mandat</span>';
    }

    return $str;
  }

  
  private function _getRow4TnDiv($pCol1, $pCol2 = '', $pCol3 = '', $pCol4 = '', $pID = '')
  {
    $result = '<div id="' . CleanOperations::cleanStringForHtml($pID) . '" class="maAnmeld_TnDiv_Row">';
    for ($i = 0; $i < 4; $i++) {
      $col = 'pCol' . ($i + 1);
      $result .= '<span class="maAnmeld_TnDiv_Row_Col' . ($i + 1) . '">' . ${$col} . '</span>';
    }
    $result .= '</div>';

    return $result;
  }

  
  private function _getRow4KursDiv($pCol1 = '', $pCol2 = '', $pCol3 = '', $pCol4 = '', $pCol5 = '', $pCol6 = '', $pCol7 = '', $pCol8 = '')
  {
    $result = '<div class="maAnmeld_KursDiv_Row">';
    for ($i = 0; $i < 8; $i++) {
      $col = 'pCol' . ($i + 1);
      $result .= '<span class="maAnmeld_KursDiv_Row_Col' . ($i + 1) . '">' . ${$col} . '</span>';
    }
    $result .= '</div>';

    return $result;
  }

  
  private function _getKursDiv()
  {
    $result = '<div class="maAnmeld_KursDiv">';

    if (!$this->_isReadOnly()) {
      $result .= HTMLOperations::createButtonSpan('Kursauswahl', 'Kurs ausw&auml;hlen', 'maAnmeld_KursDiv_KursAuswahl', '', '');
    } else {
      
      $result .= HTMLOperations::createButtonSpan('zu einem weiteren Kurs anmelden', 'Den Teilnehmer zu einem weiteren Kurs anmelden', 'maAnmeld_KursDiv_KursAuswahl', '', '');
    }
    
    $result .= AnmeldeAPI::getKursUebersichtDialog($this->toolSettings);

    if (empty($this->_dataKurs->id)) {
      $result .= '<span class="noKurs">Bitte Kurs ausw&auml;hlen</span>';
    } else {

      
      $kursStatusMeldung = '';
      if ($this->_dataKurs->ausfall) {
        $kursStatusMeldung = '<span class="anm_kursstatus_rot">Ausfall</span>';
      } elseif ($this->_dataKurs->abschluss == 'J') {
        $kursStatusMeldung = '<span class="anm_kursstatus_rot">Abschluss</span>';
      } elseif (DateTimeOperations::isValidDate($this->_dataKurs->anm_ende) && DateTimeOperations::isDateBeforeNow($this->_dataKurs->anm_ende)) {
        $kursStatusMeldung = '<span class="anm_kursstatus_lila">Anmeldeende erreicht</span>';
      }

      $result .= $this->_getRow4KursDiv($kursStatusMeldung);
      $result .= $this->_getRow4KursDiv('<span class="maAnmeld_KursDiv_id">' . CleanOperations::cleanStringForHtml($this->_dataKurs->id) . '</span>', '', '<span class="maAnmeld_KursDiv_kurzbez" title="' . CleanOperations::cleanStringForHtml($this->_dataKurs->kurzbez) . '">' . CleanOperations::cleanStringForHtml($this->_dataKurs->kurzbez) . '</span>');
      $result .= $this->_getRow4KursDiv('Beginn:', CleanOperations::cleanStringForHtml($this->_dataKurs->getVarValue('beginn_dat_komplettkurz')), '', 'von:', CleanOperations::cleanStringForHtml($this->_dataKurs->beginn), 'bis:', CleanOperations::cleanStringForHtml($this->_dataKurs->ende));
      $result .= $this->_getRow4KursDiv('Ende:', CleanOperations::cleanStringForHtml($this->_dataKurs->ende_dat_komplettkurz), '', 'UE:', $this->_dataKurs->stundenanz, '', CleanOperations::cleanStringForHtml($this->_dataKurs->dauer));
      $result .= $this->_getRow4KursDiv('Ort:', CleanOperations::cleanStringForHtml($this->_dataKurs->ort));

      $hauptdozent = $this->_dataKurs->getVarValue('hauptdozent');
      $result .= $this->_getRow4KursDiv('Dozent:', CleanOperations::cleanStringForHtml($hauptdozent->namevorname));
      $result .= $this->_getRow4KursDiv('Geb&uuml;hr:', '', CleanOperations::cleanStringForHtml($this->_dataKurs->gebuehr));

      $dbwKursgeb = new DBWorkKursgebuehr(1, true);
      $ermaessigbar = $dbwKursgeb->isKursErmaessigbar($this->_dataKurs->id);

      $result .= $this->_getRow4KursDiv(($ermaessigbar ? 'erm&auml;&szlig;igbar' : 'keine Erm&auml;&szlig;igung'));
      $result .= $this->_getRow4KursDiv();
      $result .= $this->_getRow4KursDiv();
      $result .= $this->_getRow4KursDiv();

      if ($this->_dataKurs->getVarValue('kinderanzahl') > 0) {
        $angemeldet = 'TN: ' . CleanOperations::cleanInt($this->_dataKurs->getVarValue('anmeldungen')) . ' Kinder: ' . CleanOperations::cleanInt($this->_dataKurs->getVarValue('kinderanzahl'));
        $warteliste = 'WL: ' . CleanOperations::cleanInt($this->_dataKurs->getVarValue('teil_wart')) . ' MaxKi: ' . CleanOperations::cleanInt($this->_dataKurs->getKinderMax());
      } else {
        $angemeldet = 'Angemeldet: ' . CleanOperations::cleanInt($this->_dataKurs->getVarValue('anmeldungen'));
        $warteliste = 'Warteliste: ' . CleanOperations::cleanInt($this->_dataKurs->getVarValue('teil_wart'));
      }

      
      if ($this->_dataKurs->getVarValue('teil_frei') == 0) {
        $frei = 'voll';
      } elseif ($this->_dataKurs->getVarValue('teil_frei') < 0) {
        $frei = 'zuviel: ' . abs($this->_dataKurs->getVarValue('teil_frei'));
      } else {
        $frei = 'frei: ' . CleanOperations::cleanInt($this->_dataKurs->getVarValue('teil_frei'));
      }

      $result .= $this->_getRow4KursDiv($angemeldet, '', '', '<span class="maAnmeld_KursDiv_frei">' . $frei . '</span>', '', '', 'min:', CleanOperations::cleanInt($this->_dataKurs->getVarValue('teil_min')));
      $result .= $this->_getRow4KursDiv($warteliste, '', '', '', '', '', 'max:', CleanOperations::cleanInt($this->_dataKurs->getTeilMax()));
    }
    $result .= '</div>';

    return $result;
  }

  
  private function _getAnmSettingBarDiv()
  {
    $result = '<div class="maAnmeld_SettingBar">';
    $result .= $this->_getAnmSettingBarInputs();
    $result .= $this->_getAnmSettingBarZahlart();
    $result .= $this->_getAnmSettingBarButtons();
    $result .= '</div>';

    return $result;
  }

  
  private function _getAnmSettingBarInputs()
  {
    $disabledString = $this->_isReadOnly() ? 'disabled' : '';
    $result = '<div class="maAnmeld_SettingBar_inputs">';

    $result .= '<div>';
    $result .= '<span class="maAnmeld_SettingBar_inputs_col1"><label for="maAnmeld_input_gebuehr">Geb&uuml;hr</label></span>';

    if ($this->links['newsletterAllowed']) {
      $result .= '<span class="maAnmeld_SettingBar_inputs_col2"><label for="newsl_erlaubt">zum Newsletter anmelden</label></span>';
    }

    $result .= '</div>';

    
    $gebuehr = '0,00';
    if (!empty($this->_dataTn->id) && !empty($this->_dataKurs->id)) {
      if (!$this->_dataKurs->isKursVoll()) {
        $gebuehr = APIGebuehren::getGebuehren($this->_dataTn->id, $this->_dataKurs->id);
      }
    }

    $result .= '<div>';
    $result .= '<span class="maAnmeld_SettingBar_inputs_col1"><input class="maAnmeld_input_gebuehr" id="maAnmeld_input_gebuehr" value="' . CleanOperations::cleanFloatMitKomma($gebuehr) . '" readonly ' . $disabledString . '></span>';
    if ($this->links['newsletterAllowed']) {
      $result .= '<span class="maAnmeld_SettingBar_inputs_col2"><input id="newsl_erlaubt" type="checkbox" name="newsl_erlaubt" ' . $disabledString . ' ></span>';
    }

    $result .= '</div>';

    if ($this->links['eintrittAllowed']) {
      $result .= '<div class="maAnmeld_SettingBar_eintritt">';
      $result .= '<label for="maAnmeld_input_eintritt">Eintritt</label>' . BR_WT;
      $result .= HTMLOperations::CreateInputTag('eintritt', 'text', 'maAnmeld_input_eintritt', 'maAnmeld_input_eintritt val_date', '', '', false, $this->_isReadOnly(), '10');
      $result .= '</div>';
    }

    if ($this->links['bemerkungAllowed']) {
      $result .= '<div>';
      $result .= '<span class="maAnmeld_SettingBar_inputs_col1"><label for="maAnmeld_input_bemerkung">Bemerkung</label></span>';
      $result .= '</div>';

      
      if (!$this->_isReadOnly()) {
        $hlbemerkung = HLDispatcher::GetHinterlegungDialog(\HLDispatcher::HL_BEMERKUNG);
        $hlbemerkung->fields = array('maAnmeld_input_bemerkung');
        $result .= $hlbemerkung->CreateDialog('hlbemerkung_div', '.hlbemerkung', 'Bemerkung', "'auto'");
      }

      $result .= '<div>';
      $result .= '<span class="maAnmeld_SettingBar_inputs_col1"><input class="maAnmeld_input_bemerkung" id="maAnmeld_input_bemerkung" name="bemerkung" ' . $disabledString . '>';
      if (!$this->_isReadOnly()) {
        $result .= '<img class="hlbemerkung" src="layout/button_hinterlegung.gif" alt="Hinterlegung Bemerkung" title="Hinterlegung Bemerkung"></span>';
      }
      $result .= '</div>';
    }

    if ($this->links['anmeldeartAllowed']) {
      $result .= '<div class="maAnmeld_SettingBar_anmArt">';
      $result .= '<label for="anmeldeArt">Anmeldung</label>' . BR_WT;

      $isSelected = false;
      if (!isset($this->toolSettings->anmeldeArt) || $this->toolSettings->anmeldeArt == '') {
        $isSelected = true;
      }
      $standardOption = array(HTMLOperations::createOptionTag('per ...', '', $isSelected));
      $options = ComboboxAPI::getHinterlegungsAuswahl(\HLDispatcher::HL_ANMARTEN, array('kennz', 'text'), ' - ', 'kennz', $this->toolSettings->anmeldeArt);
      $options = array_merge($standardOption, $options);

      $result .= HTMLOperations::CreateSelectTag($options, 'anmeldeArt', '', 'anmeldeArt', '', $disabledString);
      $result .= '</div>';
    }

    if ($this->links['belegungsStatusAllowed']) {
      $result .= '<div class="maAnmeld_SettingBar_belArt">';
      $result .= '<label for="belegungsStatus">Status</label>' . BR_WT;

      $options = array();
      $kursVoll = $this->_dataKurs->isKursVoll();
      if (!$kursVoll || $this->toolSettings->ueberbuchenErlaubt && $this->_dataKurs->bis_max !== 'W') {
        $options[] = HTMLOperations::createOptionTag('A - angemeldet', 'A', !$kursVoll);
      }
      $options[] = HTMLOperations::createOptionTag('W - Warteliste', 'W', $kursVoll);

      $result .= HTMLOperations::CreateSelectTag($options, 'belegungsStatus', '', 'belegungsStatus', '', $disabledString);
      $result .= '</div>';
    }

    $result .= '<div class="maAnmeld_SettingsBar_buttonlinks">';

    if (isset($this->links['tnDetails']) && $this->links['tnDetails'] != '') {
      $result .= '<a href="' . CleanOperations::cleanStringForHtml($this->links['tnDetails']) . '" class="tn_details_button">';
      $result .= HTMLOperations::createButtonSpan('Teilnehmerdetails', 'Details des anzumeldenden Teilnehmers', '');
      $result .= '</a>';
    }
    if (isset($this->links['kursDetails']) && $this->links['kursDetails'] != '') {
      $result .= '<a href="' . CleanOperations::cleanStringForHtml($this->links['kursDetails']) . '" class="kurs_details_button">';
      $result .= HTMLOperations::createButtonSpan('Kursdetails', 'Details des ausgewählten Kurses', '');
      $result .= '</a>';
    }
    
    if (isset($this->links['backLink']) && $this->links['backLink'] != '') {
      $result .= '<a href="' . CleanOperations::cleanStringForHtml($this->links['backLink']) . '" class="backLink_button">';
      $result .= HTMLOperations::createButtonSpan('Zurück', $this->_backLinkTitle, '');
      $result .= '</a>';
    }

    $result .= '</div>';

    $result .= '</div>';

    return $result;
  }

  
  private function _getAnmSettingBarZahlart()
  {
    $disabledString = $this->_isReadOnly() ? 'disabled' : '';

    $result = '<ul class="maAnmeld_SettingBar_zahlart">';

    $checked = array('', '');
    
    switch ($this->toolSettings->zahlartAnmDefault) {
      default:
      case 0: 
        $checked[0] = ' checked';
        break;
      case 1:  
        $checked[1] = ' checked';
        break;
    } 

    if ($this->links['zahlartAllowed']) {
      $result .= '<li><input type="radio" name="anm_zahlart" value="L" id="anm_zahlart_last" ' . $checked[0] . $disabledString . '>
                      <label for="anm_zahlart_last">Lastschrift</label></li>';

      $result .= '<li><input type="radio" name="anm_zahlart" value="Ü" id="anm_zahlart_ueberweisung" ' . $checked[1] . $disabledString . '>
                      <label for="anm_zahlart_ueberweisung">&Uuml;berweisung</label></li>';
    }
    $result .= '</ul>';

    return $result;
  }

  
  private function _getAnmSettingBarButtons()
  {
    $result = '<div class="maAnmeld_SettingBar_buttons">';

    if ($this->links['detailsAllowed'] || $this->links['abwZahlwegAllowed']) {
      $result .= '<div>';
      if ($this->links['detailsAllowed']) {
        $result .= HTMLOperations::createButtonSpan('Details', '', 'maAnmeld_histKrit');
      }
      if ($this->links['abwZahlwegAllowed']) {
        $result .= HTMLOperations::createButtonSpan('abw. Zahlweg', '', 'maAnmeld_abwZahlweg');
      }
      $result .= '</div>';
    }

    if ($this->links['nachlassAllowed']) {
      $result .= '<div>';
      $result .= HTMLOperations::createButtonSpan('Nachlass', '', 'maAnmeld_nachlass');
      $result .= '</div>';
    }

    if ($this->links['elternKindAnmAllowed'] || $this->links['mehrfachAnmAllowed'] || $this->links['faAnmAllowed']) {
      $result .= '<div>';
      $result .= HTMLOperations::createButtonSpan('<span class="maAnmeld_anmArt_waehlen">Anmeldeart wählen</span><br><span class="maAnmeld_anmArt_derzeit">(derzeit: normal)</span>', '', ($this->_isReadOnly() ? 'anm_readonly' : ''), 'maAnmeld_anmArt');
      $result .= '</div>';
    }

    if (!$this->_isReadOnly()) {
      $result .= '<div>';
      $result .= HTMLOperations::createButtonSpan('Jetzt anmelden', '', '', 'maAnmeld_anmelden', 'images/okay.gif');
      $result .= '</div>';
    }

    if ($this->links['detailsAllowed']) {
      $result .= $this->_createDetailsDialog();
    }
    if ($this->links['abwZahlwegAllowed']) {
      $result .= $this->_createAbwZahlwegDialog();
    }
    if ($this->links['nachlassAllowed']) {
      $result .= $this->_createNachlassDialog();
    }
    $result .= $this->_createKinderDialog();
    $result .= $this->_createMehrfachDialog();
    $result .= $this->_createFirmaDialog();
    if (!$this->_isReadOnly() && ($this->links['elternKindAnmAllowed'] || $this->links['mehrfachAnmAllowed'] || $this->links['faAnmAllowed'])) {
      $result .= $this->_createAnmArtDialog();
    }
    $result .= '</div>';

    return $result;
  }

  
  private function _createMehrfachDialog()
  {
    $result = '<div id="mehrfachDialog">';

    $result .= '<div class="weiterePersonenTable">';
    $result .= '<table class="tab_mehrfach">';
    $result .= '<thead>';
    $result .= '<tr>';

    $result .= '<th>Nachname</th>';
    $result .= '<th>Vorname</th>';
    $result .= '<th>Geschlecht</th>';
    $result .= '<th>Ort</th>';
    $result .= '<th>Strasse</th>';
    $result .= '<th>Telefon</th>';
    $result .= '<th>E-Mail</th>';
    $result .= '<th></th>';

    $result .= '</tr>';
    $result .= '</thead>';
    $result .= '<tbody>';
    $result .= '</tbody>';
    $result .= '</table>';
    $result .= '</div>';

    
    $teil_frei = $this->_dataKurs->getVarValue('teil_frei') - 1;
    if ($teil_frei < 0) {
      $teil_frei = 0;
    }

    $result .= '<div class="weiterePersonenAnzahl">Anzahl weiterer Teilnehmer: <span class="weiterePersonenAnzahlInt">0</span> freie weitere Plätze: ' . CleanOperations::cleanInt($teil_frei) . '</div>';

    if (!$this->_isReadOnly()) {
      $result .= '<hr>';
      $result .= '<div class="weiterePersonHinzufuegen">';
      $result .= '<div><b>Weiteren Teilnehmer - manuell eingeben:</b></div>';

      $result .= '<div><label for="tnName">Name:</label><input id="tnName" class="form_mandatory" type="text"></div>';
      $result .= '<div><label for="tnVorname">Vorname:</label><input id="tnVorname" type="text"></div>';
      $result .= '<div><label for="tnGeschlecht">Geschlecht:</label>' . $this->_getSelect4Geschlecht('tnGeschlecht') . '</div>';
      $result .= '<div><label for="tnOrt">Ort:</label><input id="tnOrt" type="text"></div>';
      $result .= '<div><label for="tnStrasse">Straße:</label><input id="tnStrasse" type="text"></div>';
      $result .= '<div><label for="tnTelefon">Telefon:</label><input id="tnTelefon" type="text"></div>';
      $result .= '<div><label for="tnEmail">E-Mail:</label><input id="tnEmail" class="val_email" type="text"></div>';
      $result .= '<div>' . HTMLOperations::CreateButtonSpan(
        'Hinzufügen aus Eingabefelder',
        'Weiteren Teilnehmer anhand der eingetragenen Daten hinzufügen',
        '',
        'mehrfachTnManuell'
      ) . '</div>';

      $result .= '</div>';

      $result .= '<div class="buttonsWeiterePersonen">';
      $result .= '<div class="buttonsWeiterePersonenTitle"><b>- automatisch beziehen:</b></div>';
      $result .= HTMLOperations::CreateButtonSpan(
        'Hinzufügen aus Teilnehmerstamm',
        'Weiteren Teilnehmer anhand bereits vorhandener Teilnehmerdaten hinzufügen',
        '',
        'mehrfachTnStamm'
      );
      $result .= HTMLOperations::CreateButtonSpan(
        'Anonyme Teilnehmer hinzufügen',
        'Weitere Teilnehmer ohne Angabe von Daten hinzufügen.',
        '',
        'mehrfachAnonym'
      );

      $result .= '</div>';

      
      $result .= '<div class="weiterePersonenVoll">';
      $result .= 'Im Kurs sind keine Plätze für weitere Teilnehmer vorhanden';
      $result .= '</div>';

      
      $result .= $this->_getTnUebersichtDialog('tn_auswahl_mehrfach');
      $result .= $this->_getAnzahlWeitereTnDialog();
    }
    $result .= '</div>';

    return $result;
  }

  
  private function _getSelect4Geschlecht($pHtmlId)
  {
    return '<select id="' . CleanOperations::cleanStringForHtml($pHtmlId) . '">' . ComboboxAPI::getGeschlechtAuswahl('') . '</select>';
  }

  
  private function _createAnmArtDialog()
  {
    $result = '<div id="anmArtDialog">';
    $result .= '<div>';
    $result .= HTMLOperations::createButtonSpan('Normal', '', 'anmArt_normal');
    $result .= '</div>';
    if ($this->links['elternKindAnmAllowed']) {
      $result .= '<div>';
      $result .= HTMLOperations::createButtonSpan('Eltern-Kind-Anmeldung', '', 'anmArt_kind');
      $result .= '</div>';
    }
    if ($this->links['mehrfachAnmAllowed']) {
      $result .= '<div>';
      $result .= HTMLOperations::createButtonSpan('Mehrfachanmeldung', '', 'anmArt_mehrfach');
      $result .= '</div>';
    }
    if ($this->links['faAnmAllowed']) {
      $result .= '<div>';
      $result .= HTMLOperations::createButtonSpan('Firmenanmeldung', '', 'anmArt_firma');
      $result .= '</div>';
    }
    $result .= '</div>';

    return $result;
  }

  
  private function _createAbwZahlwegDialog()
  {
    $disabledString = HTMLOperations::getEmptyAttribute('disabled');

    $result = '<div id="abwZahlwegDialog">';
    $result .= '<div class="abwZahlwegDialog_input">';
    $result .= '<label for="abwZahlweg_Inhaber">Inhaber:</label><input id="abwZahlweg_Inhaber" name="abw_inhaber" ' . $disabledString . '>';
    if (!$this->_isReadOnly()) {
      $result .= '<img src="layout/button_hinterlegung.gif" alt="Teilnehmer auswählen" id="abw_tn_auswahl" class="abw_tn_auswahl">';
    }
    $result .= '</div>';
    $result .= '<div class="abwZahlwegDialog_input"><label for="abwZahlweg_Bank">Bank:</label><input id="abwZahlweg_Bank" name="abw_bank" class="form_mandatory" ' . $disabledString . '></div>';
    $result .= '<div class="abwZahlwegDialog_input SEPA_row"><label for="abwZahlweg_BIC">BIC:</label><input id="abwZahlweg_BIC" name="abw_bic" ' . $disabledString . '></div>';
    $result .= '<div class="abwZahlwegDialog_input SEPA_row"><label for="abwZahlweg_IBAN">IBAN:</label><input id="abwZahlweg_IBAN" name="abw_iban" class="form_mandatory" ' . $disabledString . '></div>';
    $result .= HTMLOperations::CreateInputTag('abw_zahler', 'hidden', 'abwZahlweg_Zahler');
    
    $result .= '</div>';

    return $result;
  }

  
  private function _createKinderDialog()
  {
    $result = '<div id="kinderDialog">';

    $result .= '<div class="weiterePersonenTable">';
    $result .= '<table class="tab_kinder">';
    $result .= '<thead>';
    $result .= '<tr>';

    $result .= '<th>Nachname</th>';
    $result .= '<th>Vorname</th>';
    $result .= '<th>Geboren am</th>';
    $result .= '<th>Bemerkung</th>';
    $result .= '<th></th>';

    $result .= '</tr>';
    $result .= '</thead>';
    $result .= '<tbody>';
    $result .= '</tbody>';
    $result .= '</table>';
    $result .= '</div>';

    $kinder_frei = $this->_dataKurs->getKinderMax() - $this->_dataKurs->getVarValue('kinderanzahl');
    if ($kinder_frei < 0) {
      $kinder_frei = 0;
    }

    $result .= '<div class="weiterePersonenAnzahl">Anzahl Kinder: <span class="weiterePersonenAnzahlInt">0</span> freie Plätze für Kinder: ' . CleanOperations::cleanInt($kinder_frei) . '</div>';

    if (!$this->_isReadOnly()) {
      $result .= '<hr>';

      $result .= '<div class="weiterePersonHinzufuegen">';
      $result .= '<div><b>Daten des Kindes:</b></div>';

      $result .= '<div><label for="kindName">Name:</label><input id="kindName" class="kindInfo" type="text"></div>';
      $result .= '<div><label for="kindVorname">Vorname:</label><input id="kindVorname" class="kindInfo" type="text"></div>';
      $result .= '<div><label for="kindGeburtsdatum">Geburtsdatum:</label><input id="kindGeburtsdatum" class="val_date kindInfo" type="text"></div>';
      $result .= '<div><label for="kindBemerkung">Bemerkung:</label><input id="kindBemerkung" class="kindInfo" type="text"></div>';

      $result .= '<div class="buttonsWeiterePersonen">' . HTMLOperations::CreateButtonSpan('Kind hinzufügen', 'Kind hinzufügen', '', 'kindHinzufuegen') . '</div>';

      $result .= '</div>';

      
      $result .= '<div class="weiterePersonenVoll">';
      $result .= 'Im Kurs sind keine Plätze für weitere Kinder vorhanden';
      $result .= '</div>';
    }
    $result .= '</div>';

    return $result;
  }

  
  private function _createFirmaDialog()
  {
    $result = '<div id="firmenDialog">';

    $result .= '<div class="weiterePersonenTable">';
    $result .= '<table class="tab_firma">';
    $result .= '<thead>';
    $result .= '<tr>';

    $result .= '<th>Nachname</th>';
    $result .= '<th>Vorname</th>';
    $result .= '<th>Geschlecht</th>';
    $result .= '<th>Ort</th>';
    $result .= '<th>Straße</th>';
    $result .= '<th>Telefon</th>';
    $result .= '<th>E-Mail</th>';
    $result .= '<th></th>';

    $result .= '</tr>';
    $result .= '</thead>';
    $result .= '<tbody>';
    $result .= '</tbody>';
    $result .= '</table>';
    $result .= '</div>';

    $teil_frei = $this->_dataKurs->getVarValue('teil_frei');
    if ($teil_frei < 0) {
      $teil_frei = 0;
    }

    $result .= '<div class="weiterePersonenAnzahl">Anzahl Mitarbeiter: <span class="weiterePersonenAnzahlInt">0</span> freie Plätze: ' . CleanOperations::cleanInt($teil_frei) . '</div>';

    if (!$this->_isReadOnly()) {
      $result .= '<hr>';

      $result .= '<div class="weiterePersonHinzufuegen">';
      $result .= '<div><b>Daten des Mitarbeiters - manuell eintragen:</b></div>';

      $result .= '<div><label for="maName">Name:</label><input id="maName" class="form_mandatory" type="text"></div>';
      $result .= '<div><label for="maVorname">Vorname:</label><input id="maVorname" type="text"></div>';
      $result .= '<div><label for="maGeschlecht">Geschlecht:</label>' . $this->_getSelect4Geschlecht('maGeschlecht') . '</div>';
      $result .= '<div><label for="maOrt">Ort:</label><input id="maOrt" type="text"></div>';
      $result .= '<div><label for="maStrasse">Strasse:</label><input id="maStrasse" type="text"></div>';
      $result .= '<div><label for="maTelefon">Telefon:</label><input id="maTelefon" type="text"></div>';
      $result .= '<div><label for="maEmail">E-Mail:</label><input id="maEmail" class="val_email" type="text"></div>';

      $result .= '<div>' . HTMLOperations::CreateButtonSpan('Hinzufügen', 'Weiteren Mitarbeiter anhand der eingetragenen Daten hinzufügen', '', 'mehrfachMaManuell') . '</div>';

      $result .= '</div>';

      $result .= '<div class="buttonsWeiterePersonen">';
      $result .= '<div class="buttonsWeiterePersonenTitle"><b>- automatisch beziehen:</b></div>';
      $result .= '<div>' . HTMLOperations::createButtonSpan('Hinzufügen aus der Teilnehmerauswahl', 'Firmen-Mitarbeiter aus Teilnehmerauswahl ausw&auml;hlen', 'firmenMaAuswahlButton', 'firmenMaAuswahlTnStamm') . '</div>';
      $result .= '<div>' . HTMLOperations::createButtonSpan('Aus Firmen-Mitarbeitern ausw&auml;hlen', 'Teilnehmer aus bereits zur Firma angemeldeten Mitarbeitern ausw&auml;hlen', 'firmenMaAuswahlButton', 'firmenMaAuswahlFirma') . '</div>';
      $result .= '<div>' . HTMLOperations::createButtonSpan('weibliche Pauschalanmeldung', 'Anmeldung eines weiblichen Pauschalteilnehmers', 'firmenMaPauschal', 'firmenMaPauschalWeiblich') . '</div>';
      $result .= '<div>' . HTMLOperations::createButtonSpan('m&auml;nnliche Pauschalanmeldung', 'Anmeldung eines m&auml;nnlichen Pauschalteilnehmers', 'firmenMaPauschal', 'firmenMaPauschalMaennlich') . '</div>';
      $result .= '<div>' . HTMLOperations::createButtonSpan('neutrale Pauschalanmeldung', 'Anmeldung eines geschlechtneutralen Pauschalteilnehmers', 'firmenMaPauschal', 'firmenMaPauschalNeutral') . '</div>';
      $result .= '<div>' . HTMLOperations::createButtonSpan('Anmeldung der Firma als Teilnehmer', 'Anmeldung der Firma als Teilnehmer', 'firmenMaPauschal', 'firmenMaPauschalFirma') . '</div>';
      $result .= '</div>';

      
      $result .= '<div class="weiterePersonenVoll">';
      $result .= 'Im Kurs sind keine Plätze für weitere Mitarbeiter vorhanden';
      $result .= '</div>';

      $result .= $this->_getTnUebersichtDialog('tn_auswahl_firmendialog');
    }
    $result .= '</div>';

    return $result;
  }

  
  private function _createDetailsDialog()
  {
    $result = '<div id="histKritDialog">';
    $htmlFreiWaehlbaresEingabefeld = new HtmlFreiWaehlbaresEingabefeld();
    foreach ($this->_freiWaehlbareFelder as $freiWaehlbaresFeld) {
      if (trim($freiWaehlbaresFeld->bezeichnung) != '') {
        $nr = $freiWaehlbaresFeld->id;
        $name = 'beleghistorie' . $nr;
        $result .= '<div class="maAnmeld_histKrit">';
        $result .= $htmlFreiWaehlbaresEingabefeld->getBezeichnungLabel($freiWaehlbaresFeld, $name);
        $result .= $htmlFreiWaehlbaresEingabefeld->getInputFeld($freiWaehlbaresFeld, $name, $name, $name);
        $result .= '</div>';
      }
    }

    $result .= '</div>';

    return $result;
  }

  private function _createNachlassDialog()
  {
    return BelegungAPI::createNachlassDialog($this->_isReadOnly(), true);
  }

  
  private function _getAnzahlWeitereTnDialog()
  {
    $result = '<div id="anzahlWeitereTnDialog">';
    $result .= '<div>';
    $result .= '<span>Zusätzliche anonyme Teilnehmer hinzufügen: </span>';
    $result .= '<input id="anzahlWeitereTnDialog_anzahl" value="1" size="2" maxlength="2">';
    $result .= '</div>';
    $result .= '<div>';
    $result .= '<span class="smallInfo">(Die weiteren Teilnehmer werden mit den Daten des Hauptteilnehmers hinzugefügt)</span>';
    $result .= '</div>';
    $result .= '</div>';

    return $result;
  }

  
  private function _getTnUebersichtDialog($pClass = 'tn_uebersicht_dialog')
  {
    $dbwwss = new DBWorkSightsSettings(1, true);
    $dbwwss->justallowedColumns = true;
    $columns = $dbwwss->getColumns(21);

    $result = '<div class="' . CleanOperations::cleanStringForHtml($pClass) . '">';
    $result
              .= '<div class="tn_search">'
              . '<label for="tn_search_name">Name:</label> '
              . '<input id="tn_search_name" name="filterName" class="tn_search_name dataTableSearch"> '
              . '<label for="tn_search_vorname">Vorname:</label> '
              . '<input id="tn_search_vorname" name="filterVorname" class="tn_search_vorname dataTableSearch"> '
              . '<label for="tn_search_nr">Nr:</label> '
              . '<input id="tn_search_nr" name="filterNr" class="tn_search_nr dataTableSearch">'
              . '<span class="tn_search_start dataTableSearchButton"></span>'
              . '<span class="tn_search_back dataTablePrevious"></span>'
              . '<span class="tn_search_vor dataTableNext"></span>'
              . '</div>';
    $result .= '<table class="dataTable_tnUebersicht"><thead><tr>';


    $result .= '<th width="20px"></th>'; 
    foreach ($columns as $column) {
      $result .= '<th width="' . CleanOperations::cleanInt($column->width) . '">' . CleanOperations::cleanStringForHtml($column->title) . '</th>';
    }

    $columnsCount = count($columns);
    $result .= '</tr></thead><tbody><tr><td colspan="' . $columnsCount . '">Teilnehmerdaten werden geladen</td></tr></tbody></table></div>';

    return $result;
  }

  public function getSpecialJS()
  {
    $fileAry = parent::getSpecialJS();

    $fileAry[] = '../jquery/plugins/jquery.dataTables.min.js';
    $fileAry[] = 'js/MATool/maanmelden.js';
    $fileAry[] = 'js/MATool/nachlass.js';

    return $fileAry;
  }

  public function getJSDeclarations()
  {
    $result = parent::getJSDeclarations();
    $result .= 'registerNamespace("KuferTools");' . "\n";
    $result .= JsOperations::getDeclarationInt('KuferTools.ToolSectionId', $this->id);

    $result .= JsOperations::getDeclarationInt('KuferTools.ToolSectionId4TnUebersicht', 21);
    $result .= JsOperations::getDeclarationInt('KuferTools.ToolSectionId4tnDetails', 132);
    $result .= JsOperations::getDeclarationInt('KuferTools.ToolSectionId4KursUebersicht', 19);
    $result .= JsOperations::getDeclarationInt('KuferTools.ToolSectionId4KursDetails', 20);
    $result .= JsOperations::getDeclarationInt('KuferTools.ToolSectionId4Self', $this->id);

    $result .= JsOperations::getDeclarationFloatMitPunkt('KuferTools.Anmeldung.NachlassFloat', 0);
    $result .= JsOperations::getDeclarationBoolean('KuferTools.Anmeldung.NachlassAufteilbar', true);

    if (!empty($this->_dataTn->id)) {
      
      
      $result .= 'registerNamespace("KuferTools.Teilnehmer");' . "\n";
      $result .= JsOperations::getDeclarationInt('KuferTools.Teilnehmer.Tnr', $this->_dataTn->id);
      $result .= JsOperations::getDeclarationString('KuferTools.Teilnehmer.Name', StringOperations::htmlspecialchars($this->_dataTn->name, ENT_QUOTES));
      $result .= JsOperations::getDeclarationString('KuferTools.Teilnehmer.Vorname', StringOperations::htmlspecialchars($this->_dataTn->vorname, ENT_QUOTES));
      $result .= JsOperations::getDeclarationString('KuferTools.Teilnehmer.Geschlecht', StringOperations::htmlspecialchars($this->_dataTn->geschlecht, ENT_QUOTES));
      $result .= JsOperations::getDeclarationString('KuferTools.Teilnehmer.Ort', StringOperations::htmlspecialchars($this->_dataTn->ort, ENT_QUOTES));
      $result .= JsOperations::getDeclarationString('KuferTools.Teilnehmer.Strasse', StringOperations::htmlspecialchars($this->_dataTn->strasse, ENT_QUOTES));
      $result .= JsOperations::getDeclarationString('KuferTools.Teilnehmer.Telefon', StringOperations::htmlspecialchars($this->_dataTn->tel_anzeige, ENT_QUOTES));
      $result .= JsOperations::getDeclarationString('KuferTools.Teilnehmer.Email', StringOperations::htmlspecialchars($this->_dataTn->email_anzeige, ENT_QUOTES));
    }

    if (!empty($this->_dataKurs->id)) {
      $result .= 'registerNamespace("KuferTools.Kurs");' . "\n";
      $result .= JsOperations::getDeclarationString('KuferTools.Kurs.Nr', $this->_dataKurs->id);
      $result .= JsOperations::getDeclarationString('KuferTools.Kurs.Titel', StringOperations::htmlspecialchars($this->_dataKurs->kurzbez, ENT_QUOTES));
      $result .= JsOperations::getDeclarationInt('KuferTools.Kurs.Teil_frei', $this->_dataKurs->getVarValue('teil_frei'));
      $result .= JsOperations::getDeclarationInt('KuferTools.Kurs.Kinder_frei', ($this->_dataKurs->getKinderMax() - $this->_dataKurs->getVarValue('kinderanzahl')));
      
      $anmEndeErreicht = DateTimeOperations::isValidDate($this->_dataKurs->anm_ende) && DateTimeOperations::isDateBeforeNow($this->_dataKurs->beginn_dat, -1);
      $result .= JsOperations::getDeclarationBoolean('KuferTools.Kurs.AnmeldeendeErreicht', $anmEndeErreicht);
      
      $bereitsBegonnen = DateTimeOperations::isValidDate($this->_dataKurs->beginn_dat) && DateTimeOperations::isDateBeforeNow($this->_dataKurs->beginn_dat, -1);
      $result .= JsOperations::getDeclarationBoolean('KuferTools.Kurs.KursbeginnErreicht', $bereitsBegonnen);
    }

    $result .= 'registerNamespace("KuferTools.Anmeldung");';
    $result .= JsOperations::getDeclarationBoolean('KuferTools.Anmeldung.ReadOnly', $this->_isReadOnly());
    
    $ueberbuchenErlaubt = ($this->toolSettings->ueberbuchenErlaubt && $this->_dataKurs->bis_max !== 'W');
    $result .= JsOperations::getDeclarationBoolean('KuferTools.Anmeldung.UeberbuchenErlaubt', $ueberbuchenErlaubt);
    $tnAnlegenAllowed = isset($this->links['tnAnlegenAllowed']) && $this->links['tnAnlegenAllowed'];
    $result .= JsOperations::getDeclarationBoolean('KuferTools.Anmeldung.TnAnlegenAllowed', $tnAnlegenAllowed);

    $kindNameVorbelegung = ($this->toolSettings->kindNameVorbelegen ? $this->_dataTn->name : '');
    $result .= JsOperations::getDeclarationString('KuferTools.Anmeldung.KindNameVorbelegung', $kindNameVorbelegung);

    if (!empty($this->_dataKurs->id) && !empty($this->_dataTn->id)) {
      $result .= JsOperations::getDeclarationJson('KuferTools.Anmeldung.Geschlecht', \GeschlechtAPI::getGeschlechtMap());
    }

    return $result;
  }

  public function getContentHeader()
  {
    return 'Anmeldung';
  }

  
  
  public function getEmailBestaetigungPrint()
  {
    $result = '';

    if ($this->toolSettings->emailBestaetigungDrucken == '1') {
      $result = HTMLOperations::createButtonSpan('Anmeldebestätigung drucken', 'Anmeldebestätigung drucken', 'floatright', 'bestaetigungsemailDialog', 'images/print_smallg.gif');
    }

    return $result;
  }
}