// Define o tipo de browser 
var isNN = (navigator.appName.indexOf("Netscape") != -1);


// Iniciar evento contextmenu do documento
document.oncontextmenu = InicializaContextoMenu;


// -------------------------------------------------------------------------------------------
// Rotina   : Tratamento de transparência de imagens png
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: Nenhum parâmetro
// -------------------------------------------------------------------------------------------
function PngFix()
{
	var arVersion = navigator.appVersion.split("MSIE")
	var version = parseFloat(arVersion[1])

	if ((version >= 5.5) && (document.body.filters)) {
		for(var i=0; i<document.images.length; i++)	{
			var img = document.images[i]
			var imgName = img.src.toUpperCase()
			if (imgName.substring(imgName.length-3, imgName.length) == "PNG") {
				var imgID = (img.id) ? "id='" + img.id + "' " : "";
				var imgClass = (img.className) ? "class='" + img.className + "' " : "";
				var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' ";
				var imgStyle = img.style.cssText;
				       
				var strNewHTML = "<span " + imgID + imgClass + imgTitle
				+ " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
				+ "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
				+ "(src=\'" + img.src + "\');\"></span>"; 
				img.outerHTML = strNewHTML;
				i = i - 1;
			}
		}
	}
}


// -------------------------------------------------------------------------------------------
// Rotina   : Inicializar contetxo menu do documento
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: Nenhum parâmetro
// -------------------------------------------------------------------------------------------
function InicializaContextoMenu()
{
	return false;
}


// -------------------------------------------------------------------------------------------
// Rotina   : Emite mensagem ao usuário a depender do browser alert js ou MsgBox do vbs
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: str_Mensagem - Descrição da mensagem
//			  int_Numero - Numero referente ao tipo de mensagem (a mesma o vbs)
//			  str_Titulo - Título da mensagem
// -------------------------------------------------------------------------------------------
function MsgBox(str_Mensagem, int_Numero, str_Titulo)
{
	if (isNN) {
		if (int_Numero == 36) {
			return confirm(str_Mensagem);
		} else {
			alert(str_Mensagem);
		}
	} else {
		var int_Retorno = MessageBox(str_Mensagem, int_Numero, str_Titulo);
		if (int_Retorno > 0) {
			return int_Retorno;
		}
	}
}
   
   
// -------------------------------------------------------------------------------------------
// Rotina   : Carregar o combobox apartir de uma lista
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: obj_Combobox - Objeto de controle combobox do formulário
//			  arr_Valor - Array de valores do combobox
//			  arr_Texto - Array de texto do combobox
//			  var_ValorInicial - Valor inicial a ser posicionado
//			  bol_InicialValor - Verifica se o combobox já foi iniciado
// -------------------------------------------------------------------------------------------
function CarregaCombobox(obj_Combobox, arr_Valor, arr_Texto, var_ValorInicial, bol_InicialValor)
{
	LimpaCombobox(obj_Combobox);

	if (bol_InicialValor){
		var init = 1
	} else{
		var init = 0      
	}   
	
	for( var i = 0; i < arr_Valor.length; i++ ){
		obj_Combobox.options[i + init] = new Option(arr_Texto[i], arr_Valor[i]);
	}	
	
	SelecionaCombobox(obj_Combobox, var_ValorInicial);	
}
   
   
// -------------------------------------------------------------------------------------------
// Rotina   : Limpar um combobox
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: obj_Combobox - Objeto de controle combobox do formulário
// -------------------------------------------------------------------------------------------
function LimpaCombobox(obj_Combobox)
{
	obj_Combobox.options.length = 0;
}
   
   
// -------------------------------------------------------------------------------------------
// Rotina   : Posiciona o combobox apartir do valor
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: obj_Combobox - Objeto de controle combobox do formulário
//			  var_Valor - Valor a ser posicionado
// -------------------------------------------------------------------------------------------
function SelecionaCombobox(obj_Combobox, var_Valor)
{
	for( var i = 0; i< obj_Combobox.options.length; i++ ){
		if( obj_Combobox.options[i].value == var_Valor ){
			obj_Combobox.selectedIndex = i;
			return;
		}  
	}
}
   
   
// -------------------------------------------------------------------------------------------
// Rotina   : Obter o indice do combobox
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: obj_Combobox - Objeto de controle combobox do formulário
// -------------------------------------------------------------------------------------------
function ObterIndexCombobox(obj_Combobox)
{
	for( var i = 0; i < obj_Combobox.options.length; i++ ){
		if( obj_Combobox.options[i].selected ){
			return i;
		}  
	}
}


