// Função para iniciarmos o Ajax no browser do cliente.
function openAjax() {
	var ajax;
	
	try{
		ajax = new XMLHttpRequest(); // XMLHttpRequest para browsers como: Firefox, Safari, dentre outros.
	}catch(ee){
		try{
			ajax = new ActiveXObject("Msxml2.XMLHTTP"); // Para o IE da MS
		}catch(e){
			try{
				ajax = new ActiveXObject("Microsoft.XMLHTTP"); // Para o IE da MS
			}catch(E){
				ajax = false;
			}
		}
	}
	return ajax;
}


//Atualização dos Campos via AJAX
function fnAjax(metodo, idExibe, url, parametros, execBefore, execAfter) {
	if(document.getElementById) { // Para os browsers complacentes com o DOM W3C.
		var exibeResultado = document.getElementById(idExibe);
		
		var ajax = openAjax(); // Inicia o Ajax.
		
		if(metodo == "GET") {
			ajax.open("GET", url + "?" + parametros, true);
		} else {        
			ajax.open("POST", url, true);
		}    

		ajax.onreadystatechange = function() {
			if(ajax.readyState == 1) { // Quando estiver carregando, exibe: carregando...
				if (exibeResultado) exibeResultado.innerHTML = "Carregando...";
			}
			
			if(ajax.readyState == 4) { // Quando estiver tudo pronto.
				if(ajax.status == 200) {
					//Executa algum script antes da atualização do ajax
					if (execBefore != "")
						eval(execBefore);
					
					try {
						var resultado = ajax.responseText; // Coloca o resultado (da busca) retornado pelo Ajax nessa variável (var resultado).
						resultado = resultado.replace(/\+/g," "); // Resolve o problema dos acentos (saiba mais aqui: http://www.plugsites.net/leandro/?p=4)
						resultado = unescape(resultado); // Resolve o problema dos acentos
						if (exibeResultado) exibeResultado.innerHTML = resultado;
					} catch (e) {
						sessaoOK(); //Sessao expirou?
						return null;
					}
					
					//Executa algum script após a atualização do ajax
					if (execAfter != "")
						eval(execAfter);
				} else {
					if (exibeResultado) exibeResultado.innerHTML = "Ocorreu um erro: " + ajax.responseText;;
				}
			}
		}
		
		if(metodo == "GET") {
			ajax.send(null);
		} else {
			ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");		
			ajax.setRequestHeader("Pragma", "no-cache");
			ajax.setRequestHeader("Content-length", parametros.length);
			ajax.setRequestHeader("Connection", "close");			
			ajax.send(parametros);
		}
		
	}
}
