/**
 * 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{
            if(email.value.indexOf('@')==-1){mensagem+='O e-mail informado está incorreto!\nFalta o @.';erro=true;}
            else if(email.value.indexOf('@')==0){mensagem+='O e-mail informado está incorreto!\nO @ não pode ser o primeiro carácter.';erro=true;}
            else if(email.value.indexOf(' ')!=-1){mensagem+='O e-mail informado está incorreto.\nContém um espaço em branco entre os caracteres.';erro=true;}
            else if(email.value.indexOf('.')<1){mensagem+='O e-mail informado está incorreto.\nEstá faltando o ponto.';erro=true;}
            else if(email.value.indexOf('.@')>0){mensagem+='O e-mail informado está incorreto.\nExiste um ponto seguido do pelo @.';erro=true;}
            else if(email.value.indexOf('@.')>0){mensagem+='O e-mail informado está incorreto.\nExiste um @ seguido do de um ponto.';erro=true;}
            else if(email.value.indexOf('.com.br.')>0){mensagem+='O e-mail informado está incorreto.\nExiste um ponto ao 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 pontos seguidos.';erro=true;}
        }
    }
    if(erro){email.style.backgroundColor=corCampo;email.style.color=corLetra;email.focus;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;tab=9;
        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;
        else if(tecla==tab)return true;
        return caracteres(key);
    }
}

function caracteres(caracter){
    validos='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVXZ_-.@';
    if(validos.indexOf(caracter)==-1)return false;
    return true;
}