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

$(function(){
  
  registerNamespace('KuferTools.KurstagPlanung');
  registerNamespace('KuferTools.Kursplanung');
  
  jQuery('.termin_sammelaenderung').on('click', function(event) {
    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('form,.table_row').find('a').prop('href') !== undefined) {
      window.location.href = markierteCheckboxen.parents('form,.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'), function(successJson){
            KuferTools.Utils.AjaxLadebildschirm.Stop();
            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'
              });
            }
          });
          $(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);
      }
    }
  });
  
  jQuery('.kursplanung_kurs_kopie_neben_knr_button, .kursplanung_kurs_kopie_button, .kursplanung_weiterer_kursvorschlag_button, \
  .kursplanung_zurueck_button, .terminuebersicht_zurueck_button').on('click', function(event) {
    event.preventDefault();
    var href = jQuery(this).parents('a').attr('href');
    window.location = href;
  });
  
 /**
  * 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();
    }
  });
});