/**
 * email.js
 * Este arquivo faz as verificações do campo e-mail.
 * Para isso a chamada que vai dentro do <imput/> deve ser
 *
 * onKeyPress="JavaScript: return validaEmail(event);" onblur="JavaScript: verificaEmail(this);"
 *
 * Estas são as 3 formas de chamar a verificação para um campo de e-mail
 *
 * Ex. 1: <input type="text" name="email" onKeyPress="JavaScript: return validaEmail(event);" onblur="JavaScript: verificaEmail(this);">
 * Ex. 2: <input type="text" name="email" onKeyPress="JavaScript: return validaEmail(event);" onblur="JavaScript: verificaEmail(this,'#00FF00');">
 * Ex. 3: <input type="text" name="email" onKeyPress="JavaScript: return validaEmail(event);" onblur="JavaScript: verificaEmail(this,'#00FF00', '#000000');">
 *
 * A função verificaEmail pode receber até 3 parâmetros sendo que o primeiro é
 * obrigatório e deve ser sempre a variável 'this', caso este campo não seja
 * preenchido aparecera um alerta e a verificação será abortada. O segundo e
 * terceiro campos são opcionais, caso não sejam preenchidos a cor do campo e da
 * letra serão as cores defaul de alerta corCampo = '#FF0000' corLetra = '#FFFFFF',
 * para estes dois campos devem ser inseridos as cores no formato hexadecimal
 * precedidos pelo simbolo '#'.
 *
 * A função validaEmail só recebe 1 parâmetro e este é obrigatório e deve ser
 * sempre a variável 'event', caso este campo não seja preenchido aparecera um
 * alerta e a verificação será abortada.
 *
 * A função caracteres é uma função interna.
 */


function verificaEmail(email, corCampo, corLetra){
    
    mensagem = 'ATENÇÃO!\n\n';
    erro = false;

    if(!email){
        mensagem += 'Erro grave, contate seu webmaster!';
        erro = true;
    }else{

        if(!corCampo) corCampo = '#FF0000';

        if(!corLetra) corLetra = '#FFFFFF';

        if (email.value == '') {
            mensagem += 'E-mail não preenchido!';
            erro = true;
        }else{
            prim = email.value.indexOf('@');
            if(email.value.indexOf('@') < 2){
                mensagem += 'O e-mail informado parece não estar correto.';
                erro = true;
            }else
            if(email.value.indexOf('@',prim + 1) != -1) {
                mensagem += 'O e-mail informado parece não estar correto.';
                erro = true;
            }else
            if(email.value.indexOf('.') < 1) {
                mensagem += 'O e-mail informado parece não estar correto.';
                erro = true;
            }else
            if(email.value.indexOf(' ') != -1) {
                mensagem = 'O e-mail informado parece não estar correto.';
                erro = true;
            }else
            if(email.value.indexOf('zipmeil.com') > 0) {
                mensagem += 'O e-mail informado parece não estar correto.';
                erro = true;
            }else
            if(email.value.indexOf('hotmeil.com') > 0) {
                mensagem += 'O e-mail informado parece não estar correto.';
                erro = true;
            }else
            if(email.value.indexOf('.@') > 0) {
                mensagem += 'O e-mail informado está incorreto.\nExiste um "." seguido do pelo "@".';
                erro = true;
            }else
            if(email.value.indexOf('@.') > 0) {
                mensagem += 'O e-mail informado está incorreto.\nExiste um "@" seguido do de um ".".';
                erro = true;
            }else
            if(email.value.indexOf(".com.br.") > 0) {
                mensagem += 'O e-mail informado está incorreto.\nExiste um "." no final do e-mail.';
                erro = true;
            }else
            if(email.value.indexOf("/") > 0) {
                mensagem += 'O e-mail informado está incorreto.\nContém uma "/".';
                erro = true;
            }else
            if(email.value.indexOf("[") > 0) {
                mensagem += 'O e-mail informado está incorreto.\nContém uma "[".';
                erro = true;
            }else
            if(email.value.indexOf("]") > 0) {
                mensagem += 'O e-mail informado está incorreto.\nContém uma "]".';
                erro = true;
            }else
            if(email.value.indexOf("(") > 0) {
                mensagem += 'O e-mail informado está incorreto.\nContém uma "(".';
                erro = true;
            }else
            if(email.value.indexOf(")") > 0) {
                mensagem += 'O e-mail informado está incorreto.\nContém uma ")".';
                erro = true;
            }else
            if(email.value.indexOf("..") > 0) {
                mensagem += 'O e-mail informado está incorreto.\nExistem dois "." seguidos.';
                erro = true;
            }
        }
    }
    if(erro){
        window.alert(mensagem);
        return false;
    }else return true;
}

function validaEmail(event) {

    if(!event){
        window.alert('ATENÇÃO!\n\nErro grave, contate seu webmaster!');
        return false;
    }else{
        enter = 13;
        space = 32;
        esc = 27;
        del = 83;
        backspace = 8;

        if(navigator.appName.indexOf('Netscape') != -1) tecla = event.which;
        else tecla = event.keyCode;

        key = String.fromCharCode(tecla);

        if(tecla == enter)
            return false;
        else if(tecla == backspace)
            return true;
        else if(tecla == space)
            return false;
        else if(tecla == esc)
            return false;
        else if(tecla == del)
            return true;

        return caracteres(key);
    }
}

function caracteres(caracter){
    validos = '0123456789abcdefghijklmnopqrstuvwxyz_-.@';
    if(validos.indexOf(caracter) == -1)
        return false;
    return true;
}