/*
=====================================================================
Projeto: Congresso Rio 2004 (www.rio2004.org)
Versão: 1.0
Arquivo: funcoes.js
Analista Responsável: Fabiano Tavares Souza
Programador Responsável: Fabiano Tavares Souza
Data de Criação: 24/02/2004
Data de Atualização: 02/03/2004
Objetivo: Arquivo de funções javascript utilizados no site
=====================================================================
*/

/*************************************************************************************
 TestaCampos(): 

 Parâmetros: - 

 Retorno: retorna false para alguma crítica e true se estiver ok.
 
 *************************************************************************************/
function TestaSenhaCadastro(){
	
	if (document.frmCadastrar.DE_SENHA.value == ""){
		alert(MSG_010);
		document.frmCadastrar.DE_SENHA.focus();
		return false;
	}
	else {
		if (document.frmCadastrar.DE_SENHA.value.length<3){
			alert(MSG_011);
			document.frmCadastrar.DE_SENHA.focus();
			return false;
		}
		else {
			if (document.frmCadastrar.DE_SENHA.value.length >6){
				alert(MSG_012);
				document.frmCadastrar.DE_SENHA.focus();  
				return false;
			}
			else {
				if (document.frmCadastrar.DE_SENHA.value != document.frmCadastrar.DE_SENHA2.value){
					alert(MSG_013);
					document.frmCadastrar.DE_SENHA.value = "";
					document.frmCadastrar.DE_SENHA2.value = "";
					document.frmCadastrar.DE_SENHA.focus();
					return false;
				}
				else
					return true;
			}
		}
	}	
}

/*************************************************************************************
 ValidaCaracterInvalido(): Valida se caracter digitado é inválido

 Parâmetros: - 

 Retorno: - True se o caracter é valido,e
			False se o caracter for inválido.
 *************************************************************************************/
function ValidaCaracterInvalido(campo) {
	var obj = eval(campo);
	//if ((event.keyCode == 46) || (event.keyCode == 39)) {
	if (event.keyCode == 39) {
		alert("Caracter inválido");
		obj.value = '';
		obj.focus();
		return false;
	}
	else
		return true;
}


/*************************************************************************************
 ValidaEmail(strEmail): Valida se foi o e-mail é válido.

 Parâmetros: - strEmail: email do usuário.

 Retorno: - True se o e-mail for valido,e
			False se o e-mail nao for valido.
 *************************************************************************************/

