// ------------------------------------------------------------------
// AJAX
// url - pagina a ser chamada pelo ajax
// ret - div ou span que recebera a resposta do ajax
// par - parametro(s) que sera(o) enviado(s) à url pelo ajax
//
// Esta função apresenta 2 problemas:
//
// 1o) Não executa javascript das páginas que vem do ajax
// 2o) Se executar 2 ou mais ajax juntos, ele só executa o último
//
// ------------------------------------------------------------------
var retorno;	// variavel global - aparece em todas as funcoes
function ajax(url, ret, par)
{
	// atribui a variavel global 'retorno' o valor do parametro 'ret'
	retorno = ret;
	
	// ------------------------------------------------------------
	// CRIA O OBJETO DA REQUISICAO
	// ------------------------------------------------------------
	// verifica se existe o objeto XMLHttpRequest - firefox, ie 7
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	}
	else
		// verifica se existe o objeto ActiveXObject - ie 5, ie 6
		if (window.ActiveXObject) {
			try {
				req = new ActiveXObject("Msxml2.XMLHTTP");	// ie 6
			}
			catch(e) {
				try {
					req = new ActiveXObject("Microsoft.XMLHTTP");	// ie 5
				}
				catch(e) {
					alert('Não foi possível criar Requisição');
				}
			}
		}
		
	// cada vez que alterar o status, chama a funcao resultado
	// status = 0 --> nao inicializada, 1 --> carregando,
	//			2 --> carregada, 3 --> processando, 4 -->pronto
	req.onreadystatechange = resultado;
	// req.open (METODO, PAGINA, ASSINCRONO);
	req.open('POST', url, true);
	// deve ser utilizado quando o metodo é POST
	req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	// envia a requisicao
	req.send(par);
}

function resultado()
{
	// status = 4 --> pronto
	if (req.readyState == 4) {
		esconde_carregando();
		// 200 --> pagina ok, 404 --> pagina nao encontrada
		// 403 --> forbiden (proibida), 500 --> erro interno
		if (req.status == 200) {
			// req.responseText --> retorno do ajax
			document.getElementById(retorno).innerHTML = req.responseText;
//			eval(req.responseText);
		}
		else {
			alert('Erro de AJAX. Erro:'+req.status);
		}
	}
	else
	// status = 0 --> nao inicializada, 1 --> carregando,
	//			2 --> carregada, 3 --> processando
		mostra_carregando();
}

// -----------------------------------------------------------------------
// CRIA E APRESENTA DIV 'CARREGANDO' ESTILO GMAIL
// -----------------------------------------------------------------------
function mostra_carregando()
{

	// verifica se existe o elemento
	if (!document.getElementById('carregando'))
	{
		// cria elemento dinamicamente
		tag = document.createElement('div');
		//alert(tag);
		// seta propriedades
		tag.id = 'carregando';
		tag.style.position = 'absolute';
		tag.style.z_index = '10';
		tag.style.top = '0';
		tag.style.right = '0';
		//tag.style.backgroundColor = '#FF0000';
		tag.style.padding = '10px;';
		//tag.style.color = '#FFFFFF';
		//tag.innerHTML = '<img src="img/loading.gif">';
		//tag.innerHTML = 'Carregando...';
		document.body.appendChild(tag);

	}
}


// -----------------------------------------------------------------------
// REMOVE DIV 'CARREGANDO'
// -----------------------------------------------------------------------
function esconde_carregando()
{
	// verifica se existe o elemento
	if (document.getElementById('carregando'))
		// remove do documento
		document.body.removeChild(document.getElementById('carregando'));
}