// -------------------------------------------------------------------------------------------
// Rotina   : Tabulação automática de formulário
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: obj_ControleAtual - Campo do formulário em focu atualmente
//			  int_TamanhoMaximo - Tamanho maximo do campo
//			  obj_ControleProximo - Proximo controle da tabulação
//			  obj_Event - Evento da janela chamado
// -------------------------------------------------------------------------------------------
function AutoTabulacao(obj_ControleAtual, int_TamanhoMaximo, obj_ControleProximo, obj_Event) 
{
	var int_KeyCode = (isNN) ? obj_Event.which : obj_Event.keyCode;

	try {
		if (obj_ControleAtual.type == "button") {
			obj_ControleProximo.focus();
			return false;
		}

		if (obj_ControleAtual.value.length >= int_TamanhoMaximo || int_KeyCode == 13 || (int_KeyCode == 40 && obj_ControleAtual.type != "select-one")) {
			obj_ControleProximo.focus();
			return false;
		}
	}
    catch(e) {
		try {
			var int_Index = ObterIndex(obj_ControleProximo);
			obj_ControleAtual = obj_ControleProximo.form[int_Index];
			obj_ControleProximo = obj_ControleProximo.form[int_Index + 1];		
			AutoTabulacao(obj_ControleAtual, int_TamanhoMaximo, obj_ControleProximo, obj_Event); 
		}
	    catch(e) {
			return false;
		}
    }		
}
   
   
// -------------------------------------------------------------------------------------------
// Rotina   : Função auxiliar para função de tabulação
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: obj_ControleProximo - Objeto de controle do formulário
// -------------------------------------------------------------------------------------------
function ObterIndex(obj_ControleProximo) 
{
	for (i = 0; i < obj_ControleProximo.form.length; i++) {
		if (obj_ControleProximo.form[i] == obj_ControleProximo) {
			return i;
		}
	}
	
	return 0;
}


// -------------------------------------------------------------------------------------------
// Rotina   : Abre o formulário do sistema
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: str_Pagina - Url da página do sistema
// -------------------------------------------------------------------------------------------
function IniciarSistema(str_Pagina) 
{
	var obj_WinSistema;
	var int_WinPow;
	var int_WinPoh;
	var int_WinPox;
	var int_WinPoy;
	
	int_WinPow = window.screen.width;
	int_WinPoh = window.screen.height;
		
	int_WinPox = (window.screen.width  - int_WinPow) / 2;
	int_WinPoy = (window.screen.height - int_WinPoh) / 2;
	
	obj_WinSistema = window.open(str_Pagina, "brw_CobraCS", "Toolbar=No,location=No,directories=No,status=No,menubar=No,scrollbars=No,resizable=Yes");
	obj_WinSistema.resizeTo (Math.ceil(int_WinPow), Math.ceil(int_WinPoh - 28));
	obj_WinSistema.moveTo   (Math.ceil(int_WinPox), Math.ceil(int_WinPoy));
	obj_WinSistema.focus();
}


// -------------------------------------------------------------------------------------------
// Rotina   : Abre o formulário para finalizar o sistema
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: str_Pagina - Url da página do sistema
// -------------------------------------------------------------------------------------------
function FinalizarSistema(str_Pagina) 
{
	window.open(str_Pagina, "brw_CobraCSFinaliza", "Toolbar=No,location=No,directories=No,status=No,menubar=No,scrollbars=No,resizable=No,width=0,height=0,top=3000,left=3000");
}


// -------------------------------------------------------------------------------------------
// Rotina   : Iniciar um novo formulário padrão
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: str_Pagina - Url da página a ser aberta
//			  int_Width - Largura do formulário
//			  int_Height - Altura do formulário
// -------------------------------------------------------------------------------------------
function IniciarFormulario(str_Pagina, int_Width, int_Height) 
{
	top.fra_Frame.fra_Painel.location.href = str_Pagina;	
}


// -------------------------------------------------------------------------------------------
// Rotina   : Iniciar um novo formulário
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: str_Pagina - Url da página a ser aberta
//			  int_Width - Largura do formulário
//			  int_Height - Altura do formulário
// -------------------------------------------------------------------------------------------
function AbreFormulario(str_Pagina, int_Width, int_Height, bol_Padrao) 
{
	var obj_WinSistema;
	var int_WinPow;
	var int_WinPoh;
	var int_WinPox;
	var int_WinPoy;
	
	if (typeof(bol_Padrao) == "undefined" || bol_Padrao == false) {
		int_WinPow = int_Width;
		int_WinPoh = int_Height;
	} else { 
		int_WinPow = window.screen.width;
		int_WinPoh = window.screen.height;
	}

	if (isNN) {
		int_WinPox = (window.screen.width  - int_WinPow) / 2;
		int_WinPoy = (window.screen.height - int_WinPoh) / 2;
		
		obj_WinFormulario = window.open(str_Pagina, "brw_CobraCSFormulario", "Toolbar=No,location=No,directories=No,status=No,menubar=No,scrollbars=No,resizable=No");
		obj_WinFormulario.resizeTo(Math.ceil(int_WinPow), Math.ceil(int_WinPoh - 28));
		obj_WinFormulario.moveTo(Math.ceil(int_WinPox), Math.ceil(int_WinPoy));
		obj_WinFormulario.focus();
	} else {
		window.showModalDialog(str_Pagina, window, "dialogHeight: " + int_WinPoh + "px; dialogWidth: " + int_WinPow + "px; status: no; center: yes; help: no;");		
	}	
}


