﻿/**
 *
 */
var errMsgArr = new Array(false,false,false,false,false,false,false,false,false,false); 
var Msg = false;
/*****************************************************/  
/*****************************************************/  


function checkFormular()  // final check when Submitbutton is pressed
{
  var errSwitch = false;

  if(!check_vorname())  errSwitch = true;
  if(!check_name())     errSwitch = true;
  if(!check_strasse())  errSwitch = true;
  if(!check_nummer())   errSwitch = true;
  if(!check_plz())      errSwitch = true;
  if(!check_ort())      errSwitch = true;
  if(!check_tel())      errSwitch = true;
  if(!check_email())    errSwitch = true;
  if(!check_quali())    errSwitch = true;
  if(!check_status())   errSwitch = true;

  if(errSwitch==true)
  {
    return false;
  }
  else 
  {
    return true;
  }

return true; 
}

/*****************************************************/     

function vis(element)   // sets given elements on visible,for example the Errormessage
{
  document.getElementById(element).style.display='inline';
}

/*****************************************************/     

function nvis(element)	// sets given elements on not visible,for example the Errormessage
{	
  document.getElementById(element).style.display='none';
}

/**
 * Die Funktion <i>testErrMsg</i> .
 *
 * @author Carsten Mahlow
 *
 */
function testErrMsg()
{
  var errSwitch=false; 
   
  for(var i=0;i<errMsgArr.length;i++)
  if(errMsgArr[i]==true)errSwitch=true;

  if(errSwitch)
  {
    vis('errMsg');
  }  
  else 
  {
    nvis('errMsg');
  }
}  

/**
 * Die Funktion <i>doIt</i> setzt den ersten Buchstabe gross.
 *
 * @param string id
 * @author Carsten Mahlow
 *
 */
function doIt(Text) 
{
  lowerText = document.getElementById(Text).value.toLowerCase();
  laenge = document.getElementById(Text).value.length;
  firstLetter = lowerText.substr(0,1).toUpperCase();
  newText = firstLetter + lowerText.substr(1,laenge-1);
  document.getElementById(Text).value = newText;
}

/**
 * Die Funktion <i>check_vorname</i> ueberprueft den eingebenen Vorname. 
 *
 * @param string id 
 * @author Carsten Mahlow
 * 
 */
function check_vorname(id)                                        
{
  nvis('T_VornameErr');        
  nvis('errVorname'); 

  var vorname = document.formular.vorname.value;
  var validLetters = /^[A-ZÖÜÄ]?[a-zöüäß]+((-| )[A-ZÖÜÄ]?[a-zöüäß]+)?$/;            
  
  if(vorname=="")
  { 
    errMsgArr[1]=true;
    vis('T_VornameErr'); 
    vis('errMsg'); 
    return false; 
  }
  else 
  {
    errMsgArr[1]=false;
  }
  testErrMsg(); 
  if(!validLetters.test(vorname))
  {
  	errMsgArr[1]=true; 
  	vis('T_VornameErr'); 
  	vis('errMsg');
  	vis('errVorname'); 
  	return false; 
  }
  else 
  {  
    errMsgArr[1]=false;
    doIt(id);
  }
  testErrMsg();

  return true; 
}

/*****************************************************/

function check_name(id)
{
  nvis('T_NameErr');	// nearly the same procedure as in checkname
  nvis('errName'); 
 
  name =  document.formular.name.value;         

  var validLetters =/^[A-ZÖÜÄ]?[a-zöüäß]+((-| )[A-ZÖÜÄ]?[a-zöüäß]+)?$/; 

  if(name=="")
  {
    errMsgArr[2]=true; 
    vis('T_NameErr'); 
    vis('errMsg'); 
    return false; }
  else errMsgArr[2]=false;   

  testErrMsg();  

  if(!validLetters.test(name))
  {
    errMsgArr[1]=true; 
    vis('T_NameErr'); 
    vis('errMsg');
    vis('errName');  
    return false; 
  }
  else 
  {  
    errMsgArr[2]=false;
    doIt(id);
  }  

  testErrMsg();  
 
  return true;
}

/****************************************************/

