// Função para validar e formatar campos
// Função para verificar e-mail
function valida_email(email)
{
  if (!email) return false;

  var  BadChars = "*|,\":<>[]{}`\';()&$#% ";
  var  GoodChars = "@.";

  // verifica se existe algum BadChar
  for (var i = 0; i < email.length; i++)
  {
	if (BadChars.indexOf(email.charAt(i)) != -1)
	{
	  return false;
	}
  }

  // verifica se NAO existe algum GoodChar
  for (var i = 0; i < GoodChars.length; i++)
  {
	if (email.indexOf(GoodChars.charAt(i)) == -1)
	{
	  return false;
	}
  }

  // verifica se @. ou .@ (os GoodChars) estao juntos
  if (email.indexOf ('@.',0) != -1 || email.indexOf ('.@',0) != -1)
  {
	return false;
  }

  // testes ok
  return true;
}

// Função para verificar CPF
function valida_cpf(cpf)
{
  if (cpf.length != 11) // Erro Preenchimento CPF
  {
	return false;
  }
  else 
  {
	Soma = 0;
	P= 0;
	for (I = 10;I >= 2;I--)
	{
      N = cpf.substr(P,1);
      Soma = Soma + (N * I);
      P = P + 1;
	}
    D1 = 11 - (Soma % 11);
    if (D1 >= 10)
      D1 = 0;
    Soma = 0;
    P = 0;
    for (I = 11;I >= 2;I--)
    {
      N = cpf.substr(P,1);
      Soma = Soma + (N * I);
      P = P + 1;
    }
    D2 = 11 - (Soma % 11);
    if (D2 >= 10)
      D2 = 0;
    digito1 = cpf.substr(9,1);
    digito2 = cpf.substr(10,1);
    if ((digito1 == D1) && (digito2 == D2))
    {
      return true;
    }
    else 
    {
      return false;
    }
  }
}

// A medida que o campo é preenchido, o mesmo é formatado
function formata_cpf(param1,param2)
{ 
  tecla = String.fromCharCode(param2); 
  if (tecla>=0 && tecla<=9 && param1.value.length<14) 
  { 
    new_value = ""; 
    campo = eval(param1); 
    valor = campo.value; 
    for (x=0;x<valor.length;x++) 
    { 
      caracter = valor.substr(x,1); 
      if ((caracter!=".") && (caracter!="-"))
      { 
        new_value+= caracter; 
        if (new_value.length==3) 
          new_value+= "."; 
        if (new_value.length==7) 
          new_value+= ".";
        if (new_value.length==11) 
          new_value+= "-"; 
      } 
    } 
    param1.value=new_value; 
  } 
  else 
    event.returnValue = false; 
}
    
// Limpa a formatação do cpf
function limpa_formato_cpf(cpf)
{ 
  new_value = ""; 
  valor = cpf; 
  for (x=0;x<valor.length;x++) 
  { 
    caracter = valor.substr(x,1); 
    if ((caracter!=".") && (caracter!="-"))
      new_value+= caracter;  
  } 
  return new_value; 
}

// Função para verificar se é um número
function isnumber (str)
{
  ObjNumber = str
  var posicao = ObjNumber.length - 1
  var posfinal = ObjNumber.length
  var Objcaracter = ""
  var numero = true
  while (posicao >= 0 && numero)
  { 
    Objcaracter = ObjNumber.substring(posicao, posfinal)
    if (Objcaracter != "0" && Objcaracter != "1" && Objcaracter != "2" && 
        Objcaracter != "3" && Objcaracter != "4" && Objcaracter != "5" &&
        Objcaracter != "6" && Objcaracter != "7" && Objcaracter != "8" &&
        Objcaracter != "9")
      numero = false
    posicao--
    posfinal--
  } 
  return numero; 
}

// Funcao para verificar se uma string está vazia
function valida_texto_js(str) 
{ 
  if (str==null) return false
  if (str=="") return false
  return true; 
}

