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

  class XMLMailAnmeldung
  {
    public $emailxml;      
    public $emailxmlkurse; 

    
    public function GetStammdatenNode($pPerson, $pNodeTag = 'STAMMDATEN')
    {
      $stammrootnode = new XMLNode($pNodeTag, '');

      if ($pPerson->ewahl != '') {
        $stammrootnode->addChild(new XMLNode('EWAHL', $pPerson->ewahl));
      }
      if ($pPerson->typ != '') {
        $stammrootnode->addChild(new XMLNode('TYP', $pPerson->typ));
      }
      if ($pPerson->name != '') {
        $stammrootnode->addChild(new XMLNode('NAME', $pPerson->name));
      }
      if ($pPerson->vorname != '') {
        $stammrootnode->addChild(new XMLNode('VORNAME', $pPerson->vorname));
      }
      if ($pPerson->zusatz != '') {
        $stammrootnode->addChild(new XMLNode('ZUSATZ', $pPerson->zusatz));
      }
      if ($pPerson->zusatz2 != '') {
        $stammrootnode->addChild(new XMLNode('ZUSATZ2', $pPerson->zusatz2));
      }
      if ($pPerson->zusatz3 != '') {
        $stammrootnode->addChild(new XMLNode('ZUSATZ3', $pPerson->zusatz3));
      }
      if ($pPerson->strasse != '') {
        $stammrootnode->addChild(new XMLNode('STRASSE', $pPerson->strasse));
      }
      if ($pPerson->ort != '') {
        $stammrootnode->addChild(new XMLNode('ORT', $pPerson->ort));
      }
      if ($pPerson->geschlecht != '-') {
        $stammrootnode->addChild(new XMLNode('GESCHLECHT', $pPerson->geschlecht));
      }
      if ($pPerson->beruf != '') {
        $stammrootnode->addChild(new XMLNode('BERUF', $pPerson->beruf));
      }
      if ($pPerson->gebdatum != '') {
        $stammrootnode->addChild(new XMLNode('GEBDATUM', $pPerson->gebdatum));
      }
      if ($pPerson->gebjahr != '') {
        $stammrootnode->addChild(new XMLNode('GEBJAHR', $pPerson->gebjahr));
      }
      if ($pPerson->altersklasse != '') {
        $stammrootnode->addChild(new XMLNode('ALTERSKLASSE', $pPerson->altersklasse));
      }
      if ($pPerson->kontonr != '') {
        $stammrootnode->addChild(new XMLNode('KONTONR', $pPerson->kontonr));
      }
      if ($pPerson->blz != '') {
        $stammrootnode->addChild(new XMLNode('BLZ', $pPerson->blz));
      }
      if ($pPerson->bankbez != '') {
        $stammrootnode->addChild(new XMLNode('BANKBEZ', $pPerson->bankbez));
      }
      if ($pPerson->kontoinh != '') {
        $stammrootnode->addChild(new XMLNode('KONTOINH', $pPerson->kontoinh));
      }
      if ($pPerson->bic != '') {
        $stammrootnode->addChild(new XMLNode('BIC', $pPerson->bic));
      }
      if ($pPerson->iban != '') {
        $stammrootnode->addChild(new XMLNode('IBAN', $pPerson->iban));
      }
      if ($pPerson->mandatam != '') {
        $stammrootnode->addChild(new XMLNode('MANDATAM', $pPerson->mandatam));
      }
      if ($pPerson->erm_grund != '') {
        $stammrootnode->addChild(new XMLNode('ERM_GRUND', $pPerson->erm_grund));
      }
      if ($pPerson->erm_proz != '') {
        $stammrootnode->addChild(new XMLNode('ERM_PROZ', floor($pPerson->erm_proz)));
      }
      if ($pPerson->bemerkung != '') {
        $stammrootnode->addChild(new XMLNode('BEMERKUNG', $pPerson->bemerkung));
      }
      if ($pPerson->newsl_erlaubt != '') {
        $stammrootnode->addChild(new XMLNode('NEWSL_ERLAUBT', $pPerson->newsl_erlaubt));
      }
      if ($pPerson->rechadr1 != '') {
        $stammrootnode->addChild(new XMLNode('RECHADR1', $pPerson->rechadr1));
      }
      if ($pPerson->rechadr2 != '') {
        $stammrootnode->addChild(new XMLNode('RECHADR2', $pPerson->rechadr2));
      }
      if ($pPerson->rechadr3 != '') {
        $stammrootnode->addChild(new XMLNode('RECHADR3', $pPerson->rechadr3));
      }
      if ($pPerson->rechadr4 != '') {
        $stammrootnode->addChild(new XMLNode('RECHADR4', $pPerson->rechadr4));
      }
      if ($pPerson->rechadr5 != '') {
        $stammrootnode->addChild(new XMLNode('RECHADR5', $pPerson->rechadr5));
      }
      if ($pPerson->rechadr6 != '') {
        $stammrootnode->addChild(new XMLNode('RECHADR6', $pPerson->rechadr6));
      }
      if ($pPerson->tnr != '') {
        $stammrootnode->addChild(new XMLNode('TNR', $pPerson->tnr));
      }
      if ($pPerson->status != '') {
        $stammrootnode->addChild(new XMLNode('STATUS', $pPerson->status));
      }
      if ($pPerson->statusinfo != '') {
        $stammrootnode->addChild(new XMLNode('STATUSINFO', $pPerson->statusinfo));
      }
      if ($pPerson->ausweisnr != '') {
        $stammrootnode->addChild(new XMLNode('AUSWEISNR', $pPerson->ausweisnr));
      }
      if ($pPerson->mitgliednr != '') {
        $stammrootnode->addChild(new XMLNode('MITGLIEDNR', $pPerson->mitgliednr));
      }
      if ($pPerson->ausweisdat != '') {
        $stammrootnode->addChild(new XMLNode('AUSWEISDAT', $pPerson->ausweisdat));
      }
      if ($pPerson->arbamtnr != '') {
        $stammrootnode->addChild(new XMLNode('ARBAMTNR', $pPerson->arbamtnr));
      }
      if ($pPerson->sessionid != '') {
        $stammrootnode->addChild(new XMLNode('SESSIONID', $pPerson->sessionid));
      }
      if ($pPerson->sessiontime != '') {
        $stammrootnode->addChild(new XMLNode('SESSIONTIME', $pPerson->sessiontime));
      }
      if ($pPerson->geburtsort != '') {
        $stammrootnode->addChild(new XMLNode('GEBURTSORT', $pPerson->geburtsort));
      }
      if ($pPerson->staatsang != '') {
        $stammrootnode->addChild(new XMLNode('STAATSANG', $pPerson->staatsang));
      }
      if ($pPerson->krit1 != '') {
        $stammrootnode->addChild(new XMLNode('KRIT1', $pPerson->krit1));
      }
      if ($pPerson->krit2 != '') {
        $stammrootnode->addChild(new XMLNode('KRIT2', $pPerson->krit2));
      }
      if ($pPerson->krit3 != '') {
        $stammrootnode->addChild(new XMLNode('KRIT3', $pPerson->krit3));
      }
      if ($pPerson->krit4 != '') {
        $stammrootnode->addChild(new XMLNode('KRIT4', $pPerson->krit4));
      }
      if ($pPerson->krit5 != '') {
        $stammrootnode->addChild(new XMLNode('KRIT5', $pPerson->krit5));
      }
      if ($pPerson->krit6 != '') {
        $stammrootnode->addChild(new XMLNode('KRIT6', $pPerson->krit6));
      }
      if ($pPerson->sozarbeitgeber != '') {
        $stammrootnode->addChild(new XMLNode('SOZARBEITGEBER', $pPerson->sozarbeitgeber));
      }
      if ($pPerson->dse_unterschrieben_datum != '') {
        $stammrootnode->addChild(new XMLNode('DSE_UNTERSCHRIEBEN_DATUM', $pPerson->dse_unterschrieben_datum));
      }
      if ($pPerson->dse_unterschrieben_weg != '') {
        $stammrootnode->addChild(new XMLNode('DSE_UNTERSCHRIEBEN_WEG', $pPerson->dse_unterschrieben_weg));
      }
      if ($pPerson->dse_unterschrieben_bearbeiter != '') {
        $stammrootnode->addChild(new XMLNode('DSE_UNTERSCHRIEBEN_BEARBEITER', $pPerson->dse_unterschrieben_bearbeiter));
      }
      if ($pPerson->dse_widerrufen_datum != '') {
        $stammrootnode->addChild(new XMLNode('DSE_WIDERRUFEN_DATUM', $pPerson->dse_widerrufen_datum));
      }
      if ($pPerson->dse_widerrufen_weg != '') {
        $stammrootnode->addChild(new XMLNode('DSE_WIDERRUFEN_WEG', $pPerson->dse_widerrufen_weg));
      }
      if ($pPerson->dse_widerrufen_bearbeiter != '') {
        $stammrootnode->addChild(new XMLNode('DSE_WIDERRUFEN_BEARBEITER', $pPerson->dse_widerrufen_bearbeiter));
      }

      if ($pPerson->keinebankverbindung != '') { 
        $stammrootnode->addChild(new XMLNode('KEINEBANKVERBINDUNG', ($pPerson->keinebankverbindung === '1' ? 'W' : 'F')));
      }
      if ($pPerson->name_titel != '') {
        $stammrootnode->addChild(new XMLNode('NAME_TITEL', $pPerson->name_titel));
      }
      if ($pPerson->weitergabekommunikationfg != '') {
        $stammrootnode->addChild(new XMLNode('WEITERGABEKOMMUNIKATIONFG', $pPerson->weitergabekommunikationfg));
      }
      if ($pPerson->zustimmung_hygiene != '') {
        $stammrootnode->addChild(new XMLNode('ZUSTIMMUNG_HYGIENE', $pPerson->zustimmung_hygiene));
      }
      if ($pPerson->zustimmung_indiv != '') {
        $stammrootnode->addChild(new XMLNode('ZUSTIMMUNG_INDIV', $pPerson->zustimmung_indiv));
      }
      if ($pPerson->zustimmung_fuehrung != '') {
        $stammrootnode->addChild(new XMLNode('ZUSTIMMUNG_FUEHRUNG', $pPerson->zustimmung_fuehrung));
      }
      if ($pPerson->rech_tnr != '') {
        $stammrootnode->addChild(new XMLNode('RECH_TNR', $pPerson->rech_tnr));
      }
      if ($pPerson->rech_name != '') {
        $stammrootnode->addChild(new XMLNode('RECH_NAME', $pPerson->rech_name));
      }
      if ($pPerson->rech_vorname != '') {
        $stammrootnode->addChild(new XMLNode('RECH_VORNAME', $pPerson->rech_vorname));
      }
      if ($pPerson->rech_zusatz1 != '') {
        $stammrootnode->addChild(new XMLNode('RECH_ZUSATZ1', $pPerson->rech_zusatz1));
      }
      if ($pPerson->rech_zusatz2 != '') {
        $stammrootnode->addChild(new XMLNode('RECH_ZUSATZ2', $pPerson->rech_zusatz2));
      }
      if ($pPerson->rech_zusatz3 != '') {
        $stammrootnode->addChild(new XMLNode('RECH_ZUSATZ3', $pPerson->rech_zusatz3));
      }
      if ($pPerson->rech_strasse != '') {
        $stammrootnode->addChild(new XMLNode('RECH_STRASSE', $pPerson->rech_strasse));
      }
      if ($pPerson->rech_ort != '') {
        $stammrootnode->addChild(new XMLNode('RECH_ORT', $pPerson->rech_ort));
      }
      if ($pPerson->rech_dauerhaft != '') {
        $stammrootnode->addChild(new XMLNode('RECH_DAUERHAFT', $pPerson->rech_dauerhaft));
      }
      if ($pPerson->rech_email != '') {
        $stammrootnode->addChild(new XMLNode('RECH_EMAIL', $pPerson->rech_email));
      }

      $kommnode = $this->GetKommunikationNode($pPerson);
      
      if (!empty($kommnode)) {
        $stammrootnode->addChild($kommnode);
      }

      if (count($pPerson->arykennzeichen) > 0) {
        $kennzeichen = new XMLNode('KENNZEICHEN');
        foreach ($pPerson->arykennzeichen as $kennznode) {
          $kennzeichen->addChild($kennznode->getXMLNode());
        }
        $stammrootnode->addChild($kennzeichen);
      }

      return $stammrootnode;
    }

    
    public function GetKommunikationNode($pPerson, $pNodeTag = 'KOMMUNIKATION')
    {
      if (count($pPerson->arykommunikation) > 0) {
        $kommunikationrootnode = new XMLNode($pNodeTag, '');
        $arynodes = array();
        for ($i = 0;$i < count($pPerson->arykommunikation);$i++) {
          if ($pPerson->arykommunikation[$i]->kommwert != '') {
            $tmparynodes = new XMLNode('KOMMUNIKATIONSEINTRAG', '');
            $tmparynodes->addChild(new XMLNode('KOMMART', $pPerson->arykommunikation[$i]->kommart));
            $tmparynodes->addChild(new XMLNode('KOMMWERT', $pPerson->arykommunikation[$i]->kommwert));
            $tmparynodes->addChild(new XMLNode('KOMMBEZ', $pPerson->arykommunikation[$i]->kommbez));
            array_push($arynodes, $tmparynodes);
          }
        }
        $kommunikationrootnode->addChilds($arynodes);
      }
      if (isset($kommunikationrootnode)) {
        return $kommunikationrootnode;
      }

      return '';
    }

    public function GetAnmeldungNode($pNodeTag = 'ANMELDUNG')
    {
      $anmeldungnode = new XMLNode($pNodeTag, '');
      $anmeldungnode->addChild($this->GetStammdatenNode($this->emailxml, 'STAMMDATEN'));
      $anmeldungnode->addChild($this->GetKurseNode($this->emailxmlkurse));

      return $anmeldungnode;
    }

    public function GetKurseNode($pKurse, $pNodetag = 'KURSE')
    {
      $kurserootnode = new XMLNode($pNodetag, '');
      for ($i = 0; $i < count($pKurse); $i++) {
        $kursnode = new XMLNode('KURS', '');
        if ($pKurse[$i]->kursnummer != '') {
          $kursnode->addChild(new XMLNode('KURSNUMMER', $pKurse[$i]->kursnummer));
        }
        if ($pKurse[$i]->status != '') {
          $kursnode->addChild(new XMLNode('STATUS', $pKurse[$i]->status));
        }
        if ($pKurse[$i]->kursgebuehr != '') {
          $kursnode->addChild(new XMLNode('KURSGEBUEHR', str_replace('.', '', $pKurse[$i]->kursgebuehr)));
        }
        if ($pKurse[$i]->anzahl != '') {
          $kursnode->addChild(new XMLNode('ANZAHL', $pKurse[$i]->anzahl));
        }
        if ($pKurse[$i]->beleghistorie1 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE1', $pKurse[$i]->beleghistorie1));
        }
        if ($pKurse[$i]->beleghistorie2 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE2', $pKurse[$i]->beleghistorie2));
        }
        if ($pKurse[$i]->beleghistorie3 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE3', $pKurse[$i]->beleghistorie3));
        }
        if ($pKurse[$i]->beleghistorie4 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE4', $pKurse[$i]->beleghistorie4));
        }
        if ($pKurse[$i]->beleghistorie5 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE5', $pKurse[$i]->beleghistorie5));
        }
        if ($pKurse[$i]->beleghistorie6 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE6', $pKurse[$i]->beleghistorie6));
        }
        if ($pKurse[$i]->beleghistorie7 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE7', $pKurse[$i]->beleghistorie7));
        }
        if ($pKurse[$i]->beleghistorie8 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE8', $pKurse[$i]->beleghistorie8));
        }
        if ($pKurse[$i]->beleghistorie9 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE9', $pKurse[$i]->beleghistorie9));
        }
        if ($pKurse[$i]->beleghistorie10 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE10', $pKurse[$i]->beleghistorie10));
        }
        if ($pKurse[$i]->beleghistorie11 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE11', $pKurse[$i]->beleghistorie11));
        }
        if ($pKurse[$i]->beleghistorie12 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE12', $pKurse[$i]->beleghistorie12));
        }
        if ($pKurse[$i]->beleghistorie13 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE13', $pKurse[$i]->beleghistorie13));
        }
        if ($pKurse[$i]->beleghistorie14 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE14', $pKurse[$i]->beleghistorie14));
        }
        if ($pKurse[$i]->beleghistorie15 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE15', $pKurse[$i]->beleghistorie15));
        }
        if ($pKurse[$i]->beleghistorie16 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE16', $pKurse[$i]->beleghistorie16));
        }

        if ($pKurse[$i]->zahlart != '') {
          $kursnode->addChild(new XMLNode('ZAHLART', $pKurse[$i]->zahlart));
        }

        if ($pKurse[$i]->abw_kursgeb != '') {
          $kursnode->addChild(new XMLNode('ABW_KURSGEB', $pKurse[$i]->abw_kursgeb));
        }
        if ($pKurse[$i]->abw_kontonr != '') {
          $kursnode->addChild(new XMLNode('ABW_KONTONR', $pKurse[$i]->abw_kontonr));
        }
        if ($pKurse[$i]->abw_blz != '') {
          $kursnode->addChild(new XMLNode('ABW_BLZ', $pKurse[$i]->abw_blz));
        }
        if ($pKurse[$i]->abw_bankbez != '') {
          $kursnode->addChild(new XMLNode('ABW_BANKBEZ', $pKurse[$i]->abw_bankbez));
        }
        if ($pKurse[$i]->abw_kontoinh != '') {
          $kursnode->addChild(new XMLNode('ABW_KONTOINH', $pKurse[$i]->abw_kontoinh));
        }
        if ($pKurse[$i]->abw_bic != '') {
          $kursnode->addChild(new XMLNode('ABW_BIC', $pKurse[$i]->abw_bic));
        }
        if ($pKurse[$i]->abw_iban != '') {
          $kursnode->addChild(new XMLNode('ABW_IBAN', $pKurse[$i]->abw_iban));
        }

        if ($pKurse[$i]->anmeldeart != '') {
          $kursnode->addChild(new XMLNode('ANMELDEART', $pKurse[$i]->anmeldeart));
        }
        
        
        
        
        if ($pKurse[$i]->anzahl > 1) {
          $kursnode->addChild($this->GetWeitereAnmeldungeNode($pKurse[$i]));
        }
        $kurserootnode->addChild($kursnode);
      }

      return $kurserootnode;
    }

    public function Execute()
    {
    }
  }

  
  
  
  
  
  class XMLMailAnmeldungNormal extends XMLMailAnmeldung
  {
    public function Execute()
    {
      $rootnode = new XMLNode('ANMELDUNGEN', '');
      $rootnode->addChild($this->GetAnmeldungNode('ANMELDUNG'));

      return '<?xml version="1.0" encoding="' . CodingOperations::getInternalEncoding() . '" ?' . ">\r\n" . $rootnode->getXMLstring($rootnode);
    }
  }

  
  
  
  
  
  class XMLMailAnmeldungMehrfach extends XMLMailAnmeldung
  {
    public function GetTeilnehmerStammdatenNode($pKurs, $pNum, $pNodeTag = 'WEITERSTAMM')
    {
      $person = $pKurs->aryweitere[$pNum]->emailxml;

      return $this->GetStammdatenNode($person, $pNodeTag);
    }

    public function GetWeitereAnmeldungeNode($pKurs, $pNodeTag = 'WEITEREANM')
    {
      if (count($pKurs->aryweitere) > 0) {
        $anmeldungenroot = new XMLNode($pNodeTag, '');
        $anmeldungenchilds = array(count($pKurs->aryweitere));
        for ($i = 0; $i < count($pKurs->aryweitere); $i++) {
          $anmeldungenchilds[$i] = new XMLNode('WEITERANM', '');
          $anmeldungenchilds[$i]->addChild(new XMLNode('TYP', 'M')); 

          $anmeldungenchilds[$i]->addChild(new XMLNode('KURSGEBUEHR', '0,00'));
          $anmeldungenchilds[$i]->addChild($this->GetTeilnehmerStammdatenNode($pKurs, $i, 'WEITERSTAMM'));
        }
        $anmeldungenroot->addChilds($anmeldungenchilds);

        return $anmeldungenroot;
      }
    }

    public function Execute()
    {
      $rootnode = new XMLNode('ANMELDUNGEN', '');
      $rootnode->addChild($this->GetAnmeldungNode('ANMELDUNG'));
      
      return '<?xml version="1.0" encoding="' . CodingOperations::getInternalEncoding() . '" ?' . ">\r\n" . $rootnode->getXMLstring($rootnode);
    }
  }

  
  
  
  
  
  class XMLMailAnmeldungElternKind extends XMLMailAnmeldung
  {
    public function GetKindStammdatenNode($pKurs, $pNum, $pNodeTag)
    {
      $kind = $pKurs->aryweitere[$pNum]->emailxml;

      return $this->GetStammdatenNode($kind, $pNodeTag);
    }

    public function GetWeitereAnmeldungeNode($pKurs, $pNodeTag = 'WEITEREANM')
    {
      if (count($pKurs->aryweitere) > 0) {
        $anmeldungenroot = new XMLNode($pNodeTag, '');
        $anmeldungenchilds = array(count($pKurs->aryweitere));
        for ($i = 0; $i < count($pKurs->aryweitere); $i++) {
          $anmeldungenchilds[$i] = new XMLNode('WEITERANM', '');
          $anmeldungenchilds[$i]->addChild(new XMLNode('TYP', 'K')); 
          $anmeldungenchilds[$i]->addChild(new XMLNode('KURSGEBUEHR', '0,00'));
          $anmeldungenchilds[$i]->addChild($this->GetKindStammdatenNode($pKurs, $i, 'WEITERSTAMM'));
        }
        $anmeldungenroot->addChilds($anmeldungenchilds);

        return $anmeldungenroot;
      }
    }

    public function Execute()
    {
      $rootnode = new XMLNode('ANMELDUNGEN', '');
      $rootnode->addChild($this->GetAnmeldungNode('ANMELDUNG'));
      
      return '<?xml version="1.0" encoding="' . CodingOperations::getInternalEncoding() . '" ?' . ">\r\n" . $rootnode->getXMLstring($rootnode);
    }
  }

  
  
  
  
  
  class XMLMailAnmeldungFirma extends XMLMailAnmeldung
  {
    public function GetFirmaStammdatenNode($pKurs, $pNum, $pNodeTag)
    {
      $firma = $pKurs->aryweitere[$pNum]->emailxml;

      return $this->GetStammdatenNode($firma, $pNodeTag);
    }

    public function GetWeitereAnmeldungeNode($pKurs, $pNodeTag = 'WEITEREANM')
    {
      if (count($pKurs->aryweitere) > 0) {
        $anmeldungenroot = new XMLNode($pNodeTag, '');
        $anmeldungenchilds = array(count($pKurs->aryweitere));
        for ($i = 0; $i < count($pKurs->aryweitere); $i++) {
          $anmeldungenchilds[$i] = new XMLNode('WEITERANM', '');
          $anmeldungenchilds[$i]->addChild(new XMLNode('TYP', 'F'));

          $anmeldungenchilds[$i]->addChild(new XMLNode('KURSGEBUEHR', '0,00'));
          $anmeldungenchilds[$i]->addChild($this->GetFirmaStammdatenNode($pKurs, $i, 'WEITERSTAMM'));
        }
        $anmeldungenroot->addChilds($anmeldungenchilds);

        return $anmeldungenroot;
      }
    }

    public function Execute()
    {
      $rootnode = new XMLNode('ANMELDUNGEN', '');
      $rootnode->addChild($this->GetAnmeldungNode('ANMELDUNG'));
      
      return '<?xml version="1.0" encoding="' . CodingOperations::getInternalEncoding() . '" ?' . ">\r\n" . $rootnode->getXMLstring($rootnode);
    }
  }

  
  class XMLMailAnmeldungNormalHotel extends XMLMailAnmeldungNormal
  {
    
    public function _GetHotelDatenNode($pKurs)
    {
      $rootNode = new XMLNode('HOTELANM');
      $rootNode->addChild(new XMLNode('UEBERNACHTUNG_JN', $pKurs->hotelAnm->uebernachtung_jn ? 'W' : 'F'));
      $rootNode->addChild(new XMLNode('ZIMMERART', $pKurs->hotelAnm->zimmerart));
      $rootNode->addChild(new XMLNode('ZIMMERGEBUEHR', $pKurs->hotelAnm->zimmergebuehr));
      $rootNode->addChild(new XMLNode('DZ_STATT_EZ_OK', $pKurs->hotelAnm->dz_statt_ez_ok ? 'W' : 'F'));
      $rootNode->addChild(new XMLNode('DZ_MIT', $pKurs->hotelAnm->dz_mit));
      $rootNode->addChild(new XMLNode('SW_ZIMMER', $pKurs->hotelAnm->sw_zimmer));
      $rootNode->addChild(new XMLNode('KEINE_WEITERGABE_NAME', $pKurs->hotelAnm->keine_weitergabe_name ? 'W' : 'F'));
      $rootNode->addChild(new XMLNode('ESSEN_JN', $pKurs->hotelAnm->essen_jn ? 'W' : 'F'));
      $rootNode->addChild(new XMLNode('KEIN_FRUEHSTUECK', $pKurs->hotelAnm->kein_fruehstueck ? 'W' : 'F'));
      $rootNode->addChild(new XMLNode('KEIN_ABENDESSEN', $pKurs->hotelAnm->kein_abendessen ? 'W' : 'F'));
      $rootNode->addChild(new XMLNode('SW_ESSEN', $pKurs->hotelAnm->sw_essen));
      $rootNode->addChild(new XMLNode('ESSENGEBUEHR', $pKurs->hotelAnm->essengebuehr));

      return $rootNode;
    }

    public function GetKurseNode($pKurse, $pNodetag = 'KURSE')
    {
      $kurserootnode = new XMLNode($pNodetag, '');
      for ($i = 0; $i < count($pKurse); $i++) {
        $kursnode = new XMLNode('KURS', '');
        if ($pKurse[$i]->kursnummer != '') {
          $kursnode->addChild(new XMLNode('KURSNUMMER', $pKurse[$i]->kursnummer));
        }
        if ($pKurse[$i]->status != '') {
          $kursnode->addChild(new XMLNode('STATUS', $pKurse[$i]->status));
        }
        if ($pKurse[$i]->kursgebuehr != '') {
          $kursnode->addChild(new XMLNode('KURSGEBUEHR', str_replace('.', '', $pKurse[$i]->kursgebuehr)));
        }
        if ($pKurse[$i]->anzahl != '') {
          $kursnode->addChild(new XMLNode('ANZAHL', $pKurse[$i]->anzahl));
        }
        if ($pKurse[$i]->beleghistorie1 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE1', $pKurse[$i]->beleghistorie1));
        }
        if ($pKurse[$i]->beleghistorie2 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE2', $pKurse[$i]->beleghistorie2));
        }
        if ($pKurse[$i]->beleghistorie3 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE3', $pKurse[$i]->beleghistorie3));
        }
        if ($pKurse[$i]->beleghistorie4 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE4', $pKurse[$i]->beleghistorie4));
        }
        if ($pKurse[$i]->beleghistorie5 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE5', $pKurse[$i]->beleghistorie5));
        }
        if ($pKurse[$i]->beleghistorie6 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE6', $pKurse[$i]->beleghistorie6));
        }
        if ($pKurse[$i]->beleghistorie7 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE7', $pKurse[$i]->beleghistorie7));
        }
        if ($pKurse[$i]->beleghistorie8 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE8', $pKurse[$i]->beleghistorie8));
        }
        if ($pKurse[$i]->beleghistorie9 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE9', $pKurse[$i]->beleghistorie9));
        }
        if ($pKurse[$i]->beleghistorie10 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE10', $pKurse[$i]->beleghistorie10));
        }
        if ($pKurse[$i]->beleghistorie11 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE11', $pKurse[$i]->beleghistorie11));
        }
        if ($pKurse[$i]->beleghistorie12 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE12', $pKurse[$i]->beleghistorie12));
        }
        if ($pKurse[$i]->beleghistorie13 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE13', $pKurse[$i]->beleghistorie13));
        }
        if ($pKurse[$i]->beleghistorie14 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE14', $pKurse[$i]->beleghistorie14));
        }
        if ($pKurse[$i]->beleghistorie15 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE15', $pKurse[$i]->beleghistorie15));
        }
        if ($pKurse[$i]->beleghistorie16 != '') {
          $kursnode->addChild(new XMLNode('BELEGHISTORIE16', $pKurse[$i]->beleghistorie16));
        }

        $kursnode->addChild($this->_GetHotelDatenNode($pKurse[$i]));
        $kurserootnode->addChild($kursnode);
      }

      return $kurserootnode;
    }
  }

  
  
  
  
  
  class smtpMailAnmeldung extends smtpMail
  {
    public $geschlecht = '';
    public $anrede = '';
    public $vorname = '';
    public $name = '';
    public $strasse = '';
    public $plz = '';
    public $ort = '';
    public $geburtsdatum = '';
    public $konto = '';
    public $blz = '';
    public $bankbez = '';
    public $ktoinhaber = '';
    public $tel = '';
    public $tel2 = '';
    public $fax = '';
    public $email = '';
    public $beruf = '';
    public $erm_grund = '';
    public $mobil = '';
    public $knr = array(12);
    public $ktitel = array(12);
    public $trennz = "\r\n";

    public function Execute()
    {
      $t = $this->trennz; 
      $mailtext = '';
      
      if ($this->geschlecht == 'M') {
        $this->anrede = 'Herr';
      }
      if ($this->geschlecht == 'W') {
        $this->anrede = 'Frau';
      }
      $mailtext .= $this->anrede . $t;
      $mailtext .= $this->vorname . $t;
      $mailtext .= $this->name . $t;
      $mailtext .= $this->strasse . $t;
      $mailtext .= $this->plz . $t;
      $mailtext .= $this->ort . $t;
      $mailtext .= $this->gebdat . $t;
      $mailtext .= $this->konto . $t;
      $mailtext .= $this->blz . $t;
      $mailtext .= $this->bankbez . $t;
      $mailtext .= $this->ktoinhaber . $t;
      $mailtext .= $this->tel . $t;
      $mailtext .= $this->tel2 . $t;
      $mailtext .= $this->fax . $t;
      $mailtext .= $this->email . $t;
      $mailtext .= $this->beruf . $t;
      $mailtext .= $this->erm_grund . $t;
      $mailtext .= $this->mobil . $t;
      $mailtext .= 'A' . $t; 
      $mailtext .= 'Angemeldet über das Internet' . $t;
      $mailtext .= $t; 
      $mailtext .= $t; 
      $mailtext .= $t; 
      for ($i = 0; $i < 12;$i++) {
        $t_kurs = '          '; 
        $t_kurs = substr_replace($t_kurs, $this->knr[$i], 0, StringOperations::strlen($this->knr[$i]));
        $t_kurs .= $this->ktitel[$i];
        $mailtext .= $t_kurs . $t;
      }

      return $mailtext;
    }

    public function Execute2()
    {
      $t = "\r\n";
      $mailtext = '';
      $mailtext .= 'Unsere Mitarbeiter werden versuchen Sie anhand folgender Daten' . $t . $t;
      if ($this->geschlecht == 'M') {
        $this->anrede = 'Herr ';
      }
      if ($this->geschlecht == 'W') {
        $this->anrede = 'Frau ';
      }
      $mailtext .= $this->anrede . ' ';
      $mailtext .= $this->name . ' ';
      $mailtext .= $this->vorname . $t;
      $mailtext .= $this->strasse . $t;
      $mailtext .= $this->plz . ' ';
      $mailtext .= $this->ort . $t;
      $mailtext .= 'Geboren: ' . $this->gebdat . $t;
      $mailtext .= 'Konto: ' . $this->konto . $t;
      $mailtext .= 'BLZ: ' . $this->blz . ' ';
      $mailtext .= 'Bank: ' . $this->bankbez . $t;
      $mailtext .= 'Kontoinhaber: ' . $this->ktoinhaber . $t;
      $mailtext .= 'Telefon: ' . $this->tel . $t;
      $mailtext .= 'Telefon: ' . $this->tel2 . $t;
      $mailtext .= 'Fax: ' . $this->fax . $t;
      $mailtext .= 'mobil: ' . $this->mobil . $t;
      $mailtext .= 'E-Mail: ' . $this->email . $t;
      $mailtext .= 'Beruf: ' . $this->beruf . $t;
      $mailtext .= $t . $t . 'zu diesen Kursen anzumelden:' . $t . $t;
      for ($i = 0; $i < 12;$i++) {
        $t_kurs = '          '; 
        $t_kurs = substr_replace($t_kurs, $this->knr[$i], 0, StringOperations::strlen($this->knr[$i]));
        $t_kurs .= $this->ktitel[$i];
        if (trim($t_kurs) != '') {
          $mailtext .= $t_kurs . $t;
        }
      }
      $mailtext .= $t . $t . 'Dies ist eine automatisch generierte E-Mail. Bitte senden Sie keine E-Mails an diese Adresse.';

      return $mailtext;
    }
  }