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

// Inhalt der EMailÄndern Klasse aus EMail.h
// Konstruktor
EMailÄndern::EMailÄndern( Schrift *zSchrift, Fenster *zVorLoginFenster )
{
	Punkt bildschirmmitte = Bildschirmmitte();
	eMailÄndern = initKnopf( 10, 210, 130, 30, zSchrift, Knopf::Style::Sichtbar, "E-Mail ändern" );
	eMailÄndern->setMausEreignisParameter( this );
	eMailÄndern->setMausEreignis( eMailÄndernEMailÄndernME );
	initToolTip( eMailÄndern, "Account E-Mail Adresse ändern.", zSchrift->getThis(), hauptScreen );
	zVorLoginFenster->addMember( eMailÄndern );
	fenster = initFenster( bildschirmmitte.x - 125, bildschirmmitte.y - 100, 250, 200, zSchrift, Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered, "E-Mail ändern" );
	name = initTextFeld( 20, 20, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Name" );
	name->setTastaturEreignisParameter( this );
	name->setTastaturEreignis( eMailÄndernNameTE );
	initToolTip( name, "Account Name.", zSchrift->getThis(), hauptScreen );
	fenster->addMember( name );
	passwort = initTextFeld( 20, 50, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Passwort" );
	passwort->setTastaturEreignisParameter( this );
	passwort->setTastaturEreignis( eMailÄndernPasswortTE );
	initToolTip( passwort, "Account Passwort.", zSchrift->getThis(), hauptScreen );
	fenster->addMember( passwort );
	geheimnis = initTextFeld( 20, 80, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Geheimis" );
	geheimnis->setTastaturEreignisParameter( this );
	geheimnis->setTastaturEreignis( eMailÄndernGeheimnisTE );
	initToolTip( geheimnis, "Account Geheimnis.", zSchrift->getThis(), hauptScreen );
	fenster->addMember( geheimnis );
	nEMail = initTextFeld( 20, 110, 208, 20, zSchrift, TextFeld::Style::TextFeld, "neue E-Mail Adresse" );
	nEMail->setTastaturEreignisParameter( this );
	nEMail->setTastaturEreignis( eMailÄndernNEMailTE );
	initToolTip( nEMail, "Neue E-Mail Adresse.", zSchrift->getThis(), hauptScreen );
	fenster->addMember( nEMail );
	weiter = initKnopf( 74, 140, 100, 20, zSchrift, Knopf::Style::Sichtbar, "weiter" );
	weiter->setMausEreignisParameter( this );
	weiter->setMausEreignis( eMailÄndernWeiterME );
	nachricht = initTextFeld( 0, 5, 255, 150, zSchrift, TextFeld::Style::HCenter | TextFeld::Style::Mehrzeilig, "" );
	fenster->addMember( nachricht );
	fenster->addMember( weiter );
	zVorLoginFenster->addMember( fenster );
	ref = 1;
}

// Destruktor
EMailÄndern::~EMailÄndern()
{
	if( eMailÄndern )
		eMailÄndern = eMailÄndern->release();
	if( fenster )
		fenster = fenster->release();
	if( name )
		name = name->release();
	if( passwort )
		passwort = passwort->release();
	if( geheimnis )
		geheimnis = geheimnis->release();
	if( nEMail )
		nEMail = nEMail->release();
	if( weiter )
		weiter = weiter->release();
	if( nachricht )
		nachricht = nachricht->release();
}

// Privat
void EMailÄndern::zeigeNachricht( const char *txt )
{
	Punkt bildschirmmitte = Bildschirmmitte();
	name->löscheStyle( TextFeld::Style::Sichtbar );
	passwort->löscheStyle( TextFeld::Style::Sichtbar );
	geheimnis->löscheStyle( TextFeld::Style::Sichtbar );
	nEMail->löscheStyle( TextFeld::Style::Sichtbar );
	fenster->setGröße( 250, 150 );
	fenster->setPosition( bildschirmmitte.x - 125, bildschirmmitte.y - 75 );
	weiter->setPosition( 139, 100 );
	weiter->setText( "Ok" );
	nachricht->setText( txt );
	if( nachricht->zText()->getLänge() > 30 )
	{
		int pos = -1;
		bool set = 0;
		int lastp = 0;
		for( int i = 20; i < nachricht->zText()->getLänge(); )
		{
			char *tmp = &nachricht->zText()->getText()[ i ];
			while( *tmp != ' ' && i < nachricht->zText()->getLänge() )
			{
				tmp++;
				i++;
				if( i - 30 >= lastp )
				{
					if( set )
					{
						lastp = pos;
						set = 0;
						nachricht->zText()->getText()[ pos ] = '\n';
					}
					else
						lastp += 5;
				}
			}
			if( i < nachricht->zText()->getLänge() )
			{
				pos = i;
				set = 1;
				tmp++;
				i++;
			}
		}
	}
	nachricht->addStyle( TextFeld::Style::Sichtbar );
}

// Knopfdruck
void EMailÄndern::druckFremdKnopf() // Ein anderer Knopf wurde gedrückt
{
	fenster->löscheStyle( Fenster::Style::Sichtbar );
	registerKlient->trenne();
	eMailÄndern->setLinienRahmenBreite( 2 );
	eMailÄndern->setAlphaFeldFarbe( 0x5500FF00 );
	eMailÄndern->setAlphaFeldStärke( -5 );
}

bool EMailÄndern::eMailÄndernME( void *obj, MausEreignis me ) // MausEreignis im Knopf eMailÄndern
{
	if( me.id == ME_RLinks )
	{
		vorLogin->setEMailÄndern();

		eMailÄndern->setLinienRahmenBreite( 3 );
		eMailÄndern->setAlphaFeldFarbe( 0xFF000000 );
		eMailÄndern->setAlphaFeldStärke( 20 );
		Punkt bildschirmmitte = Bildschirmmitte();
		fenster->setGröße( 255, 200 );
		fenster->setPosition( bildschirmmitte.x - 125, bildschirmmitte.y - 100 );
		fenster->addStyle( Fenster::Style::Sichtbar );
		nachricht->löscheStyle( TextFeld::Style::Sichtbar );
		weiter->setText( "weiter" );
		weiter->setPosition( 75, 140 );
		name->addStyle( TextFeld::Style::Sichtbar );
		passwort->addStyle( TextFeld::Style::Sichtbar );
		geheimnis->addStyle( TextFeld::Style::Sichtbar );
		nEMail->addStyle( TextFeld::Style::Sichtbar );
		name->addStyle( TextFeld::Style::Fokus );
		name->setAuswahl( name->zText()->getLänge(), 0 );
	}
	return 1;
}

bool EMailÄndern::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 EMailÄndern::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 );
		geheimnis->addStyle( TextFeld::Style::Fokus );
		geheimnis->setAuswahl( geheimnis->zText()->getLänge(), 0 );
	}
	if( passwort->zText()->getLänge() >= 25 && istSchreibbar( te.taste ) )
		return 0;
	return 1;
}

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