//verifica dados obrigatorios 
function valida_form()
{
  erro = 'ATENÇÃO: Os campos assinalados com asterisco devem ser preenchidos obrigatoriamente!\n\n';

  // ****************************************************************
  // validacao do campo nome
  // ****************************************************************
  if (form_palestra.nome.value.length < 3)
  {
	form_palestra.nome.focus();
	form_palestra.nome.select();
	alert(erro + 'Nome inválido! Preencha o campo \"Nome completo\" corretamente.');
	return false;
  }
  if (form_palestra.nome.value.indexOf(' ') == -1) 
  {
	form_palestra.nome.focus();
	form_palestra.nome.select();
	alert(erro + 'Nome inválido! Preencha o campo \"Nome completo\" com seu nome completo.');
	return false;
  }
  var searchForNumbers = /\d+/
  if (searchForNumbers.test(form_palestra.nome.value)) 
  {
	 form_palestra.nome.focus();
	 form_palestra.nome.select();
	 alert(erro + 'O campo \"Nome completo\" não aceita números! Favor informar o nome correto.');
	 return false;
  }
	  
  // ****************************************************************
  // Verifica CPF
  // ****************************************************************
  cpf_semformato = limpa_formato_cpf(form_palestra.cpf.value);
  if (!valida_cpf(cpf_semformato))
  {
    form_palestra.cpf.focus();
    form_palestra.cpf.select();
    alert(erro + "CPF inválido! Favor preencher o campo \"CPF\" corretamente!.");
    form_palestra.cpf.value = "";
    form_palestra.cpf.focus();
    return false;
  }

  // ****************************************************************
  // Verifica DDD do Telefone
  // ****************************************************************
  if (!(valida_texto_js(document.form_palestra.ddd_telefone.value)))
  {
    form_palestra.ddd_telefone.focus();
    form_palestra.ddd_telefone.select();
    alert(erro + "DDD do telefone não informado! Favor informar o ddd do telefone.");
    return false;
  } 
  // Verifica se é um ddd válido
  if (!(isnumber(document.form_palestra.ddd_telefone.value)))
  {
    form_palestra.ddd_telefone.focus();
    form_palestra.ddd_telefone.select();
    alert(erro + "DDD  do telefone inválido! Favor informar o ddd correto do telefone.");
    return false;
  }
  // Verifica se digitou o DDD completo
  ObjdddTelefone = document.form_palestra.ddd_telefone.value
  if (ObjdddTelefone.length < 2)
  {
    form_palestra.ddd_telefone.focus();
    form_palestra.ddd_telefone.select();
    alert(erro + "DDD do telefone inválido! Favor digitar todos os algarismos do DDD do telefone.");
    return false;
  }
	  
  // ****************************************************************
  // validacao do campo Telefone
  // ****************************************************************
  if (!(valida_texto_js(document.form_palestra.telefone.value)))
  {
    form_palestra.telefone.focus();
    form_palestra.telefone.select();
    alert(erro + "Telefone inválido! Favor informar o nº do telefone.");
    return false;
  }
  // Verifica se é um Telefone válido
  if (!(isnumber(document.form_palestra.telefone.value)))
  {
	form_palestra.telefone.focus();
	form_palestra.telefone.select();
	alert(erro + "Telefone inválido! Favor digitar apenas os algarismos do telefone.");
	return false;
  }
  ObjTelefone = document.form_palestra.telefone.value
  if (ObjTelefone.length < 7)
  {
    form_palestra.telefone.focus();
    form_palestra.telefone.select();
    alert(erro + "Telefone inválido! Favor digitar todos os algarismos do telefone.");
    return false;
  }
	  
  // ****************************************************************
  // Verifica DDD do celular
  // ****************************************************************
  if ((valida_texto_js(document.form_palestra.celular.value)))
  {
    if (!(valida_texto_js(document.form_palestra.ddd_celular.value)))
    {
      form_palestra.ddd_celular.focus();
      form_palestra.ddd_celular.select();
      alert("DDD do celular não informado! Favor informar o ddd do celular.");
      return false;
    } 
    // Verifica se é um ddd válido
    if (!(isnumber(document.form_palestra.ddd_celular.value)))
    {
      form_palestra.ddd_celular.focus();
      form_palestra.ddd_celular.select();
      alert("DDD  do celular inválido! Favor informar o ddd correto do celular.");
      return false;
    }
    // Verifica se digitou o DDD completo
    Objdddcelular = document.form_palestra.ddd_celular.value
    if (Objdddcelular.length < 2)
    {
      form_palestra.ddd_celular.focus();
      form_palestra.ddd_celular.select();
      alert("DDD do celular inválido! Favor digitar todos os algarismos do DDD do celular.");
      return false;
    }
  }

  // ****************************************************************
  // validacao do campo celular
  // ****************************************************************
  if ((valida_texto_js(document.form_palestra.ddd_celular.value)))
  { 
    if (!(valida_texto_js(document.form_palestra.celular.value)))
    {
      form_palestra.celular.focus();
      form_palestra.celular.select();
      alert("Celular inválido! Favor informar o nº do celular.");
      return false;
    }
    // Verifica se é um celular válido
    if (!(isnumber(document.form_palestra.celular.value)))
    {
      form_palestra.celular.focus();
      form_palestra.celular.select();
      alert("Celular inválido! Favor digitar apenas os algarismos do celular.");
      return false;
    }
    Objcelular = document.form_palestra.celular.value
    if (Objcelular.length < 7)
    {
      form_palestra.celular.focus();
      form_palestra.celular.select();
      alert("Celular inválido! Favor digitar todos os algarismos do celular.");
      return false;
    }
  }
  
  // ****************************************************************
  // validacao do campo de email
  // ****************************************************************
  if (!valida_email(form_palestra.email.value)) 
  {
	form_palestra.email.focus();
	form_palestra.email.select();
	alert(erro + "Email inválido! Favor preencher o campo \"Email\" corretamente!");
	return false;
  }
  
  // ****************************************************************
  // Verificação OK
  // ****************************************************************
  return true;
}

  
// verifica dados obrigatorios do formulário do coordenador
function valida_form_coordenador()
{
  erro = 'ATENÇÃO: Os campos assinalados com asterisco devem ser preenchidos obrigatoriamente!\n\n';
  // ****************************************************************
  // validacao do campo nome
  // ****************************************************************
  if (form_fale.nome.value.length < 3)
  {
	form_fale.nome.focus();
	form_fale.nome.select();
	alert(erro + 'Nome inválido! Preencha o campo \"Nome completo\" corretamente.');
	return false;
  }
  if (form_fale.nome.value.indexOf(' ') == -1) 
  {
	form_fale.nome.focus();
	form_fale.nome.select();
	alert(erro + 'Nome inválido! Preencha o campo \"Nome completo\" com seu nome completo.');
	return false;
  }
  var searchForNumbers = /\d+/
  if (searchForNumbers.test(form_fale.nome.value)) 
  {
	 form_fale.nome.focus();
	 form_fale.nome.select();
	 alert(erro + 'O campo \"Nome completo\" não aceita números! Favor informar o nome correto.');
	 return false;
  }
  // ****************************************************************
  // Verifica DDD do Telefone
  // ****************************************************************
  if ((valida_texto_js(document.form_fale.ddd_telefone.value))) // Digitou DDD
  {
	// Verifica se é um ddd válido
	if (!(isnumber(document.form_fale.ddd_telefone.value)))
	{
      form_fale.ddd_telefone.focus();
      form_fale.ddd_telefone.select();
      alert(erro + "DDD  do telefone inválido! Favor informar o ddd correto do telefone.");
      return false;
	}
	// Verifica se digitou o DDD completo
    ObjdddTelefone = document.form_fale.ddd_telefone.value
    if (ObjdddTelefone.length < 2)
    {
      form_fale.ddd_telefone.focus();
      form_fale.ddd_telefone.select();
      alert(erro + "DDD do telefone inválido! Favor digitar todos os algarismos do DDD do telefone.");
      return false;
    }
    if (!(valida_texto_js(document.form_fale.telefone.value))) // Digitou DDD mas não digitou telefone
    {
      form_fale.telefone.focus();
      form_fale.telefone.select();
      alert(erro + "Telefone inválido! Favor informar o nº do telefone.");
      return false;
    }
  } 
  // ****************************************************************
  // validacao do campo Telefone
  // ****************************************************************
  if ((valida_texto_js(document.form_fale.telefone.value))) // Digitou telefone
  {
    // Verifica se é um Telefone válido
    if (!(isnumber(document.form_fale.telefone.value)))
    {
	  form_fale.telefone.focus();
	  form_fale.telefone.select();
	  alert(erro + "Telefone inválido! Favor digitar apenas os algarismos do telefone.");
	  return false;
    }
    ObjTelefone = document.form_fale.telefone.value
    if (ObjTelefone.length < 7)
    {
      form_fale.telefone.focus();
      form_fale.telefone.select();
      alert(erro + "Telefone inválido! Favor digitar todos os algarismos do telefone.");
      return false;
    }
  }
  // ****************************************************************
  // validacao do campo de email
  // ****************************************************************
  if (!valida_email(form_fale.email.value)) 
  {
	form_fale.email.focus();
	form_fale.email.select();
	alert(erro + "Email inválido! Favor preencher o campo \"Email\" corretamente!");
	return false;
  }
  // ****************************************************************
  // Validação do campo mensagem
  // ****************************************************************
  if ( form_fale.mensagem.value == "" )
  {
	alert("Por favor, o campo 'Mensagem' é obrigatório.");
	form_fale.mensagem.focus();
	return false;
  }
  // ****************************************************************
  // Verificação OK
  // ****************************************************************
  return true;
}
