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


class PageButtonsAPI
{
  
  public static function getEinzeiligMehrzeilig($pPrefix)
  {
    $result = '<div class="zeilen4inhalt">' . "\n"
                . '<ul>' . "\n"
                     . '<li>';
    $result .= HTMLOperations::CreateInputTag($pPrefix . '_zeilenauswahl', 'radio', $pPrefix . '_einzeilig', 'tab_zeilenauswahl', 'einezeile', '', false);
    $result .= '<label for="' . CleanOperations::cleanStringForHtml($pPrefix) . '_einzeilig">einzeilig</label>' . "\n"
                     . '</li>' . "\n"
                     . '<li>' . "\n";
    $result .= HTMLOperations::CreateInputTag($pPrefix . '_zeilenauswahl', 'radio', $pPrefix . '_mehrzeilig', 'tab_zeilenauswahl', 'mehrzeilen', '', true);
    $result .= '<label for="' . CleanOperations::cleanStringForHtml($pPrefix) . '_mehrzeilig">mehrzeilig</label>' . '
                    </li>' . "\n"
                   . '</ul>' . "\n"
                 . '</div>' . "\n";

    return $result;
  }

  
  public static function getMarkierenButtons()
  {
    $result = '<img src="layout/button_small_markieren.gif" class="tab_markiere" alt="Alle markieren" title="Alle markieren">' . "\n";
    $result .= '<img src="layout/button_small_demarkieren.gif" class="tab_entferne_markierungen" alt="Keinen markieren" title="Keinen markieren">' . "\n";

    return $result;
  }

  
  public static function getKursFilter($pDatVon, $pDatBis)
  {
    $result = '<img src="layout/button_main_search_filter.gif" class="filter tab_kursfilter" alt="Filter" title="Filter öffnen">' . "\n";
    $result .= '<img src="layout/button_clear_search.gif" class="filter tab_kursfilter_del" alt="Filter leeren" title="Filter leeren">' . "\n";

    
    $result .= '<script type="text/javascript">';
    $result .= '$(document).ready(function() {';
    $result .= 'registerNamespace("KuferTools.Filter"); ' . "\n";
    
    
    $result .= JsOperations::getDeclarationString('KuferTools.Filter.DatumVon', $pDatVon);
    $result .= JsOperations::getDeclarationString('KuferTools.Filter.DatumBis', $pDatBis);

    
    $result .= JsOperations::getDeclarationString('KuferTools.Filter.DatumVon0', $pDatVon);
    $result .= JsOperations::getDeclarationString('KuferTools.Filter.DatumBis0', $pDatBis);

    $result .= JsOperations::getDeclarationString('KuferTools.Filter.KnrVon', '');
    $result .= JsOperations::getDeclarationString('KuferTools.Filter.KnrBis', '');
    $result .= JsOperations::getDeclarationString('KuferTools.Filter.KursTitel', '');
    $result .= '});';
    $result .= '</script>';

    return $result;
  }

  
  public static function getAbmeldenButton4TnUebersicht($pBelegungAry)
  {
    $result = PageButtonsAPI::_getStornoAbmeldenButton('storno4tn', 'Teilnehmer stornieren');
    $result .= PageButtonsAPI::_stornoDialog4TnUebersicht($pBelegungAry);

    return $result;
  }

  
  public static function getAbmeldenButton4KursUebersicht($pBelegungAry)
  {
    $result = PageButtonsAPI::_getStornoAbmeldenButton('storno4kurs', 'Kurs stornieren');
    $result .= PageButtonsAPI::_stornoDialog4KursUebersicht($pBelegungAry);

    return $result;
  }

  
  private static function _getStornoAbmeldenButton($pClass, $pTitle)
  {
    return HTMLOperations::createButtonSpan('abmelden ', $pTitle, 'tab_teilnehmerStorno ' . $pClass, '', 'images/loeschen.gif');
  }

  
  private static function _stornoDialog4TnUebersicht($pBelegungAry)
  {
    if (count($pBelegungAry) > 0) {
      $kurs = $pBelegungAry[0]->kurs;

      $table = new HtmlTabelle($pBelegungAry);
      $table->addClasses4BodyRow(function($pBelegung, $pIndex) {
        return 'storno_bel_' . $pBelegung->id;
      });
      $table->addColumn(new HtmlTableColumn('Name', function($pBelegung, $pIndex) {
        return CleanOperations::cleanStringForHtml($pBelegung->teilnehmer->name);
      }));
      $table->addColumn(new HtmlTableColumn('Vorname', function($pBelegung, $pIndex) {
        return CleanOperations::cleanStringForHtml($pBelegung->teilnehmer->vorname);
      }));
      $table->addColumn(new HtmlTableColumn('Status', function($pBelegung, $pIndex) {
        return CleanOperations::cleanStringForHtml($pBelegung->status);
      }));
      $table->addColumn(new HtmlTableColumn('Stornierungsgrund:', function($pBelegung, $pIndex) {
        return '<input id="storno_grund_' . CleanOperations::cleanInt($pBelegung->id) . '" class="storno_grund">';
      }, 'storno_grund_cell'));


      $result = '<div id="stornoDialog">';
      $result .= '<div>Folgende(n) Teilnehmer vom Kurs ' . CleanOperations::cleanStringForHtml($kurs->kurzbez) . ' (' . CleanOperations::cleanStringForHtml($kurs->id) . ') stornieren:</div>';
      $result .= $table->getTable('stornoTnTable');
      $result .= '</div>';
    }

    return $result;
  }

  
  private static function _stornoDialog4KursUebersicht($pBelegungAry)
  {
    $result = '';
    if (count($pBelegungAry) > 0) {
      $teilnehmer = $pBelegungAry[0]->teilnehmer;

      $table = new HtmlTabelle($pBelegungAry);
      $table->addClasses4BodyRow(function($pBelegung, $pIndex) {
        return 'storno_bel_' . $pBelegung->id;
      });
      $table->addColumn(new HtmlTableColumn('Kursnummer', function($pBelegung, $pIndex) {
        return $pBelegung->kurs->id;
      }));
      $table->addColumn(new HtmlTableColumn('Titel', function($pBelegung, $pIndex) {
        return $pBelegung->kurs->kurzbez;
      }));
      $table->addColumn(new HtmlTableColumn('Status', function($pBelegung, $pIndex) {
        return $pBelegung->status;
      }));
      $table->addColumn(new HtmlTableColumn('Stornierungsgrund:', function($pBelegung, $pIndex) {
        return '<input id="storno_grund_' . CleanOperations::cleanInt($pBelegung->id) . '" class="storno_grund">';
      }, 'storno_grund_cell'));

      $showAustrittFeld = false;
      foreach ($pBelegungAry as $pBelegung) {
        if (APIGebuehren::hasKursFortlaufendeGebuehren($pBelegung->kurs->id)) {
          $showAustrittFeld = true;
          break;
        }
      }
      if ($showAustrittFeld) {
        $table->addColumn(new HtmlTableColumn('Austritt:', function($pBelegung, $pIndex) {
          if (APIGebuehren::hasKursFortlaufendeGebuehren($pBelegung->kurs->id)) {
            return '<input id="austritt_' . CleanOperations::cleanInt($pBelegung->id) . '" class="austritt val_date" maxlength="10">';
          } else {
            return '';
          }
        }, 'austritt_cell'));
      }

      $result = '<div id="stornoDialog">';
      $result .= '<div>Folgende Kurse für den Teilnehmer ' . CleanOperations::cleanStringForHtml($teilnehmer->name) . ' ' . CleanOperations::cleanStringForHtml($teilnehmer->vorname) . ' stornieren:</div>';
      $result .= $table->getTable('stornoTnTable');
      $result .= '</div>';
    }

    return $result;
  }

  
  public static function getBearbeitenButton4TabSightBuilder($pAjaxPostParam4Page, $pDataId, $pPostParam4Save)
  {
    $action_class = 'get_' . $pAjaxPostParam4Page;
    $post_class = 'save_' . $pPostParam4Save;
    $action_class_id = 'dataid_' . $pDataId;

    return HTMLOperations::createButtonSpan('Bearbeiten', 'Datensatz bearbeiten', 'tab_bearbeiten4sightbuilder ' . $action_class . ' ' . $post_class . ' ' . $action_class_id);
  }

  
  public static function getHinterlegungButton($pTyp, $pInputIds, $pButtonClass, $pButtonStyle, $pDialogId, $pDialogTitle, $pDialogWidth = '', $pDialogHeight = '', $pWithoutClickHandler = false)
  {
    $buttonDiv = '<span style=" ' . CleanOperations::cleanStringForHtml($pButtonStyle) . '">'
                   . '<img class="' . CleanOperations::cleanStringForHtml($pButtonClass) . '" src="layout/button_hinterlegung.gif" title="Hinterlegung öffnen" alt="Hinterlegung" />'
                 . '</span>';
    
    $hinterlegung = HLDispatcher::GetHinterlegungDialog($pTyp);
    $hinterlegung->fields = $pInputIds;
    $dialog = $hinterlegung->CreateDialog($pDialogId, '.' . $pButtonClass, $pDialogTitle, $pDialogWidth, $pDialogHeight, $pWithoutClickHandler);

    return $buttonDiv . $dialog;
  }

  
  public static function getHinterlegungSymbol($pTyp, $pInputIds, $pButtonClass, $pButtonStyle, $pDialogId, $pDialogTitle, $pDialogWidth = '', $pDialogHeight = '', $pWithoutClickHandler = false)
  {
    $buttonDiv = '<span style=" ' . CleanOperations::cleanStringForHtml($pButtonStyle) . '">'
                   . '<i class="fa fa-hand-o-down ' . CleanOperations::cleanStringForHtml($pButtonClass) . '" aria-hidden="true"></i>'
                 . '</span>';

    
    $hinterlegung = HLDispatcher::GetHinterlegungDialog($pTyp);
    $hinterlegung->fields = $pInputIds;
    $dialog = $hinterlegung->CreateDialog($pDialogId, '.' . $pButtonClass, $pDialogTitle, $pDialogWidth, $pDialogHeight, $pWithoutClickHandler);

    return $buttonDiv . $dialog;
  }
}