bool EMailÄndern::nEMailTE( void *obj, TastaturEreignis te ) // Tastaturereignis im Textfeld nEMail
{
	if( te.id == TE_Press && te.taste == T_Enter )
		return 0;
	if( te.id == TE_Press )
		nEMail->setSchowChar( '*' );
	if( te.id == TE_Release && te.taste == T_Enter )
	{
		nEMail->löscheStyle( TextFeld::Style::Fokus );
		MausEreignis me;
		me.id = ME_RLinks;
		weiterME( 0, me );
	}
	if( nEMail->zText()->getLänge() >= 50 && istSchreibbar( te.taste ) )
		return 0;
	return 1;
}

bool EMailÄndern::weiterME( void *obj, MausEreignis me ) // MausEreignis im Knopf weiter
{
	if( me.id == ME_RLinks )
	{
		if( weiter->zText()->istGleich( "weiter" ) )
		{
			if( name->zText()->getLänge() == 0 )
				zeigeNachricht( "Bitte gebe deinen Accountnamen ein." );
			if( passwort->zText()->getLänge() == 0 )
				zeigeNachricht( "Bitte gebe dein Accountpasswort ein." );
			if( geheimnis->zText()->getLänge() == 0 )
				zeigeNachricht( "Bitte gebe dein Accountgeheimnis ein." );
			if( nEMail->zText()->getLänge() == 0 )
				zeigeNachricht( "Bitte gebe eine neue E-Mail Addresse ein." );
			if( weiter->zText()->istGleich( "Ok" ) )
				return 1;
			new AktionsThread( 8, name->zText()->getText(), passwort->zText()->getText(), geheimnis->zText()->getText(), nEMail->zText()->getText(), 0 );
		}
		else
		{
			Punkt bildschirmmitte = Bildschirmmitte();
			fenster->setGröße( 255, 200 );
			fenster->setPosition( bildschirmmitte.x - 125, bildschirmmitte.y - 100 );
			fenster->addStyle( Fenster::Style::Sichtbar );
			nachricht->löscheStyle( TextFeld::Style::Sichtbar );
			weiter->setText( "weiter" );
			weiter->setPosition( 75, 140 );
			name->addStyle( TextFeld::Style::Sichtbar );
			passwort->addStyle( TextFeld::Style::Sichtbar );
			geheimnis->addStyle( TextFeld::Style::Sichtbar );
			nEMail->addStyle( TextFeld::Style::Sichtbar );
			name->addStyle( TextFeld::Style::Fokus );
			name->setAuswahl( name->zText()->getLänge(), 0 );
		}
	}
	return 1;
}

