//---------------------------------------------------
//Altera cor de fundo dos divs que contém os campos quando ele recebe o foco.
//
//A variavel sCorCampoAcesso tem a cor de fundo quando um campo recebe foco.
//A variavel sCorCampoApagado guarda a cor de fundo que o campo tinha antes de receber foco.
//AcendeCampo seta a cor de de fundo quando o campo recebe o foco
//ApagaCampo volta a cor de fundo anterior

var sCorCampoAceso = "#FFFF8B"; //Cor de fundo quando o campo está em foco
var sCorCampoApagado; //Cor de fundo que o campo tinha antes de estar em foco

function AcendeCampo(campo){
  sCorCampoApagado = campo.parentNode.style.backgroundColor;
  campo.parentNode.style.backgroundColor = sCorCampoAceso;
}

function ApagaCampo(campo){
  campo.parentNode.style.backgroundColor = sCorCampoApagado;
}
//---------------------------------------------------


//---------------------------------------------------
//Verifica se um campo origatorio foi preenchido.
// Retorna: false - Se o campo foi preenchido
//          true - Se o campo nao foi preenchido. Apresenta mensagem de erro em alert nesse caso.
function ValidaCampoObrigatorioTexto(campo, sNomeCampo){
	campo.value = Trim(campo.value);
	if(campo.value == "")
		return ErroMensagem(campo,"O campo " + sNomeCampo + " é obrigatório.\n Por favor, preencha-o.");
	else return false;
}

//---------------------------------------------------
//Verifica se um campo radio teve uma opcao selecionada.
// Retorna: false - Se pelo menos uma opcao foi selecionada
//          true - Se nenhuma opcao foi selecionada. Apresenta mensagem de erro em alert nesse caso.
function ValidaCampoObrigatorioRadio(campo,sNomeCampo){
	nOpcaoSelecionada = -1;
	i = 0;
	while(i<campo.length && nOpcaoSelecionada == -1)
		if (campo[i].checked)
			nOpcaoSelecionada = i;
		else
			i++;
	
if (nOpcaoSelecionada == -1)
		return ErroMensagem(campo[0],"O campo " + sNomeCampo + " é obrigatório.\n Por favor, escolha uma das opções.");
	else return false;
}
//---------------------------------------------------
//Verifica se um campo combo teve uma opcao selecionada diferente da primeira opcao.
// Retorna: false - Se pelo menos uma opcao foi selecionada
//          true - Se nenhuma opcao foi selecionada. Apresenta mensagem de erro em alert nesse caso.
function ValidaCampoObrigatorioCombo(campo,sNomeCampo){
if (campo.selectedIndex == 0)
		return ErroMensagem(campo,"O campo " + sNomeCampo + " é obrigatório.\n Por favor, escolha uma das opções.");
	else return false;
}

//---------------------------------------------------
//Verifica se um campo tem um endereco de e-mail valido.
// Retorna: false - Se o campo tem um endereco de e-mail valido
//          true - Se o campo nao tem um endereco de e-mail valido. Apresenta mensagem de erro em alert nesse caso.
function ValidaEmail(campo, sNomeCampo){
	campo.value = Trim(campo.value);
	if(isEmail(campo.value) == false)
		return ErroMensagem(campo,"O valor no campo " + sNomeCampo + " não é um endereço de e-mail válido.\n Por favor, corrija");
	else return false;
}

//---------------------------------------------------
//Verifica se um campo tem um valor numerico.
// Retorna: false - Se o campo tem um valor numerico
//          true - Se o campo nao tem um valor numerico. Apresenta mensagem de erro em alert nesse caso.
function ValidaNumero(campo, sNomeCampo){
	campo.value = Trim(campo.value);
	if(isNumber(campo.value) == false)
		return ErroMensagem(campo,"O valor no campo " + sNomeCampo + " não é um número.\n Por favor, corrija");
	else return false;
}

//---------------------------------------------------
//Apresenta uma mensagem de erro
function ErroMensagem(campo,sMensagem){
	alert("ERRO!\n" + sMensagem);
	campo.focus();
	return true;
}

//---------------------------------------------------
//Remove os espaços no inicio e no fim de uma string.
//Retorna: a string sem os espaços e altera o texto da string.
function Trim(sTexto){
	return sTexto.replace(/(^\s+)|(\s+$)/g, ''); 
}

//---------------------------------------------------
//Retorna true se sEmail for um endereço de e-mail válido.
//Senao retorna falso
function isEmail(sEmail){
   var    arroba = "@",
          ponto = ".",
         posponto = 0,
         posarroba = 0;
   
    if (sEmail =="") return false;
   
    for (var indice = 0; indice < sEmail.length; indice++){
       if (sEmail.charAt(indice) == arroba) {
          posarroba = indice;
            break;
       }
    }
   
   for (var indice = posarroba; indice < sEmail.length; indice++){
      if (sEmail.charAt(indice) == ponto) {
         posponto = indice;
           break;
      }
   }
   if (posponto == 0 || posarroba == 0) return false;
   if (posponto == (posarroba + 1)) return false;
   if ((posponto + 1) == sEmail.length) return false;
   return true;
} 

//---------------------------------------------------
//Retorna true se sNumero for um numero.
//Senao retorna falso
function isNumber(sNumero){
   var CaractereInvalido = false;

   for (i=0; i < sNumero.length; i++){
      var Caractere = sNumero.charAt(i);
      if(Caractere != "." && Caractere != "," && Caractere != "-"){
         if (isNaN(parseInt(Caractere))) CaractereInvalido = true;
      }
   }
   return !CaractereInvalido;
} 

//---------------------------------------------------
//Torna um campo visivel no formulario. 
//Para isso ele muda o style.visibility do div que o contem para visible
function MostraCampo(campo){
	campo.parentNode.style.display = "block";
}

//---------------------------------------------------
//Escondea um campo no formulario. 
//Para isso ele muda o style.visibility do div que o contem para hidden
function EscondeCampo(campo){
		campo.parentNode.style.display = "none";
}

//---------------------------------------------------
//Torna um campo visivel ou invisivel no formulario conforme um valor passado
//sValor é igual a sValorMostrar o campo eh apresentado. Senao ele fica invisivel
function ApresentaCampo(campo,sValor,sValorMostrar){
	if (sValor == sValorMostrar)
		MostraCampo(campo);
	else
		EscondeCampo(campo);
}