﻿function escreve_iframe(id) {
	var html = "<iframe id='" + id + "' frameborder='0' style='width: 100%; display: none;' onload='" + id + "_onload(this)'></iframe>";
	document.write(html);
}

//document.write("<div id='cabecalho_usuario' style='font-size: large; font-weight: bold; margin-top: 1.5em' class='ms-vb'>Dados Pessoais</div>");

document.write("<div id='logon_iframes' style='margin-top: 1em; margin-bottom: 1em;'>");
escreve_iframe("usuario_criar");
escreve_iframe("usuario_editar");
document.write("</div>");

/*
function obtem_opcao(nome, valor_default) {
	var opcao;
	if (window["exige_usuario"] && exige_usuario["opcoes"]) {
		opcao = exige_usuario.opcoes[nome];
	}
	return opcao == undefined ? valor_default : opcao;
}
*/

//document.write("<div id='cabecalho_item' style='font-size: large; font-weight: bold; margin-top: 2em; display: none;' class='ms-vb'>Dados do Item</div>");

registerCallback("logon_entrou", usuario_entrou);
registerCallback("logon_saiu", usuario_saiu);
registerCallback(
	"criar_salvou",
	function() {
		hideElement($("usuario_criar"));
	}
);
registerCallback(
	"editar_salvou",
	function() {
		hideElement($("usuario_editar"));
	}
);

_spBodyOnLoadFunctionNames.push("inicia_exige_usuario");

function inicia_exige_usuario() {
	var linha_usuario = getEditFormTR("Usuário");
	if (linha_usuario) {
		/*
		var cabecalho = obtem_opcao("cabecalho_item", true);

		if (typeof(cabecalho) == "string")
			$("cabecalho_item").innerHTML = cabecalho;
		if (cabecalho)
			showElement($("cabecalho_item"));
		*/
		
		hideElement(linha_usuario);
	}
	
	if (getModuleOption("exige_usuario", "editando", false) || getModuleOption("exige_usuario", "forcado", false)) {
		if (Logon.usuario_logado())
			usuario_entrou();
		else
			usuario_saiu();
	} else {
		if (Logon.usuario_logado() || Logon.usuario_sharepoint())
			usuario_entrou();
		else
			usuario_saiu();
	}
}

function redireciona_cancelar(iframe) {
	var codigo_cancelar = function() {
		var url = document.referrer ? document.referrer : "/";
		STSNavigate(url);
	};

	var cancelar = getCancelButtons();
//	if (cancelar.length > 0)
//		codigo_cancelar = cancelar[0].onclick;
		
	cancelar = cancelar.concat(getCancelButtons(iframeDocument(iframe)));
	cancelar.forEach(
		function(botao) {
			botao.onclick = codigo_cancelar;
		}
	);
}

function esconde_cancelar(iframe) {
	var cancelar = getCancelButtons(iframeDocument(iframe));
	cancelar.forEach(hideElement);
}

function usuario_criar_onload(iframe) {
	if (iframe.contentWindow.location.href.endsWith("/scripts/usuario_criar.aspx")) {
		// Carregou a página para criação de usuário
		redireciona_cancelar(iframe);
		showElement(iframe);
		autosizeIframe(iframe);
	} else if (iframe.contentWindow.location.href.contains(".aspx")) {
		// Criou o novo usuário
		Logon.logon(
			usuario_criado.usuario,
			usuario_criado.senha,
			function() {
				// Recarrega a página inteira para que a lista de usuários disponíveis para seleção
				// seja atualizada.
				window.location.reload(true);
			}
		);
	}
}

function usuario_editar_onload(iframe) {
	if (iframe.contentWindow.location.href.contains("/scripts/usuario_editar.aspx")) {
		// Carregou a página para edição de usuário
		if (getModuleOption("exige_usuario", "editando", false))
			esconde_cancelar(iframe);
		else
			redireciona_cancelar(iframe);

		showElement(iframe);
		autosizeIframe(iframe);
	} else if (iframe.contentWindow.location.href.contains(".aspx")) {
		// Editou usuário
		mostra_usuario_logado();
	}
}

function elemento_dados_item() {
	return getModuleOption("exige_usuario", "elemento_dados_item", elemento_dados_item_padrao)();
}

function elemento_dados_item_padrao() {
	return getNextSibling($("logon_iframes"), byTagName("TABLE"));
}

function usuario_entrou() {
	hideElement($("usuario_criar"));
	if (Logon.usuario_logado()) {
		mostra_usuario_logado();
		seta_usuario_logado();
	}
	showElement(elemento_dados_item());
}

function seta_usuario_logado() {
	var controle_usuario = getEditFormElement("Usuário");
	if (controle_usuario) {
		setSelectedByValue(controle_usuario, Logon.id_usuario());
	}
}

function usuario_saiu() {
	hideElement($("usuario_editar"));
	mostra_usuario_criar();
	hideElement(elemento_dados_item());
}

function mostra_usuario_logado() {
	if (getModuleOption("exige_usuario", "editando", false)) {
		var iframe = $("usuario_editar");
		iframeNavigate(iframe, appendParameters(["ID"], [Logon.id_usuario()], "/scripts/usuario_editar.aspx"));
		showElement(iframe);
	}
}

function mostra_usuario_criar() {
	var iframe = $("usuario_criar");
	iframeNavigate(iframe, "/scripts/usuario_criar.aspx");
	showElement(iframe);
}