void EMailÄndern::setReturn( bool ret ) // Setzt den Returnwert
{
	if( ret )
		zeigeNachricht( "E-Mail erfolgreich geändert." );
	else if( registerKlient->getLetzterFehler() )
		zeigeNachricht( registerKlient->getLetzterFehler() );
	else
		zeigeNachricht( "Es ist ein Unbekannter Fehler aufgetreten." );
}

// Reference Counting
EMailÄndern *EMailÄndern::getThis()
{
	ref++;
	return this;
}

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


// Inhalt der EMailVergessen Klasse aus EMail.h
// Konstruktor
EMailVergessen::EMailVergessen( Schrift *zSchrift, Fenster *zVorLoginFenster )
{
	Punkt bildschirmmitte = Bildschirmmitte();
	eMailVergessen = initKnopf( 10, 410, 130, 30, zSchrift, Knopf::Style::Sichtbar, "E-Mail vergessen" );
	eMailVergessen->setMausEreignisParameter( this );
	eMailVergessen->setMausEreignis( eMailVergessenEMailVergessenME );
	initToolTip( eMailVergessen, "Account E-Mail Adresse anzeigen.", zSchrift->getThis(), hauptScreen );
	zVorLoginFenster->addMember( eMailVergessen );
	fenster = initFenster( bildschirmmitte.x - 125, bildschirmmitte.y - 85, 250, 170, zSchrift, Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered, "E-Mail vergessen" );
	name = initTextFeld( 20, 20, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Name" );
	name->setTastaturEreignisParameter( this );
	name->setTastaturEreignis( eMailVergessenNameTE );
	initToolTip( name, "Account Name.", zSchrift->getThis(), hauptScreen );
	fenster->addMember( name );
	passwort = initTextFeld( 20, 50, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Passwort" );
	passwort->setTastaturEreignisParameter( this );
	passwort->setTastaturEreignis( eMailVergessenPasswortTE );
	initToolTip( passwort, "Account Passwort.", zSchrift->getThis(), hauptScreen );
	fenster->addMember( passwort );
	geheimnis = initTextFeld( 20, 80, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Geheimis" );
	geheimnis->setTastaturEreignisParameter( this );
	geheimnis->setTastaturEreignis( eMailVergessenGeheimnisTE );
	initToolTip( geheimnis, "Account Geheimnis.", zSchrift->getThis(), hauptScreen );
	fenster->addMember( geheimnis );
	weiter = initKnopf( 74, 110, 100, 20, zSchrift, Knopf::Style::Sichtbar, "weiter" );
	weiter->setMausEreignisParameter( this );
	weiter->setMausEreignis( eMailVergessenWeiterME );
	nachricht = initTextFeld( 0, 5, 255, 150, zSchrift, TextFeld::Style::HCenter | TextFeld::Style::Mehrzeilig, "" );
	fenster->addMember( nachricht );
	fenster->addMember( weiter );
	zVorLoginFenster->addMember( fenster );
	ref = 1;
}

// Destruktor
EMailVergessen::~EMailVergessen()
{
	if( eMailVergessen )
		eMailVergessen = eMailVergessen->release();
	if( fenster )
		fenster = fenster->release();
	if( name )
		name = name->release();
	if( passwort )
		passwort = passwort->release();
	if( geheimnis )
		geheimnis = geheimnis->release();
	if( weiter )
		weiter = weiter->release();
	if( nachricht )
		nachricht = nachricht->release();
}

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

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

bool EMailVergessen::eMailVergessenME( void *obj, MausEreignis me ) // MausEreignis im Knopf eMailVergessen
{
	if( me.id == ME_RLinks )
	{
		vorLogin->setEMailVergessen();

		eMailVergessen->setLinienRahmenBreite( 3 );
		eMailVergessen->setAlphaFeldFarbe( 0xFF000000 );
		eMailVergessen->setAlphaFeldStärke( 20 );
		Punkt bildschirmmitte = Bildschirmmitte();
		fenster->setGröße( 255, 170 );
		fenster->setPosition( bildschirmmitte.x - 125, bildschirmmitte.y - 85 );
		fenster->addStyle( Fenster::Style::Sichtbar );
		nachricht->löscheStyle( TextFeld::Style::Sichtbar );
		weiter->setText( "weiter" );
		weiter->setPosition( 75, 110 );
		name->addStyle( TextFeld::Style::Sichtbar );
		passwort->addStyle( TextFeld::Style::Sichtbar );
		geheimnis->addStyle( TextFeld::Style::Sichtbar );
		name->addStyle( TextFeld::Style::Fokus );
		name->setAuswahl( name->zText()->getLänge(), 0 );
	}
	return 1;
}

bool EMailVergessen::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 EMailVergessen::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 );
		geheimnis->addStyle( TextFeld::Style::Fokus );
		geheimnis->setAuswahl( geheimnis->zText()->getLänge(), 0 );
	}
	if( passwort->zText()->getLänge() >= 25 && istSchreibbar( te.taste ) )
		return 0;
	return 1;
}

