/**
 * Javascript für das KuferTool Kursplanung durch Dozenten (Tool 3)
 */

$(function () {

  registerNamespace('KuferTools.KurstagPlanung');
  registerNamespace('KuferTools.Kursplanung');

  jQuery('.termin_sammelaenderung').on('click', function (event) {
    event.preventDefault();
    const markierteCheckboxen = jQuery('.markable:checked');

    if (markierteCheckboxen.length === 0) {
      KuferTools.showMessage({
        meldung: 'Es muss mindestens ein Kurstag ausgewählt werden.',
        title: 'Termine bearbeiten',
        width: 'auto'
      });
    } else if (markierteCheckboxen.length === 1 && typeof markierteCheckboxen.parents('.panel-heading,.table_row').find('a').prop('href') !== undefined) {
      window.location.href = markierteCheckboxen.parents('.panel-heading,.table_row').find('a.content_details_link').prop('href');
    } else {
      var href = jQuery(this).attr('href');
      var ktIds = [];
      markierteCheckboxen.each(function () {
        ktIds[ktIds.length] = jQuery(this).prop('name');
      });

      href += '&ktIds=' + ktIds.join(':');

      KuferTools.Utils.AjaxLadebildschirm.Start();
      jQuery.post(href, function (data) {
        var buttons = {};
        buttons[KuferTools.Button.Bezeichnung.Ok] = function () {
          $(this).find('form').trigger('submit');
          $(this).dialog('close');
        };
        buttons[KuferTools.Button.Bezeichnung.Abbrechen] = function () {
          $(this).dialog('close');
        };
        KuferTools.showMessage({meldung: data, title: 'Ausgewählte Termine ändern:', buttons: buttons, width: 'auto'});

        // Aus webtools/js/terminplanung.js leicht adaptiert übernommen.
        var ckbBeginn = '#wt_kt_changeBeginn';
        var ckbEnde = '#wt_kt_changeEnde';
        KuferTools.Utils.UiFunctions.setzeCheckboxNachChanged('#wt_kt_changeDate_val', '#wt_kt_changeDate');
        KuferTools.Utils.UiFunctions.setzeCheckboxNachChanged('#wt_kt_changeBeginn_val', ckbBeginn + ', ' + ckbEnde, true);
        KuferTools.Utils.UiFunctions.setzeCheckboxNachChanged('#wt_kt_changeUe_val', ckbBeginn + ', ' + ckbEnde);
        KuferTools.Utils.UiFunctions.setzeCheckboxNachChanged('#wt_kt_changeEnde_val', ckbEnde, true);
        KuferTools.Utils.UiFunctions.setzeCheckboxNachChanged('#wt_kt_changeMinuten_val', ckbBeginn + ', ' + ckbEnde);
        KuferTools.Utils.UiFunctions.setzeCheckboxNachChanged('#wt_kt_changePause_val', ckbBeginn + ', ' + ckbEnde);
        KuferTools.Utils.UiFunctions.setzeCheckboxNachChanged('#wt_kt_changeAusfall_val', '#wt_kt_changeAusfall');
        KuferTools.Utils.UiFunctions.setzeCheckboxNachChanged('#wt_kt_changeBemerkung_val', '#wt_kt_changeBemerkung');
        KuferTools.Utils.UiFunctions.setzeCheckboxNachChanged('#wt_kt_changeKursort_val', '#wt_kt_changeKursort');
        KuferTools.Utils.UiFunctions.setzeCheckboxNachChanged('#wt_kt_changeAussenstelle_val', '#wt_kt_changeAussenstelle');

        KuferTools.Utils.AjaxLadebildschirm.Stop();
      });
    }
  });

  $(document).on('change', '#wt_kt_changeBeginn_val, #wt_kt_changeEnde_val, ' +
    '#wt_kt_changePause_val, #kurstag_zeit_beg, #kurstag_zeit_ende, #kurstag_pause, ' +
    '#raumplanung_kt_uhrzeit_von, #raumplanung_kt_uhrzeit_bis, #raumplanung_kt_pause', function () {

    if (!getZeiten()) {
      return;
    }

    var beginn = KuferTools.KurstagPlanung.Beginn;
    var ende = KuferTools.KurstagPlanung.Ende;
    var pause = KuferTools.KurstagPlanung.Pause;

    var minuten = timeToMinutes(ende) - timeToMinutes(beginn) - ((pause != '') ? pause : 0);
    var ue = KuferTools.Utils.minToUe(minuten);

    var id = $(this).attr('id');
    var beginnIds = ['wt_kt_changeBeginn_val', 'kurstag_zeit_beg', 'raumplanung_kt_uhrzeit_von'];
    var endeIds = ['wt_kt_changeEnde_val', 'kurstag_zeit_ende', 'raumplanung_kt_uhrzeit_bis'];

    if ($.inArray(id, beginnIds) > -1) {
      if (KuferTools.KurstagPlanung.Ende < KuferTools.KurstagPlanung.Beginn) {
        KuferTools.KurstagPlanung.Ende = KuferTools.KurstagPlanung.Beginn;
      }
    } else if ($.inArray(id, endeIds) > -1) {
      if (KuferTools.KurstagPlanung.Ende < KuferTools.KurstagPlanung.Beginn) {
        KuferTools.KurstagPlanung.Beginn = KuferTools.KurstagPlanung.Ende;
      }
    }

    KuferTools.KurstagPlanung.Minuten = Math.round(minuten);
    KuferTools.KurstagPlanung.Ue = String(ue).replace(/\./, ',');

    aktualisiereZeiten();
  });

  /*
   * Aktualisiert bei der Sammeländerung für Kurstage die UE und die Pause, falls sich die Minuten ändern
   */
  $(document).on('change', '#wt_kt_changeMinuten_val, #kurstag_minuten, #raumplanung_kt_minuten', function () {
    if (!getZeiten()) {
      return;
    }

    var beginn = KuferTools.KurstagPlanung.Beginn;
    var ende = KuferTools.KurstagPlanung.Ende;
    var minuten = KuferTools.KurstagPlanung.Minuten;

    var minutenMax = timeToMinutes(ende) - timeToMinutes(beginn);
    if (minuten > minutenMax) minuten = minutenMax;
    var ue = String(KuferTools.Utils.minToUe(minuten)).replace(/\./, ',')

    KuferTools.KurstagPlanung.Pause = Math.round(minutenMax - minuten);
    KuferTools.KurstagPlanung.Ue = ue;
    if (minuten.val == '') {
      KuferTools.KurstagPlanung.Minuten = 0;
    } else {
      KuferTools.KurstagPlanung.Minuten = minuten;
    }

    aktualisiereZeiten();
  });

  /*
   * Aktualisiert bei der Sammeländerung für Kurstage die Minuten und die Pause, falls sich die UE ändern
   */
  $(document).on('change', '#wt_kt_changeUe_val, #kurstag_ue, #raumplanung_kt_ue', function () {

    if (!getZeiten()) {
      return;
    }

    var beginn = KuferTools.KurstagPlanung.Beginn;
    var ende = KuferTools.KurstagPlanung.Ende;
    var ue = KuferTools.KurstagPlanung.Ue;

    var ueFloat = ((ue != '') ? ue.replace(/,/, '.') : 0);
    var minuten = KuferTools.Utils.UeToMin(ueFloat);
    var minutenMax = timeToMinutes(ende) - timeToMinutes(beginn);

    KuferTools.KurstagPlanung.Pause = minutenMax - minuten;
    KuferTools.KurstagPlanung.Minuten = minuten;

    aktualisiereZeiten();
  });

  function zeitenSelectorObj() {
    if ($('#wt_kt_changeBeginn_val').length > 0) { // Sammeländerung
      this.$Beginn = $('#wt_kt_changeBeginn_val');
      this.$Ende = $('#wt_kt_changeEnde_val');
      this.$Ue = $('#wt_kt_changeUe_val');
      this.$Minuten = $('#wt_kt_changeMinuten_val');
      this.$Pause = $('#wt_kt_changePause_val');
    } else if ($('#kurstag_zeit_beg').length > 0) { // Termin bearbeiten
      this.$Beginn = $('#kurstag_zeit_beg');
      this.$Ende = $('#kurstag_zeit_ende');
      this.$Ue = $('#kurstag_ue');
      this.$Minuten = $('#kurstag_minuten');
      this.$Pause = $('#kurstag_pause');
    } else { // Raumplanung
      this.$Beginn = $('#raumplanung_kt_uhrzeit_von');
      this.$Ende = $('#raumplanung_kt_uhrzeit_bis');
      this.$Ue = $('#raumplanung_kt_ue');
      this.$Minuten = $('#raumplanung_kt_minuten');
      this.$Pause = $('#raumplanung_kt_pause');
    }
    return this;
  }

  function aktualisiereZeiten() {
    var zObj = zeitenSelectorObj();
    zObj.$Beginn.val(KuferTools.KurstagPlanung.Beginn);
    zObj.$Ende.val(KuferTools.KurstagPlanung.Ende);
    zObj.$Ue.val(KuferTools.KurstagPlanung.Ue);
    zObj.$Minuten.val(KuferTools.KurstagPlanung.Minuten);
    zObj.$Pause.val(KuferTools.KurstagPlanung.Pause);
  }

  function getZeiten() {
    var zObj = zeitenSelectorObj();
    var $beginn = zObj.$Beginn;
    var $ende = zObj.$Ende;
    var $ue = zObj.$Ue;
    var $minuten = zObj.$Minuten;
    var $pause = zObj.$Pause;

    // BUG-Fix: Damit wird eine falsche Vorbesetzung mit '' und damit ein Validierungsfehler verhindert; KuferTools.KurstagPlanung.Ue
    // wurde in Methode JSDeclarations der Page mit 0 vorbesetzt
    if ($ue.val() == "")
      $ue.val(KuferTools.KurstagPlanung.Ue);


    //validInput gibt true zurück, falls das Feld nicht existiert
    var isOk = true;
    isOk = validateInput($beginn) && isOk;
    isOk = validateInput($ende) && isOk;
    isOk = validateInput($ue) && isOk;
    isOk = validateInput($minuten) && isOk;
    isOk = validateInput($pause) && isOk;

    if (isOk) {
      if ($beginn.length != 0) KuferTools.KurstagPlanung.Beginn = $beginn.val();
      if ($ende.length != 0) KuferTools.KurstagPlanung.Ende = $ende.val();
      if ($ue.length != 0) KuferTools.KurstagPlanung.Ue = $ue.val();
      if ($minuten.length != 0) KuferTools.KurstagPlanung.Minuten = $minuten.val();
      if ($pause.length != 0) KuferTools.KurstagPlanung.Pause = $pause.val();
    }

    if (KuferTools.KurstagPlanung.Pause == '') {
      KuferTools.KurstagPlanung.Pause = 0;
    }
    if (KuferTools.KurstagPlanung.Ue == '') {
      KuferTools.KurstagPlanung.Ue = 0;
    }
    if (KuferTools.KurstagPlanung.Minuten == '') {
      KuferTools.KurstagPlanung.Minuten = 0;
    }
    if (KuferTools.KurstagPlanung.Beginn == '') {
      KuferTools.KurstagPlanung.Beginn = '00:00';
    }
    if (KuferTools.KurstagPlanung.Ende == '') {
      KuferTools.KurstagPlanung.Ende = '00:00';
    }

    return isOk;
  }

  KuferTools.ShowKursAendernDialog = function ($msg) {

    if ($msg.find('.kursAnpassen').length > 0) {
      var $kursAnpassen = $msg.find('.kursAnpassen');
      $msg.find('.kursAnpassen').detach();

      var buttons = {};
      buttons[KuferTools.Button.Bezeichnung.Abbrechen] = function () {
        $(this).dialog('close');
      };
      buttons["Kurs ändern"] = function () {
        var $form = $('form', this);
        if ($form.find('.kursAnpassen_checkbox:checked').length == 0) {
          KuferTools.showMessage({
            'meldung': 'Sie haben keine zu ändernden Kursdaten ausgewählt. Bitte haken Sie die zu ändernden Daten an, oder Klicken auf Abbrechen.',
            'title': 'Keine zu ändernden Kursdaten ausgewählt'
          });
        } else if (KuferTools.ValidateFormInput($form)) {
          KuferTools.Utils.AjaxLadebildschirm.Start();
          KuferTools.Utils.doAjaxPost($form, $form.prop('action'))
            .then(resp => resp.json())
            .then(function (successJson) {
              var success = KuferTools.Utils.getObjectFromJson(successJson);
              if (success === true || success === 1 || success === '1') {
                KuferTools.showMessage({
                  'meldung': 'Der Kurs wurde erfolgreich geändert.',
                  'title': 'Kurs erfolgreich geändert'
                });
              } else {
                KuferTools.showMessage({
                  'meldung': 'Beim Ändern des Kurses ist ein Fehler aufgetreten. Bitte passen Sie den Kurs manuell an.',
                  'title': 'Fehler beim Ändern des Kurses'
                });
              }
            })
            .catch(err => {
              console.log(err);
            });
          $(this).dialog('close');
        }
      };

      KuferTools.showMessage({
        'meldung': $kursAnpassen,
        'title': 'Kurs an geänderte Kurstage anpassen',
        'width': 'auto',
        'buttons': buttons
      });
      KuferTools.InitValidate($('.kursAnpassen form'));
      $('.input_neu input').on('change', function () {
        $(this).parents('.kursAnpassenRow').find('.kursAnpassen_checkbox').prop('checked', true);
      });
    }
    return $msg.html();
  };

  KuferTools.ShowInformiereTeilnehmerDialog = function ($msg) {

    if ($msg.find('.informiereTnDialog').length > 0) {
      var $informiereTnDialog = $msg.find('.informiereTnDialog');
      $msg.find('.informiereTnDialog').detach();

      var title = 'Teilnehmer informieren';
      var buttons = {};
      buttons['Ja'] = function () {
        var $form = $('form', this);
        $form.trigger('submit');
        $(this).dialog('close');
        KuferTools.Utils.AjaxLadebildschirm.Start();
      };
      buttons['Nein'] = function () {
        $(this).dialog('close');
      };

      KuferTools.showMessage({'meldung': $informiereTnDialog, 'title': title, 'buttons': buttons});
    }

    return $msg.html();
  };

  KuferTools.ShowInformiereTeilnehmerDialog($('body'));
  KuferTools.ShowKursAendernDialog($('body'));

  KuferTools.ValidateFormHandler = function () {
    var invalidInputs = [];
    var $beginn;
    var $ende;
    var $wunsch;

    if (jQuery('.validate_form').length > 0) {
      if (KuferTools.Kursplanung.DatumsfelderAbhaengigePflichtfelder) {
        $beginn = jQuery('#kursplanung_beginn_dat');
        $ende = jQuery('#kursplanung_ende_dat');
        $wunsch = jQuery('#kursplanung_beginn_dat_wunsch');
        invalidInputs = invalidInputs.concat(KuferTools.Kursplanung.validateDatumUhrzeit($beginn, $ende, $wunsch));
      }
      if (KuferTools.Kursplanung.UhrzeitfelderAbhaengigePflichtfelder) {
        $beginn = jQuery('#kursplanung_beginn');
        $ende = jQuery('#kursplanung_ende');
        $wunsch = jQuery('#kursplanung_beginn_wunsch');
        invalidInputs = invalidInputs.concat(KuferTools.Kursplanung.validateDatumUhrzeit($beginn, $ende, $wunsch));
      }
    }

    return invalidInputs;
  };

  KuferTools.Kursplanung.validateDatumUhrzeit = function ($pBeginn, $pEnde, $pWunsch) {
    var invalidInputs = [];
    var i = 0;
    if ($pBeginn.length > 0 && $pEnde.length > 0 && $pWunsch.length > 0) {
      if (($pBeginn.val() === '' || $pEnde.val() === '') && $pWunsch.val() === '') {
        if (KuferTools.Kursplanung.checkFieldEmpty($pBeginn)) {
          invalidInputs[i++] = $pBeginn;
        }
        if (KuferTools.Kursplanung.checkFieldEmpty($pEnde)) {
          invalidInputs[i++] = $pEnde;
        }
        if (KuferTools.Kursplanung.checkFieldEmpty($pWunsch)) {
          invalidInputs[i++] = $pWunsch;
        }
      } else {
        $pBeginn.removeClass('form_error');
        $pEnde.removeClass('form_error');
        $pWunsch.removeClass('form_error');

        $pBeginn.removeClass('form_mandatory');
        $pEnde.removeClass('form_mandatory');
        $pWunsch.removeClass('form_mandatory');

        if ($pBeginn.val() !== '') {
          $pBeginn.addClass('form_mandatory');
        }
        if ($pEnde.val() !== '') {
          $pEnde.addClass('form_mandatory');
        }
        if ($pWunsch.val() !== '') {
          $pWunsch.addClass('form_mandatory');
        }
      }
    }
    return invalidInputs;
  };

  KuferTools.Kursplanung.checkFieldEmpty = function ($pSelector) {
    if ($pSelector.val() === '') {
      $pSelector.removeClass('form_mandatory');
      $pSelector.addClass('form_error');
      return true;
    } else {
      $pSelector.removeClass('form_error');
      $pSelector.addClass('form_mandatory');
      return false;
    }
  };


  var selectorDatumsfelder = '#kursplanung_beginn_dat, #kursplanung_ende_dat, #kursplanung_beginn_dat_wunsch';
  if (KuferTools.Kursplanung.DatumsfelderAbhaengigePflichtfelder && jQuery(selectorDatumsfelder).length === 3) {
    jQuery(selectorDatumsfelder).addClass('form_mandatory');
    KuferTools.Kursplanung.validateDatumUhrzeit(jQuery('#kursplanung_beginn_dat'), jQuery('#kursplanung_ende_dat'), jQuery('#kursplanung_beginn_dat_wunsch'));
    jQuery(selectorDatumsfelder).on('change', function () {
      KuferTools.Kursplanung.validateDatumUhrzeit(jQuery('#kursplanung_beginn_dat'), jQuery('#kursplanung_ende_dat'), jQuery('#kursplanung_beginn_dat_wunsch'));
    });
  }

  var selectorUhrzeitfelder = '#kursplanung_beginn, #kursplanung_ende, #kursplanung_beginn_wunsch';
  if (KuferTools.Kursplanung.UhrzeitfelderAbhaengigePflichtfelder && jQuery(selectorUhrzeitfelder).length === 3) {
    jQuery(selectorUhrzeitfelder).addClass('form_mandatory');
    KuferTools.Kursplanung.validateDatumUhrzeit(jQuery('#kursplanung_beginn'), jQuery('#kursplanung_ende'), jQuery('#kursplanung_beginn_wunsch'));
    jQuery(selectorUhrzeitfelder).on('change', function () {
      KuferTools.Kursplanung.validateDatumUhrzeit(jQuery('#kursplanung_beginn'), jQuery('#kursplanung_ende'), jQuery('#kursplanung_beginn_wunsch'));
    });
  }

  $("#kursplanung_beginn_dat, #kursplanung_ende_dat").on('change', function () {
    var $changedDatum = $(this);
    var $datum = $('#kursplanung_beginn_dat');
    if ($changedDatum.attr('id') === 'kursplanung_beginn_dat') {
      $datum = $('#kursplanung_ende_dat');
    }

    if ($datum.length > 0) { //prüfen, ob es das zweite Datumsfeld gibt
      if ($changedDatum.val() && !($datum.val())) {
        $datum.attr('value', $changedDatum.val());
      } else {
        isBeginnVorEnddatum($("#kursplanung_beginn_dat"), $("#kursplanung_ende_dat"), $changedDatum);
      }
    }
  });

  /**
   * Prüft, ob Beginndatum vor dem Endedatum liegt und fügt eine Warning-Klasse
   * zum geänderten Feld hinzu, wenn dem nicht so ist.
   * Ist eines der Felder leer, so wird nichts überprüft.
   *
   * @param {type} $beginnDatum
   * @param {type} $endDatum
   * @param {type} $changedDatum
   * @returns {undefined}
   */
  function isBeginnVorEnddatum($beginnDatum, $endDatum, $changedDatum) {
    removeWarningClass($endDatum);
    removeWarningClass($beginnDatum);

    if ($beginnDatum.val() !== '' && $endDatum.val() !== '' && !KuferTools.Utils.Date.isDateBefore($beginnDatum.val(), $endDatum.val())) {
      addWarningClass($changedDatum);
    }
  }

  function addWarningClass($selector) {
    $selector.addClass('alert-warning');
  }

  function removeWarningClass($selector) {
    $selector.removeClass('alert-warning');
  }

  jQuery('.button_kursvorschlag_speichern').on('click', function (e) {
    e.preventDefault();
    var $this = jQuery(this);
    var $form = $this.parents('form');
    $form.removeClass('validate_form');
    $form.prop('action', $this.attr('formaction'));
    $form.trigger('submit');
  });

  jQuery('.button_kursvorschlag_bearbeiten_speichern').on('click', function (e) {
    e.preventDefault();
    var $this = jQuery(this);
    var $form = $this.parents('form');
    $form.removeClass('validate_form');
    $form.prop('action', $this.attr('formaction'));
    $form.trigger('submit');
  });

  jQuery(document).on('change', '#kurs_kinder_ev, #kurs_keinzel_u, #kurs_keinzel_m, #kurs_keinzel_w', function () {
    if (parseInt($(this).val(), 10) < 0) {
      $(this).val(0);
    }

    var gesamt = KuferTools.Kursplanung.KinderGesamt;
    if ($('input#kurs_kinder_ev').length == 1) {
      gesamt = parseInt($('input#kurs_kinder_ev').val(), 10) || 0; // || 0: Falls leer oder Nan wird es auf 0 gesetzt
    }

    var maennlich = KuferTools.Kursplanung.KinderMaennlich;
    if ($('input#kurs_keinzel_m').length == 1) {
      maennlich = parseInt($('input#kurs_keinzel_m').val(), 10) || 0;
    }

    var weiblich = KuferTools.Kursplanung.KinderWeiblich;
    if ($('input#kurs_keinzel_w').length == 1) {
      weiblich = parseInt($('input#kurs_keinzel_w').val(), 10) || 0;
    }

    var unbekannt = KuferTools.Kursplanung.KinderUnbekannt;
    if ($('input#kurs_keinzel_u').length == 1) {
      unbekannt = parseInt($('input#kurs_keinzel_u').val(), 10) || 0;
    }

    if ($(this).attr('id') == 'kurs_keinzel_u') {
      $('input#kurs_kinder_ev').val(maennlich + weiblich + unbekannt);
      $('span#kurs_kinder_ev').text(maennlich + weiblich + unbekannt);
    } else if ($(this).attr('id') == 'kurs_kinder_ev') {
      // Gesamt muss mindestens maennlich+weiblich sein, darf aber auch größer sein
      gesamt = Math.max(0, maennlich + weiblich, gesamt);
      $('input#kurs_kinder_ev').val(gesamt);
      $('input#kurs_keinzel_u').val(gesamt - maennlich - weiblich);
      $('span#kurs_kinder_ev').text(gesamt);
      $('span#kurs_keinzel_u').text(gesamt - maennlich - weiblich);
    } else {
      $('input#kurs_kinder_ev').val(maennlich + weiblich + unbekannt);
      $('span#kurs_kinder_ev').text(maennlich + weiblich + unbekannt);
    }
  });

  jQuery(document).on('change', '#kurs_teinzel, #kurs_teinzel_u, #kurs_teinzel_m, #kurs_teinzel_w', function () {
    if (parseInt($(this).val(), 10) < 0) {
      $(this).val(0);
    }

    var gesamt = KuferTools.Kursplanung.ErwachseneGesamt;
    if ($('input#kurs_teinzel').length == 1) {
      gesamt = parseInt($('input#kurs_teinzel').val(), 10) || 0; // || 0: Falls leer oder Nan wird es auf 0 gesetzt
    }

    var maennlich = KuferTools.Kursplanung.ErwachseneMaennlich;
    if ($('input#kurs_teinzel_m').length == 1) {
      maennlich = parseInt($('input#kurs_teinzel_m').val(), 10) || 0;
    }

    var weiblich = KuferTools.Kursplanung.ErwachseneWeiblich;
    if ($('input#kurs_teinzel_w').length == 1) {
      weiblich = parseInt($('input#kurs_teinzel_w').val(), 10) || 0;
    }

    var unbekannt = KuferTools.Kursplanung.ErwachseneUnbekannt;
    if ($('input#kurs_teinzel_u').length == 1) {
      unbekannt = parseInt($('input#kurs_teinzel_u').val(), 10) || 0;
    }

    if ($(this).attr('id') == 'kurs_teinzel_u') {
      $('input#kurs_teinzel').val(maennlich + weiblich + unbekannt);
      $('span#kurs_teinzel').text(maennlich + weiblich + unbekannt);
    } else if ($(this).attr('id') == 'kurs_teinzel') {
      // Gesamt muss mindestens maennlich+weiblich sein, darf aber auch größer sein
      gesamt = Math.max(0, maennlich + weiblich, gesamt);
      $('input#kurs_teinzel').val(gesamt);
      $('input#kurs_teinzel_u').val(gesamt - maennlich - weiblich);
      $('span#kurs_teinzel').text(gesamt);
      $('span#kurs_teinzel_u').text(gesamt - maennlich - weiblich);
    } else {
      $('input#kurs_teinzel').val(maennlich + weiblich + unbekannt);
      $('span#kurs_teinzel').text(maennlich + weiblich + unbekannt);
    }
  });

  if ($('#raumplanung_form').length > 0) {
    $('#raumplanung_kt_uhrzeit_von').trigger('change');
    KuferTools.InitValidate($('#raumplanung_form'));
  }

  $('.raumplanung_absenden_button').on('click', function (e) {
    e.preventDefault();

    var $form = $('#raumplanung_form');
    if (KuferTools.ValidateFormInput($form)) {
      $form.submit();
    }
  });
});