/**
 * Seta o endereço do navegador para o fornecido, opcionalmente mediante confirmação.
 */
function setLocation(url, msg) {
	if (msg) {
		if (!confirm(msg)) return;
	}
	window.location = url;
}

/**
 * Alterna o estado do display de uma layer entre "none" e "block"
 */
function toggleDisplay(id) {
	var l = document.getElementById(id);
	if ((l.style.display == "none") || (l.style.display == "")) {
		l.style.display = "block";
	} else {
		l.style.display = "none";
	}
}

/**
 * Preenche uma string com zeros à esquerda no tamanho especificado
 */
function fillWithZeros(s, size) {
	var zeros = "";
	for (var i = 0; i < size; i++) {
		zeros = zeros + "0";
	}
	s = zeros + s;
	return s.substr(s.length - size);
}

/**
 * Retorna uma string com a data formatada a partir da data informada
 */
function formatDate(d) {
	var day = fillWithZeros(d.getDate(), 2);
	var month = fillWithZeros(d.getMonth() + 1, 2);
	var year = d.getFullYear();
	return day + "/" + month + "/" + year;
}

/**
 * Retorna uma string com a hora formatada a partir da data informada
 */
function formatTime(d, includeSeconds) {
	var timeStr =
		fillWithZeros(d.getHours(), 2) + ":" +
		fillWithZeros(d.getMinutes(), 2);
	if (includeSeconds) {
		timeStr = timeStr + ":" + fillWithZeros(d.getSeconds(), 2);
	}
	return timeStr;
}

/**
 * Monta uma string de parâmetros de requisição a partir dos dados de um formulário.
 */
function paramString(formulario) {
	var f = document.getElementById(formulario);
	var i = 0;
	var req = new String();
	for (i = 0; i < f.elements.length; i++) {
		var e = f.elements[i];
		if (e.name != null && e.name != "" && e.value != null && e.value != "")
			req = req + e.name + "=" + e.value + "&";
	}
	if (req.length > 1)
		req = req.substring(0, req.length - 1);
	return req;
}

/**
 * Analiza a string verificando se ela contém mensagens de erro. Caso a primeira linha
 * seja a palavra ERRO, assume que as linhas subsequentes contém as mensagens de erro
 * e exibe um alert com essas mensagens.
 */
function mostrarMensagens(msg) {
	if (msg != null && msg.length > 0) {
		var l = msg.split("\r\n");
		if (l[0].indexOf("[MENSAGENS]") > -1) {
			var texto = "Ocorreram os seguintes erros:\n\n";
			var i = 0;
			for (i = 1; i < l.length; i++) {
				l[i] = l[i].replace(/^[\t ]+/, "").replace(/[ \r\n]+$/, "");
				texto = texto + "\t" + l[i] + "\n";
			}
			alert(texto);
			return true;
		}
	}
	return false;
}

/*
 * Seta a seleção de um select pelo nome informado
 */
function selecionarPorTexto(sel, texto) {
	var i = 0;
	for (i = 0; i < sel.options.length; i++) {
		if (sel.options[i].value == texto) {
			sel.options[i].selected = true;
			break;
		}
	}
}