bool EMailVergessen::geheimnisTE( void *obj, TastaturEreignis te ) // Tastaturereignis im Textfeld geheimnis
{
	if( te.id == TE_Press && te.taste == T_Enter )
		return 0;
	if( te.id == TE_Press )
		geheimnis->setSchowChar( '*' );
	if( te.id == TE_Release && te.taste == T_Enter )
	{
		geheimnis->löscheStyle( TextFeld::Style::Fokus );
		MausEreignis me;
		me.id = ME_RLinks;
		weiterME( 0, me );
	}
	if( geheimnis->zText()->getLänge() >= 50 && istSchreibbar( te.taste ) )
		return 0;
	return 1;
}

bool EMailVergessen::weiterME( void *obj, MausEreignis me ) // MausEreignis im Knopf weiter
{
	if( me.id == ME_RLinks )
	{
		if( weiter->zText()->istGleich( "weiter" ) )
		{
			if( name->zText()->getLänge() == 0 )
				zeigeNachricht( "Bitte gebe deinen Accountnamen ein." );
			if( passwort->zText()->getLänge() == 0 )
				zeigeNachricht( "Bitte gebe dein Accountpasswort ein." );
			if( geheimnis->zText()->getLänge() == 0 )
				zeigeNachricht( "Bitte gebe dein Accountgeheimnis ein." );
			if( weiter->zText()->istGleich( "Ok" ) )
				return 1;
			new AktionsThread( 9, name->zText()->getText(), passwort->zText()->getText(), geheimnis->zText()->getText(), 0, 0 );
		}
		else
		{
			Punkt bildschirmmitte = Bildschirmmitte();
			fenster->setGröße( 255, 170 );
			fenster->setPosition( bildschirmmitte.x - 125, bildschirmmitte.y - 85 );
			fenster->addStyle( Fenster::Style::Sichtbar );
			nachricht->löscheStyle( TextFeld::Style::Sichtbar );
			weiter->setText( "weiter" );
			weiter->setPosition( 75, 110 );
			name->addStyle( TextFeld::Style::Sichtbar );
			passwort->addStyle( TextFeld::Style::Sichtbar );
			geheimnis->addStyle( TextFeld::Style::Sichtbar );
			name->addStyle( TextFeld::Style::Fokus );
			name->setAuswahl( name->zText()->getLänge(), 0 );
		}
	}
	return 1;
}

