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 a fila
fila=[];
ifila=0;

// funcao que carrega uma pagina dentro de um objeto qualquer
function carrega(url, destino){
    // coloca o texto "carregando" no objeto de carregamento
    document.getElementById(destino).innerHTML="Aguarde...";

    // adiciona o item na fila
    fila[fila.length]=[url,destino];
    
    // se a fila estiver vazia, inicia a execução
    if((ifila+1)==fila.length)ajaxRun();
}

//Executa a próxima conexão da fila
function ajaxRun(){
    // carrega os dados da pagina da fila
    url        = fila[ifila][0];
    destino    = fila[ifila][1];
        
    // carrega a pagina
    xmlhttp.open("GET", url, true);
    
    // headers
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
    xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
    xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
    xmlhttp.setRequestHeader("Pragma", "no-cache");






    // ao completar o carregamento
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4){
            // coloca o valor no objeto requisitado
            texto=unescape(xmlhttp.responseText.replace(/\+/g," "));
            document.getElementById(destino).innerHTML=texto;

            // executa a proxima requisição da lista (se existir)
            ifila++;
            if(ifila<fila.length)setTimeout("ajaxRun()",20);
        }
    }
    
    // executa
    xmlhttp.send(url);
}

// função que le todos os campos de um form e envia!
function enviaForm(frmNome, url, destino){
    // 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++){
        // se for a primeira variavel adiciona o "?" senao adiciona "&"
        query += i==0 ? '?' : '&';
        // concatena a variavel na query
        query += f.elements[i].name + '=' + f.elements[i].value;
    }
    // envia o formulario
    carrega(query, destino);
}


function enviaPagina(frmNome, url, destino){
    // 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++){
        // se for a primeira variavel adiciona o "?" senao adiciona "&"
        query += i==0 ? '?' : '&';
        // concatena a variavel na query
        query += f.elements[i].name + '=' + f.elements[i].value;
    }
    // envia o formulario
    carrega(query, destino);
}
