// - DEFINE OS TIPOS DE DADOS
// - MUDA O VALOR DO OBJETO DESTINO DE ACORDO COM O OBJETO ORIGEM
// - CARREGA CAMPOS PARA FILTRO EM UM SELECT
// - SELECIONA UM SELECT DE ACORDO COM O VALOR DE UM INPUT
// - CARREGA ESTADOS DO BRASIL EM UM SELECT
// - MUDA A COR DE INPUTS
// - FORMATAR DATA E HORA
// - CADASTRO
// 			ADICIONAR NOVO REGISTRO	
// 			ATUALIZAR REGISTRO CORRENTE
// - VISUALIZAR
// 			EXCLUIR REGISTRO DA LINHA CORRENTE
// 			VISUALIZAR REGISTRO DA LINHA CORRENTE
// 			FILTRAR TABELA

<!--

///////////////////////////////////////////////////////////////////
// 	TIPOS
///////////////////////////////////////////////////////////////////

// 	CAMPOS
function Tipo_Campos(nome,descricao,tipo,requerido,listagem)
{
	this.Nome = nome
	this.Descricao = descricao
	this.Tipo = tipo
	this.Requerido = requerido
	this.Listagem = listagem
}

// TABELAS	
//   (nome da tabela).Campos[] = new Tipo_Campos("Apelido","Nome do Campo","tipo(string,int,data)",requerido(0/1),aparecer no filtro da lista (0/1))
function Tipo_Tabelas(quantidade,nome,cadastro,lista,movimentacao,visualizacao)
{
	this.Quant = quantidade
	this.Nome = nome
	this.ArqCadastro = cadastro
	this.ArqLista = lista
	this.ArqMovimentacao = movimentacao
	this.ArqVisualizacao = visualizacao
	this.Campos = new Tipo_Campos
}


///////////////////////////////////////////////////////////////////
// 	FUNCOES DE RETORNO
///////////////////////////////////////////////////////////////////
function Get_Quantidade(tabela){	return tabela.Quant }
function Get_Nome_Tabela(tabela){	return tabela.Nome }
function Get_Lista(tabela){	return tabela.ArqLista }
function Get_Cadastro(tabela){	return tabela.ArqCadastro }
function Get_Movimentacao(tabela){	return tabela.ArqMovimentacao }
function Get_Visualizacao(tabela){	return tabela.ArqVisualizacao }

function Get_Descricao(tabela,x){	return tabela.Campos[x].Descricao }
function Get_Nome(tabela,x){	return tabela.Campos[x].Nome }
function Get_Tipo(tabela,x){	return tabela.Campos[x].Tipo }
function Get_Requerido(tabela,x){	return tabela.Campos[x].Requerido }
function Get_Listagem(tabela,x){	return tabela.Campos[x].Listagem }


///////////////////////////////////////////////////////////////////
// 	MUDA O VALOR DO OBJETO DESTINO DE ACORDO COM O OBJETO ORIGEM
///////////////////////////////////////////////////////////////////
function Muda_Valor(origem,destino)
{
	if (origem.value != destino.value)
		destino.value = origem.value
}

///////////////////////////////////////////////////////////////////
// 	CARREGA UM SELECT (objeto) COM OS CAMPOS QUE PODEM SER VISUALIZADOS
//  NA TELA DE LISTAGEM (Get_Listagem=1)
//  SELECIONA O ITEM (campo) SELECIONADO
///////////////////////////////////////////////////////////////////
function Carrega_Select(tabela,objeto,campo)
{
	posicao=0
	for (cont=0; cont<Get_Quantidade(tabela); cont++)
	{
		if ( Get_Listagem(tabela,cont)== 1 )
		{
     	objeto.options[posicao]= new Option(Get_Nome(tabela,cont),cont)
     	objeto.options[posicao].value=cont
			if (campo==Get_Descricao(tabela,cont))
		    objeto.options[posicao].selected=true
			posicao++
		}
	}
}


