function InsertMail(mailkonto,mailserver,maildomain,text) {
 if(text=="")
  document.write('<a href="mailto:'+mailkonto+'@'+mailserver+'.'+maildomain+'">'+mailkonto+'@'+mailserver+'.'+maildomain+'</a>');
 else
  document.write('<a href="mailto:'+mailkonto+'@'+mailserver+'.'+maildomain+'">'+text+'</a>');
}

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;
 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 ;
}
