/**
 * @author nexum AG
 */


/* Funktionen zur Überprüfung der E-Mail-Adresse */
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;
}



/* Tatsächliche Eingabevalidierung */
//document.getElementById('submitLogin').onclick = function checkLogin(evt) {
function checkLogin() {
 	if (document.getElementById('login_email').value == "") {
		document.getElementById('loginHeadline').innerHTML = "LOGIN FEHLGESCHLAGEN!";
		return false;
	}
	if (document.getElementById('login_email').value == "") {
		document.getElementById('loginHeadline').innerHTML = "LOGIN FEHLGESCHLAGEN!";
		return false;
	}
	
	var boolEmail = checkEmailAdr(document.getElementById('login_email').value);
	if (!boolEmail) {
		document.getElementById('loginHeadline').innerHTML = "LOGIN FEHLGESCHLAGEN!";
		return false;
	}
	
	document.getElementById('loginHeadline').innerHTML = "LOGIN";
 	return true;
}