/************************/
/* Autor: Felipe Jaekel */
/*******************************************/
/* Funções para manipulação de formulários */
/*******************************************/

/****************************************************************************/
/* Impede que um formulário seja enviado mais de uma vez desnecessariamente */
/****************************************************************************/
//Parâmetros enviar e limpar foram criados porque na alteração do RAT existem vários campos enviar e limpar, portanto foi necessário usar um contador para diferenciar suas identidades
function submitControl(enviar, limpar)
{
   if(!enviar && !limpar)
   {
		field('enviar').disabled = enabled('enviar');
		field('limpar').disabled = enabled('limpar');
	}
	else
	{
		field(enviar).disabled = enabled(enviar);
		field(limpar).disabled = enabled(limpar);
	}

	if(field('excluir'))
	{
		field('excluir').disabled = enabled('excluir');
	}
}

/*****************************************************************************/
/* Limpa os campos de um formulário */
/************************************/
function limpaForm(form)
{
	var campo = document.forms[form].elements;

	//Nesse caso for in não funciona na bosta do explorer
	for(var i = 0; i < campo.length; i++)
	{
		switch(campo[i].type)
		{
			case 'text':
			case 'file':
			case 'textarea':
			case 'password':
			{
				campo[i].value = '';
				break;
			}
			case 'select-one':
			case 'select-multiple':
			{
				campo[i].selectedIndex = 0;
				break;
         }
			case 'checkbox':
			{
				campo[i].checked = false;
				break;
			}
		}
	}
}

/*****************************************************************************/
/* Limpa o valor de um campo */
/*****************************/
function limpa(campo)
{
	switch(field(campo).type)
	{
		case 'text':
		case 'file':
		case 'textarea':
		case 'password':
		{
			field(campo).value = '';
			break;
		}
		case 'select-one':
		case 'select-multiple':
		{
			field(campo).selectedIndex = 0;
			break;
		}
		case 'checkbox':
		{
			field(campo).checked = false;
			break;
		}
	}
}

/*****************************************************************************/
/* Remove todas as opções de uma select */
/****************************************/
function limpaSelect(campo)
{
	field(campo).options.length = 0;
}

/***********************************************************************************/
/* Enche uma select através da manupilação das propriedades texto e valor da mesma */
/***********************************************************************************/
function encheSelect(campo, dados)
{
   //Equivalente ao foreach
	for(var i in dados)
   {
      //O objeto passado deverá ter as propriedades texto e valor
   	field(campo).options[i] = new Option(dados[i].texto, dados[i].valor);
   }
}

/*****************************************************************************/
/* Alterna a visibilidade de um elemento */
/*****************************************/
function toggleDisplay(campo)
{
	if(field(campo).style.display == 'none')
	{
		field(campo).style.display = '';
	}
	else
	{
		field(campo).style.display = 'none';
	}
}

/*****************************************************************************/
/* Determina se uma campo está visível */
/***************************************/
function isVisible(campo)
{
	return (field(campo).style.display != 'none');
}

/*****************************************************************************/
/* Mostra um elemento */
/**********************/
function show(campo)
{
	field(campo).style.display = '';
}

/*****************************************************************************/
/* Esconde um elemento */
/***********************/
function hide(campo)
{
	field(campo).style.display = 'none';
}

/*****************************************************************************/
/* Posiciona em um campo */
/*************************/
function setFocus(campo)
{
   //Se o campo texto tiver conteúdo seleciona o mesmo
   if(field(campo).type == 'text' && field(campo).value != '')
   {
      setTimeout(function(){field(campo).focus()}, 10);
		setTimeout(function(){field(campo).select()}, 10);
	}
	else
	{
      setTimeout(function(){field(campo).focus()}, 10);
	}
}

/*****************************************************************************/
/* Desativa um campo */
/*********************/
function disable(campo)
{
	field(campo).disabled = true;
}

/*****************************************************************************/
/* Ativa um campo */
/******************/
function enable(campo)
{
	field(campo).disabled = false;
}

/*****************************************************************************/
/* Testa se um campo está ativado */
/**********************************/
function enabled(campo)
{
	return (field(campo).disabled == false);
}