function check_strasse(id)
{
 nvis('T_StrasseErr');
 nvis('errStrasse');
  
 var strasse = document.formular.strasse.value;         

 var validAddress =/^[A-ZÖÜÄ]?[a-zöüäß]+((-| )[A-ZÖÜÄ]?[a-zöüäß]+)?\.?$/;

 var errSwitch=false;   

 if(strasse=="")
 {
   errMsgArr[4]=true; 
   vis('T_StrasseErr'); 
   vis('errMsg'); 
   return false; 
 }
 else errMsgArr[4]=false; 

 testErrMsg();  

 if(!validAddress.test(strasse))  
 {
   errMsgArr[4]=true; 
   vis('T_StrasseErr'); 
   vis('errMsg');
   vis('errStrasse');
   return false; 
 }
  else 
  {  
    errMsgArr[4]=false;
    doIt(id);
  }

 testErrMsg();  

 return true;
}

/**************************************************/

function check_nummer()
{
  nvis('T_NummerErr');
    
  var nummer = document.formular.nummer.value;         
 
  var validNumbers =/^([0-9]{1,4})([a-z]|[A-Z])?$/;

  var errSwitch=false;
  
  if(nummer=="")
  { 
    errMsgArr[5]=true;  
    vis('T_NummerErr'); 
    vis('errMsg'); 
    return false; 
  }
  else errMsgArr[5]=false;  

  testErrMsg();  

  if(!validNumbers.test(nummer))
  {
    errMsgArr[5]=true; 
    vis('T_NummerErr');  
    vis('errMsg'); 
    return false;
  }
  else errMsgArr[5]=false;

  testErrMsg();  

  return true;

}

/**************************************************/

function check_plz()
{
  nvis('T_PlzErr');
  
  var plz = document.formular.plz.value;         
  
  var validNumbers =/^[0-9]{5}$/;

  var errSwitch=true;  

  if(plz=="")
  {
    errMsgArr[6]=true; 
    vis('T_PlzErr'); 
    vis('errMsg'); 
    return false; 
  }
  else errMsgArr[6]=false;   

  testErrMsg();  

  if(!validNumbers.test(plz))   
  {
    errMsgArr[6]=true; 
    vis('errMsg');  
    vis('T_PlzErr'); 
    return false;
  }
  else errMsgArr[6]=false;

  testErrMsg();  

  return true;
}

/***************************************************/

function check_ort(id)
{

  nvis('T_OrtErr');
  nvis('errOrt');
  
  var ort = document.formular.ort.value;         

  var validAddress =/^[A-ZÖÜÄ/\s*/]?[a-zöüäß/\s*/]+((-| )[A-ZÖÜÄ/\s*/]?[a-zöüäß/\s*/]+)?$/;
  
  if(ort=="")
  {
    errMsgArr[7]=true; 
    vis('T_OrtErr'); 
    vis('errMsg'); 
    return false; 
  }
  else errMsgArr[7]=false;

  testErrMsg();  

  if(!validAddress.test(ort))
  {
    errMsgArr[7]=true;
    vis('T_OrtErr'); 
    vis('errMsg');
    vis('errOrt'); 
    return false; 
  }
  else 
  {  
    errMsgArr[7]=false;
    doIt(id);
  } 

  testErrMsg();  

  return true;
}

/****************************************************/

function check_tel()
{
  nvis('T_TelErr');
     
  var tel =  document.formular.telefon.value;         

  if(tel=="") return true;  // only checks on a valid telefonnumber 
       						// if user wrote something in the field
  var validTel = /^[\d\/\\\s+-]+$/;
  
  if(!validTel.test(tel))
  { 
    errMsgArr[8]=true; 
    vis('T_TelErr'); 
    vis('errMsg'); 
    return false; 
  }
  else errMsgArr[8]=false;  

  testErrMsg();  
 
  return true;
}

/****************************************************/

function check_email()
{
  nvis('T_EmailErr');
  
  nvis('errEmail');

  var email =  document.formular.email.value;         

  if((email=="")) 
  { 
    errMsgArr[9]=true; 
    vis('T_EmailErr');
    vis('errEmail'); 
    return false; 
  }
  else errMsgArr[9]=false;

  testErrMsg();  

  if(!emailtest(email)) 
  { 
    vis('errEmail'); 
    return false; 
  }
  else  nvis('errEmail');
  
  return true;
}

/*****************************************************/

function check_quali()
{
  nvis('T_QualiErr');	// nearly the same procedure as in checkname
 
  quali =  document.formular.quali.value;         

  if(quali=="NULL")
  {
    errMsgArr[2]=true; 
    vis('T_QualiErr'); 
    vis('errMsg'); 
    return false; }
  else errMsgArr[2]=false;   

  testErrMsg();  
 
  return true;
}

function check_status()
{
  nvis('T_StatusErr');	// nearly the same procedure as in checkname
 
  status =  document.formular.status.value;         

  if(status=="NULL")
  {
    errMsgArr[2]=true; 
    vis('T_StatusErr'); 
    vis('errMsg'); 
    return false; }
  else errMsgArr[2]=false;   

  testErrMsg();  
 
  return true;
}

