﻿/** In Anlehnung an   Copyright Lutz Eymers <ixtab@polzin.com>, 1997
  Polzin GmbH, Duesseldorf
  Quelle: http://aktuell.de.selfhtml.org/artikel/javascript/email-check/
*/
  //zum Überprüfen der eingebenen Adresse im Newsletter
  function checkMail()
	{
		var f = document.news
		var fehler =""
		/* überprüfen, ob überhaupt addi eingegeben*/
		if(f.mail.value=="")
		{
			fehler = "Bitte geben Sie Ihre Email- addresse ein.\n!"
			return false
		}else{
			if(!checkEmail(f.mail.value, true)){
			 alert("Ihre Email-addresse ist syntaktisch falsch!\n")
			 return false
			 }
			 return true
		}
		
		if (fehler != ""){
		      alert("Fehler! \n\n" + fehler)
		      return false
	    }
	    return false
	}
	
	//zum Überprüfen der Daten im Kontaktformulat
	function validateKontakt()
	{
		var f = document.contact
		//überprüfen, ob Pflichtangaben gemacht wurden
		if(f.vorname.value =="")
		{
			alert("Fehler! \n\n Bitte geben Sie Ihren Vornamen ein!\n")
			return false
		}else{
			//überprüfen ob keine Sonderzeichen und länger als 2 Buchstaben
			if((checkUsername(f.vorname.value, "<>()[],;:@\""))&&(f.vorname.length >2))
			{
				var i = 0
				for( i; i<f.vorname.length ; i++)
				{
					//dürfen nur Buchstaben enthalten sein
					if(!isAlpha(f.vorname.value.charAt(i)))
						return false
						alert("Bitte überprüfen Sie die Schreibweise Ihres Vornamens!\n")
					else 
						return true
				}
			}
     		return false
		}
		
		if(f.nachname.value =="")
		{
			alert("Fehler! \n\n Bitte geben Sie Ihren Nachnamen ein!\n")
			return false
		}else{
			//überprüfen ob keine Sonderzeichen und länger als 1 Buchstaben
			if((checkUsername(f.nachname.value, "<>()[],;:@\""))&&(f.nachname.length >1))
			{
				var i = 0
				for( i; i<f.nachname.length ; i++)
				{
					//dürfen nur Buchstaben enthalten sein
					if(!isAlpha(f.nachname.value.charAt(i)))
						return false
						alert("Bitte überprüfen Sie die Schreibweise Ihres Nachnamens!\n")
					else 
						return true
				}
			}
     		return false
		}

		
		if(f.city.value =="")
		{
			alert("Fehler! \n\n Bitte geben Sie Ihren Ort ein!\n")
			return false
		}else{
			//überprüfen ob keine Sonderzeichen und länger als 1 Buchstaben
			if((checkUsername(f.city.value, "<>()[],;:@\""))&&(f.city.length >2))
			{
				var i = 0
				for( i; i<f.city.length ; i++)
				{
					//dürfen nur Buchstaben enthalten sein
					if(!isAlpha(f.city.value.charAt(i)))
						return false
						alert("Bitte überprüfen Sie die Schreibweise Ihres Ortes!\n")
					else 
						return true
				}
			}
     		return false
		}


		if(f.mail.value =="")
		{
			alert("Fehler! \n\n Bitte geben Sie Ihre Email- addresse ein.\n!")
			return false
		}else{
			if(!checkEmail(f.mail.value, true)){
			 alert("Ihre Email-addresse ist syntaktisch falsch!\n")
			 return false
			 }
			 return true
		}


		if(f.notice.value =="")
		{
			alert("Fehler! \n\n Bitte geben Sie Ihre Mitteilung ein.\n!")
			return false
		}
	    return false

	}
	
	//wahr wenn die E-Mail addresse als gültig eingestuft wurde, wobei der zweite Paramter festlegt, ob Realname akzeptiert werden oder nicht
	function checkEmail(email, allowFullname)
	{
		var existFullname = false
		var status = true
		var fullname = ""
		var address = ""

		if(email.length < 8)
			return false
		
		//überrpüfen ob die folgenden Zeichen enthalten sind
		var emailBegin= email.indexOf("<")
		var emailEnd= email.lastIndexOf(">")
		
		if( (emailBegin == -1) && (emailEnd == -1))
			return checkMailAdr(email)
			
		if((emailBegin != -1) && (emailEnd == -1) || (emailBegin == -1) && (emailEnd != -1))
			return false
		
		address = email.substring(emailBegin+1, emailEnd)
		
		if( !checkMailAdr(address))
			return false
			
		if( email.length == address.length + 2){
			return true
		}else{
			if(!allowFullname)
				return false
		}
		
		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
				
	}
	
	// wahr, wenn die Email-addresse ohne Realname als gültig eingestuft wurde
	function checkMailAdr(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
	}
	
	//wahr, wenn Username gültig ist
	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
	}
	
	//wahr, wenn der Hostname als gültig eingestuft wurde
	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)
	}
	
	// wahr, wenn kein Zeichen aus str2 in str1 vorkommt
	function notIn( str1, str2)
	{
		var i = 0
		var j = str2.length
		
		for(i; i<j; i++)
		{
			var str3= str2.charAt(i)
			if( str1.indexOf(str3) != -1)
				return false
		}
		return true
	}
	
	//Überprüfung der IP- Adresse
	function checkIpnr(ipnr)
	{
		var iL =0
		var iC = 0
		var i = 0
		var sNr =""
		
		for(i; 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		
	}
	
	//wahr, wenn eine Ziffernfolge vorliegt
	function checkNr(nr)
	{
		var i =0
		var j = nr.length
		
		if(j < 1)
		return false
		
		for( i; i<j ; i++)
		{
			if((nr.charAt(i) < '0') || (nr.charAt(i) > '9'))
				return false 
		}
		
		return true
	}
	
	//wahr, wenn der Fully Qualified Domain Name als gültig eingestuft wurde
	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;
	
	  }
	  
	  //wahr, wenn das Zeichen eine Zahl ist
	  function isDigit( ch)
	  {	
	  		if( (ch >= '0') && ( ch <= '9'))
	  			return true
	  		else
	  			return false
	  }
	  
	  //wahr, wenn das Zeichen ein alphanumerischer Wert ist
	  function isAlnum(ch)
	  {
	  		if( (isAlpha(ch))|| (isDigit(ch)))
	  			return true
	  		else
	  			return false
	  }
	  
	  //wahr wenn es sich bei dem Zeichen um einen Buchstaben handelt
	  function isAlpha(ch)
	  {
	  	if (((ch >='a') && (ch <='z'))||((ch >='A') && (ch <='Z'))
	  		return true
	  	else
	  		return false
	  }