// -------------------------------------------------------------------------------------------
// Rotina   : Iniciar um novo formulário de localização de registro
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: str_Pagina - Url da página a ser aberta
// -------------------------------------------------------------------------------------------
function AbreFormularioLocaliza(str_Pagina) 
{
	var obj_WinSistema;
	var int_WinPow;
	var int_WinPoh;
	var int_WinPox;
	var int_WinPoy;

	int_WinPow = 660;
	int_WinPoh = 460;

	if (isNN) {
		int_WinPox = (window.screen.width  - int_WinPow) / 2;
		int_WinPoy = (window.screen.height - int_WinPoh) / 2;
		
		obj_WinFormulario = window.open(str_Pagina, "brw_CobraCSFormulario", "Toolbar=No,location=No,directories=No,status=No,menubar=No,scrollbars=No,resizable=No");
		obj_WinFormulario.resizeTo(Math.ceil(int_WinPow), Math.ceil(int_WinPoh - 28));
		obj_WinFormulario.moveTo(Math.ceil(int_WinPox), Math.ceil(int_WinPoy));
		obj_WinFormulario.focus();		
	} else {
		window.showModalDialog(str_Pagina, window, "dialogHeight: " + int_WinPoh + "px; dialogWidth: " + int_WinPow + "px; status: no; center: yes; help: no;");
	}	
}


// -------------------------------------------------------------------------------------------
// Rotina   : Iniciar um novo formulário explorer
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: str_Pagina - Url da página a ser aberta
// -------------------------------------------------------------------------------------------
function AbreFormularioExplorer(str_Pagina, str_Extensao, str_NomeFormulario, str_NomeCampo) 
{
	var obj_WinSistema;
	var int_WinPow;
	var int_WinPoh;
	var int_WinPox;
	var int_WinPoy;

	int_WinPow = 650;
	int_WinPoh = 500;
	
	str_Pagina = str_Pagina + "?Extensao=" + str_Extensao + "&NomeFormulario=" + str_NomeFormulario + "&NomeCampo=" + str_NomeCampo;

	if (isNN) {
		int_WinPox = (window.screen.width  - int_WinPow) / 2;
		int_WinPoy = (window.screen.height - int_WinPoh) / 2;
		
		obj_WinFormulario = window.open(str_Pagina, "brw_Explorer", "Toolbar=No,location=No,directories=No,status=No,menubar=No,scrollbars=No,resizable=No");
		obj_WinFormulario.resizeTo(Math.ceil(int_WinPow), Math.ceil(int_WinPoh - 28));
		obj_WinFormulario.moveTo(Math.ceil(int_WinPox), Math.ceil(int_WinPoy));
		obj_WinFormulario.focus();
	} else {
		window.showModalDialog(str_Pagina, window, "dialogHeight: " + int_WinPoh + "px; dialogWidth: " + int_WinPow + "px; status: no; center: yes; help: no;");
	}	
}


// -------------------------------------------------------------------------------------------
// Rotina   : Iniciar um novo formulário de visualização de relatório
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: str_Titulo - Título do relatório
//			  str_Nome - Nome do relatório
//			  str_Filtro - Filtro do relatório
// -------------------------------------------------------------------------------------------
function AbreFormularioRelatorio(str_Titulo, str_Nome, str_Filtro) 
{
	var obj_WinSistema;
	var int_WinPow;
	var int_WinPoh;
	var int_WinPox;
	var int_WinPoy;
	var str_Pagina;
	
	str_Pagina = "../relatorio/Relatorio.asp?par_Titulo=" + str_Titulo + "&par_Nome=" + str_Nome + "&par_Filtro=" + str_Filtro
	
	int_WinPow = window.screen.width;
	int_WinPoh = window.screen.height;

	if (isNN) {
		int_WinPox = (window.screen.width  - int_WinPow) / 2;
		int_WinPoy = (window.screen.height - int_WinPoh) / 2;
		
		obj_WinFormulario = window.open(str_Pagina, "brw_CobraCSRelatorio", "Toolbar=No,location=No,directories=No,status=No,menubar=No,scrollbars=No,resizable=No");
		obj_WinFormulario.resizeTo(Math.ceil(int_WinPow), Math.ceil(int_WinPoh - 28));
		obj_WinFormulario.moveTo(Math.ceil(int_WinPox), Math.ceil(int_WinPoy));
		obj_WinFormulario.focus();
	} else {
		window.showModalDialog(str_Pagina, window, "dialogHeight: " + Math.ceil(int_WinPoh - 40) + "px; dialogWidth: " + Math.ceil(int_WinPow - 20) + "px; status: no; center: yes; help: no;");		
	}	
}


// -------------------------------------------------------------------------------------------
// Rotina   : Abre o formulário para finalizar relatório
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: str_Pagina - Url da página de relatório
//			  str_PathRelatorio - Path do relatório 
// -------------------------------------------------------------------------------------------
function FinalizarRelatorio(str_Pagina, str_PathRelatorio) 
{
	window.open(str_Pagina + "?par_PathRelatorio=" + str_PathRelatorio, "brw_CobraCSFinalizaRelatorio", "Toolbar=No,location=No,directories=No,status=No,menubar=No,scrollbars=No,resizable=No,width=0,height=0,top=3000,left=3000");
}


// -------------------------------------------------------------------------------------------
// Rotina   : Fechar formulário padrão de frame principal
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: Nenhum parâmetro
// -------------------------------------------------------------------------------------------
function FecharFormulario() 
{
	top.fra_Frame.fra_Painel.location.href = "../sistema/Painel.asp";
}


