/* 
	Origem: boi.com.br
	Script: validacaoForm.js Em: 07/12/2006 09:05 - Anderson Zanardo Dias
	Funcao: Funcoes de validacao de formularios e mascaras para campos
*/

var msgNome = "O campo NOME deve ser preenchido.\n";
var msgEmail = "O campo E-MAIL deve ser preenchido com um endereço válido.\n";
var msgTelefone = "O campo TELEFONE deve ser preenchido no formato (99)9999-9999.\n";
var msgCidade = "O campo CIDADE deve ser preenchido.\n";

/* 
	Funcao: Valida um formulario de e-mail pre-estabelecido
	Como usar:
		<form action="#" method="post" name="contatoForm" id="contatoForm" onSubmit="return validaContato();">
		ou como chamada validaContato() dentro de outra funcao.
*/
function validaContato()
{
	var corOriginal = "#F0F0F0";
	var corErro = "#FBB3B3";
/*	document.enviar_email.nome.style.background = corOriginal;
	document.enviar_email.email.style.background = corOriginal;
	document.enviar_email.telefone_residencia.style.background = corOriginal;
	document.enviar_email.cidade.style.background = corOriginal;*/
	var strTelefone = document.enviar_email.telefone_residencia.value;
	var erro = 0;
	var msgErro = "Atenção:\n\n";
	var campoNome = 0;
	var campoEmail;
	var campoTelefone;
	var campoCidade;
	if (document.enviar_email.nome.value == null || document.enviar_email.nome.value == "") {
		msgErro = msgErro +  msgNome;
		erro = 1;
		campoNome = 1;
		/*document.enviar_email.nome.style.background = corErro;*/
	}	
	if (eEmail(document.enviar_email.email.value) == false ||
				document.enviar_email.email.value == null ||
				document.enviar_email.email.value == "") {
		msgErro = msgErro +  msgEmail;
		erro = 1;
		campoEmail = 1;
		/*document.enviar_email.email.style.background = corErro;*/
	}
	if (document.enviar_email.telefone_residencia.value == null|| 
		document.enviar_email.telefone_residencia.value == "" ||
		strTelefone.length != 13) {
		msgErro = msgErro +  msgTelefone;
		erro = 1;
		campoTelefone = 1;
		/* document.enviar_email.telefone_residencia.style.background = corErro; */
	}
	if (document.enviar_email.cidade.value == null ||	document.enviar_email.cidade.value == "") {
		msgErro = msgErro +  msgCidade;
		erro = 1;
		campoCidade = 1;
		/*document.enviar_email.cidade.style.background = corErro;*/		
	}	
	/*
		Chama o método submit do formulario enviar_email do ../detalhe_classificado.php
	*/
	if (erro == 0) document.enviar_email.submit();	
	if (erro == 1) {
		alert(msgErro);
		if (campoNome == 1) {
			document.enviar_email.nome.focus();
		} else {
			if (campoEmail == 1) {
				document.enviar_email.email.focus();
			} else {
				if (campoTelefone == 1) {
					document.enviar_email.telefone_residencia.focus();
				} else {
					if (campoCidade == 1)
						document.enviar_email.cidade.focus();
				}
			}
		}
	}
}

/* ----- VALIDACOES DE FORMATOS ----- */
/* 
	Funcao: Verifica se eh um digito valido, apenas numeros positivos e sem sinal
	Como usar:
		<form action="#" method="post" name="contatoForm" id="contatoForm" onSubmit="return eDigito();">
		ou como chamada eDigito() dentro de outra funcao.
*/
function eDigito(pStr)
{
	var reDigits = /^\d+$/;
	if (reDigits.test(pStr)) {
		return true; // e digito
	} else if (pStr != null && pStr != "") {
		return false; // nao e digito
	}
}

/* 
	Funcao: Validacao de e-mail permitindo letra, dígito, sublinhado e hífen
	Como usar:
		<form action="#" method="post" name="contatoForm" id="contatoForm" onSubmit="return eEmail('eMail');">
		ou como chamada eEmail() dentro de outra funcao.
*/
function eEmail(pStr)
{
	var reEmail = /^[\w-]+(\.[\w-]+)*@(([\w-]{2,63}\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
	if (reEmail.test(pStr)) {
		return true;
	} else if (pStr != null && pStr != "") {
		return false;
	}
}

/*
	Funcao: Marcara para formatos diversos.
	Como usar:
		Data:<input type="text" size="20" onkeypress="return txtBoxFormat(this, '99/99/9999', event);">
		RG:<input type="text" size="20" onkeypress="return txtBoxFormat(this, '99.999.999-9', event);">
		Telefone:<input type="text" size="20" onkeypress="return txtBoxFormat(this, '(99)9999-9999', event);">
		Código:<input type="text" size="20" onkeypress="return mascaraFormat(this, '99-999', event);">   
*/

function mascaraFormat(objeto, sMask, evtKeyPress) {
    var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;

    if(document.all) { // Internet Explorer
        nTecla = evtKeyPress.keyCode;
    } else if(document.layers) { // Nestcape
        nTecla = evtKeyPress.which;
    } else {
        nTecla = evtKeyPress.which;
        if (nTecla == 8) {
           return true;
        }
    }

	sValue = objeto.value;

    // Limpa todos os caracteres de formatação que já estiverem no campo.
    sValue = sValue.toString().replace( "-", "" );
    sValue = sValue.toString().replace( "-", "" );
    sValue = sValue.toString().replace( ".", "" );
    sValue = sValue.toString().replace( ".", "" );
    sValue = sValue.toString().replace( "/", "" );
    sValue = sValue.toString().replace( "/", "" );
    sValue = sValue.toString().replace( ":", "" );
    sValue = sValue.toString().replace( ":", "" );
    sValue = sValue.toString().replace( "(", "" );
    sValue = sValue.toString().replace( "(", "" );
    sValue = sValue.toString().replace( ")", "" );
    sValue = sValue.toString().replace( ")", "" );
    sValue = sValue.toString().replace( " ", "" );
    sValue = sValue.toString().replace( " ", "" );
    fldLen = sValue.length;
    mskLen = sMask.length;

    i = 0;
    nCount = 0;
    sCod = "";
    mskLen = fldLen;

	while (i <= mskLen) {
		bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/") || (sMask.charAt(i) == ":"))
		bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))
		if (bolMask) {
			sCod += sMask.charAt(i);
			mskLen++;
		} else {
			sCod += sValue.charAt(nCount);
			nCount++;
		}
		i++;
	}

    objeto.value = sCod;

	if (nTecla != 8) { // backspace
		if (sMask.charAt(i-1) == "9") { // apenas números...
			return ((nTecla > 47) && (nTecla < 58)); // números de 0 a 9
		} else { // qualquer caracter...
			return true;
		} 
	} else {
		return true;
	}
}

