//Tenta criar 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;
        }
    }
}

//Fila de conexões
fila=[]
ifila=0

//Carrega via XMLHTTP a url recebida e coloca seu valor
//no objeto com o id recebido
function ajaxHTML(id,url,classname,loadphrase){
    //Carregando...
    document.getElementById(id).innerHTML="<span class='" + classname + "'>" + loadphrase + "</span>";
    //Adiciona à fila
	fila[fila.length]=[id,url]
    //Se não há conexões pendentes, executa
    if((ifila+1)==fila.length)ajaxRun()
}

//Executa a próxima conexão da fila
function ajaxRun(){
    //Abre a conexão
    xmlhttp.open("GET",fila[ifila][1],true);
    //Função para tratamento do retorno
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4){
            //Mostra o HTML recebido
            retorno=unescape(xmlhttp.responseText.replace(/\+/g," "))
            document.getElementById(fila[ifila][0]).innerHTML=retorno
			//Roda o próximo
            ifila++
            if(ifila<fila.length)setTimeout("ajaxRun()",20)
        }
    }
    //Executa
    xmlhttp.send(null)
}

function ajaxCEP(inputHidden, url, classname, loadphrase, botaoSalvar, objetoMensagem){
	
	objetoMensagem.innerHTML	 = "<span class='" + classname + "'>" + loadphrase + "</span>";
	objetoMensagem.style.display = 'inline';
            
	fila[fila.length]=[url];
	ajaxRunCEP(inputHidden, botaoSalvar, objetoMensagem);
}
            
//Executa a próxima conexão da fila
/*
	readyState Retorna o 'estado' atual do objeto:
		0 = uninitialized	//Não inicializado
		1 = loading			//Carregando
		2 = loaded			//Carregado
		3 = interactive		//Interativo
		4 = complete 		//Completo
*/            
            
function ajaxRunCEP(inputHidden, botaoSalvar, objetoMensagem){
	xmlhttp.open("GET",fila[ifila][0],true);
    
	xmlhttp.onreadystatechange = function() {
		if ( xmlhttp.readyState == 1 ){
			botaoSalvar.disabled = true;
		}	
            
        if ( xmlhttp.readyState == 4 ){
            if( xmlhttp.status == 200 ){	//Se o status for 'OK'
				objetoMensagem.innerHTML     = "";		//limpa a mensagem 'Checando CEP...'
				objetoMensagem.style.display = 'none';
				botaoSalvar.disabled         = false;	//Habilita o botão 'Salvar' do formulário

				retorno                      = unescape(xmlhttp.responseText.replace(/\+/g," "));
	            inputHidden.value            = retorno;
				
	            ifila++;
	            if(ifila<fila.length)setTimeout("ajaxRun()",20);
            }
        }
    }

    xmlhttp.send(null);
}
