#include "..\..\Global\Variablen.h"
#include "..\..\Global\Initialisierung.h"
#include "Registrierung.h"
#include <Punkt.h>
#include <Text.h>
#include <Zeit.h>

// Inhalt der Registrierung Klasse aus Registrierung.h
// Konstruktor 
Registrierung::Registrierung( Schrift *zSchrift, Fenster *zVorLoginFenster )
{
	Punkt bildschirmGröße = BildschirmGröße();
	registrierung = initKnopf( 10, 90, 130, 30, zSchrift, Knopf::Style::Sichtbar, "Registrieren" );
	registrierung->setMausEreignisParameter( this );
	registrierung->setMausEreignis( registrierungRegistrierungME );
	initToolTip( registrierung, "Account erstellen.", zSchrift->getThis(), hauptScreen );
	zVorLoginFenster->addMember( registrierung );
	fenster = initFenster( bildschirmGröße.x / 2 - 175, bildschirmGröße.y / 2 - 131, 350, 262, zSchrift, Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered, "Account erstellen" );
	name = initTextFeld( 74, 20, 200, 20, zSchrift, TextFeld::Style::TextFeld, "Account Name" );
	name->setTastaturEreignisParameter( this );
	name->setTastaturEreignis( registrierungNameTE );
	initToolTip( name, "Account Name.", zSchrift->getThis(), hauptScreen );
	fenster->addMember( name );
	passwort = initTextFeld( 74, 50, 200, 20, zSchrift, TextFeld::Style::TextFeld, "Account Passwort" );
	passwort->setTastaturEreignisParameter( this );
	passwort->setTastaturEreignis( registrierungPasswortTE );
	initToolTip( passwort, "Account Passwort.", zSchrift->getThis(), hauptScreen );
	fenster->addMember( passwort );
	passwort2 = initTextFeld( 74, 80, 200, 20, zSchrift, TextFeld::Style::TextFeld, "Passwort wiederholen" );
	passwort2->setTastaturEreignisParameter( this );
	passwort2->setTastaturEreignis( registrierungPasswort2TE );
	initToolTip( passwort2, "Account Passwort wiederhohlen.", zSchrift->getThis(), hauptScreen );
	fenster->addMember( passwort2 );
	geheimnis = initTextFeld( 10, 110, 328, 20, zSchrift, TextFeld::Style::TextFeld, "Account Geheimnis" );
	geheimnis->setTastaturEreignisParameter( this );
	geheimnis->setTastaturEreignis( registrierungGeheimnisTE );
	initToolTip( geheimnis, "Gib etwas ein, was nur du jederzeit weißt.\n(zweites sicherheitspasswort Passwort)", zSchrift->getThis(), hauptScreen );
	fenster->addMember( geheimnis );
	eMail = initTextFeld( 74, 140, 200, 20, zSchrift, TextFeld::Style::TextFeld, "E-Mail Addresse" );
	eMail->setTastaturEreignisParameter( this );
	eMail->setTastaturEreignis( registrierungEMailTE );
	initToolTip( eMail, "E-Mail Addresse.", zSchrift->getThis(), hauptScreen );
	fenster->addMember( eMail );
	geburtsdatum = initTextFeld( 40, 170, 85, 20, zSchrift, TextFeld::Style::Text, "Geburtsdatum:" );
	fenster->addMember( geburtsdatum );
	gbdTag = new AuswahlBox();
	gbdTag->setStyle( AuswahlBox::Style::Sichtbar | AuswahlBox::Style::Erlaubt | AuswahlBox::Style::Rahmen | AuswahlBox::Style::MausBuffer | AuswahlBox::Style::AuswahlBuffer | AuswahlBox::Style::MaxHöhe | AuswahlBox::Style::VScroll | AuswahlBox::Style::Hintergrund );
	gbdTag->setPosition( 130, 167 );
	gbdTag->setGröße( 50, 20 );
	gbdTag->setMaxAuskappHöhe( 100 );
	gbdTag->setSchriftZ( zSchrift->getThis() );
	gbdTag->setLinienRahmenFarbe( 0xFFFFFFFF );
	gbdTag->setHintergrundFarbe( 0xFF000000 );
	gbdTag->setMausEreignis( _ret1ME );
	gbdTag->addEintrag( "Tag" );
	for( int i = 0; i < 31; i++ )
	{
		Text *txt = new Text( "" );
		txt->anhängen( i + 1 );
		gbdTag->addEintrag( txt );
	}
	gbdMonat = new AuswahlBox();
	gbdMonat->setStyle( AuswahlBox::Style::Sichtbar | AuswahlBox::Style::Erlaubt | AuswahlBox::Style::Rahmen | AuswahlBox::Style::MausBuffer | AuswahlBox::Style::AuswahlBuffer | AuswahlBox::Style::MaxHöhe | AuswahlBox::Style::VScroll | AuswahlBox::Style::Hintergrund );
	gbdMonat->setPosition( 185, 167 );
	gbdMonat->setGröße( 65, 20 );
	gbdMonat->setMaxAuskappHöhe( 100 );
	gbdMonat->setSchriftZ( zSchrift->getThis() );
	gbdMonat->setLinienRahmenFarbe( 0xFFFFFFFF );
	gbdMonat->setHintergrundFarbe( 0xFF000000 );
	gbdMonat->setMausEreignis( _ret1ME );
	gbdMonat->addEintrag( "Monat" );
	for( int i = 0; i < 12; i++ )
	{
		Text *txt = new Text( "" );
		txt->anhängen( i + 1 );
		gbdMonat->addEintrag( txt );
	}
	gbdJahr = new AuswahlBox();
	gbdJahr->setStyle( AuswahlBox::Style::Sichtbar | AuswahlBox::Style::Erlaubt | AuswahlBox::Style::Rahmen | AuswahlBox::Style::MausBuffer | AuswahlBox::Style::AuswahlBuffer | AuswahlBox::Style::MaxHöhe | AuswahlBox::Style::VScroll | AuswahlBox::Style::Hintergrund );
	gbdJahr->setPosition( 255, 167 );
	gbdJahr->setGröße( 55, 20 );
	gbdJahr->setMaxAuskappHöhe( 100 );
	gbdJahr->setSchriftZ( zSchrift->getThis() );
	gbdJahr->setLinienRahmenFarbe( 0xFFFFFFFF );
	gbdJahr->setHintergrundFarbe( 0xFF000000 );
	gbdJahr->setMausEreignis( _ret1ME );
	gbdJahr->addEintrag( "Jahr" );
	for( int i = 2013; i > 1913; i-- )
	{
		Text *txt = new Text( "" );
		txt->anhängen( i + 1 );
		gbdJahr->addEintrag( txt );
	}
	weiter = initKnopf( 124, 200, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Weiter" );
	weiter->setMausEreignisParameter( this );
	weiter->setMausEreignis( registrierungWeiterME );
	fenster->addMember( weiter );
	später = initKnopf( 20, 115, 100, 20, zSchrift, 0, "Später" );
	später->setMausEreignisParameter( this );
	später->setMausEreignis( registrierungSpäterME );
	initToolTip( später, "Vorgang später unter 'Bestätigung' abschließen.", zSchrift->getThis(), hauptScreen );
	fenster->addMember( später );
	neuSenden = initKnopf( 129, 145, 100, 20, zSchrift, 0, "neu senden" );
	neuSenden->setMausEreignisParameter( this );
	neuSenden->setMausEreignis( registrierungNeuSendenME );
	initToolTip( neuSenden, "E-Mail erneut senden.", zSchrift->getThis(), hauptScreen );
	fenster->addMember( neuSenden );
	text = initTextFeld( 0, 5, 250, 150, zSchrift, TextFeld::Style::Mehrzeilig | TextFeld::Style::HCenter, "" );
	fenster->addMember( text );
	schlüssel = initTextFeld( 25, 85, 200, 20, zSchrift, TextFeld::Style::TextFeld & ~TextFeld::Style::Sichtbar, "Schlüssel" );
	schlüssel->setTastaturEreignisParameter( this );
	schlüssel->setTastaturEreignis( registrierungSchlüsselTE );
	initToolTip( schlüssel, "Zugeschickter Account Aktivierungsschlüssel.", zSchrift->getThis(), hauptScreen );
	fenster->addMember( schlüssel );
	fertig = initKnopf( 129, 115, 100, 20, zSchrift, 0, "Fertig" );
	fertig->setMausEreignisParameter( this );
	fertig->setMausEreignis( registrierungFertigME );
	fenster->addMember( fertig );
	zVorLoginFenster->addMember( fenster );
	fenster->addMember( gbdTag );
	fenster->addMember( gbdMonat );
	fenster->addMember( gbdJahr );
	ref = 1;
}

// Destruktor 
Registrierung::~Registrierung()
{
	if( fenster )
		fenster = fenster->release();
	if( name )
		name = name->release();
	if( passwort )
		passwort = passwort->release();
	if( passwort2 )
		passwort2 = passwort2->release();
	if( geheimnis )
		geheimnis = geheimnis->release();
	if( eMail )
		eMail = eMail->release();
	if( geburtsdatum )
		geburtsdatum = geburtsdatum->release();
	if( gbdTag )
		gbdTag = gbdTag->release();
	if( gbdMonat )
		gbdMonat = gbdMonat->release();
	if( gbdJahr )
		gbdJahr = gbdJahr->release();
	if( weiter )
		weiter = weiter->release();
	if( text )
		text = text->release();
	if( schlüssel )
		schlüssel = schlüssel->release();
	if( später )
		später = später->release();
	if( neuSenden )
		neuSenden = neuSenden->release();
	if( fertig )
		fertig = fertig->release();
	if( registrierung )
		registrierung = registrierung->release();
}

// Privat
void Registrierung::zeigeNachricht( const char *txt )
{
	Punkt bildschirmmitte = Bildschirmmitte();
	name->löscheStyle( TextFeld::Style::Sichtbar );
	passwort->löscheStyle( TextFeld::Style::Sichtbar );
	passwort2->löscheStyle( TextFeld::Style::Sichtbar );
	geheimnis->löscheStyle( TextFeld::Style::Sichtbar );
	eMail->löscheStyle( TextFeld::Style::Sichtbar );
	geburtsdatum->löscheStyle( TextFeld::Style::Sichtbar );
	gbdTag->löscheStyle( TextFeld::Style::Sichtbar );
	gbdMonat->löscheStyle( TextFeld::Style::Sichtbar );
	gbdJahr->löscheStyle( TextFeld::Style::Sichtbar );
	schlüssel->löscheStyle( TextFeld::Style::Sichtbar );
	später->löscheStyle( Knopf::Style::Sichtbar );
	fertig->löscheStyle( Knopf::Style::Sichtbar );
	neuSenden->löscheStyle( Knopf::Style::Sichtbar );
	fenster->setGröße( 250, 150 );
	fenster->setPosition( bildschirmmitte.x - 125, bildschirmmitte.y - 75 );
	weiter->setPosition( 139, 100 );
	weiter->setText( "Ok" );
	text->setText( txt );
	if( text->zText()->getLänge() > 30 )
	{
		int pos = -1;
		bool set = 0;
		int lastp = 0;
		for( int i = 20; i < text->zText()->getLänge(); )
		{
			char *tmp = &text->zText()->getText()[ i ];
			while( *tmp != ' ' && i < text->zText()->getLänge() )
			{
				tmp++;
				i++;
				if( i - 30 >= lastp )
				{
					if( set )
					{
						lastp = pos;
						set = 0;
						text->zText()->getText()[ pos ] = '\n';
					}
					else
						lastp += 5;
				}
			}
			if( i < text->zText()->getLänge() )
			{
				pos = i;
				set = 1;
				tmp++;
				i++;
			}
		}
	}
	text->addStyle( TextFeld::Style::Sichtbar );
}

// Knopfdruck
void Registrierung::druckFremdKnopf() // Ein anderer Knopfwurde gedrückt
{
	fenster->löscheStyle( Fenster::Style::Sichtbar );
	registerKlient->trenne();
	registrierung->setLinienRahmenBreite( 2 );
	registrierung->setAlphaFeldFarbe( 0x5500FF00 );
	registrierung->setAlphaFeldStärke( -5 );
}

bool Registrierung::nameTE( void *obj, TastaturEreignis te ) // Tastaturereignis im Textfeld name
{
	if( te.id == TE_Press && te.taste == T_Enter )
		return 0;
	if( te.id == TE_Release && ( te.taste == T_Enter || te.taste == T_Tab ) )
	{
		name->löscheStyle( TextFeld::Style::Fokus );
		passwort->addStyle( TextFeld::Style::Fokus );
		passwort->setAuswahl( passwort->zText()->getLänge(), 0 );
	}
	if( name->zText()->getLänge() >= 25 && istSchreibbar( te.taste ) )
		return 0;
	return 1;
}

bool Registrierung::passwortTE( void *obj, TastaturEreignis te ) // Tastaturereignis im Textfeld passwort
{
	if( te.id == TE_Press && te.taste == T_Enter )
		return 0;
	if( te.id == TE_Press )
		passwort->setSchowChar( '*' );
	if( te.id == TE_Release && ( te.taste == T_Enter || te.taste == T_Tab ) )
	{
		passwort->löscheStyle( TextFeld::Style::Fokus );
		passwort2->addStyle( TextFeld::Style::Fokus );
		passwort2->setAuswahl( passwort2->zText()->getLänge(), 0 );
	}
	if( passwort->zText()->getLänge() >= 25 && istSchreibbar( te.taste ) )
		return 0;
	return 1;
}

bool Registrierung::passwort2TE( void *obj, TastaturEreignis te ) // Tastaturereignis im Textfeld passwort2
{
	if( te.id == TE_Press && te.taste == T_Enter )
		return 0;
	if( te.id == TE_Press )
		passwort2->setSchowChar( '*' );
	if( te.id == TE_Release && ( te.taste == T_Enter || te.taste == T_Tab ) )
	{
		passwort2->löscheStyle( TextFeld::Style::Fokus );
		geheimnis->addStyle( TextFeld::Style::Fokus );
		geheimnis->setAuswahl( geheimnis->zText()->getLänge(), 0 );
	}
	if( passwort2->zText()->getLänge() >= 25 && istSchreibbar( te.taste ) )
		return 0;
	return 1;
}

bool Registrierung::geheimnisTE( void *obj, TastaturEreignis te ) // Tastaturereignis im Textfeld geheimnis
{
	if( te.id == TE_Press && te.taste == T_Enter )
		return 0;
	if( te.id == TE_Release && ( te.taste == T_Enter || te.taste == T_Tab ) )
	{
		geheimnis->löscheStyle( TextFeld::Style::Fokus );
		eMail->addStyle( TextFeld::Style::Fokus );
		eMail->setAuswahl( eMail->zText()->getLänge(), 0 );
	}
	if( geheimnis->zText()->getLänge() - abs( geheimnis->getCursorPos() - geheimnis->getFärbungPos() ) >= 50 && istSchreibbar( te.taste ) )
		return 0;
	return 1;
}

bool Registrierung::eMailTE( void *obj, TastaturEreignis te ) // Tastaturereignis im Textfeld eMail
{
	if( te.id == TE_Press && te.taste == T_Enter )
		return 0;
	if( te.id == TE_Release && ( te.taste == T_Enter || te.taste == T_Tab ) )
	{
		eMail->löscheStyle( TextFeld::Style::Fokus );
		gbdTag->addStyle( AuswahlBox::Style::Fokus );
	}
	if( eMail->zText()->getLänge() >= 50 && istSchreibbar( te.taste ) )
		return 0;
	return 1;
}

bool Registrierung::weiterME( void *obj, MausEreignis me ) // MausEreignis im Knopf weiter
{
	if( me.id == ME_RLinks )
	{
		Punkt bildchirmGröße = BildschirmGröße();
		if( schlüssel->hatStyle( TextFeld::Style::Sichtbar ) )
		{
			text->löscheStyle( TextFeld::Style::Sichtbar );
			schlüssel->löscheStyle( TextFeld::Style::Sichtbar );
			fertig->löscheStyle( Knopf::Style::Sichtbar );
			später->löscheStyle( Knopf::Style::Sichtbar );
            neuSenden->löscheStyle( Knopf::Style::Sichtbar );
			weiter->setPosition( 124, 200 );
			weiter->setText( "Weiter" );
			fenster->setGröße( 350, 262 );
			fenster->setPosition( bildchirmGröße.x / 2 - 175, bildchirmGröße.y / 2 - 131 );
			fenster->setTitel( "Account erstellen" );
			name->addStyle( TextFeld::Style::Sichtbar );
			passwort->addStyle( TextFeld::Style::Sichtbar );
			passwort2->addStyle( TextFeld::Style::Sichtbar );
			geheimnis->addStyle( TextFeld::Style::Sichtbar );
			eMail->addStyle( TextFeld::Style::Sichtbar );
			geburtsdatum->addStyle( TextFeld::Style::Sichtbar );
			gbdTag->addStyle( TextFeld::Style::Sichtbar );
			gbdMonat->addStyle( TextFeld::Style::Sichtbar );
			gbdJahr->addStyle( TextFeld::Style::Sichtbar );
			registerKlient->abbrechen();
			name->addStyle( TextFeld::Style::Fokus );
			name->setAuswahl( name->zText()->getLänge(), 0 );
		}
		else
		{
			if( weiter->zText()->istGleich( "Ok" ) )
			{
				if( fenster->zTitel()->istGleich( "Account erstellen" ) )
				{
					text->löscheStyle( TextFeld::Style::Sichtbar );
					weiter->setPosition( 124, 200 );
					weiter->setText( "Weiter" );
					fenster->setGröße( 350, 262 );
					fenster->setPosition( bildchirmGröße.x / 2 - 175, bildchirmGröße.y / 2 - 131 );
					name->addStyle( TextFeld::Style::Sichtbar );
					passwort->addStyle( TextFeld::Style::Sichtbar );
					passwort2->addStyle( TextFeld::Style::Sichtbar );
					geheimnis->addStyle( TextFeld::Style::Sichtbar );
					eMail->addStyle( TextFeld::Style::Sichtbar );
					geburtsdatum->addStyle( TextFeld::Style::Sichtbar );
					gbdTag->addStyle( TextFeld::Style::Sichtbar );
					gbdMonat->addStyle( TextFeld::Style::Sichtbar );
					gbdJahr->addStyle( TextFeld::Style::Sichtbar );
					name->addStyle( TextFeld::Style::Fokus );
					name->setAuswahl( name->zText()->getLänge(), 0 );
				}
				else
				{
					weiter->setPosition( 20, 145 );
					weiter->setText( "Abbrechen" );
					text->setText( "Dir wurde eine E-Mail mit einem\naktivierungsode zugeschickt,\nden du in den nächsten 12 Stunden\nhier eingeben musst." );
					fenster->setGröße( 250, 200 );
					fenster->setPosition( bildchirmGröße.x / 2 - 125, bildchirmGröße.y / 2 - 100 );
					schlüssel->addStyle( TextFeld::Style::Sichtbar );
					fertig->addStyle( Knopf::Style::Sichtbar );
					später->addStyle( Knopf::Style::Sichtbar );
					neuSenden->addStyle( Knopf::Style::Sichtbar );
					schlüssel->addStyle( TextFeld::Style::Fokus );
					schlüssel->setAuswahl( schlüssel->zText()->getLänge(), 0 );
				}
			}
			else if( passwort2->zText()->istGleich( passwort->zText()->getText() ) )
			{
				if( name->zText()->getLänge() == 0 ||
					passwort->zText()->getLänge() == 0 ||
					geheimnis->zText()->getLänge() == 0 ||
					eMail->zText()->getLänge() == 0 )
				{
					if( name->zText()->getLänge() == 0 )
						zeigeNachricht( "Bitte gebe einen Accountnamen ein." );
					else if( passwort->zText()->getLänge() == 0 )
						zeigeNachricht( "Bitte gebe ein Accountpasswort ein." );
					else if( geheimnis->zText()->getLänge() == 0 )
						zeigeNachricht( "Bitte gebe ein Accountgeheimnis ein. Dieß wird benötig, wenn du deinen Accountnamen oder dein Accountpasswort vergisst." );
					else if( eMail->zText()->getLänge() == 0 )
						zeigeNachricht( "Bitte gebe deine E-Mail Addresse ein. Diese benötigen wir, um dir den Bestätigungscode für deinen Account zu senden." );
					return 1;
				}
				Datum *gebDat = new Datum();
				gebDat->setDatum( 1, 1, 1 );
				bool ok = 1;
				do
				{
					if( !gbdTag->getAuswahl() || !gbdMonat->getAuswahl() || !gbdJahr->getAuswahl() )
					{
						ok = 0;
						break;
					}
					int jahr = TextZuInt( gbdJahr->zEintrag( gbdJahr->getAuswahl() )->zText()->getText(), 10 );
					gebDat->setJahr( jahr );
					gebDat->setMonat( gbdMonat->getAuswahl() );
					gebDat->setTag( gbdTag->getAuswahl() );
					if( jahr != gebDat->getJahr() || gbdMonat->getAuswahl() != gebDat->getMonat() || gbdTag->getAuswahl() != gebDat->getTag() )
					{
						ok = 0;
						break;
					}
				}
				while( 0 );
				if( ok )
					new AktionsThread( 15, name->zText()->getText(), passwort->zText()->getText(), geheimnis->zText()->getText(), eMail->zText()->getText(), gebDat->getThis() );
				else
					zeigeNachricht( "Bitte gebe ein gültiges Geburtsdatum an." );
				gebDat = gebDat->release();
			}
			else
				zeigeNachricht( "Das wiederhohlte Passwort stimmt nicht mit dem Passwort überein." );
		}
	}
	return 1;
}

bool Registrierung::schlüsselTE( void *obj, TastaturEreignis te ) // Tastaturereignis im Textfeld schlüssel
{
	if( te.id == TE_Press && te.taste == T_Enter )
		return 0;
	if( te.id == TE_Release && te.taste == T_Enter )
	{
		schlüssel->löscheStyle( TextFeld::Style::Fokus );
		MausEreignis me;
		me.id = ME_RLinks;
		fertigME( 0, me );
	}
	if( schlüssel->zText()->getLänge() >= 20 && istSchreibbar( te.taste ) )
		return 0;
	return 1;
}

bool Registrierung::fertigME( void *obj, MausEreignis me ) // MausEreignis im Knopf fertig
{
	if( me.id == ME_RLinks )
		new AktionsThread( 16, schlüssel->zText()->getText(), 0, 0, 0, 0 );
	return 1;
}

bool Registrierung::späterME( void *obj, MausEreignis me ) // MausEreignis im Knopf später
{
	if( me.id == ME_RLinks )
	{
		fenster->setTitel( "Account erstellen" );
		zeigeNachricht( "Du kannst den Vorgang nun später unter 'Bestätigung' vollenden." );
	}
	return 1;
}

bool Registrierung::neuSendenME( void *obj, MausEreignis me ) // MausEreignis im Knopf neuSenden
{
	if( me.id == ME_RLinks )
		registerKlient->eMailErneutSenden();
	return 1;
}

bool Registrierung::registrierungME( void *obj, MausEreignis me ) // MausEreignis im Knopf registrierung
{
	if( me.id == ME_RLinks )
	{
		vorLogin->setRegistrierung();
		fenster->addStyle( Fenster::Style::Sichtbar );
		registrierung->setLinienRahmenBreite( 3 );
		registrierung->setAlphaFeldFarbe( 0xFF000000 );
		registrierung->setAlphaFeldStärke( 20 );

		if( schlüssel->hatStyle( TextFeld::Style::Sichtbar ) )
			registerKlient->abbrechen();
		Punkt bildchirmGröße = BildschirmGröße();
		text->löscheStyle( TextFeld::Style::Sichtbar );
		schlüssel->löscheStyle( TextFeld::Style::Sichtbar );
		fertig->löscheStyle( Knopf::Style::Sichtbar );
		später->löscheStyle( Knopf::Style::Sichtbar );
		neuSenden->löscheStyle( Knopf::Style::Sichtbar );
		weiter->setPosition( 124, 200 );
		weiter->setText( "Weiter" );
		fenster->setGröße( 350, 262 );
		fenster->setPosition( bildchirmGröße.x / 2 - 175, bildchirmGröße.y / 2 - 131 );
		fenster->setTitel( "Account erstellen" );
		name->addStyle( TextFeld::Style::Sichtbar );
		passwort->addStyle( TextFeld::Style::Sichtbar );
		passwort2->addStyle( TextFeld::Style::Sichtbar );
		geheimnis->addStyle( TextFeld::Style::Sichtbar );
		eMail->addStyle( TextFeld::Style::Sichtbar );
		geburtsdatum->addStyle( TextFeld::Style::Sichtbar );
		gbdTag->addStyle( TextFeld::Style::Sichtbar );
		gbdMonat->addStyle( TextFeld::Style::Sichtbar );
		gbdJahr->addStyle( TextFeld::Style::Sichtbar );
		name->addStyle( TextFeld::Style::Fokus );
		name->setAuswahl( name->zText()->getLänge(), 0 );
	}
	return 1;
}

void Registrierung::setWeiterReturn( bool ret ) // setzt den Weiter Returnwert
{
	Punkt bildchirmGröße = BildschirmGröße();
	if( ret )
	{
		name->löscheStyle( TextFeld::Style::Sichtbar );
		passwort->löscheStyle( TextFeld::Style::Sichtbar );
		passwort2->löscheStyle( TextFeld::Style::Sichtbar );
		geheimnis->löscheStyle( TextFeld::Style::Sichtbar );
		eMail->löscheStyle( TextFeld::Style::Sichtbar );
		geburtsdatum->löscheStyle( TextFeld::Style::Sichtbar );
		gbdTag->löscheStyle( TextFeld::Style::Sichtbar );
		gbdMonat->löscheStyle( TextFeld::Style::Sichtbar );
		gbdJahr->löscheStyle( TextFeld::Style::Sichtbar );
		fenster->setGröße( 250, 200 );
		fenster->setPosition( bildchirmGröße.x / 2 - 125, bildchirmGröße.y / 2 - 100 );
		fenster->setTitel( "Account aktivieren" );
		weiter->setPosition( 20, 145 );
		weiter->setText( "Abbrechen" );
		text->setText( "Dir wurde eine E-Mail mit einem\naktivierungsode zugeschickt,\nden du in den nächsten 12 Stunden\nhier eingeben musst." );
		text->addStyle( TextFeld::Style::Sichtbar );
		schlüssel->addStyle( TextFeld::Style::Sichtbar );
		später->addStyle( Knopf::Style::Sichtbar );
		neuSenden->addStyle( Knopf::Style::Sichtbar );
		fertig->addStyle( Knopf::Style::Sichtbar );
	}
	else if( registerKlient->getLetzterFehler() )
		zeigeNachricht( registerKlient->getLetzterFehler() );
}

void Registrierung::setFertigReturn( bool ret ) // setzt den Fertig Returnwert
{
	if( ret )
		vorLogin->setLogin( 0 );
	else
		zeigeNachricht( "Falscher Schlüssel." );
}

// Reference Counting
Registrierung *Registrierung::getThis()
{
	ref++;
	return this;
}

Registrierung *Registrierung::release()
{
	ref--;
	if( !ref )
		delete this;
	return 0;
}

// Ereignisse
bool registrierungNameTE( void *p, void *obj, TastaturEreignis te )
{
	if( !p )
		return 0;
	return ( (Registrierung*)p )->nameTE( obj, te );
}

bool registrierungPasswortTE( void *p, void *obj, TastaturEreignis te )
{
	if( !p )
		return 0;
	return ( (Registrierung*)p )->passwortTE( obj, te );
}

bool registrierungPasswort2TE( void *p, void *obj, TastaturEreignis te )
{
	if( !p )
		return 0;
	return ( (Registrierung*)p )->passwort2TE( obj, te );
}

bool registrierungGeheimnisTE( void *p, void *obj, TastaturEreignis te )
{
	if( !p )
		return 0;
	return ( (Registrierung*)p )->geheimnisTE( obj, te );
}

bool registrierungEMailTE( void *p, void *obj, TastaturEreignis te )
{
	if( !p )
		return 0;
	return ( (Registrierung*)p )->eMailTE( obj, te );
}

bool registrierungWeiterME( void *p, void *obj, MausEreignis me )
{
	if( !p )
		return 0;
	return ( (Registrierung*)p )->weiterME( obj, me );
}

bool registrierungSchlüsselTE( void *p, void *obj, TastaturEreignis te )
{
	if( !p )
		return 0;
	return ( (Registrierung*)p )->schlüsselTE( obj, te );
}

bool registrierungFertigME( void *p, void *obj, MausEreignis me )
{
	if( !p )
		return 0;
	return ( (Registrierung*)p )->fertigME( obj, me );
}

bool registrierungSpäterME( void *p, void *obj, MausEreignis me )
{
	if( !p )
		return 0;
	return ( (Registrierung*)p )->späterME( obj, me );
}

bool registrierungNeuSendenME( void *p, void *obj, MausEreignis me )
{
	if( !p )
		return 0;
	return ( (Registrierung*)p )->neuSendenME( obj, me );
}

bool registrierungRegistrierungME( void *p, void *obj, MausEreignis me )
{
	if( !p )
		return 0;
	return ( (Registrierung*)p )->registrierungME( obj, me );
}