var obj;
var obj_atualizado = 'dvAmbiente';
fila  = [];
ifila = 0;
var funcao = '';

<!--------------------------------------------------------------------------------------->
// Funcoes do xmlhttprequest
<!--------------------------------------------------------------------------------------->
function CreateObjXMLHttpRequest() { // Cria o objeto

    obj = null;

    // Procura por um objeto nativo W3C (Mozilla/Safari/Konqueror/Opera)
    if (window.XMLHttpRequest){

        obj = new XMLHttpRequest(); // Cria o objeto nativo
        obj_type = "XMLHttpRequest";

    } else if (window.ActiveXObject) { // Senao procura por uma versao ActiveX (IE)

        // Array com tipos de objeto ActiveX
        var msxmls = new Array('Msxml2.XMLHTTP.5.0',
                               'Msxml2.XMLHTTP.4.0',
                               'Msxml2.XMLHTTP.3.0',
                               'Msxml2.XMLHTTP',
                               'Microsoft.XMLHTTP');

        // Percorre array com versoes do ActiveX e tenta criar o objeto
        for (var i = 0; i < msxmls.length; i++) {
            try {
                obj = new ActiveXObject(msxmls[i]); // Tenta criar o objeto nativo
                obj_type = msxmls[i];
                break;
            } catch(e) {
                obj = false;
            }
        }
    } else { // Nenhum objeto suportado pelo browser
        obj = false;
    }
    return obj;
}

function GetContent() {
    if(obj) { // Verifica se objeto ainda existe
		var objDados = document.getElementById(obj_atualizado);
    
		if (obj.readyState == 1) {
			objDados.innerHTML = 'Carregando ...';
		} else if(obj.readyState == 4) { // Se requisicao terminada (readyState = 4)
            if(obj.status == 200) { // Se status retornado "ok" (status = 200)
				objDados.innerHTML = obj.responseText;
            } else {  // Se status diferente de "ok"
				objDados.innerHTML = '';
				alert('Ocorreu um erro no processamento solicitado.');
                alert('Erro! "'+ obj.statusText +'" (erro '+ obj.status +')'); //Exibe mensagem com o erro
            }

            // Proxima requisicao da fila
            ifila++;
			if (ifila < fila.length) {
                setTimeout("SendRequest()",100);
            }
        }
    } else {
        return false;
    }
}

function SendRequest()
{
    url       		= fila[ifila][0];
   	obj_atualizado 	= fila[ifila][1];

    obj = CreateObjXMLHttpRequest(); // Cria uma instancia do objeto
    obj.onreadystatechange = GetContent; // Define a funcao chamada na mudanca de status do objeto
    obj.open('POST',url, true) // Metodo prepara objeto pra requisicao
    obj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
	obj.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
	obj.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
	obj.setRequestHeader("Pragma", "no-cache");
    obj.send(null); // Envia requisicao
}

function makeRequest(url, objId) {

    obj = CreateObjXMLHttpRequest(); // Cria uma instancia do objeto

    // Adiciona a fila
    fila[fila.length] = [url, objId];

    // Se fila sem conexoes pendentes, executa
    if ((ifila + 1) == fila.length) {
        SendRequest();
    }
}

function retornaQueryForm(url, frmNome) {
	n = 0;

    // Captura o form
    f = document.getElementById(frmNome);
    // inicializa nova URL
    var query = url;
    //Percorre elementos do formulario
    for (i=0;i<f.elements.length;i++) {
        if ((f.elements[i].type != 'radio' && f.elements[i].type != 'checkbox') || f.elements[i].checked) {
	        // se for a primeira variavel adiciona o "?" senao adiciona "&"
        	query += n==0 ? '?' : '&';

	        // concatena a variavel na query
	        query += f.elements[i].name + '=' + f.elements[i].value;
	        n++;
		}
    }
    return query;
}

function listaImovel(url)
{
	xmlHttp = CreateObjXMLHttpRequest();
	if (xmlHttp == null) {
		alert ("Your browser does not support AJAX!");
		return;
	} 

	xmlHttp.onreadystatechange=function(){
		var objBg			= document.getElementById('dv_bg');
		var objCarregando 	= document.getElementById('dv_carregando');
		var objImovel 		= document.getElementById('conteudo_imovel');
		
		if (xmlHttp.readyState == 1) {
			objCarregando.style.display = 'block';
			objBg.style.display = 'block';
		} else if(xmlHttp.readyState == 4) { // Se requisicao terminada (readyState = 4)
			if(xmlHttp.status == 200) { // Se status retornado "ok" (status = 200)
				objImovel.innerHTML = obj.responseText;
            } else {  // Se status diferente de "ok"
				alert('Ocorreu um erro no processamento solicitado.');
                alert('Erro! "'+ obj.statusText +'" (erro '+ obj.status +')'); //Exibe mensagem com o erro
            }
			objCarregando.style.display = 'none';
			objBg.style.display = 'none';
		}

	}
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function comboBairro(urlBairro, objId)
{
	var ajxBairro = CreateObjXMLHttpRequest();
	if (ajxBairro == null) {
		alert ("Your browser does not support AJAX!");
		return;
	} 
	ajxBairro.onreadystatechange = function() {
		if(ajxBairro.readyState == 4) {
			document.getElementById(objId).innerHTML = ajxBairro.responseText;
		}
	}
	ajxBairro.open("GET",urlBairro,true);
	ajxBairro.send(null);
}

function comboModelo(urlModelo, objId)
{
	var ajxModelo = CreateObjXMLHttpRequest();
	if (ajxModelo == null) {
		alert ("Your browser does not support AJAX!");
		return;
	} 
	ajxModelo.onreadystatechange = function() {
		if(ajxModelo.readyState == 4) {
			document.getElementById(objId).innerHTML = ajxModelo.responseText;
		}
	}
	ajxModelo.open("GET",urlModelo,true);
	ajxModelo.send(null);
}
function AbrePagina(url,id)
{
	var xmlHttp = CreateObjXMLHttpRequest();
	if (xmlHttp == null) {
		alert ("Your browser does not support AJAX!");
		return;
	} 

	xmlHttp.onreadystatechange=function(){
		var objteste		= document.getElementById(id);
			
		if (xmlHttp.readyState == 1) {
		} else if(xmlHttp.readyState == 4) { // Se requisicao terminada (readyState = 4)
			if(xmlHttp.status == 200) { // Se status retornado "ok" (status = 200)
				objteste.innerHTML = obj.responseText;
            } else {  // Se status diferente de "ok"
				
				alert('Ocorreu um erro no processamento solicitado.');
                alert('Erro! "'+ obj.statusText +'" (erro '+ obj.status +')'); //Exibe mensagem com o erro
            }
	
		}

	}
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}