/***********************************************/

/*****************************************************/

function emailtest(email)  // check if it is a valid Emailaddresse
{                          // could be a regex

   var counter=0;
   var indexEd=0;
   var checkField=email;
   var invalidCharacters=/[<>",:;()\[\]\/]/;  //vorher m?ssen Ip un d "...."@.. raus
   var lastPoint=0;
   var toplevel="";
   var pointError=false;
   var regIp=/\d\d?\d?\d?.\d\d?\d?\d?.\d\d?\d?\d?.\d\d?\d?\d?/;
   var validLetters=/[a-zA-Z]/;
   var ipAddress="";

//-----Filters not valid Asciisigns ----------------------------------------------

   for(var i=0;i<email.length;i++)                    
   if((email.charAt(i)<'!')||(email.charAt(i)>'~'))  return false;

//-----------Where is the @-sign -------------------------------------------------

   for(var i=0;i<email.length;i++)
   {
     if(email.charAt(i)=='@')
     {
        indexEd=i;
        counter++;
	if(counter>1) break;
     }
   }

   if(counter!=1)
   {  
        return false;
   }

//--------------with "..." markedup segments will not be checked------------------

   if(email.charAt(0)=='"')
   if(email.charAt(indexEd-1)=='"')
   {
      checkField="";
      for(var i=indexEd+1;i<email.length;i++)
      {
         checkField+=email.charAt(i);
      }
   }

   if(email.charAt(indexEd+1)=='[')
   if(email.charAt(email.length-1)==']')
   {
      for(var i=indexEd+2;i<(email.length-1);i++)
      ipAddress+=email.charAt(i);

      checkField="";
      for(var i=0;i<(indexEd);i++)
      checkField+=email.charAt(i);
 
      if(!ipCheck(ipAddress)) return false;      
   }

   //alert("Check Field: "+checkField);
   if(invalidCharacters.test(checkField))  return false;

//--------------------------------------------------------------------------------

if( email.charAt(0)==".")pointError=true;
   if((email.charAt(indexEd-1)==".")&&(indexEd!=0))pointError=true;
   if((email.charAt(indexEd+1)==".")&&(indexEd!=0))pointError=true;
   if( email.charAt(email.length-1)==".")pointError=true;

   if(!pointError)
   for(var i=1;i<email.length;i++)
   {
     if((email.charAt(i)==".")&&
        (email.charAt(i-1)=="."))
     {
       pointError=true;
       break;
     }
   }

   if(pointError) return false;


//----------------Topleveldomain --------------------------------------------------

if(ipAddress=="")
{
   for(var i=0;i<email.length;i++)
   {
      toplevel+=email.charAt(i);
      if(email.charAt(i)=='.')
      {
        lastPoint=i;
	toplevel="";
      }
   }

   if(toplevel.length>2)
   switch(toplevel)
   {
     case "com": case "net": case "org":
     case "edu": case "int": case "mil":
     case "gov": case "arpa":case "biz":
     case "aero":case "name":case "coop":
     case "info":case "museum":
     case "pro": return true;break;
     default: //alert("Ungueltige Topleveldomain");
              return false;
              break;
   }

   if(email.length-(lastPoint+1)==2)
   if(validLetters.test(toplevel.charAt(0))  )
   if(validLetters.test(toplevel.charAt(1))  )
   return true;
   
   return false;
}

return true;  

}

/*****************************************************/

function ipCheck(ip)                                      //if it is an IP-Addresse,is it valid?
{
 var validIpNumbers=/[0-9]/;
 var numberOfPoints =0;
 var numberOfNumbers=0;
 var ipOk=true; 
 
 if(ip.charAt(ip.length-1)=='.') ipOk=false;
 else
 for(var i=0;i<ip.length;i++)
 {
   if(!validIpNumbers.test(ip.charAt(i)))
   if(ip.charAt(i)!='.'){ipOk=false;break;} 
  
   if((ip.charAt(i)=='.')&&(numberOfNumbers==0)) 
   {ipOk=false;break;} 
 
   if(ip.charAt(i)=='.'){numberOfPoints++;numberOfNumbers=0}
   else numberOfNumbers++;
  
   if((numberOfNumbers>3)||(numberOfPoints>3))
   {ipOk=false;break;} 
 }
  
 if(numberOfPoints!=3) ipOk=false;
 
 if(ipOk) return true

 return false;

}