function ValidaEmail (strEmail) {

	/* A sentença descrita abaixo é usada para validar se o endereço de e-mail informado
	   obedece ao formato usuario@dominio. É tambem utilizado para separar o nome do usuário
	   do dominio.*/
	var strEmailPadrao=/^(.+)@(.+)$/

	/* A sentença descrita abaixo define a maáscara para filtrar todos os caracteres especiais.
	   Nós não queremos permitir esses caracteres nos endereços de e-mail.
	   Caracteres especiais incluem: ( ) < > @ , ; : \ " . [ ] */
	var strCharsEspeciais="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"

	/* A sentença seguinte representa o grupo de caracteres permitidos no nome do usuário
	   ou domínio. Definindo quais caracteres não são permitidos. */
	var strCharsValidos="\[^\\s" + strCharsEspeciais + "\]"

	/* A sentença seguinte verifica se o "usuário" é quoted string (e-mail entre Aspas).
	   Caso em que não existe nenhuma regra definindo quais são os caracteres permitidos ou 
	   não permitidos. Qualquer caracter passa. Ex.: "jiminy cricket@disney.com" eh um e-mail
	   válido. */
	var quotedUser="(\"[^\"]*\")"

	/* A sentença seguinte se aplica para domínios que são Endereços IP, ao invés de nomes
	   simbólicos. Ex.: joe@[123.124.233.4] é um endereço de e-mail válido.
	   ATENÇÃO: Os colchetes sao obrigatórios.  */
	var strDominioIP=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/

	/* A sentença seguinte representa uma série de caracteres não especiais. */
	var atom=strCharsValidos + '+'

	/* The following string represents one word in the typical username.
	   For example, in john.doe@somewhere.com, john and doe are words.
	   Basically, a word is either an atom or quoted string.*/ // <----- TRADUZIR 
	var strPalavra="(" + atom + "|" + quotedUser + ")"

	// A sentença seguinte descreve a estrutura para o nome do usuário.
	var strFormatoUser=new RegExp("^" + strPalavra + "(\\." + strPalavra + ")*$")

	/* A sentença seguinte descreve a estrutura para um domínio simbólico, ao invés do
	   domínio utilizando Endereco IP, demonstrado acima. */
	var strFormatoDominio=new RegExp("^" + atom + "(\\." + atom +")*$")

	/* Finalmente, vamos iniciar a verificação se o e-mail fornecido é válido.*/
	var VetorValidacao=strEmail.match(strEmailPadrao)

	if (VetorValidacao==null) 
	{
	  /* Muito/Poucos @'s ou outra coisa, como pontos; basicamente, esse endereço 
	     não apresenta o formato de um endereço válido de e-mail. */
		//alert("Endereço de Email incorreto! (Verifique @ e .'s)")
		window.alert("Endereço eletrônico inválido.")
		return false
	}
	var strUsuario=VetorValidacao[1]
	var strDominio=VetorValidacao[2]

	// Verificando se o "usuário" é válido.
	if (strUsuario.match(strFormatoUser)==null) 
	{
	    
	    //alert("O nome do usuário não é válido.")
	    window.alert("Endereço eletrônico inválido.")
	    return false
	}

	/* Se o endereço de e-mail é um Endereço IP (oposto ao nome do domínio simbólico)
	   verifique se o Endereço IP é válido.*/   
	var VetorIP=strDominio.match(strDominioIP)
	if (VetorIP!=null)
	{
	    // É um Endereço IP.
		  for (var i=1;i<=4;i++)
		  {
		    if (VetorIP[i]>255) 
		    {
		        //alert("Endereço IP inválido!") 
			window.alert("Endereço eletrônico inválido.")
			return false
		    }
	      }
	      return true
	}

	// O Domínio é um nome simbólico.
	var VetorDominio=strDominio.match(strFormatoDominio)
	if (VetorDominio==null) 
	{
	    //alert("O nome do domínio não é válido!")
	    window.alert("Endereço eletrônico inválido.")
	    return false
	}
	/* O nome do domínio parece válido, mas agora certifique-se que termine em uma palavra com
	   três caracteres (como: com, edu, gov,...) ou uma palavra de dois caracteres, representando 
	   o país (como: br, uk, nl,...), e se o domínio ou o país é precedido por um host name. */

	/* Agora precisamos desmembrar o dominio para validadarmos as partes.*/
	var atomPat=new RegExp(atom,"g")
	var DomVet=strDominio.match(atomPat)
	var tam=DomVet.length
	if (DomVet[DomVet.length-1].length<2 || 
	    DomVet[DomVet.length-1].length>3) 
	{
	   // O endereço tem que terminar em uma palavra de dois ou três caracteres.
	   //alert("O endereço deve terminar em um domínio com três caracteres ou em um país com dois caracteres.")
	   window.alert("Endereço eletrônico inválido.")
	   return false
	}

	// Certificando que o domínio é precedido por um hostname.
	if (tam<2) 
	{
	   var errStr="Este endereço não possui hostname!"
	   //alert(errStr)
	   window.alert("Endereço eletrônico inválido.")
	   return false
	}

	// Se vc chegou até aqui, todo o resto é válido!
	return true;
	}

	//Verifica se um dado é numérico e se o número de casas
	//decimais é menor que o limite informado.
	//Retorna true, caso as condições sejam aceitas, ou false
	function ehNumericoComMaxCasa(dblDado,intCasas,strSeparador) {
	dblDado = trim(dblDado);
	intCasas = trim(intCasas);
	intAntes = dblDado.substr(0,inStr(strSeparador,dblDado) - 1);
	intDepois = dblDado.substr(inStr(strSeparador,dblDado),dblDado.length);
	if(!(isNumeric(intCasas))) {
	  return(false);
	  } else {
	if(intCasas < 0) {
	  return(false);
	  } else {
	if((!(isNumeric(intAntes)) && intAntes != '') || (!(isNumeric(intDepois)) && intDepois != '')) {
	  return(false);
	  } else {
	if((inStr(strSeparador,dblDado) <= 0) || (intCasas > (dblDado.length - 2))) {
	  return(true);
	  } else {
	if(intCasas < intDepois.length) {
	  return(false);
	  } else {
	  return(true);
	  }}}}}
}