///////////////////////////////////////////////////////////////////
// SELECIONA UM SELECT (lista) DE ACORDO COM O VALOR DE UM INPUT (entrada)
///////////////////////////////////////////////////////////////////
function Mudar_Entradas(entrada,lista)
{
	valor=entrada.value
// Verifica se o valor e um numero
	if ( !(isNaN(valor)) )
	{
		cont=0
		achou=false
// Verifica se existe algum option com o codigo desejado
		for(cont=0;cont<lista.options.length;cont++)
		{	
			if (valor==lista.options[cont].value)
			{
				achou=true
				break
			}
		}
// Se Existe seleciona, caso contrario limpa o select
		if (achou)
			lista.options[cont].selected=true
		else
			lista.options[0].selected=true
	}
	else
	{
		 alert("Entre com o codigo do Plano de Contas!")
		 entrada.value=""
		 entrada.focus()
	}
}


///////////////////////////////////////////////////////////////////
// SELECIONA UM SELECT (lista) DE ACORDO COM UM VALOR (valor)
///////////////////////////////////////////////////////////////////
function Seleciona_Option(valor,lista)
{
// Verifica se o valor e um numero
	cont=0
	achou=false
// Verifica se existe algum option com o codigo desejado
	for(cont=0;cont<lista.options.length;cont++)
	{	
		if (valor==lista.options[cont].value)
		{
			achou=true
			break
		}
	}
// Se Existe seleciona, caso contrario limpa o select
	if (achou)
		lista.options[cont].selected=true 
	else 
		lista.options[0].selected=true 
}


///////////////////////////////////////////////////////////////////
// CARREGA SELECT objeto COM OS ESTADOS DO BRASIL
// SELECIONA O ESTADO PASSADO PELO VALOR x
///////////////////////////////////////////////////////////////////
function estado(objeto,x)
{
	lista = new Array(
			"AC","AL","AM","AP","BA","CE","DF","ES","GO","MA","MG","MS",
			"MT","PA","PB","PE","PI","PR","RJ","RN","RO","RR","RS","SC",
			"SE","SP","TO")
	lista.lenght=27
	for (cont=0;cont<lista.lenght;cont++)
	{
		objeto.options[cont]=new Option(lista[cont],cont)
    objeto.options[cont].value=lista[cont]
		if (x==lista[cont])
			objeto.options[cont].selected=true
	}
}


///////////////////////////////////////////////////////////////////
// MUDA A COR DO OBJETO (objeto) 
// ONFOCUS E ONBLUR
///////////////////////////////////////////////////////////////////
function MudaCor(objeto, bg) 
{
  if (objeto.style) 
		objeto.style.backgroundColor = bg
}

function Focu(objeto) 
{
  var bgcor = "#ffffff";
  MudaCor(objeto, bgcor);
}

function Sair(objeto) 
{
  var bgcor =  "#EFEFEF";
  MudaCor(objeto, bgcor);
}

