var BROWSER_INTERNET_EXPLORER = "Microsoft Internet Explorer";
var BROWSER_NETSCAPE          = "Netscape";
var BROWSER_SAFARI            = "Safari";

var ID_AREA_PESQUISA    = "pesquisa";
var ID_TITULO_ISBN_ISSN = "form:tituloISBN_ISSN";
var ID_ORDENS           = "form:ordens";

var ID_PARCIAL_TITULO    = "foco";
var ID_PARCIAL_AUTOR     = "autor";
var ID_PARCIAL_ASSUNTO   = "assunto";
var ID_PARCIAL_EDITORA   = "editora";
var ID_PARCIAL_SERIE     = "serie";
var ID_PARCIAL_ISBN_ISSN = "ISBN_ISSN";
var ID_PARCIAL_IDIOMA    = "idioma";

var gEspacoInferiorOriginal;
var gTituloISBN_ISSNOriginal;
var gOrdensOriginais;

function carregado()
{
	carregadoBase();
	lerValoresOriginais();
	materialMudado(false);
}

function materialMudado(selecionarOrdemTitulo)
{
	var ORDEM_AUTOR   = "AUTOR";
	var ORDEM_ASSUNTO = "ASSUNTO";

	var browser = obterBrowser();

	var visiveis = new Array();
	var invisiveis = new Array();

	var espacoInferior;
	
	var tituloISBN_ISSN = document.getElementById(ID_TITULO_ISBN_ISSN);
	tituloISBN_ISSN.innerHTML = gTituloISBN_ISSNOriginal;
	
	restaurarOrdensOriginais();

	var material = document.getElementById("form:materiais").value;
	if (material == "PERIODICO")
	{
		tituloISBN_ISSN.innerHTML = "ISSN:";

		visiveis = [
			ID_PARCIAL_ASSUNTO,
			ID_PARCIAL_EDITORA,
			ID_PARCIAL_ISBN_ISSN,
			ID_PARCIAL_IDIOMA
		];
		invisiveis = [
			ID_PARCIAL_AUTOR,
			ID_PARCIAL_SERIE
		];
		
		removerOrdens([ORDEM_AUTOR]);
		
		espacoInferior = browser == BROWSER_SAFARI ? "225px" :
			(browser == BROWSER_NETSCAPE ? "217px" : "221px");
	}
	else if (material == "MONOGRAFIA" || material == "DISSERTACAO" ||
		material == "TESE" || material == "ARTIGO")
	{
		visiveis = [
			ID_PARCIAL_AUTOR,
			ID_PARCIAL_ASSUNTO
		];
		invisiveis = [
			ID_PARCIAL_EDITORA,
			ID_PARCIAL_SERIE,
			ID_PARCIAL_ISBN_ISSN,
			ID_PARCIAL_IDIOMA
		];
		
		espacoInferior = browser == BROWSER_SAFARI ? "276px" :
			(browser == BROWSER_NETSCAPE ? "260px" : "268px");
	}
	else if (material == "VIDEO")
	{
		invisiveis = [
			ID_PARCIAL_AUTOR,
			ID_PARCIAL_ASSUNTO,
			ID_PARCIAL_EDITORA,
			ID_PARCIAL_SERIE,
			ID_PARCIAL_ISBN_ISSN,
			ID_PARCIAL_IDIOMA
		];
		
		removerOrdens([ORDEM_AUTOR, ORDEM_ASSUNTO]);
		
		espacoInferior = browser == BROWSER_SAFARI ? "326px" :
			(browser == BROWSER_NETSCAPE ? "302px" : "314px");
	}
	else
	{
		if (material == "LIVRO")
		{
			tituloISBN_ISSN.innerHTML = "ISBN:";
		}
		
		visiveis = [
			ID_PARCIAL_AUTOR,
			ID_PARCIAL_ASSUNTO,
			ID_PARCIAL_EDITORA,
			ID_PARCIAL_SERIE,
			ID_PARCIAL_ISBN_ISSN,
			ID_PARCIAL_IDIOMA
		];
		
		espacoInferior = gEspacoInferiorOriginal;
	}
	
	if (selecionarOrdemTitulo)
	{
		var ordens = document.getElementById(ID_ORDENS);
		ordens.selectedIndex = 0;
	}
	
	for (var i = 0; i < invisiveis.length; i++)
	{
		var linha = document.getElementById("linha" + invisiveis[i]);
		linha.style.display = "none";
		var campo = document.getElementById("form:" + invisiveis[i]);
		campo.value = "";
	}
	for (var i = 0; i < visiveis.length; i++)
	{
		var linha = document.getElementById("linha" + visiveis[i]);
		linha.style.display = "";
	}

	var areaPesquisa = document.getElementById(ID_AREA_PESQUISA);
	areaPesquisa.style.marginBottom = espacoInferior;
}

