function comeIn(field,ist) {
	if(field.value==ist) field.value='';
}

function goAway(field,soll) {
	if(field.value=='') field.value=soll;
}




function isDigit( ch )
{
	if ( (ch >= '0') && (ch <= '9') )
		return true;
	else
		return false;
}

function isAlpha( ch )
{
	if ( ((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z')) )
		return true;
	else
		return false;
}

function isAlnum( ch )
{
	if ( isAlpha( ch ) || isDigit( ch ) )
		return true;
	else
		return false;
}

function notIn( str1, str2 )
{
	var i = 0;
	var j = str2.length;
	for( ; i<j; i++ )
	{
		var str3 =  str2.charAt(i);
		if( str1.indexOf( str3 ) != -1 )
			return false;
	}
	return true;
}

function checkUsername( username, mustBeQuoted )
{
	var i = 0;
	var j = username.length;
	if ( username.charAt(0) != '"' )
	{
		if ( (username.charAt(0) <  ' ') || (username.charAt(0) >  '~') || !notIn( mustBeQuoted, username.charAt(0) ) )
			return false;
		for( i=1; i<j; i++ )
		{
			if ( ( (username.charAt(i) < ' ') || (username.charAt(i) >  '~') || !notIn ( mustBeQuoted, username.charAt(i) ) ) 	&& ( username.charAt(i-1) != '\\' ) )
				return false;
		}
	}
	else
	{
		if ( username.charAt( j-1 ) != '"' )
			return false;
		for( i=1; i<j-1; i++ )
		{
			if ( ( (username.charAt(i) == '\n') || (username.charAt(i) == '\r') || (username.charAt(i) == '\"') ) && (username.charAt(i-1) != '\\') )
				return false;
		}
	}
	return true;
}

function checkNr ( nr )
{
	var i=0;
	var j=nr.length;
	
	if( j < 1 )
		return false;
	
	for( ; i<j; i++ )
		if( ( nr.charAt(i) < '0' ) || ( nr.charAt(i) > '9' ) )
			return false;
	
	return true;
}

function checkIpnr( ipnr )
{
	var iL=0;
	var iC=0;
	var i=0;
	var sNr = "";
	
	for( ; i< ipnr.length; i++ )
	{
		if ( ipnr.charAt(i) == '.' )
		{
			if ( !iL || (iL> 3) || parseInt( sNr,10 ) > 255 )
				return false;
			iC++;
			iL = 0;
			sNr = "";
			continue;
		}
		if ( isDigit ( ipnr.charAt(i) ) )
		{
			iL++;
			sNr = sNr + ipnr.charAt(i);
			continue;
		}
		return false;
	}
	
	if ( parseInt( sNr,10 ) > 255 )
		return false;
	if ( ( (iC==3) && (iL>=1) && (iL<=3) ) || ( (iC==4) && (!iL) )  )
		return true;
	else
		return false;
}

function checkFqdn( fqdn )
{
	var iL=0;
	var iC=0;
	var i=fqdn.length-1;
	
	if ( (fqdn.charAt(0) == '.') || (fqdn.charAt(0) == '-') )
		return false;
	if ( fqdn.charAt(i) == '.' )
		i=i-1;
	
	for( ; i>=0; i-- )
	{
		if ( fqdn.charAt(i) == '.' )
		{
			if ( iL < 2 && iC < 2 )
				return false;
			if ( fqdn.charAt(i-1) == '-' )
				return false;
			iC++;
			iL = 0;
			continue;
		}
		if ( isAlnum ( fqdn.charAt(i) ) )
		{
			iL++;
			continue;
		}
		if ( fqdn.charAt(i) == '-' )
		{
			if ( !iL )
				return false;
			iL++;
			continue;
		}
		return false;
	}
	
	if ( !iC || ( iL == 1 && iC < 2 ) || ( !iL && iC==1 ) ) {
		return false;
	}
	
	return true;
	
}

function checkHostname( hostname )
{
	if ( hostname.charAt(0) == '[' )
	{
		if ( hostname.charAt(hostname.length-1) != ']' )
			return false;
		var ipnr = hostname.substring( 1, hostname.length -1 );
		return checkIpnr( ipnr );
	}
	
	if ( hostname.charAt(0) == '#' )
	{
		var nr = hostname.substring( 1, hostname.length );
		return checkNr( nr );
	}
	
	return checkFqdn( hostname );
}

function checkEmailAdr( address )
{
	var status = true;
	var username = "";
	var hostname = "";
	
	if ( address.length < 8 )
		return false;
	
	var seperate = address.lastIndexOf("@");
	if ( seperate == -1 )
		return false;
	
	username = address.substring(0, seperate );
	if ( ! checkUsername( username, "<>()[],;:@\" " ) )
		return false;
	
	hostname = address.substring(seperate+1, address.length );
	if ( ! checkHostname( hostname ) )
		return false;
	
	return true;
}

function checkEmail( email, allowFullname )
{
	var existFullname = false;
	var status = true;
	var fullname = "";
	var adress = "";
	if ( email.length < 8 )
		return false;
	var emailBegin = email.indexOf("<");
	var emailEnd = email.lastIndexOf(">");
	
	if ( (emailBegin == -1) && (emailEnd == -1) )
		return checkEmailAdr( email );
	
	if ( ( (emailBegin == -1) && (emailEnd != -1) ) || ( (emailBegin != -1) && (emailEnd == -1) ) )
		return false;
	
	adress = email.substring( emailBegin+1, emailEnd );
	
	if ( ! checkEmailAdr( adress ) )
		return false;
	
	if ( email.length == adress.length + 2 )
		return true;
	else
		if ( ! allowFullname )
			return false;
	
	alert( email );
	if ( emailEnd == email.length - 1 )
	{
		if ( emailBegin == 0 )
			return true;
		if ( email.charAt( emailBegin -1 ) != ' ' )
			return false;
		fullname = email.substring( 0, emailBegin-1 );
		return checkUsername ( fullname, "<>()[],;:@\"" );
	}
	
	return false ;
	
}

function checkPLZ( varPLZ )
{
	var pattern = new RegExp("\^\\d{5}\$");
	
	if( varPLZ.match(pattern) ) {
		return true;
	} else {
		return false;
	}
}

function checkDate( varDate )
{
	var pattern = new RegExp("^[0-3][0-9][.](0|1)[0-9][.](19|20)[0-9]{2}$");

	if( varDate.match(pattern) ) {
		return true;
	} else {
		return false;
	}
}

function checkAge( varDate,alter_min,alter_max )
{
	var date_array = varDate.split('.');
	var day = date_array[0];
	var month = date_array[1] - 1;
	var year = date_array[2];
	var source_date = new Date(year,month,day);
	var actual_date = new Date();
	
	alter = actual_date.getFullYear() - source_date.getFullYear();
	if( actual_date.getMonth() < source_date.getMonth() )
		alter--;
	if( actual_date.getMonth() == source_date.getMonth() && actual_date.getDate() < source_date.getDate() )
		alter--;
	
	if( alter < alter_min || alter > alter_max ) {
		return false;
	} else {
		return true;
	}
}



function FormularUeberpruefen()
{
	var Fehlermeldung = "";
	
	if( document.form.datenschutz.checked !== true )
		Fehlermeldung += "Bitte akzeptieren Sie die Datenschutzerklärung!\n";
	
	if( document.form.anrede.value == "Anrede" )
		Fehlermeldung += "Bitte geben Sie Ihre Anrede an!\n";
	
	if( document.form.vorname.value == "" )
		Fehlermeldung += "Bitte geben Sie Ihren Vornamen an!\n";
	
	if( document.form.nachname.value == "" )
		Fehlermeldung += "Bitte geben Sie Ihren Nachnamen an!\n";
	
	if( document.form.strasse.value == "" )
		Fehlermeldung += "Bitte geben Sie Ihre Straße an!\n";
	
	if( !checkPLZ( document.form.plz.value ) )
		Fehlermeldung += "Bitte geben Sie Ihre PLZ an!\n";
	
	if( document.form.ort.value == "" )
		Fehlermeldung += "Bitte geben Sie Ihren Ort an!\n";
	
	if( document.form.telefon.value.length < 5 )
		Fehlermeldung += "Bitte geben Sie Ihre Telefonnummer an!\n";
	
	if ( document.form.email.value == "" ) {
		Fehlermeldung += "Bitte geben Sie ihre E-Mail-Adresse an!\n";
	} else {
		if ( !checkEmail( document.form.email.value, true ) )
			Fehlermeldung += "Bitte geben Sie eine korrekte E-Mail-Adresse an!\n";
	}
	
	if( document.form.beruf.value == "" )
		Fehlermeldung += "Bitte geben Sie Ihre Berufsbezeichnung an!\n";
	
	if( document.form.berufsstatus.value == "" || 
		document.form.berufsstatus.value == "Selbständiger" ||
		document.form.berufsstatus.value == "Freiberufler" ||
		document.form.berufsstatus.value == "Schüler" ||
		document.form.berufsstatus.value == "Rentner" ) {
		alert("Leider gehören Sie als " + document.form.berufsstatus.value + " nicht zum direkt förderberechtigten Personenkreis der Riester-Rente. Sie haben nur die Möglichkeit die Riester-Förderung über einen förderberechtigten Ehepartner in Anspruch zu nehmen.\nWenn Sie selbständig sind, können Sie jedoch die attraktiven steuerlichen Vorteile der Rürup-Rente nutzen.\nWeitere Informationen zur Rürup-Rente erhalten Sie unter www.ruerup-rente-infoportal.de!");
		return false;
	}
	
	if( !checkDate( document.form.geburtstag.value ) ) {
		Fehlermeldung += "Bitte geben Sie Ihr Geburtsdatum (TT.MM.JJJJ) an!\n";
	} else {
		if( !checkAge( document.form.geburtstag.value,17,54 ) ) {
			alert("Leider gehören Sie auf Grund Ihres Alters nicht zum förderberechtigten Personenkreis der Riester-Rente.");
			return false;
		}
	}
	
	if( Fehlermeldung ) {
		alert( Fehlermeldung );
		return false;
	} else {
		return true;
	}
}