///////////////////////////////////////////////////////////////////
// VERIFICACAO DE ERROS
// CHAMADO NO ADICIONAR NOVO REGISTRO
///////////////////////////////////////////////////////////////////
function Erro(tabela) 
{
	erros=""
	erros_preenchidos = "" 
	erros_validade = ""
	
	for (cont=0;cont<Get_Quantidade(tabela);cont++)
	{
		if ( Get_Requerido(tabela,cont)==1 )
		{
				valor = eval('document.form.in'+ Get_Descricao(tabela,cont) +'.value')
    			if ( valor=="")
				{ 
					erros_preenchidos+= Get_Nome(tabela,cont) + ' - Não foi preenchido\n';
				}
				else
				{
					// INT - NUMERO
					if (Get_Tipo(tabela,cont)=="int")
					{
						if (isNaN(valor))
						{	erros_validade+= Get_Descricao(tabela,cont) + " - Deve ser um Numero;\n"}
					}
					// DATA - DATA
					else if (Get_Tipo(tabela,cont)=="data")
					{	
						data_erro=Verifica_Data(valor)
						if (data_erro!="")
						{
							erros_validade+= Get_Nome(tabela,cont) + data_erro	
						}
					}
					// LOGIN - TIPO LOGIN E SENHA MENORES DO QUE limite
					else if (Get_Tipo(tabela,cont)=="login")
					{	
						limite=2
						login_erro=Verifica_Login(valor,limite)
						if (login_erro!="")
						{
							erros_validade+= Get_Nome(tabela,cont) + login_erro	
						}
					}
					// EMAIL - TIPO EMAIL xxx@xxxx.xx
					else if (Get_Tipo(tabela,cont)=="email")
					{	
						email_erro=Verifica_Email(valor)
						if (email_erro!="")
						{
							erros_validade+= Get_Nome(tabela,cont) + email_erro	
						}
					}
					// FLOAT - FLOAT
					else if (Get_Tipo(tabela,cont)=="float")
					{	
						email_erro=Verifica_Float(valor)
						if (email_erro!="")
						{
							erros_validade+= Get_Nome(tabela,cont) + email_erro	
						}
					}
				}
		}

		if ( Get_Requerido(tabela,cont)==2 )
		{
				valor = eval('document.form.in'+ Get_Descricao(tabela,cont) +'.value')
    			if ( valor!="")
				{
					// INT - NUMERO
					if (Get_Tipo(tabela,cont)=="int")
					{
						if (isNaN(valor))
						{	erros_validade+= Get_Nome(tabela,cont) + " - Deve ser um Numero;\n"}
					}
					// DATA - DATA
					else if (Get_Tipo(tabela,cont)=="data")
					{	
						data_erro=Verifica_Data(valor)
						if (data_erro!="")
						{
							erros_validade+= Get_Nome(tabela,cont) + data_erro	
						}
					}
					// LOGIN - TIPO LOGIN E SENHA MENORES DO QUE limite
					else if (Get_Tipo(tabela,cont)=="login")
					{	
						limite=5
						login_erro=Verifica_Login(valor,limite)
						if (login_erro!="")
						{
							erros_validade+= Get_Nome(tabela,cont) + login_erro	
						}
					}
					// EMAIL - TIPO EMAIL xxx@xxxx.xx
					else if (Get_Tipo(tabela,cont)=="email")
					{	
						email_erro=Verifica_Email(valor)
						if (email_erro!="")
						{
							erros_validade+= Get_Nome(tabela,cont) + email_erro	
						}
					}
					// FLOAT - FLOAT
					else if (Get_Tipo(tabela,cont)=="float")
					{	
						email_erro=Verifica_Float(valor)
						if (email_erro!="")
						{
							erros_validade+= Get_Nome(tabela,cont) + email_erro	
						}
					}
				}
		}
		
	}

	erros = erros_preenchidos + erros_validade
	 
	if (erros=="")
	{
      return false
	}
	else
	{
		erros = "Seu cadastro não foi enviado devido aos seguintes erros:\n"
		if (erros_preenchidos!=""){ erros+= "\nPreenchimento: \n" + erros_preenchidos }
		if (erros_validade!=""){ erros+= "\nValidade: \n" + erros_validade }
		erros+= "\nCorrija-os e tente novamente."
	  alert (erros)
	  return true
	}
}

