//======================================
//Nome: GenJsValidateEmail
//Linguagem: JavaScript
//Descrição: Essa função recebe um e-mail e o valida respeitando os parâmetros passados
//
//Autor: Equipe Biblioteca Marlin
//
//Data: 12/06/2002
//
//Parâmetros de entrada:
//	- pStrFormattedR	=> E-mail de retorno sem espaços na extremidades
//	- pStrToValidate	=> E-mail a ser validado
//	- pIntTamMax		=> Tamanho máximo do e-mail
//	- pIntOptional		=> Se o e-mail é opcional ou obrigatório
//								0 - obrigatório
//								1 - opcional
//	- 
//Retorno: Código de erro
//
//Informações adicionais:
//	+ Funções:
//		- FncJsVerifyIntParameter(pParam, pIntDefValue)
//		-
//	+ Includes:
//		-
//	+ Objetos:
//		-
//	+ Stored Procedures:
//		-
//Historico Alteracao:
//	- 12/06/2002 Thyago Consort
//	-
//======================================
function FncJsVerifyIntParameter(pIntParameter, pIntDefValue) {
  if (pIntParameter[0] == null) {
      pIntParameter[0] = pIntDefValue;
  } 
  pIntParameter[0] = parseInt(pIntParameter[0],10);
  if (isNaN(pIntParameter[0])) {
     return false;
  }

  return true;
}

function GenJsValidateEmail(pStrFormattedR, pStrEmail,pIntTamMax,pIntOptional){
	var lStrFormatted;
	var p = new Array;
	
	lStrFormatted = pStrEmail;
	lStrFormatted = lStrFormatted.replace(/^\s*/, '');
	lStrFormatted = lStrFormatted.replace(/\s*$/, '');
	
	pStrFormattedR[0] = pStrEmail;
	
	//Verificando parâmetros de entrada e valores default
	p[0] = pIntTamMax;
	if (!FncJsVerifyIntParameter(p,0)) {
 		return -11;
        }
	pIntTamMax = p[0];
	
	p[0] = pIntOptional;
	if (!FncJsVerifyIntParameter(p,1)) {
 		return -11;
        }  
	pIntOptional = p[0];
	
	if (lStrFormatted == "") {
            if (pIntOptional == 0) { 
		return -240;
            }
            return 0;
        }
	
	
	//Leitura do comando de validação
	//1	\w+				=> 1 ou mais caracteres inclusos em a-z,A-Z,0-9 + {'_'}
	//2	[\.-]?			=> apenas 1 caracter incluso em {'.','-'}
	//3	([\.-]?\w)*		=> 0 ou mais grupos de caracteres do tipo 2 seguido do tipo \w
	//4	(\.\w{2,3})+	=> 1 ou mais grupos de 2 ou 3 caracteres do tipo \w no fim da string
	
	if (! (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(lStrFormatted)) ) {
		return -241;
        } 
	if ((pIntTamMax > 0) && (lStrFormatted.length > pIntTamMax)) {
		return -242
        }  
	
	pStrFormattedR[0] = lStrFormatted;
	
	return 0;
}