/*************************************************************************************
 LiberaPagmento(form, objeto): Valida se foi selecionado algum item, e dá submit no form

 Parâmetros: - form: nome do elemento checkbox.
			   objeto: nome do objeto.	

 Retorno: -
 *************************************************************************************/
function LiberaPagmento(form, objeto) {

	var obj, obj_i, i, valida;
	obj = eval(form);	
	valida = false;
	if (obj.DT_PAGAMENTO.value == '') {
			alert(MSG_017);
			obj.DT_PAGAMENTO.focus();
			return;
		}
	if (obj.NU_VALOR.value == '') {
				alert(MSG_019);
				obj.NU_VALOR.focus();
				return;
			}
	obj.action = 'principal.asp?page=atualizarPag';
	obj.submit();
}


/*************************************************************************************
 ValidaLiberar(form, objeto): Valida se foi selecionado algum item, e dá submit no form

 Parâmetros: - form: nome do elemento checkbox.
			   objeto: nome do objeto.	

 Retorno: -
 *************************************************************************************/
function ValidaLiberar(form, objeto) {

	var obj, obj_i, i, valida;
	
	obj = eval(form);	
	valida = false;
	
	for (i=0; i<obj.elements.length; i++) {
		
		if (obj.elements[i].type == 'checkbox') {
			
			// verifica se está selecionado
			if (obj.elements[i].checked == true) {
				valida = true;
				break;
			}
		}
	}
	if (valida) {
		obj.action = 'principal.asp?page=atualizarUsuario'; 
		obj.submit();
	}
	else
		alert(MSG_003)
}

/*************************************************************************************
 SetCheckBoxes(form,elem,count): Seta ou Unseta as checkboxes

 Parâmetros: - form: nome do formulário
			   elem: nome do formulário e do elementos checkboxes.
			   count: número de elemetos checkboxes

 Retorno: -
 *************************************************************************************/
function SetCheckBoxes(form, elem, count) {

	var obj, obj_i, i;
	
	
	obj = eval(elem);
	
	if (obj[0].checked == true)
		for (i=1; i<=count; i++)
		    obj[i].checked = true;

	else
		for (i=1; i<=count; i++)
			obj[i].checked = false;
}


/*************************************************************************************
 ValidaSelecaoCurso(form): Faz a verificação das regras de escolhas dos cursos
					   obs.: os cursos 1 e 2, 1 e 3, 4 e 5 ocorrem simultaneamente

 Parâmetros: - form: nome do formulário.

 Retorno: -
 *************************************************************************************/
function ValidaSelecaoCurso(form) {

	var obj, cont, n;
	var arrCont = new Array(5);
	var curso1 = MSG_022;
	var curso2 = MSG_023;
	var curso3 = MSG_024;
	var curso4 = MSG_025;
	var curso5 = MSG_026;
	var curso6 = MSG_027;
	
	// contador da quantidade de elementos do array
	cont = 0;
	n = 0;
	obj = eval(form);

	for (i=0; i<obj.elements.length; i++) {

		if (obj.elements[i].type == 'checkbox') {

			// verifica se está selecionado
			if (obj.elements[i].checked == true) {
				arrCont[n] = obj.elements[i].value;
				cont = cont + 1;
				n = n + 1;
			}
		}
	}

	//  verifica se os cursos selecionados são permitidos ou não
	if (cont > 1) {
		
		for (j=0; j<cont; j++) {
			
			for (k=j+1; k<cont; k++) {

				if ((arrCont[j] == '1') && (arrCont[k] == '2')) {
					alert(MSG_021+'\n- '+curso1+'\n- '+curso2);
					return false;
				}
				if ((arrCont[j] == '1') && (arrCont[k] == '3')) {
					alert(MSG_021+'\n- '+curso1+'\n- '+curso3);
					return false;
				}
				if ((arrCont[j] == '4') && (arrCont[k] == '5')) {
					alert(MSG_021+'\n- '+curso4+'\n- '+curso5);
					return false;
				}
				if ((arrCont[j] == '5') && (arrCont[k] == '6')) {
					alert(MSG_021+'\n- '+curso5+'\n- '+curso6);
					return false;
				}
			}
		}
		return true;
	}
	else
		return true;
}


