/**
 * Função para validar um endereço de e-mail.
 * Um endereço de e-mail e considerado válido se:
 * - possuir um e somente u caracter '@', sendo que este não pode ser o primeiro nem o último caracter da string;
 * - possuir pelo penos um caracter '.' após o '@';
 * - possuir ao menos 7 caracteres (ex.: uu@dd.a);
 * - o domínio do e-mail (dd) deve conter ao menos 2 caracteres e só são permitidos caracteres de A-Z e de 1-9 no
 *   domínio e o caracter '-', sendo que não pode ocorrer somente números e, o  caracter '-' é tido como separador,
 *   não podendo aparecer na primeiro ou na última posição domímio;
 * - o nome de usuário (uu) deve conter ao menos 2 carateres, sendo de a-z, A-Z, 0-9 e os caracteres '.',
 *   '-', '_', sendo que o nome do usuário não pode começar e nem terminar com os caracter '.', '-' e '_'.
 */
function validarCampoEmail(strPAemail, bPAcampoObrigatorio, strPAnomeCampo)
{
  if(strPAemail.length==0)
  {
    if(bPAcampoObrigatorio)
    {
      strMensagemErro += "O campo " + strPAnomeCampo + " é obrigatório.\n";
      return false;
    }
  }
  else
  {
    bPAcampoObrigatorio = true;
  }

  if(bPAcampoObrigatorio)
  {
    if(strPAemail.length<7)
    {
      strMensagemErro += "O campo " + strPAnomeCampo + " não pode conter menos que 7 caracteres.\n"
      return false;
    }

    if(strPAemail.indexOf('@') == -1)
    {
      strMensagemErro += "O campo " + strPAnomeCampo + " deve conter um caracter '@'.\n";
      return false;
    }

    if(strPAemail.indexOf('.')==-1)
    {
      strMensagemErro += "O campo " + strPAnomeCampo + " deve conter um caracter '.'.\n";
      return false;
    }

    if(strPAemail.indexOf('@')==0)
    {
      strMensagemErro += "O caracter '@' não poder ser o primeiro caracter do campo "+strPAnomeCampo +".\n";
      return false;
    }

    if(strPAemail.indexOf('@')==strPAemail.length-1)
    {
      strMensagemErro += "O caracter '@' não poder ser o último caracter do campo "+strPAnomeCampo+".\n";
      return false;
    }

    if(strPAemail.indexOf('.')==0)
    {
      strMensagemErro += "O caracter '.' não poder ser o primeiro caracter do campo "+strPAnomeCampo +".\n";
      return false;
    }

    if(strPAemail.indexOf('.')==strPAemail.length-1)
    {
      strMensagemErro += "O caracter '.' não poder ser o último caracter do campo "+strPAnomeCampo +".\n";
      return false;
    }

    strNomeUsuario = strPAemail.substr(0, strPAemail.indexOf('@'));
    strNomeUsuario = strNomeUsuario.toLowerCase();
    strDominio = strPAemail.substr(strPAemail.indexOf('@')+1);
    strDominio = strDominio.toLowerCase();

    /**
     * validando o nome do usuário
     */
    if(strNomeUsuario.charAt(0)=='-')
    {
      strMensagemErro += "O primeiro caracter do nome do campo "+ strPAnomeCampo +" não pode ser um '-'.\n";
      return false;
    }
    if(strNomeUsuario.charAt(0)=='_')
    {
      strMensagemErro += "O primeiro caracter do nome do usuário no campo "+ strPAnomeCampo +" não pode ser um '_'.\n";
      return false;
    }
    if(strNomeUsuario.charAt(0)=='.')
    {
      strMensagemErro += "O primeiro caracter do nome do usuário no campo "+ strPAnomeCampo +" não pode ser um '.'.\n";
      return false;
    }

    for(i=0; i<strNomeUsuario.length; i++)
    {
      if((strNomeUsuario.charAt(i)<'a'  ||  strNomeUsuario.charAt(i)>'z') && strNomeUsuario.charAt(i)!='_' && strNomeUsuario.charAt(i)!='-' && strNomeUsuario.charAt(i)!='.' && (strNomeUsuario.charAt(i)<'0'  ||  strNomeUsuario.charAt(i)>'9'))
      {
        strMensagemErro += "o nome do usuario no campo "+ strPAnomeCampo +" deve conter somente os caracter  a-z, A-Z, 0-9, '.', '-' ou '_'. \n"
        return false;
      }
    }

    /**
     * validando o dominio
     */
    if(strDominio.indexOf('.')==-1)
    {
      strMensagemErro += "Após o caracter '@' deve existir ao menos um caracter '.' no campo "+ strPAnomeCampo +".\n";
      return false;
    }
    for(i=0; i<strDominio.length; i++)
    {
      if(strDominio.charAt(i)=='.')
      {
        if(i<2)
        {
          strMensagemErro += "O caracter '.' não pode estar na posição "+(i+1) +" após o caracter '@' no campo "+ strPAnomeCampo +".\n";
          return false;
        }
        if(i==strDominio.length-1)
        {
          strMensagemErro += "O caracter '.' não pode ser o último caracter do campo "+ strPAnomeCampo +".\n";
          return false;
        }
        if((i+1)<strDominio.length && strDominio.charAt(i+1)=='.')
        {
          strMensagemErro += "Não pode existir dois caracteres '.' seguidos após o caracter '@' no campo "+ strPAnomeCampo +".\n";
          return false;
        }
        if((i+1)<strDominio.length && strDominio.charAt(i+1)=='-')
        {
          strMensagemErro += "Após o '@' não pode existir um caracter '-' logo após o '.' no campo "+ strPAnomeCampo +".\n";
          return false;
        }
      }
      else if(strDominio.charAt(i)=='-')
      {
        if(i==0)
        {
          strMensagem += "O caracter '-' não pode estar na posição "+(i+1) +" após o caracter '@' no campo "+ strPAnomeCampo +".\n";
          return false;
        }
        if(i==strDominio.length-1)
        {
          strMensagemErro += "O caracter '-' não pode ser o último caracter do campor "+ strPanomeCampo +".\n";
          return false;
        }
        if((i+1)<strDominio.length && strDominio.charAt(i+1)=='-')
        {
          strMensagemErro += "Não pode existir dois caracteres '-' seguidos após o caracter '@' no campo "+ strPAnomeCampo +".\n";
          return false;
        }
        if((i+1)<strDominio.length && strDominio.charAt(i+1)=='.')
        {
          strMensagemErro += "Após o '@'não pode existir um caracter '.' logo após o '-' no campo "+strPAnomeCampo +".\n";
          return false;
        }
      }
      else if((strDominio.charAt(i)<'a' || strDominio.charAt(i)>'z') && (strNomeUsuario.charAt(i)<'0'  ||  strNomeUsuario.charAt(i)>'9'))
      {
        strMensagemErro += "Após o caracter '@' só pode existir os caracteres a-z, A-Z, '.' e '-' no campo "+ strPAnomeCampo +".\n";
        return false;
      }
    }
  }
  return true;
}
