function inputError(text)
{
 alert(text);
 document.forms["newsletter"].elements["EMail"].focus();
}

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;
}