/*************************************************************************************
 ValidaCadCurso(form): Envia os dados do curso para cadastro. 

 Parâmetros: - form: nome do formulário.

 Retorno: -
 *************************************************************************************/
function ValidaCadCurso(form) {

	var obj, valida;

	obj = eval(form);
	valida = false;

	for (i=0; i<obj.elements.length; i++) {

		if (obj.elements[i].type == 'checkbox') {
			
			// verifica se está selecionado
			if (obj.elements[i].checked == true) {
				valida = true;
				break;
			}
		}
	}
	if (ValidaSelecaoCurso(form)) {
		if (valida) {
			obj.action = '../_includes/exeCadCurso.asp?cad=true';
			obj.submit();
		}
		else {
			alert(MSG_020)
			return;
		}
	}	
}


/*************************************************************************************
 EnviarValidarUsuario(form): Envia os dados do usuário para validação.

 Parâmetros: - form: nome do formulário.

 Retorno: -
 *************************************************************************************/
function EnviarValidarUsuario(form, aux, elem1, elem2, elem3) {

	var obj;

	obj = eval(form);

	/*
	if (obj.dtVencimento.value == '') {
		alert(MSG_017);
		obj.dtVencimento.focus();
		return;
	}
	else {
	*/

//*		if (AlteraValor(form, elem1, elem2, elem3)) 
			obj.action = 'principal.asp?page=validarUsuario&aux=' + aux;
			obj.submit();
//*		}
	//}
}

/*************************************************************************************
 AlteraValor(form): Gera lista para validar o pagamento do boleto bancário.

 Parâmetros: - form: nome do formulário.

 Retorno: -
 *************************************************************************************/
function AlteraValor(frm,elem1,elem2,elem3) {

	var obj1;
	var obj2;
	var obj3;
	var form;

	form = eval(frm);
	obj1 = eval(frm + '.' + elem1);
	obj2 = eval(frm + '.' + elem2);
	obj3 = eval(frm + '.' + elem3);

	if (obj1.value == '') {
		alert(MSG_004);
		obj1.focus();
		return;
	}
	else {
		if (obj2.value == '') {
			alert(MSG_004);
			obj2.focus();
			return;
		}
		else
			if (obj3.value == '') {
				alert(MSG_004);
				obj3.focus();
				return;
			}
	}
	return true;

	//form.action = 'principal.asp?page=alterarValor&acao=alterar';
	//form.submit();
}

/*************************************************************************************
 GeraListaLiberarPag(form): Gera lista para validar o pagamento do boleto bancário.

 Parâmetros: - form: nome do formulário.

 Retorno: -
 *************************************************************************************/
function GeraListaLiberarPag(form, tipo) {

	var obj;

	obj = eval(form);

	if ((obj.cmbParticipante[obj.cmbParticipante.selectedIndex].value == '') && (tipo == 'usuario')) {
		alert(MSG_003);
		obj.cmbParticipante.focus();
		return;
	}
	else
		if ((obj.NU_IDBOL.value == '') && (tipo == 'boleto')) {
			alert(MSG_018);
			obj.NU_IDBOL.focus();
			return;
		}

	obj.action = 'principal.asp?page=listarValidarPag&tipo=' + tipo;
	obj.submit();
}

/*************************************************************************************
 GeraListaLiberar(form): Gera lista para liberar boleto bancário do usuário.

 Parâmetros: - form: nome do formulário.

 Retorno: -
 *************************************************************************************/
function GeraListaLiberar(form) {

	var obj;
	
	obj = eval(form);
	
	if (obj.cmbParticipante[obj.cmbParticipante.selectedIndex].value == '') {
		alert(MSG_003);
		obj.cmbParticipante.focus();
		return;
	}

	obj.action = 'principal.asp?page=listarLiberar';
	obj.submit();
}

