// 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);
		}
		
	}
}

/*
Ajax
*/
//Atualização dos Campos via AJAX
function fnAjaxPrototype(method_, id_, url_, pars_, after_) {
	$(id_).innerHTML = "Carregando... Aguarde";
	
	new Ajax.Request(url_, {
		method: method_,
		parameters: pars_,
		onSuccess: function(ajax_) {
			$(id_).update(ajax_.responseText);

			if (after_ != "")
				eval(after_);
		},
		onFailure: function(ajax_) {
			alert('Um erro ocorreu ao tentar efetuar esta operação.');
			
		}
	});
}