// -------------------------------------------------------------------------------------------
// Rotina   : Carregar combobox de condições de filtro
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: frm_Filtro - Formulário de filtro
// -------------------------------------------------------------------------------------------
function CarregaCondicaoFiltro(frm_Filtro)
{
	var obj_Combobox = frm_Filtro.cbx_Condicao;
	var str_TipoDado = frm_Filtro.cbx_Campos.options[ObterIndexCombobox(frm_Filtro.cbx_Campos)].id;

	LimpaCombobox(obj_Combobox);
	
	switch (str_TipoDado) {
		case "String":
			obj_Combobox.options[0] = new Option("=", "=");
			obj_Combobox.options[1] = new Option("<>", "<>");
			obj_Combobox.options[2] = new Option("contendo", "LIKE");	
			obj_Combobox.options[3] = new Option("contendo no início", "LIKEBEGIN");	
			obj_Combobox.options[4] = new Option("contendo no final", "LIKEEND");		
			obj_Combobox.options[5] = new Option("e", "AND");
			obj_Combobox.options[6] = new Option("ou", "OR");
			break;
		case "Integer":
			obj_Combobox.options[0] = new Option("=", "=");
			obj_Combobox.options[1] = new Option("<>", "<>");
			obj_Combobox.options[2] = new Option(">=", ">=");
			obj_Combobox.options[3] = new Option("<=", "<=");
			obj_Combobox.options[4] = new Option("entre", "BETWEEN");	
			obj_Combobox.options[5] = new Option("e", "AND");		
			obj_Combobox.options[6] = new Option("ou", "OR");
			break;
		case "Long":
			obj_Combobox.options[0] = new Option("=", "=");
			obj_Combobox.options[1] = new Option("<>", "<>");
			obj_Combobox.options[2] = new Option(">=", ">=");
			obj_Combobox.options[3] = new Option("<=", "<=");
			obj_Combobox.options[4] = new Option("entre", "BETWEEN");	
			obj_Combobox.options[5] = new Option("e", "AND");		
			obj_Combobox.options[6] = new Option("ou", "OR");
			break;
		case "Currency":
			obj_Combobox.options[0] = new Option("=", "=");
			obj_Combobox.options[1] = new Option("<>", "<>");
			obj_Combobox.options[2] = new Option(">=", ">=");
			obj_Combobox.options[3] = new Option("<=", "<=");
			obj_Combobox.options[4] = new Option("entre", "BETWEEN");	
			obj_Combobox.options[5] = new Option("e", "AND");		
			obj_Combobox.options[6] = new Option("ou", "OR");
			break;
		case "Boolean":
			obj_Combobox.options[0] = new Option("=", "=");
			obj_Combobox.options[1] = new Option("<>", "<>");
			obj_Combobox.options[2] = new Option("e", "AND");		
			obj_Combobox.options[3] = new Option("ou", "OR");
			break;
		case "Date":
			obj_Combobox.options[0] = new Option("=", "=");
			obj_Combobox.options[1] = new Option("<>", "<>");
			obj_Combobox.options[2] = new Option(">=", ">=");
			obj_Combobox.options[3] = new Option("<=", "<=");
			obj_Combobox.options[4] = new Option("entre", "BETWEEN");	
			obj_Combobox.options[5] = new Option("e", "AND");		
			obj_Combobox.options[6] = new Option("ou", "OR");			
			break;
		default:
			obj_Combobox.options[0] = new Option("=", "=");
			obj_Combobox.options[1] = new Option("<>", "<>");
			obj_Combobox.options[2] = new Option(">=", ">=");
			obj_Combobox.options[3] = new Option("<=", "<=");
			obj_Combobox.options[4] = new Option("entre", "BETWEEN");	
			obj_Combobox.options[5] = new Option("contendo", "LIKE");	
			obj_Combobox.options[6] = new Option("contendo no início", "LIKEBEGIN");	
			obj_Combobox.options[7] = new Option("contendo no final", "LIKEEND");		
			obj_Combobox.options[8] = new Option("e", "AND");		
			obj_Combobox.options[9] = new Option("ou", "OR");					
			break;
	}	

	obj_Combobox.selectedIndex = 0;
}


// -------------------------------------------------------------------------------------------
// Rotina   : Definir filtro para pesquisa de registro
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: str_PaginaFiltro - Página global de definição de filtro
// 			  frm_Filtro - Formulário de filtro
// -------------------------------------------------------------------------------------------
function DefinirFiltro(str_PaginaFiltro, frm_Filtro) 
{
	switch (frm_Filtro.cbx_Condicao.value) {
		case "AND":
			frm_Filtro.txa_Criterio.value = frm_Filtro.txa_Criterio.value + " AND ";
			break;
		case "OR":
			frm_Filtro.txa_Criterio.value = frm_Filtro.txa_Criterio.value + " OR ";
			break;
		default:
			var arr_Filtro = new Array(7);
			arr_Filtro[0] = frm_Filtro.name;
			arr_Filtro[1] = frm_Filtro.cbx_Campos.value;
			arr_Filtro[2] = frm_Filtro.cbx_Campos.options[ObterIndexCombobox(frm_Filtro.cbx_Campos)].id;
			arr_Filtro[3] = frm_Filtro.cbx_Condicao.value;
			arr_Filtro[4] = frm_Filtro.txt_ValorInicial.value;
			arr_Filtro[5] = frm_Filtro.txt_ValorFinal.value;
			arr_Filtro[6] = frm_Filtro.txa_Criterio.name;
			
			RsExecute(str_PaginaFiltro, arr_Filtro, false, false);
			break;
	} 
}


