//Função Principal É responsável por todos os loads e sends da pagina
var xmlhttp;
function ajax(objOrigem,objDestino,func) {

if (!func) func = carregarDados; // Se a função de manipulacao de dados não for informada, ele pega a padrão
var obj = objOrigem;	//cria o objeto de dados a partir do objOrigem

if((!obj.href) && (!obj.action))
	urlSend = obj;
else
	if(obj.href)
		urlSend = obj.href;
	else
		urlSend = obj.action;

//--Cria o objeto XMLHTTP	--------------------------------------------------------------
	try{ 
		xmlhttp = new XMLHttpRequest();
	}catch(ee){
		try{
		   xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try{
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(E){
				xmlhttp = false;
			}
		}
	}
//--Cria o objeto XMLHTTP	--------------------------------------------------------------	
	try {
		if(obj.method == "post") { // Para enviar dados
		
			var urlPost = montaString(obj); //Carrega os dados para serem postados
			xmlhttp.open("POST",urlSend, true);//Abre a conexão
			xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");//Seta o tipo de post do form			
			xmlhttp.onreadystatechange = function() {//Seta a função que vai tratar o retorno 
				if (xmlhttp.readyState==4){
					ocultarCarregando();
					func(objDestino);
				}
			}
			if (prosseguir == 1)
			{
				mostrarCarregando();//Mostra o Carregando ... 
				xmlhttp.send(urlPost);//Envia os dados
			}
		}
		else {
			mostrarCarregando();
			// Caso seja uma requisição de dados (links, por exemplo)
			xmlhttp.open("GET",urlSend, true); //Abre a conexão 
			xmlhttp.setRequestHeader("Content-Type", "text/html; charset=iso-8859-1");//Seta o tipo de arquivo
			
			xmlhttp.onreadystatechange = function() {//Seta a função que vai tratar o retorno
				if (xmlhttp.readyState==4){
					func(objDestino);
					ocultarCarregando();
				}
			} 
			xmlhttp.send(null); //Requisita os dados	
		}
	}catch(a){	
	}
}