// Função que abre a janela dos módulos da ferramenta.
function AbreModulo(mypage, myname)
{
	winprops = 'scrollbars=yes, resizable=yes, location=no, menubar=no, statusbar=no, toolbar=no'

	win = window.open(mypage, myname, winprops)
	
	if (parseInt(navigator.appVersion) >= 4) {win.window.focus();}
}


/**
 * Função que controla navegação da ferramenta pelo teclado. Utiliza teclas do teclado como atalho.
 * -------------------------------------------------------------------------------------------------------------
 * @COMANDOS
 * SETA PARA CIMA -> Seta o foco para o elemento anterior do formulário em relação ao elemento com o foco atual.
 * SETA PARA BAIXO -> Seta o foco para o elemento posterior do formulário em relação ao elemento com o foco atual.
 * ENTER -> Submete o formulário, ou seja, confirma a operação.
 * ESC -> Cancela a operação
 * -------------------------------------------------------------------------------------------------------------
 * @INSTRUÇÕES
 * Deve ser utilizado juntamente com o evento 'onkeydown'.
 * -------------------------------------------------------------------------------------------------------------
 * @EXEMPLO
 * <input type="Text" name="NOME" size="60" maxlength="60" class="text" onkeydown="setaFoco(this, event);">
 * -------------------------------------------------------------------------------------------------------------
 * @PARÂMETROS
 * input -> elemento do formulário
 * e -> event
 */
function setKbControl(input, e)
{
	whichCode = (window.Event) ? e.which : e.keyCode;

	var elemtForm  = input.form;
	var elemtValue = input.value;
	var elemtNum   = elemtForm.length;
	var elemtIndex = aux = getIndex();

	var nxtField = (elemtIndex < (elemtNum - 1)) ? (elemtIndex + 1) : 0;
	var fwdField = ((elemtIndex > 0) && (elemtIndex <= (elemtNum - 1))) ? (elemtIndex - 1) : (elemtNum - 1);

	while(elemtForm[nxtField].isDisabled || elemtForm[nxtField].readOnly || (elemtForm[nxtField].type == 'hidden') || 
	(elemtForm[nxtField].type == 'button') || (elemtForm[nxtField].type == 'submit'))
	{
		aux++;

		if(aux > (elemtNum - 1))    { aux = 0; }

		nxtField = (aux < (elemtNum - 1)) ? (aux + 1) : 0;
	}

	while(elemtForm[fwdField].isDisabled || elemtForm[fwdField].readOnly || (elemtForm[fwdField].type == 'hidden') || 
	(elemtForm[fwdField].type == 'button') || (elemtForm[fwdField].type == 'submit'))
	{
		fwdField = (fwdField) ? (fwdField - 1) : (elemtNum - 1);
	}

	if (whichCode == 13)
	{ 
		elemtForm['operacao'].value = 'confirmar';

		if(elemtForm.onsubmit())    { elemtForm.submit(); }

		return false;
	}
	if (whichCode == 27)
	{ 
		elemtForm['operacao'].value = 'cancelar';

		elemtForm.submit();

		return false;
	}
	else if (whichCode == 38)
	{
		elemtForm[fwdField].focus();

		return false;
	}
	else if (whichCode == 40)
	{
		elemtForm[nxtField].focus();

		return false;
	}

	function getIndex()
	{
		var elemtName = input.name;

		for(var i = 0; i < elemtNum; i++)
		{
			if(elemtForm[i].name == elemtName)    { return i; }
		}

		return false;
	}
}


/**
 * Função que seta para vazio o valor dos elementos editáveis do formulário especificado.
 * --------------------------------------------------------------------------------------
 */
function LimpaEditElemtForm(formName)
{
	var elemtQtde = formName.length;

	var filter1 = new Array('text', 'password', 'textarea', 'select-one', 'select-multiple', 'file');
	var filter2 = new Array('checkbox', 'radio');

	for(var i = 0; i < elemtQtde; i++)
	{
		elemt = formName[i];
		elemtType = elemt.type;

		if(filter1.search(elemtType) !== false)
		{
			if(!elemt.isDisabled && !elemt.readOnly)    { elemt.value = ''; }
		}
		else if(filter2.search(elemtType) !== false)
		{
			if(!elemt.isDisabled && !elemt.readOnly)    { elemt.checked = false; }
		}
	}
}


// Função que abre um alert de confirm para a exclusão de um registro na ferramenta.
function excluir(formulario)
{
	var agree = confirm('Voce tem certeza que deseja excluir este registro?')

	if(agree)
	{
		document.forms[formulario].operacao.value='remover';
		document.forms[formulario].submit();
	}
}


// Função que abre um alert de confirm para a alteração de um registro na ferramenta.
function alterar(formulario)
{
	var agree = confirm('Voce deseja entrar no modo de alteração?');

	if(agree == true)
	{
		window.document.forms[formulario].operacao.value='alterar';
		window.document.forms[formulario].submit();
		return agree;
	}
	else
		return agree;
}

// Função que retorna a url passando por GET os identificadores do registro
function getRegId(str)
{
	return '?dest=imprimir&' + str;
}