// -------------------------------------------------------------------------------------------
// Rotina   : Habilitar valores do filtro pela condição
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: frm_Filtro - Formulário de filtro
// -------------------------------------------------------------------------------------------
function HabilitaValorFiltro(frm_Filtro)
{
	CarregaCondicaoFiltro(frm_Filtro);	

	AtualizarCondicaoFiltro(frm_Filtro); 
}


// -------------------------------------------------------------------------------------------
// Rotina   : Atualizar valor de filtro para pesquisa de registro
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: frm_Filtro - Formulário de filtro
// -------------------------------------------------------------------------------------------
function AtualizarValorFiltro(frm_Filtro) 
{
	for( var i = 0; i< frm_Filtro.cbx_ValorInicial.options.length; i++ ){
		if( frm_Filtro.cbx_ValorInicial.options[i].selected ){
			frm_Filtro.txt_ValorInicial.value = frm_Filtro.cbx_ValorInicial.value;
			return;
		}  
	}	
}


// -------------------------------------------------------------------------------------------
// Rotina   : Atualizar consição de filtro para pesquisa de registro
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: frm_Filtro - Formulário de filtro
// -------------------------------------------------------------------------------------------
function AtualizarCondicaoFiltro(frm_Filtro) 
{
	var str_TipoDado = frm_Filtro.cbx_Campos.options[ObterIndexCombobox(frm_Filtro.cbx_Campos)].id;
	
	frm_Filtro.txt_ValorInicial.value = "";
	frm_Filtro.txt_ValorFinal.value = "";

	if (str_TipoDado == "Boolean") {
		frm_Filtro.txt_ValorInicial.style.display = "none";		
		frm_Filtro.txt_ValorInicial.className = "textbox-readonly";
		frm_Filtro.txt_ValorInicial.readOnly = true;
		frm_Filtro.txt_ValorFinal.className = "textbox-readonly";
		frm_Filtro.txt_ValorFinal.readOnly = true;
		frm_Filtro.cbx_ValorInicial.style.display = "";		
		AtualizarValorFiltro(frm_Filtro);
	} else {
		frm_Filtro.txt_ValorInicial.style.display = "";
		frm_Filtro.cbx_ValorInicial.style.display = "none";
		
		switch (frm_Filtro.cbx_Condicao.value) {
			case "AND":
				frm_Filtro.txt_ValorInicial.className = "textbox-readonly";
				frm_Filtro.txt_ValorInicial.readOnly = true;
				frm_Filtro.txt_ValorFinal.className = "textbox-readonly";
				frm_Filtro.txt_ValorFinal.readOnly = true;	
				break;
			case "OR":
				frm_Filtro.txt_ValorInicial.className = "textbox-readonly";
				frm_Filtro.txt_ValorInicial.readOnly = true;
				frm_Filtro.txt_ValorFinal.className = "textbox-readonly";
				frm_Filtro.txt_ValorFinal.readOnly = true;	
				break;			
			case "BETWEEN":
				frm_Filtro.txt_ValorInicial.className = "textbox";
				frm_Filtro.txt_ValorInicial.readOnly = false;
				frm_Filtro.txt_ValorFinal.className = "textbox";
				frm_Filtro.txt_ValorFinal.readOnly = false;
				break;
			default:
				frm_Filtro.txt_ValorInicial.className = "textbox";
				frm_Filtro.txt_ValorInicial.readOnly = false;
				frm_Filtro.txt_ValorFinal.className = "textbox-readonly";
				frm_Filtro.txt_ValorFinal.readOnly = true;			
				break;
		}
	}		
}


// -------------------------------------------------------------------------------------------
// Rotina   : Habilitar botões e controle de paginação do grid de registro
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: obj_CheckboxPaginacao - Objetop chackbox de paginação
// 			  str_BotoesPaginar - Nome da linha da tabela de botões de paginação
// 			  str_TextboxPaginar - Nome do textbox de label de paginação
// -------------------------------------------------------------------------------------------
function HabilitarPaginacao(obj_CheckboxPaginacao, str_BotoesPaginar, str_TextboxPaginar)
{
	var obj_BotoesPaginar = window.document.getElementById(str_BotoesPaginar);
	var obj_TextboxPaginar = window.document.getElementById(str_TextboxPaginar);
	
	if (!obj_CheckboxPaginacao.checked) {
		obj_CheckboxPaginacao.value = 0;
		obj_BotoesPaginar.style.display = "none";
		obj_TextboxPaginar.style.display = "none";
	} else {
		obj_CheckboxPaginacao.value = 1;		
		obj_BotoesPaginar.style.display = "";
		obj_TextboxPaginar.style.display = "";
	}
}


// -------------------------------------------------------------------------------------------
// Rotina   : Formatar valores do filtro pela tipo do campo
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: obj_Campo - Campo do formulário de valor de filtro
//			  frm_Filtro - Formulário de filtro
// 			  str_Mask - Formatação da maskara
//						 [# - Alfanumérico]
//						 [0 - Numeric]
//						 [A - Alfa]
//						 [Z - Alfa maiusculo]
//			  obj_Event - Evento da janela chamado
// -------------------------------------------------------------------------------------------
function FormatarValorFiltro(obj_Campo, frm_Filtro, obj_Event, str_Mask)
{
	var str_TipoDado = frm_Filtro.cbx_Campos.options[ObterIndexCombobox(frm_Filtro.cbx_Campos)].id;
	
	switch (str_TipoDado) {
		case "String":
			if (typeof(str_Mask) != "undefined") {
				return FormatarMascara(obj_Campo, str_Mask, obj_Event);
			}
			break;
		case "Integer":
			return FormatarValor(obj_Event);
			break;
		case "Long":
			return FormatarValor(obj_Event);
			break;
		case "Currency":
			return FormatarMoeda(obj_Campo, obj_Event);
			break;
		case "Boolean":
			return true;
			break;
		case "Date":
			FormatarData(obj_Campo, obj_Event);
			if (obj_Campo.value.length == 10) {
				obj_Event.keyCode = 0;
			}
			break;
	}
}