void EMailVergessen::setReturn( bool ret, char *eMail ) // Setzt den Returnwert
{
	if( ret )
	{
		Text *nachricht = new Text( "Deine E-Mail Addresse lautet:'" );
		nachricht->anhängen( eMail );
		nachricht->anhängen( "'." );
		zeigeNachricht( nachricht->getText() );
		nachricht = nachricht->release();
	}
	else if( registerKlient->getLetzterFehler() )
		zeigeNachricht( registerKlient->getLetzterFehler() );
	else
		zeigeNachricht( "Es ist ein Unbekannter Fehler aufgetreten." );
	delete eMail;
}

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

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


// messages
bool eMailÄndernEMailÄndernME( void *p, void *obj, MausEreignis me )
{
	if( !p )
		return 0;
	return ( (EMailÄndern*)p )->eMailÄndernME( obj, me );
}

bool eMailÄndernNameTE( void *p, void *obj, TastaturEreignis te )
{
	if( !p )
		return 0;
	return ( (EMailÄndern*)p )->nameTE( obj, te );
}

bool eMailÄndernPasswortTE( void *p, void *obj, TastaturEreignis te )
{
	if( !p )
		return 0;
	return ( (EMailÄndern*)p )->passwortTE( obj, te );
}

bool eMailÄndernGeheimnisTE( void *p, void *obj, TastaturEreignis te )
{
	if( !p )
		return 0;
	return ( (EMailÄndern*)p )->geheimnisTE( obj, te );
}

bool eMailÄndernNEMailTE( void *p, void *obj, TastaturEreignis te )
{
	if( !p )
		return 0;
	return ( (EMailÄndern*)p )->nEMailTE( obj, te );
}

bool eMailÄndernWeiterME( void *p, void *obj, MausEreignis me )
{
	if( !p )
		return 0;
	return ( (EMailÄndern*)p )->weiterME( obj, me );
}


bool eMailVergessenEMailVergessenME( void *p, void *obj, MausEreignis me )
{
	if( !p )
		return 0;
	return ( (EMailVergessen*)p )->eMailVergessenME( obj, me );
}

bool eMailVergessenNameTE( void *p, void *obj, TastaturEreignis te )
{
	if( !p )
		return 0;
	return ( (EMailVergessen*)p )->nameTE( obj, te );
}

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

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

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