function limpar()
{
	document.getElementById("form:" + ID_PARCIAL_TITULO).value = "";
	document.getElementById("form:" + ID_PARCIAL_AUTOR).value = "";
	document.getElementById("form:" + ID_PARCIAL_ASSUNTO).value = "";
	document.getElementById("form:" + ID_PARCIAL_EDITORA).value = "";
	document.getElementById("form:" + ID_PARCIAL_SERIE).value = "";
	document.getElementById("form:" + ID_PARCIAL_ISBN_ISSN).value = "";
	document.getElementById("form:" + ID_PARCIAL_IDIOMA).value = "";
	
	var campi = document.getElementById("form:campi");
	if (campi.options.length > 0)
	{
		campi.selectedIndex = 0;
	}

	var combinacoesDados = document.getElementById("form:combinacoesDados").
		getElementsByTagName("input");
	for (var i = 0; i < combinacoesDados.length; i++)
	{
		if (combinacoesDados[i].value == "E")
		{
			combinacoesDados[i].checked = true;
			break;
		}
	}
}

function lerValoresOriginais()
{
	gEspacoInferiorOriginal =
		document.getElementById(ID_AREA_PESQUISA).style.marginBottom;
	
	gTituloISBN_ISSNOriginal =
		document.getElementById(ID_TITULO_ISBN_ISSN).innerHTML;
	
	var ordens = document.getElementById(ID_ORDENS);
	gOrdensOriginais = new Array(ordens.options.length);
	for (var i = 0; i < ordens.options.length; i++)
	{
		gOrdensOriginais[i] = new Array(2);
		gOrdensOriginais[i][0] = ordens.options[i].value;
		gOrdensOriginais[i][1] = ordens.options[i].text;
	}
}

function restaurarOrdensOriginais()
{
	var ordens = document.getElementById(ID_ORDENS);
	
	var ordemSelecionada = ordens.selectedIndex;
	
	for (var i = ordens.options.length - 1; i >= 0; i--)
	{
		ordens.remove(i);
	}
	for (var i = 0; i < gOrdensOriginais.length; i++)
	{
		var ordem = document.createElement("option");
		ordem.value = gOrdensOriginais[i][0];
		ordem.text = gOrdensOriginais[i][1];
		if (obterBrowser() == BROWSER_INTERNET_EXPLORER)
		{
			ordens.add(ordem);
		}
		else
		{
			ordens.add(ordem, null);
		}
	}
	
	ordens.selectedIndex = ordemSelecionada;
}

function removerOrdens(valoresOrdens)
{
	var ordens = document.getElementById(ID_ORDENS);
	for (var valor = 0; valor < valoresOrdens.length; valor++)
	{
		for (var ordem = 0; ordem < ordens.options.length; ordem++)
		{
			if (ordens.options[ordem].value == valoresOrdens[valor])
			{
				ordens.remove(ordem);
				break;
			}
		}
	}
}

function obterBrowser()
{
	if (navigator.userAgent.indexOf(BROWSER_SAFARI) >= 0)
	{
		return BROWSER_SAFARI;
	}
	else
	{
		return navigator.appName;
	}
}