// -------------------------------------------------------------------------------------------
// Rotina   : Formatar campos do tipo data chamado no evento onKeyPress
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: obj_Campo - Campo do formulário de data
//			  obj_Event - Evento da janela chamado
// -------------------------------------------------------------------------------------------
function FormatarData(obj_Campo, obj_Event)
{
	var i = obj_Campo.value.length;
	var str_Mask = "00/00/0000"
	
	if (str_Mask.length == i){
		return false;
	}		

	var str_Saida = str_Mask.substring(i,i+1);
	var str_Ascii = (isNN) ? obj_Event.which : obj_Event.keyCode;				
	  
	if (str_Saida == "A") {
		if (((str_Ascii >= 97) && (str_Ascii <= 122)) || (str_Ascii <= 231)) { 
			obj_Event.keyCode -= 32;
		} else { 
			obj_Event.keyCode = 0; 
		}
	} else if (str_Saida == "Z") {
		if (((str_Ascii >= 65) && (str_Ascii <= 90)) || ((str_Ascii >= 97) && (str_Ascii <= 122)) || (str_Ascii <= 231)) { 
			obj_Event.keyCode = obj_Event.keyCode;
		} else { 
			obj_Event.keyCode = 0;
		}
	} else if (str_Saida == "0") {
		if ((str_Ascii >= 48) && (str_Ascii <= 57)) { 
			return;
		}
		else { 
			obj_Event.keyCode = 0;
		}
	} else if (str_Saida == "#") {
		return;
	} else {
		obj_Campo.value += str_Saida;
		i += 1;
		str_Saida = str_Mask.substring(i,i+1);
		if (str_Saida == "A") {
			if (((str_Ascii >= 97) && (str_Ascii <= 122)) || (str_Ascii <= 231)) { 
			   obj_Event.keyCode -= 32; 
			} else { 
			   obj_Event.keyCode = 0; 
			}
		} else if (str_Saida == "Z") {
			if (((str_Ascii >= 65) && (str_Ascii <= 90)) || ((str_Ascii >= 97) && (str_Ascii <= 122)) || (str_Ascii <= 231)) { 
				obj_Event.keyCode = obj_Event.keyCode;
			} else { 
				obj_Event.keyCode = 0;
			}
		} else if (str_Saida == "0") {
			if ((str_Ascii >= 48) && (str_Ascii <= 57)) { 
				return;
			} else { 
				obj_Event.keyCode = 0;
			}
		} else { return; }
	}
}


// -------------------------------------------------------------------------------------------
// Rotina   : Formatar campos com mascara chamado no evento onKeyPress
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: obj_Campo - Campo do formulário de data
// 			  str_Mask - Formatação da maskara
//						 [# - Alfanumérico]
//						 [0 - Numeric]
//						 [A - Alfa]
//						 [Z - Alfa maiusculo]
//			  obj_Event - Evento da janela chamado
// -------------------------------------------------------------------------------------------
function FormatarMascara(obj_Campo, str_Mask, obj_Event)
{
	var i = obj_Campo.value.length;
	
	if (str_Mask.length == i){
		return false;
	}		

	var str_Saida = str_Mask.substring(i,i+1);
	var str_Ascii = (isNN) ? obj_Eventwhich : obj_Event.keyCode;       	
  
	if (str_Saida == "A") {
		if (((str_Ascii >= 97) && (str_Ascii <= 122)) || (str_Ascii <= 231)) { 
			obj_Event.keyCode -= 32;
		} else { 
			obj_Event.keyCode = 0; 
		}
	} else if (str_Saida == "Z") {
		if (((str_Ascii >= 65) && (str_Ascii <= 90)) || ((str_Ascii >= 97) && (str_Ascii <= 122)) || (str_Ascii <= 231)) { 
			obj_Event.keyCode = obj_Event.keyCode;
		} else { 
			obj_Event.keyCode = 0;
		}
	} else if (str_Saida == "0") {
		if ((str_Ascii >= 48) && (str_Ascii <= 57)) { 
			return;
		} else { 
			obj_Event.keyCode = 0;
		}
	} else if (str_Saida == "#") {
		return;
	} else {
		obj_Campo.value += str_Saida;
		i += 1;
		str_Saida = str_Mask.substring(i,i+1);
		if (str_Saida == "A") {
			if (((str_Ascii >= 97) && (str_Ascii <= 122)) || (str_Ascii <= 231)) { 
			   obj_Event.keyCode -= 32; 
			} else { 
			   obj_Event.keyCode = 0; 
			}
		} else if (str_Saida == "Z") {
			if (((str_Ascii >= 65) && (str_Ascii <= 90)) || ((str_Ascii >= 97) && (str_Ascii <= 122)) || (str_Ascii <= 231)) { 
				obj_Event.keyCode = obj_Event.keyCode;
			} else { 
				obj_Event.keyCode = 0;
			}
		} else if (str_Saida == "0") {
			if ((str_Ascii >= 48) && (str_Ascii <= 57)) { 
				return;
			} else { 
				obj_Event.keyCode = 0;
			}
		} else { return; }
	}
}