/*************************************************************************************
 GeraNaoValidados(form,tipo): Válida campos para inserção de comentários.

 Parâmetros: - form: nome do formulário.
			 - tipo: indica o tipo de consulta que está sendo efetuada.

 Retorno: -
 *************************************************************************************/
function GeraNaoValidados(form,tipo) {

	var obj;
	
	obj = eval(form);

	if (tipo == 'usuario')
		obj.action = 'principal.asp?page=validarDados&tipo=usuario';
	else
		obj.action = 'principal.asp?page=validarDados&tipo=boleto';

	obj.submit();
}

/*************************************************************************************
 GeraUsuarios(form): Válida campos para alteração de categoria.

 Parâmetros: - form: nome do formulário.
			 - tipo: indica o tipo de consulta que está sendo efetuada.

 Retorno: -
 *************************************************************************************/
function GeraUsuarios(form) {

	var obj;
	
	obj = eval(form);
//	obj.action = 'principal.asp?page=listarAlterar&strExibeCombo=true&acao=alterar';
    obj.action = 'principal.asp?page=detalharDados&Codigo='+frmAlterar.cmbUsuario.value+'&aux=s&acao=alterar'	
	obj.submit();
}


/*************************************************************************************
 GeraListaParticipantes(form,tipo): Válida campos  para inserção de comentários.

 Parâmetros: - 

 Retorno: -
 *************************************************************************************/
function GeraListaParticipantes(form,tipo) {

	var obj;
	
	obj = eval(form);

	if (tipo == 'usuario')
		obj.action = 'principal.asp?page=listar&tipo=usuario';
	else
		obj.action = 'principal.asp?page=listar&tipo=categoria';

	obj.submit();
}


/*************************************************************************************
 InserirComentario(form): Válida campos  para inserção de comentários.

 Parâmetros: - 

 Retorno: -
 *************************************************************************************/
function InserirComentario(form) {

	var obj;
	
	obj = eval(form);
	
	if (obj.txaComentario.value == '') {
		alert(MSG_002);
		obj.txaComentario.focus();
		return;}
	if (obj.no_forma.value.length < 1) {
		alert(MSG_038);
		obj.no_forma.focus();
		return;}
	if (obj.no_aceita.value.length < 1) {
		alert(MSG_039);
		obj.no_aceita.focus();
		return;}		
	obj.submit();
}

/*************************************************************************************
 ConsultarTrabalho(): Válida o campo de trabalho e envia para a página que exibe os
					  detalhes do trabalho pesquisado.

 Parâmetros: - form: campo para validação do form
			   action: informa o destino da página, dependendo de onde ela está chamada

 Retorno: -
 *************************************************************************************/
function ConsultarTrabalho(form) {
	
	var obj;

	obj = eval(form);
	
	if (obj.txtConsultar.value == '') {
		alert(MSG_007);
		obj.txtConsultar.focus();
	}
	else {
		obj.submit();
	}
}

/*************************************************************************************
 OpenPopup: Abrir popup do detalhes do comentário.

 Parâmetros: -

 Retorno: -
 *************************************************************************************/
function OpenPopup(link) {
	window.open(link,name,'top=70,left=100,width=650,height=370,maximized=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,scrolling=yes,resizable=yes');
}


/*************************************************************************************
 LimparForm: Limpar os campos de um formulário.

 Parâmetros: O nome do formulário. 
 
 Retorno: -
 *************************************************************************************/
function LimparForm(frm) {
	
	alert('desenvolver função para limpar os campos de qq formulário')
}

/*************************************************************************************
 ValidaFormAlteracaoSenha: Faz a validação do formulário de alteração de senha do 
						   usuário.

 Parâmetros: - 
 
 Retorno: -
 *************************************************************************************/
function ValidaFormAlteracaoSenha() {
	
	//var strNuCategoria = document.frmBusca.cmbCategoria[document.frmBusca.cmbCategoria.selectedIndex].value;
	//var strNuLocalidade = document.frmBusca.cmbLocalidade[document.frmBusca.cmbLocalidade.selectedIndex].value;
	//var strDeBusca = document.frmBusca.txtPalavra.value;
	
	document.frmAlterarSenha.submit();
}

