/**
 * Mostra avisos de erro, de sucesso e de informação
 * @author Michael Henrique Siegwarth
 */
function GerenciadorAvisos() {	
	GerenciadorAvisos.divMensagem;

	/**
	 * Cria e mostra uma mensagem
	 * @param {Object} mensagem Mensagem a ser mostrada
	 * @param {Object} tipo Tipo da mensagem: 1=Erro, 2=Alerta
	 */
	this.criar = function(titulo, mensagem, tipo, fechavel, temCancelar) {
		// Altura e largura do aviso
		largura = 300;
		altura = 100;		
		
		// Cria um objeto para adicionar um div na página
		GerenciadorAvisos.divMensagem = document.createElement("div");
		document.body.appendChild(GerenciadorAvisos.divMensagem);
		
		// Define a altura e a largura no estilo CSS
		GerenciadorAvisos.divMensagem.style.width = largura + "px";
		GerenciadorAvisos.divMensagem.style.height = altura + "px";
		
		// Código para posicionar o aviso no centro da tela
		posx = (parseInt(document.body.clientWidth) - largura) / 2;
		posy = (parseInt(document.body.clientHeight) - altura) / 2;
		GerenciadorAvisos.divMensagem.style.left = posx + "px";  
		GerenciadorAvisos.divMensagem.style.top = posy + "px";
		
		// Adiciona o título
		codigo = "<div id=\"avisoTitulo\">" + titulo + "</div>";
		
		if(fechavel) {
			codigo += "<div class=\"avisoFechar\">X</div>";
		}
		
		// Montagem do código HTML do aviso
		switch(tipo) {
			case 1: // erro
				codigo += "<img class=\"avisoImagem\" src=\"img/erro_64.png\"></img>";
				break;
			case 2: // atenção
				codigo += "<img class=\"avisoImagem\" src=\"img/atencao_64.png\"></img>";
				break;
			default: // default é erro
				codigo += "<img class=\"avisoImagem\" src=\"img/erro_64.png\"></img>";	
		}
		
		codigo += "<p class=\"avisoConteudo\">" + mensagem + "</p><br>";
		
		codigo += "<form class=\"avisoBotoes\">";
		
		if(temCancelar) {
			codigo += "<input type=\"button\"";
			codigo += " value=\"Cancelar\" name=\"botaocancelar\" onclick=\"return false;\"></input>";
		}
			
		codigo += "<input type=\"button\"";
		codigo += " value=\"OK\" name=\"botaook\" onclick=\"GerenciadorAvisos.onBotaoAvisoOK(this.form)\"></input>";

		codigo += "</form>";
		// Adiciona a mensagem desejada ao form
		GerenciadorAvisos.divMensagem.innerHTML = codigo;
		
		
		// Define a classe do aviso de acordo com as entradas
		switch(tipo) {
			case 1: // erro
				GerenciadorAvisos.divMensagem.className = "avisoErro";
				break;
			case 2: // atenção
				GerenciadorAvisos.divMensagem.className = "avisoAtencao";
				break;
			default: // default é erro
				GerenciadorAvisos.divMensagem.className = "avisoErro";	
		}
		
		// Coloca o foco no botão OK, para o caso de o usuário 
		// querer apertar ENTER para fechar a janela
		GerenciadorAvisos.divMensagem.elements[0].focus();
		
		return GerenciadorAvisos.divMensagem;
	}
}

/**
 * Função estática que serve como evento para quando um botão é clicado
 * @param {Object} form Div a ser removido
 */
GerenciadorAvisos.onBotaoAvisoOK = function(div) {
	// Apaga o div, já que ele se torna inútil
	document.body.removeChild(div);
}