// -------------------------------------------------------------------------------------------
// Rotina   : Formatar campos do tipo valor chamado no evento onKeyPress
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: obj_Event - Evento da janela chamado
// -------------------------------------------------------------------------------------------
function FormatarValor(obj_Event)
{
	var int_keyCod = (isNN) ? obj_Event.which : obj_Event.keyCode; 
      
	if ((int_keyCod >= 48) && (int_keyCod <= 57)) {
		return;
	} else { 
		obj_Event.keyCode = 0;
	}
}


// -------------------------------------------------------------------------------------------
// Rotina   : Formatar campos alfas maicusculas chamado no evento onKeyPress
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: obj_Event - Evento da janela chamado
// -------------------------------------------------------------------------------------------
function FormatarMaiuscula(obj_Event) 
{
	var int_keyCod = (isNN) ? obj_Event.which : obj_Event.keyCode; 
	
	if (((int_keyCod >= 97) && (int_keyCod <= 122)) || (int_keyCod == 227) || (int_keyCod == 231) || ((int_keyCod >= 224) && (int_keyCod <= 227)) || (int_keyCod == 233) || (int_keyCod == 234) || (int_keyCod == 237) || ((int_keyCod >= 243) && (int_keyCod <= 245)) || (int_keyCod == 252)) {
		obj_Event.keyCode = obj_Event.keyCode - 32;
	}
}


// -------------------------------------------------------------------------------------------
// Rotina   : Formatar campos alfas e numericos chamado no evento onKeyPress
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: obj_Event - Evento da janela chamado
// -------------------------------------------------------------------------------------------
function FormatarAlfanumerico(obj_Event) 
{
	var int_keyCod = (isNN) ? obj_Event.which : obj_Event.keyCode; 
      
    if (((int_keyCod >= 48) && (int_keyCod <= 57)) || ((int_keyCod >= 65) && (int_keyCod <= 90)) || ((int_keyCod >= 97) && (int_keyCod <= 122)) || ((int_keyCod >= 192) && (int_keyCod <= 220)) || ((int_keyCod >= 224) && (int_keyCod <= 245)) || ((int_keyCod >= 249) && (int_keyCod <= 252)) || (int_keyCod == 32) || (int_keyCod == 16) || (int_keyCod == 17)){ 
		 obj_Event.keyCode = obj_Event.keyCode;
	} else { 
		 obj_Event.keyCode = 0;
	}
}


// -------------------------------------------------------------------------------------------
// Rotina   : Formatar campos do tipo moeda chamado no evento onKeyPress
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: obj_Campo - Campo do formulário de data
//			  obj_Event - Evento da janela chamado
// -------------------------------------------------------------------------------------------
function FormatarMoeda(obj_Campo, obj_Event) {
	var int_Separador = 0;
	var str_Key = '';
	var i = j = 0;
	var int_Len = int_Len2 = 0;
	var str_Check = '0123456789';
	var str_Aux = str_Aux2 = '';
	var str_SeparadorMilhar = '.';
	var str_SeparadorDecimal = ',';
	var str_whichCode = (isNN) ? obj_Event.which : obj_Event.keyCode; 
	  
	if (str_whichCode == 13) return true;
	str_Key = String.fromCharCode(str_whichCode);
	if (str_Check.indexOf(str_Key) == -1) return false;
	int_Len = obj_Campo.value.length;
	for(i = 0; i < int_Len; i++)
		if ((obj_Campo.value.charAt(i) != '0') && (obj_Campo.value.charAt(i) != str_SeparadorDecimal)) break;
	str_Aux = '';
	for(; i < int_Len; i++)
		if (str_Check.indexOf(obj_Campo.value.charAt(i))!=-1) str_Aux += obj_Campo.value.charAt(i);
	str_Aux += str_Key;
	int_Len = str_Aux.length;
	if (int_Len == 0) obj_Campo.value = '';
	if (int_Len == 1) obj_Campo.value = '0'+ str_SeparadorDecimal + '0' + str_Aux;
	if (int_Len == 2) obj_Campo.value = '0'+ str_SeparadorDecimal + str_Aux;
	if (int_Len > 2) {
		str_Aux2 = '';
		for (j = 0, i = int_Len - 3; i >= 0; i--) {
			if (j == 3) {
				str_Aux2 += str_SeparadorMilhar;
				j = 0;
			}
			str_Aux2 += str_Aux.charAt(i);
			j++;
		}
		obj_Campo.value = '';
		int_Len2 = str_Aux2.length;
		for (i = int_Len2 - 1; i >= 0; i--)
		obj_Campo.value += str_Aux2.charAt(i);
		obj_Campo.value += str_SeparadorDecimal + str_Aux.substr(int_Len - 2, int_Len);
	}
	return false;
}


