/** 
 * Retorna uma mensagem de erro caso o formato do campo não for válido.
 * Pego de "http://javascript.internet.com/forms/email-address-validation.html"
 */
function CEMAIL_isFormatoValido(textoDigitado) {
    if (textoDigitado == "") {
        return "";
    }

    var checkTLD=1;
    var emailPat=/^(.+)@(.+)$/;
    var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
    var validChars="\[^\\s" + specialChars + "\]";
    var quotedUser="(\"[^\"]*\")";
    var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
    var atom=validChars + '+';
    var word="(" + atom + "|" + quotedUser + ")";
    var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
    var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
    var matchArray=textoDigitado.match(emailPat);
    if (matchArray==null) {
        return 'O formato do endereço de e-mail não é válido. Verifique se ele tem o formato "usuario@dominio".';
    }
    var user=matchArray[1];
    var domain=matchArray[2];
    for (i=0; i<user.length; i++) {
        if (user.charCodeAt(i)>127) {
            return "O endereço de e-mail possui caracteres inválidos";
        }
    }
    for (i=0; i<domain.length; i++) {
        if (domain.charCodeAt(i)>127) {
            return "O endereço de e-mail possui caracteres inválidos";
        }
    }
    if (user.match(userPat)==null) {
        return 'O formato do usuário informado no endereço de e-mail não é valido.';
    }
    var IPArray=domain.match(ipDomainPat);
    if (IPArray!=null) {
        for (var i=1;i<=4;i++) {
            if (IPArray[i]>255) {
                return 'O endereço IP informado no endereço de e-mail não é valido.';
            }
        }
        return "";
    }
    var atomPat=new RegExp("^" + atom + "$");
    var domArr=domain.split(".");
    var len=domArr.length;
    for (i=0;i<len;i++) {
        if (domArr[i].search(atomPat)==-1) {
            return 'O formato do domínio informado no endereço de e-mail não é válido.';
        }
    }
    if (len<2) {
        return 'O domínio informado no endereço de e-mail deve possuir pelo menos duas partes. Por exemplo: "usuario@empresa.com.br".';
    }
    return "";
}


/**
  * verifica se o texto exitentes em "ctrl" é um e-mail válido.
  */
function CEMAIL_verificaValor(ctrl) {
    valordigitado = ctrl.value;
    //verifica se o texto é válido
    msgformato = CEMAIL_isFormatoValido(valordigitado);
    //se não for válido, mostra uma mensagem
    if (msgformato != "") {
        //alert (msgformato + msgKey("label.js.valorDigitado","") + valordigitado + '\".');
        //ctrl.focus();
        if(ctrl.className.indexOf('erro')==-1){
        	ctrl.className=ctrl.className+' erro';
        }
        return false;
    }
    if(ctrl.className.indexOf('erro')!=-1){
      	ctrl.className=ctrl.className.substring(0,ctrl.className.indexOf('erro'));
    }
    return true;
}

/** 
  * Trata a saída do campo para não permitir que o campo fique com valores inválidos 
  */
function CEMAIL_BLR(ctrl) {
    //verifica se o texto existente no campo é válido
    CEMAIL_verificaValor(ctrl);
}

function CEMAIL_MOV(ctrl, e){
	if(ctrl.className.indexOf('erro')!= -1){
		C_mostraHint(e, msgKey('label.js.emailInvalido',ctrl.value));
	}
}

function CEMAIL_MMOV(ctrl, event){
	if(ctrl.className.indexOf('erro')!= -1){
		C_moveHint(event);
	}
}

function CEMAIL_MOUT(ctrl, event){
	if(ctrl.className.indexOf('erro')!= -1){
		C_escondeHint();
	}
}
