/************************/
/* Autor: Felipe Jaekel */
/************************/
/*   Scripts globais    */
/************************/

/*******************************************/
/* Abreviação para document.getElementById */
/*******************************************/
function field(campo)
{
	return document.getElementById(campo);
}

/************************************/
/* Loading para as requisições AJAX */
/************************************/
function loading()
{
	//Faz referência ao corpo do documento
	var body = document.getElementsByTagName('body')[0];

	var divAtual = field('divLoading');
	if(divAtual)
	{
		hide('divLoading');
		body.style.cursor = 'default';
	}
	else
	{
		//Muda o cursor para
		body.style.cursor = 'wait';

		var div   = document.createElement('div');
		div.id    = 'divLoading';
		var texto = document.createTextNode('Carregando...');
		div.appendChild(texto);

		var img = document.createElement('img');
		img.src = '/imagens/loading.gif';
		img.style.marginLeft = '15px';
		div.appendChild(img);

		//Formata o container
		with(div.style)
		{
			display 	  = 'block';
			position	  = 'absolute';
			zIndex 	  = 999;
			border     = '1px solid #8b0000'
			color      = '#fff';
			fontSize   = '15px';
			fontWeight = 'bold';
			height 	  = lineHeight = '50px';
			width 	  = '250px';
			textAlign  = 'center';
			backgroundColor = '#cd0000';

			//Centraliza na tela
			if(isIE())
			{
				//Se for o lixo do IE >= 7, centraliza na tela aplicando suas propriedades específicas
				if(isIEgte7())
				{
					left = (document.body.clientWidth  / 2) + 'px';
					top  = (document.body.clientHeight / 2) + 'px';
				}
				else
				{
					//No lixão do IE <= 6 joga para o canto inferior direito da tela devido ao zindex bug das selects
					right = bottom = '0px';

					//Centraliza o texto verticalmente. Como no lixão do IE <= 6 a propriedade padding aumenta o tamanho do container, a propriedade height será subtraída da propriedade padding
					height 	  = '35px';
					paddingTop = '15px';
				}
			}
			else
			{
				left = ((window.innerWidth - 250) / 2) + 'px';
				top  = ((window.innerHeight - 50) / 2) + 'px';
			}
		}

		body.appendChild(div);
	}
}


//Usada na consulta de solicitações
function toggle(linha, imagem)
{
	if(field(linha).style.display == 'none')
	{
		field(linha).style.display = '';
		field(imagem).src = '/imagens/minus.gif';
	}
	else
	{
		field(linha).style.display = 'none';
		field(imagem).src = '/imagens/plus.gif';
	}
}



///QUASE PRONTO
/*function findNextActiveField(e)
{
	if(!e)
	{
		var e = window.event;
	}

	//Detecta qual tecla foi pressionada
	if(e.keyCode)
	{
		code = e.keyCode;
	}
	else if(e.which)
	{
		code = e.which;
	}

	//Detecta qual campo tem focus
	var activeElement = null;
	if(e.target)
	{
		activeElement = e.target;
	}
	else if(e.srcElement)
	{
		activeElement = e.srcElement;
	}
	
	//Se foi pressionado ENTER, posiciona no próximo campo ativo
	if(code == 13)
	{
		for(var i in document.forms)
		{
			var elementos = document.forms[i].elements;

			for(var j in elementos)
			{
				if
				(
					elementos[j] && //Verifica se o elemento existe
					(elementos[j].name || elementos[j].id) && //Verifica se as propriedades existem
					(elementos[j].name == activeElement.name) || (elementos[j].id == activeElement.id) //Verifica se o campo atual é o campo que tem focus
				)
				{
					if(elementos[j].type == "textarea" || elementos[j].type == "button" || elementos[j].type == "image")
					{
						//Apenas retorna. "false" remove a funcionalidade do botão
						return;
					}

					//j está como string
					var k = parseInt(j) + 1;

					while
					(
						!elementos[k] ||
						(!elementos[k].name && !elementos[k].id) ||
						!elementos[k].type || 
						elementos[k].disabled ||
						elementos[k].readOnly ||
						elementos[k].type == "hidden" 
					)
					{
						if(k == elementos.length)
						{
							return;
						}
	
						k++;
					}

					//alert(elementos[k].name);
					setFocus(elementos[k].id);
					
					return false;
				}
			}
		}
	}
}

function autoTab()
{
	document.onkeypress = findNextActiveField;
}

autoTab();*/

function columnFitText(colunas, contador)
{
   //Contador de linhas
   var linha;

   //Contador do vetor de colunas
   var i;

   //Varre as linhas do grid
   for(linha = 0; linha < contador; linha++)
   {
      //Varre o vetor de colunas
   	for(i = 0; i < colunas.length; i++)
   	{
			while(field(colunas[i].nome + linha).offsetHeight > 25)
			{
				//innerHTML contém todo o conteúdo que está dentro da tag, inclusive código html
				//--final faz com que primeiro seja feito o decremento e depois seja executado o resto
				//html2text faz com que códigos html voltem a ser caracteres, para que contem apenas como 1 na substr()
				field(colunas[i].nome + linha).innerHTML =
				html2text(field(colunas[i].nome + linha).innerHTML).substr(0, --colunas[i].tamanho) + '...&nbsp;';
			}
		}
   }
}

/*****************************************************************/
/* Confirma a saída de uma página de todas as maneiras possíveis */
/*****************************************************************/
var janela =
{
	alterouConteudo: false,
	
	confirmaSaida: function()
	{
		if(!this.alterouConteudo)
		{
			this.alterouConteudo  = true;
			window.onbeforeunload =	function(){return 'ATENÇÃO: todas as informações não salvas serão perdidas'};
		}
	},

	reset: function()
	{
		this.alterouConteudo  = false;
		window.onbeforeunload =	null;
	}
}

//OBSOLETA, usar janela.confirmaSaida
function confirmExit()
{
	window.onbeforeunload =
	function(){return 'ATENÇÃO: todas as informações não salvas serão perdidas'};
}

/*******************************************/
/* Ajusta o tamnhado do iframe ao conteúdo */
/*******************************************/
function autoFitIframe(id)
{
	if(document.all)
	{
		parent.document.getElementById(id).style.height = this.document.body.offsetHeight + 'px';
	}
	else
	{
		parent.document.getElementById(id).style.height = this.document.body.scrollHeight + 'px';
	}
}

/****************************************************************/
/* Utilizada junto com o paginador. Processa os links da select */
/****************************************************************/
function href(pagina)
{
	if(location.search != '')
	{
		if(!location.search.match(/pagina/))
		{
			//Se a variável pagina não existe ela será adicionada no final da query string
			location.href = location.href.replace(/$/, '&pagina=' + pagina);
		}
		else
		{
			//Se $pagina existe seu conteúdo será alterado
			location.href = location.href.replace(/pagina=.*$/, 'pagina=' + pagina);
		}
	}
	else
	{
		//Se a variável pagina não existe e não há query string, ambas serão criadas
		location.search = '?pagina=' + pagina;
	}
}