/*

Este arquivo contem funcoes especificas para tratamento de layout

Pre-requisito: geral

*/

function layout() {

	/*

	Descricao: Cria um botao simples com a fonte e o fundo personalizados
	Retorno: nao possui retorno (escreve diretamente na tela)
	Parametros:
		- objPai = id do objeto ou objeto que contera o botao
		- rotulo = texto que sera mostrado no interior do botao
		- corFundo = cor do fundo
		- funcao = funcao que sera executada quando o botao for acionado
		- [estilosAdicionais] = array contendo estilos especificos (ex.: array("text-decoration","underline"))
		- [idBotao] = identificador do botao (id)

	*/

	this.botao = function (objPai, rotulo, corFundo, funcao) {

		var objGeral = new geral();

		var objPai = objGeral.pegarObj(objPai);

		var estilosAdicionais = (arguments.length > 4) ? arguments[4] : false;
		var idBotao = (arguments.length > 5) ? arguments[5] : false;

		var conteudoEstilosAdicionais = "";

		if ((estilosAdicionais !== false)&&(estilosAdicionais.length)) {

			for (var i = 0; i < estilosAdicionais.length; i++) {

				conteudoEstilosAdicionais += estilosAdicionais[i][0] + ":" + estilosAdicionais[i][1] + ";";

			}

		}

		switch (corFundo) {

			case "cinza":
				var corFundo = "#CCCCCC";
				break;

			case "cinzaEscuro":
				var corFundo = "#999999";
				break;

			case "laranja":
				var corFundo = "#FF9900";
				break;

			case "verde":
				var corFundo = "#84C302";
				break;

			default:
				break;

		}

		var conteudo = "<span><table border='0' cellpadding='0' cellspacing='0' style='display: inline;'><tr height='20'><td align='center' class='tahoma branco negrito' " + ((idBotao) ? "id='" + idBotao + "' " : "") + "style='background-color: " + corFundo + "; cursor: pointer; padding-left: 10px; padding-right: 10px;" + conteudoEstilosAdicionais + "' onclick='" + funcao + "'>" + rotulo + "</td></tr></table></span>";

		if (objPai) {

			objPai.innerHTML += conteudo;

		}

	}

	/*

	Descricao: Retira a formatacao de erro de um campo
	Retorno: nao possui retorno
	Parametros:
		- objEscolhido = id do objeto ou objeto que deve ser "reiniciado"

	*/

	this.semErro = function (objEscolhido) {

		var objGeral = new geral();

		var objEscolhido = objGeral.pegarObj(objEscolhido);

		if (!objEscolhido) {

			return false;

		}

		var backgroundColorAntiga = objEscolhido.getAttribute("backgroundColorAntiga");

		if (backgroundColorAntiga != "") {

			objEscolhido.style.backgroundColor = backgroundColorAntiga;

		}
		else {

			objEscolhido.style.backgroundColor = "";

		}

	}

	/*

	Descricao: Formata o campo para enfatizar um erro
	Retorno: nao possui retorno
	Parametros:
		- objEscolhido = id do objeto ou objeto que deve ser alterado

	*/

	this.comErro = function (objEscolhido) {

		var objGeral = new geral();

		var objEscolhido = objGeral.pegarObj(objEscolhido);

		if (!objEscolhido) {

			return false;

		}

		objEscolhido.setAttribute("backgroundColorAntiga",objEscolhido.style.backgroundColor);
		objEscolhido.style.backgroundColor = "#FFBBBB";
		objEscolhido.focus();

	}

	/*

	Descricao: Retira a formatacao de erro de um campo
	Retorno: nao possui retorno
	Parametros:
		- objEscolhido = id do objeto ou objeto que deve ser "reiniciado"

	*/

	this.mostrarLayerPopup = function (titulo, mensagem) {

		var listaSelect = document.getElementsByTagName("select");

		for (var i = 0; i < listaSelect.length; i++) {

			if ((listaSelect[i].getAttribute("visibilityAntigo") != "visible")&&(listaSelect[i].getAttribute("visibilityAntigo") != "hidden")) {

				listaSelect[i].setAttribute("visibilityAntigo",(listaSelect[i].style.visibility) ? listaSelect[i].style.visibility : "visible");

			}

			listaSelect[i].style.visibility = "hidden";

		}

		var conteudo = "";
		conteudo += "<table border=0 cellpadding=0 cellspacing=0 height='100%' width='100%'>";
		conteudo += "	<tr>";
		conteudo += "		<td align='center'>";
		conteudo += "			<table border=0 cellpadding=0 cellspacing=0 height=150 width=300>";
		conteudo += "				<tr height='100%'>";
		conteudo += "					<td bgcolor='#FFFFFF'>";
		conteudo += "						<table border=0 cellpadding=0 cellspacing=0 height='100%' width='100%'>";
		conteudo += "							<tr height=19 align='left'><td background='/admin/imagens/aviso/fundo_titulo.gif' class='verdana tamanho10 branco negrito' style='padding-left: 15px;'>" + titulo + "</td></tr>";
		conteudo += "							<tr><td style='border: #999999 solid 1px; border-top: #FFFFFF none 0px;'>" + mensagem + "</td></tr>";
		conteudo += "						</table>";
		conteudo += "					</td>";
		conteudo += "					<td width=6>";
		conteudo += "						<table border=0 cellpadding=0 cellspacing=0 height='100%' width='100%'>";
		conteudo += "							<tr height=6><td><img src='/admin/imagens/aviso/vazio.gif' border=0 height=6 width=6></td></tr>";
		conteudo += "							<tr><td style='background-color: #000000; opacity: .21; filter: alpha(opacity=21);'><img src='/admin/imagens/aviso/vazio.gif' border=0 height=1 width=6></td></tr>";
		conteudo += "						</table>";
		conteudo += "					</td>";
		conteudo += "				</tr>";
		conteudo += "				<tr height=6>";
		conteudo += "					<td colspan=2>";
		conteudo += "						<table border=0 cellpadding=0 cellspacing=0 height='100%' width='100%'>";
		conteudo += "							<tr>";
		conteudo += "								<td width=6><img src='/admin/imagens/aviso/vazio.gif' border=0 height=6 width=6></td>";
		conteudo += "								<td style='background-color: #000000; opacity: .21; filter: alpha(opacity=21);'><img src='/admin/imagens/aviso/vazio.gif' border=0 height=6 width=1></td>";
		conteudo += "							</tr>";
		conteudo += "						</table>";
		conteudo += "					</td>";
		conteudo += "				</tr>";
		conteudo += "			</table>";
		conteudo += "		</td>";
		conteudo += "	</tr>";
		conteudo += "</table>";

		var alturaConteudo = (document.body.parentNode.scrollHeight) ? document.body.parentNode.scrollHeight : 600;
		var larguraConteudo = (document.body.parentNode.scrollWidth) ? document.body.parentNode.scrollWidth : 800;

		/*for (var i = 0; i < document.body.childNodes.length; i++) {

			alturaConteudo += (document.body.childNodes[i].offsetHeight) ? document.body.childNodes[i].offsetHeight : 0;

		}*/

		var alturaConteudoInterno = (document.body.parentNode.offsetHeight) ? document.body.parentNode.offsetHeight : 200;

		var posicaoX = (document.body.parentNode.scrollLeft) ? document.body.parentNode.scrollLeft : 0;
		var posicaoY = (document.body.parentNode.scrollTop) ? document.body.parentNode.scrollTop : 0;

		if (!window.camadasAviso) {

			window.camadasAviso = new Array();

		}

		var referencia = window.camadasAviso.push(true);

		var camadaProtecao = document.createElement("div");
		camadaProtecao.id = "camadaAvisoProtecao" + referencia;
		camadaProtecao.innerHTML = "<img src='/admin/imagens/aviso/vazio.gif' border=0 height=1 width=1>";
		camadaProtecao.style.backgroundColor = "#FFFFFF";
		camadaProtecao.style.height = alturaConteudo + "px";
		camadaProtecao.style.left = "0px";
		camadaProtecao.style.position = "absolute";
		camadaProtecao.style.top = "0px";
		camadaProtecao.style.width = larguraConteudo + "px";

		var camadaAviso = document.createElement("div");
		camadaAviso.id = "camadaAviso" + referencia;
		camadaAviso.innerHTML = conteudo;
		camadaAviso.style.height = alturaConteudoInterno + "px";
		camadaAviso.style.left = posicaoX + "px";
		camadaAviso.style.position = "absolute";
		camadaAviso.style.top = posicaoY + "px";
		camadaAviso.style.width =  larguraConteudo + "px";

		this.efeitoOpacidade(camadaProtecao,0);
		this.efeitoOpacidade(camadaAviso,0);

		document.body.appendChild(camadaProtecao);
		document.body.appendChild(camadaAviso);

		this.efeitoFadeIn("camadaAvisoProtecao" + referencia,300,80);
		this.efeitoFadeIn("camadaAviso" + referencia,300,100);

	}

	this.fecharLayerPopup = function () {

		var objGeral = new geral();

		var objCamadaAvisoProtecao = objGeral.pegarObj("camadaAvisoProtecao" + window.camadasAviso.length);
		var objCamadaAviso = objGeral.pegarObj("camadaAviso" + window.camadasAviso.length);

		window.camadasAviso.pop();

		if (objCamadaAvisoProtecao) {

			objCamadaAvisoProtecao.parentNode.removeChild(objCamadaAvisoProtecao);

		}

		if (objCamadaAviso) {

			objCamadaAviso.parentNode.removeChild(objCamadaAviso);

		}

		var listaSelect = document.getElementsByTagName("select");

		if (listaSelect) {

			for (var i = 0; i < listaSelect.length; i++) {

				listaSelect[i].style.visibility = listaSelect[i].getAttribute("visibilityAntigo");
				listaSelect[i].setAttribute("visibilityAntigo","");

			}

		}

	}

	this.mostrarAviso = function (tipoImagem, titulo, mensagem) {

		var objGeral = new geral();

		var largura = 200;
		var botoes = new Array();

		if (arguments.length > 3) {

			largura = arguments[3];

		}

		if (arguments.length > 4) {

			botoes = arguments[4];

		}

		if (!botoes[0]) {

			botoes[0] = new Array("OK","var objLayout = new layout(); objLayout.fecharLayerPopup();");

		}

		largura += 107;

		var conteudoBotoes = "";

		conteudoBotoes += "<table border=0 cellpadding=0 cellspacing=0 height=16>";
		conteudoBotoes += "	<tr>";

		for (var i = 0; i < botoes.length; i++) {

			conteudoBotoes += "<td style='padding-left: 2px; padding-right: 2px;'>";
			conteudoBotoes += "	<span>";
			conteudoBotoes += "	<table border=0 cellpadding=0 cellspacing=0 height=16 class='verdana preto normal' style='cursor: pointer;' onclick=\"" + botoes[i][1] + "\">";
			conteudoBotoes += "		<tr>";
			conteudoBotoes += "			<td><img src='/admin/imagens/aviso/botao_esquerdo.gif' border=0></td>";
			conteudoBotoes += "			<td background='/admin/imagens/aviso/botao_centro.gif' nowrap>" + botoes[i][0] + "</td>";
			conteudoBotoes += "			<td><img src='/admin/imagens/aviso/botao_direito.gif' border=0></td>";
			conteudoBotoes += "		</tr>";
			conteudoBotoes += "	</table>";
			conteudoBotoes += "	</span>";
			conteudoBotoes += "</td>";

		}

		conteudoBotoes += "	</tr>";
		conteudoBotoes += "</table>";

		var conteudo = "";

		if (objGeral.trim(tipoImagem) != "") {

			conteudo += "<table border=0 cellpadding=0 cellspacing=0 height='100%' width='" + largura + "'>";
			conteudo += "	<tr>";
			conteudo += "		<td align='center' id='tipoImagem' width=107><img src='/admin/imagens/aviso/icone_" + tipoImagem + ".gif' border=0></td>";
			conteudo += "		<td align='left' class='verdana' style='padding: 16px; padding-left: 0px;' id='mensagem'>" + mensagem + "&nbsp;</td>";
			conteudo += "	</tr>";
			conteudo += "	<tr height=40><td align='center' colspan=2>" + conteudoBotoes + "</td></tr>";
			conteudo += "</table>";

		}
		else {

			conteudo += "<table border=0 cellpadding=0 cellspacing=0 height='100%' width='" + largura + "'>";
			conteudo += "	<tr>";
			conteudo += "		<td align='center' id='tipoImagem'>&nbsp;</td>";
			conteudo += "		<td align='left' class='verdana' style='padding: 16px; padding-bottom: 0px;' id='mensagem'>" + mensagem + "&nbsp;</td>";
			conteudo += "	</tr>";
			conteudo += "	<tr height=40><td align='center' colspan=2>" + conteudoBotoes + "</td></tr>";
			conteudo += "</table>";

		}

		this.mostrarLayerPopup(titulo,conteudo);

	}

	this.avisar = function (tipo, mensagem) {

		switch (tipo) {

			case "alerta":
				alert(mensagem);
				break;

			case "confirmacao":
				return confirm(mensagem);
				break;

			default:
				break;

		}

	}

	this.efeitoOpacidade = function (obj, opacidade) {

		var objGeral = new geral();

		var obj = objGeral.pegarObj(obj);

		if (!obj) {

			return false;

		}

		obj.style.opacity = opacidade / 100;
		obj.style.filter = "alpha(opacity=" + opacidade + ");";

	}

	this.efeitoFadeIn = function  (obj, tempo, opacidadeFinal) {

		var objGeral = new geral();

		var obj = objGeral.pegarObj(obj);

		if (tempo <= 0) {

			var tempo = 1;

		}

		var intervalo = opacidadeFinal / tempo;
		var opacidade = 0;
		var opacidadeReal = 0;
		var passo = 100;

		for (var i = 0; i <= tempo; i += passo) {

			setTimeout("var objLayout = new layout(); objLayout.efeitoOpacidade('" + obj.id + "'," + opacidade + ")",i);
			opacidadeReal += intervalo * passo;
			opacidade = Math.floor(opacidadeReal);

		}

		if (opacidade < opacidadeFinal) {

			setTimeout("var objLayout = new layout(); objLayout.efeitoOpacidade('" + obj.id + "'," + opacidadeFinal + ")",i);

		}

	}

	this.efeitoFadeOut = function (obj, tempo, opacidadeFinal) {

		var objGeral = new geral();

		var obj = objGeral.pegarObj(obj);

		if (tempo <= 0) {

			tempo = 1;

		}

		if (arguments.length > 3) {

			var opacidade = arguments[3];
			var opacidadeReal = arguments[3];

		}
		else {

			var opacidade = 100;
			var opacidadeReal = 100;

		}

		if (opacidadeReal < opacidadeFinal) {

			return false;

		}

		var intervalo = (opacidadeReal - opacidadeFinal) / tempo;
		var passo = 100;

		for (var i = 0; i <= tempo; i += passo) {

			setTimeout("var objLayout = new layout(); objLayout.efeitoOpacidade('" + obj.id + "'," + opacidade + ")",i);
			opacidadeReal -= intervalo * passo;
			opacidade = Math.floor(opacidadeReal);

		}

		if (opacidade > opacidadeFinal) {

			setTimeout("var objLayout = new layout(); objLayout.efeitoOpacidade('" + obj.id + "'," + opacidadeFinal + ")",i);

		}

	}

}