function exibirDicasPesquisa()
{
	var host = window.location.host;
	var caminho = window.location.pathname.substring(
		0, window.location.pathname.lastIndexOf("/"));
	var endereco = "http://" + host + caminho + "/dicaspesquisa.faces";

	var altura = 450;
	var largura = 550;
	var topo = parseInt((screen.availHeight / 2) - (altura / 2));
	var esquerda = parseInt((screen.availWidth / 2) - (largura / 2));

	janela = window.open(endereco, "dicaspesquisa",
		"top=" + topo + ",left=" + esquerda + ",width=" + largura +
		",height=" + altura + ",toolbar=no,menubar=no,scrollbars=yes," +
		"resizable=yes");
	janela.focus();
}

function validar()
{
	var CAMPO_CAMPO  = 0;
	var CAMPO_TITULO = 1;

	var TAMANHO_MINIMO_CAMPO = 3;
	
	var ids = [
		ID_PARCIAL_TITULO,
		ID_PARCIAL_AUTOR,
		ID_PARCIAL_ASSUNTO,
		ID_PARCIAL_EDITORA,
		ID_PARCIAL_SERIE,
		ID_PARCIAL_ISBN_ISSN,
		ID_PARCIAL_IDIOMA
	];
	var campos = new Array();
	for (var i = 0; i < ids.length; i++)
	{
		campos[i] = new Array(2);
		campos[i][CAMPO_CAMPO] = document.getElementById("form:" + ids[i]);
		campos[i][CAMPO_TITULO] = obterTitulo("form:titulo" + ids[i]);
	}
	
	var nenhumDadoInformado = true
	for (var i = 0; i < campos.length; i++)
	{
		if (!branco(campos[i][CAMPO_CAMPO].value))
		{
			nenhumDadoInformado = false;
			break;
		}
	}
	if (nenhumDadoInformado)
	{
		alert(obterMensagem("nenhumDadoInformado"));
		return false;
	}

	for (var i = 0; i < campos.length; i++)
	{
		var campo = campos[i][CAMPO_CAMPO];
		if (!branco(campo.value) &&
			trim(campo.value).length < TAMANHO_MINIMO_CAMPO)
		{
			var titulo = campos[i][CAMPO_TITULO];
			alert(obterMensagem(
				"tamanhoMinimoCampo", [titulo, TAMANHO_MINIMO_CAMPO]));
			campo.focus();
			campo.select();
			return false;
		}
	}

	return true;
}

function obterTitulo(id)
{
	var titulo = document.getElementById(id).innerHTML;
	titulo = titulo.substring(0, titulo.length - 1);
	return titulo;
}

function obterMensagem(chave, argumentos)
{
	var mensagem;

	var mensagens =
		document.getElementById("form:mensagensCliente").value.split("|");
	for (var i = 0; i < mensagens.length; i++)
	{
		var c = mensagens[i].substring(0, mensagens[i].indexOf("="));
		if (c == chave)
		{
			mensagem = trim(
				mensagens[i].substring(mensagens[i].indexOf("=") + 1)) + ".";
			break;
		}
	}
	
	if (mensagem != null)
	{
		if (argumentos != null)
		{
			for (var i = 0; i < argumentos.length; i++)
			{
				var p = mensagem.indexOf("%");
				mensagem = mensagem.substring(0, p) +
					argumentos[i] + mensagem.substring(p + 1);
			}
		}
	}
	else
	{
		alert("Chave não encontrada: '" + chave + "'.");
	}
	
	return mensagem;
}

// trim
// Autor: Steve (http://blog.stevenlevithan.com/archives/faster-trim-javascript)
function trim(str)
{
	var	str = str.replace(/^\s\s*/, "");
	var ws = /\s/;
	var i = str.length;
	while (ws.test(str.charAt(--i)));
	return str.slice(0, i + 1);
}