///////////////////////////////////////////////////////////////////
// VALIDACAO DE DATAS
///////////////////////////////////////////////////////////////////
function Verifica_Data(valor)
{
	erro = ""
	erro_Invalido=" - Data invalida";
	erro_Dia="\t  - Dia invalido;\n";
	erro_Mes="\t  - Mes invalido;\n";
	erro_Ano="\t  - Ano invalido;\n";
	if ( (valor.charAt(2)=="/")&&(valor.charAt(5)=="/") )
	{ // DIA
		dia= valor.substring(0,2)
		if (!isNaN(dia))
		{ dia = parseInt(dia,10)
			if ( (dia<1)||(dia>31) )
			{	erro+= erro_Dia }
		}
		else 
		{ erro+= erro_Dia }

		// MES
		mes= valor.substring(3,5)
		if (!isNaN(mes))
		{ 
//			alert(mes)
			mes = parseInt(mes,10)
//			alert(mes)

			if ( (mes<1)||(mes>12) )
			{ erro+= erro_Mes }
		}
		else 
		{ erro+= erro_Mes }

		// ANO
		ano= valor.substring(6,9)
		if (!isNaN(ano) && (ano!="") )
		{ }
		else 
		{ erro+= erro_Ano }
		
		// Monta a mensagem com todos os erros
		if (erro!="")
		{	erro = erro_Invalido + ":\n" + erro		}

	}else{
		erro+= erro_Invalido + "\n";
	}
	return erro
}

///////////////////////////////////////////////////////////////////
// VALIDACAO DE LOGIN
///////////////////////////////////////////////////////////////////
function Verifica_Login(valor,limite)
{
	erro = ""
	if ( (valor.length<limite) )
	{	
		erro += " - Tamanho deve ser maior do que "+limite+";\n";
	}	
	return erro
}


///////////////////////////////////////////////////////////////////
// VALIDACAO DE EMAIL
///////////////////////////////////////////////////////////////////
function Verifica_Email(valor)
{
	erro = "";
	erro_Final = " - Formato Invalido de email;\n"
	posArroba=valor.indexOf("@");
	// Verifica se existe "@"
	if ( posArroba!=-1 )
	{
		strPreArroba= valor.substring(0,posArroba)
		strPosArroba= valor.substring(posArroba+1,valor.length)
		// Verifica se existe algo digitado antes e depois do "@"
		if ( (strPreArroba!="") && (strPosArroba!="") )
		{	
			// Verifica se existe ponto depois do "@" e se ele nao esta no final
			if ( (strPosArroba.indexOf(".")==-1) || (strPosArroba.indexOf(".")==strPosArroba.length-1) )
			{	
				erro += erro_Final;
			}
		}else{ erro += erro_Final; }
	}else{ erro += erro_Final;	}	
	
	return erro
}

///////////////////////////////////////////////////////////////////
// VALIDACAO DE FLOAT
///////////////////////////////////////////////////////////////////
function Verifica_Float(valor)
{
	erro = ""
	// Verifica se e um numero
	if (isNaN(valor))
	{ 
		// Verifica se e um numero com casas decimais
		posPonto=valor.indexOf(",");
		if (posPonto!=-1)
		{
			strPrePonto= valor.substring(0,posPonto)
			strPosPonto= valor.substring(posPonto+1,valor.length)
			// Verifica se e um numero tem parte inteira
			if (isNaN(strPrePonto) || (strPrePonto=="") )
			{ erro= " - Preencha corretamente o numero;\n" }
			// Verifica se e um numero tem casas decimais
			else if (isNaN(strPosPonto) || (strPosPonto=="") )
			{ erro= " - Preencha corretamente o numero;\n" }
		}else{ erro= " - Deve ser um Numero;\n" }
	}
	return erro
}


// OUTRO TIPO DE VERIFICACAO DE ERROS
function ErroA(tabela,codigo) 
{
	preenchidos = "" 
	msg1 = ' - Não foi preenchido\n'

	for (cont=0;cont<Get_Quantidade(tabela);cont++)
	{
		if ( Get_Listagem(tabela,cont)==1 )
		{
			if ( Get_Requerido(tabela,cont)==1 )        	
			{
				if ( eval('document.form.in'+ Get_Descricao(tabela,cont) + codigo + '.value')=="" )
			 		preenchidos+= Get_Nome(tabela,cont) + msg1;
			}
		}
	}
	if (preenchidos=="")
		return false
	else
	{
	  alert ('Seu cadastro não foi enviado devido aos seguintes erros:\n\n' + preenchidos + '\nCorrija-os e tente novamente.')
	  return true
	}
}