// -------------------------------------------------------------------------------------------
// Rotina   : Obter a data atual
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: Nenhum Parâmetro
// -------------------------------------------------------------------------------------------
function ObterData()
{
	var dat_DataAtual, str_Data = "";
	dat_DataAtual = new Date();
	
	if (dat_DataAtual.getDate() < 10) {
		str_Data += "0" + dat_DataAtual.getDate() + "/";
	} else {
		str_Data += dat_DataAtual.getDate() + "/";		  
	}
	
	if ((dat_DataAtual.getMonth() + 1) < 10) {
		str_Data += "0" + (dat_DataAtual.getMonth() + 1) + "/";	  		  
	} else {
		str_Data += (dat_DataAtual.getMonth() + 1) + "/";	  
	}	  
	
	str_Data += dat_DataAtual.getYear();
	return(str_Data);
}


// -------------------------------------------------------------------------------------------
// Rotina   : Validar campos do tipo data chamado no evento onBlur
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: obj_Campo - Campo do formulário de data
// -------------------------------------------------------------------------------------------
function ValidarData(obj_Campo){
	if ((obj_Campo.value == null) || (obj_Campo.value.length == 0)){
		 return false;
	}				 

	if (obj_Campo.value.length != 10){
		MsgBox("Informe a data no formato dd/mm/aaaa", 64, "");
		obj_Campo.focus();
		return false;
	}				 
	
	var int_Dia = parseInt(obj_Campo.value.substring(0,2),10);
	var int_Mes = parseInt(obj_Campo.value.substring(3,5),10);
	var int_Ano = parseInt(obj_Campo.value.substring(6,10),10);
	
	if (! ((int_Dia >= 1) && (int_Dia <= 31))){
		MsgBox("Dia inválido", 64, "");
		obj_Campo.value = "";
		obj_Campo.focus();
		return false;
	}

	if (! ((int_Mes >= 1) && (int_Mes <= 12))){
		MsgBox("Mês inválido", 64, "");			
		obj_Campo.value = "";
		obj_Campo.focus();
		return false;
	}	 
	
	if (obj_Campo.value.substring(6,10).length != 4){
		MsgBox("Ano inválido", 64, "");						
		obj_Campo.value = "";
		obj_Campo.focus();	 		
		return false;
	}	 

	if ((int_Mes == 2) && (int_Dia > DiasEmFevereiro(int_Ano))){
		MsgBox("Ano inválido", 64, "");								 
		obj_Campo.value = "";
		obj_Campo.focus();
		return false;		 
	}
	
	if (((int_Mes == 4) || (int_Mes == 6)	|| (int_Mes == 9) || (int_Mes == 11)) && (int_Dia > 30))
	{
		MsgBox("Data inválida", 64, "");
		obj_Campo.value = "";
		obj_Campo.focus();
		return false;
	}
	
	return true;
}


// -------------------------------------------------------------------------------------------
// Rotina   : Verifica ano bissexto
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: int_Ano - Ano a ser verificado
// -------------------------------------------------------------------------------------------
function DiasEmFevereiro(int_Ano)
{       
	return (  ((int_Ano % 4 == 0) && ( (!(int_Ano % 100 == 0)) || (int_Ano % 400 == 0) ) ) ? 29 : 28 );
}


// -------------------------------------------------------------------------------------------
// Rotina   : Mover itens de um listabox para outro
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: obj_FromCombo - Campo lista do formulário de origem
// 			  obj_ToCombo - Campo lista do formulário de destino
// -------------------------------------------------------------------------------------------
function MoverItensListbox(obj_FromCombo, obj_ToCombo) {
	var lst_FromCombo = obj_FromCombo;
	var lst_ToCombo = obj_ToCombo;
	var int_RemoveCounter = 0;
	
	for (var i=0;i < lst_FromCombo.options.length; i++) {
		if (lst_FromCombo.options[i].selected == true) {
			var addtext = lst_FromCombo.options[i].text;
			var addvalue = lst_FromCombo.options[i].value;
			lst_ToCombo.options[lst_ToCombo.options.length] = new Option(addtext,addvalue);
			lst_FromCombo.options[i].selected = false;
			++int_RemoveCounter;
		} else {
			lst_FromCombo.options[i-int_RemoveCounter].selected = false;
			lst_FromCombo.options[i-int_RemoveCounter].text = lst_FromCombo.options[i].text;
			lst_FromCombo.options[i-int_RemoveCounter].value = lst_FromCombo.options[i].value;
		}
	}
	
	var numToLeave = lst_FromCombo.options.length-int_RemoveCounter;
	for (var i=lst_FromCombo.options.length-1;i >= numToLeave;i--) { 
		lst_FromCombo.options[i]=null;
	}
}


// -------------------------------------------------------------------------------------------
// Rotina   : Colocar formulário em espera desabilitando os botões
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: frm_Form - Formulário para deixar em espara
// -------------------------------------------------------------------------------------------
function EsperarProcessamento(frm_Form) {
	for( var i=0; i < frm_Form.length; i++ ){
		if (frm_Form.elements[i].type == "button") {
			frm_Form.elements[i].disabled = true;
		}
	}
}


// -------------------------------------------------------------------------------------------
// Rotina   : Liberar formulário habilitando os botões
// 
// Autor    : Marcelo Sanches em 01/01/2004 Revisão:01/01/2004
// 
// Parametro: frm_Form - Formulário para deixar em espara
// -------------------------------------------------------------------------------------------
function LiberarProcessamento(frm_Form) {
	for( var i=0; i < frm_Form.length; i++ ){
		if (frm_Form.elements[i].type == "button") {
			frm_Form.elements[i].disabled = false;
		}
	}
}