/*************************************************************************************
 ValidaFormAlteracao: Faz a validação do formulário de alteração de dados do usuário.

 Parâmetros: - 
 
 Retorno: -
 *************************************************************************************/
function ValidaFormAlteracao() {
	
	//var strNuCategoria = document.frmBusca.cmbCategoria[document.frmBusca.cmbCategoria.selectedIndex].value;
	//var strNuLocalidade = document.frmBusca.cmbLocalidade[document.frmBusca.cmbLocalidade.selectedIndex].value;
	//var strDeBusca = document.frmBusca.txtPalavra.value;
	
	document.frmAlterar.submit();
}

/*************************************************************************************
 ValidaFormCadUsuario: Faz a validação do formulário de cadastro do usuário de
					   busca, de acordo com os parâmetros de
					   categoria e localidade.

 Parâmetros: - 
 
 Returno: -
 *************************************************************************************/
function ValidaFormCadUsuario() {

	//var strNuCategoria = document.frmBusca.cmbCategoria[document.frmBusca.cmbCategoria.selectedIndex].value;
	//var strNuLocalidade = document.frmBusca.cmbLocalidade[document.frmBusca.cmbLocalidade.selectedIndex].value;
	//var strDeBusca = document.frmBusca.txtPalavra.value;
	if (!ValidaEmail(document.frmCadastrar.DE_EMAIL.value)) {
			document.frmCadastrar.DE_EMAIL.focus();
			return false}
	if (!TestaSenhaCadastro()) {
			document.frmCadastrar.DE_SENHA.focus();
			return false}
	if (document.frmCadastrar.NO_NOME.value.length < 5 ){
		alert(MSG_029);
		document.frmCadastrar.NO_NOME.focus();
		return false;}   			
	if (document.frmCadastrar.NO_CRACHA.value.length < 3 ){
		alert(MSG_030);
		document.frmCadastrar.NO_CRACHA.focus();
		return false;} 		
	if (document.frmCadastrar.DE_ENDERECO.value.length < 5 ){
		alert(MSG_031);
		document.frmCadastrar.DE_ENDERECO.focus();
		return false;} 		
	if (document.frmCadastrar.DE_BAIRRO.value.length < 4 ){
		alert(MSG_032);
		document.frmCadastrar.DE_BAIRRO.focus();
		return false;} 
	if (document.frmCadastrar.DE_CIDADE.value.length < 4 ){
		alert(MSG_033);
		document.frmCadastrar.DE_CIDADE.focus();
		return false;} 
	if (document.frmCadastrar.DE_UF.value.length < 2 ){
		alert(MSG_034);
		document.frmCadastrar.DE_UF.focus();
		return false;} 				
	if (document.frmCadastrar.DE_CEP.value.length < 9 ){
		alert(MSG_035);
		document.frmCadastrar.DE_CEP.focus();
		return false;} 		
	if (document.frmCadastrar.DE_PAIS.value.length < 3 ){
		alert(MSG_036);
		document.frmCadastrar.DE_PAIS.focus();
		return false;} 
	if (document.frmCadastrar.NO_LOGIN.value.length < 3 ){
		alert(MSG_037);
		document.frmCadastrar.NO_LOGIN.focus();
		return false;} 
	if	(document.frmCadastrar.cboSocioAbfm.checked) {
	    if (document.frmCadastrar.NO_ABFM.value.length < 1){
		alert(MSG_040);
		document.frmCadastrar.NO_LOGIN.focus();
		return false;}}
document.frmCadastrar.submit();
		
}

/**************************************************************
 ClearField: .

 Parâmetros: - 
 
 Returno: -
***************************************************************/
function ClearField(obj) {
	
	var objFrm = eval(obj);	
	
	if (objFrm.value != '')
		objFrm.value = '';
}

/**************************************************************
 FazBusca: .

 Parâmetros: - 
 
 Returno: -
***************************************************************/
function FazBusca(obj,form) {
	
	var objFrm = eval(obj);	
	
	if(event.keyCode == 13)
		if (objFrm.value == '') {
			alert(MSG_BUSCA003);
			return;
		}
		else {
			OpenPageSearch('text');
			return;
		}
}