///////////////////////////////////////////////////////////////////////////////////////
// - CADASTRO 
///////////////////////////////////////////////////////////////////////////////////////

// ADICIONAR NOVO REGISTRO	
function Adicionar(tabela)
{
	if (Erro(tabela)==false)
  {
  	
    form.action = Get_Movimentacao(tabela) + "?Acao=Inserir"
    form.submit()
  }
}


// ATUALIZAR REGISTRO CORRENTE
function Atualizar(tabela,codigo)
{
  if (Erro(tabela)==false)
  {
	form.action = Get_Movimentacao(tabela) + "?Acao=Salvar&Codigo=" + codigo;
  	form.submit();  
  }
}


// ATUALIZAR REGISTRO CORRENTE DA LISTA
function AtualizarA(tabela,codigo)
{
  if (ErroA(tabela,codigo)==false)
  {
  	form.action = Get_Movimentacao(tabela) + "?Acao=Salvar&Codigo=" + codigo;
  	form.submit();  
  }
}


///////////////////////////////////////////////////////////////////////////////////////
// - VISUALIZAR 
///////////////////////////////////////////////////////////////////////////////////////

// EXCLUIR REGISTROS SELECIONADOS
function Excluir_Selecionados(tabela,campo,valor,ordem)
{
	if (confirm ("Deseja excluir o(s) registro(s) selecionado(s)?"))
	{
		form.action = Get_Movimentacao(tabela)+"?Acao=Apagar&slCampos="+Get_Descricao(tabela,campo)+"&txValor="+valor+"&varTipo="+Get_Tipo(tabela,campo)+"&inOrdem="+Get_Descricao(tabela,ordem)
		form.submit()
	}
	else 
	  alert("Operação cancelada!") 
}

// EXCLUIR REGISTRO CORRENTE
function ExcluirSimples(tabela,codigo)
{
	if (confirm ("Deseja excluir o registro desta linha?"))
	{
	  window.location= Get_Movimentacao(tabela)  + "?Acao=Apagar&Codigo=" + codigo;
	}
	else 
	{ 
		alert("Operação cancelada!") 
	}
}

function Excluir_Listagem(tabela)
{
	if (confirm ("Deseja excluir o registros selecionados?"))
	{
  	form.action = Get_Movimentacao(tabela)  + "?Acao=Excluir_Listagem";
  	form.submit();  
	}
	else 
	{ 
	   alert("Operação cancelada!") 
	}
}

// VISUALIZAR REGISTRO DA LINHA CORRENTE
function Visualizar(tabela,codigo)
{
	window.location= Get_Visualizacao(tabela) + "?Codigo="+ codigo
}

// CAMPO DO TIPO 0,00
function FormataValor(campo, tammax, teclapres)
{
	tecla = teclapres.keyCode
	if (tecla==9)
		return
	vr = campo.value	
	vr = vr.replace( ",", "" )
	vr = vr.replace( ".", "" )
	vr = vr.replace( ".", "" )
	vr = vr.replace( "/", "" )
	tam = vr.length
	if ((tam>2)&&(vr.substring(0,1)==0))
	{
		campo.value = vr.substring(1,tam)
		vr = campo.value
		tam = vr.length
	}
	if (tam > tammax)
		return
	if (tecla == 8)
		tam=tam-2 
	if (tam<2)
		campo.value = "0," + vr
	else
		campo.value = vr.substring(0,tam-1) + "," + vr.substring(tam-1, vr.length)
}

/*
function Pesquisar()
{
	window.open ("../Empresa/JanEmpresa.asp","Empresa","toolbar=no,location=no,directories=no,status=no,scrollbars=yes,menubar=no,resizable=no,width=500,height=500,top=30,left=200")
}
*/
//  FIM DA PAGINA ///////////////////////////////////////////////
-->
