var ajax;
var dadosUsuario;

// ---- cria o objeto e faz a requisição -----
function requisicaoHTTP(tipo,url,assinc){
   if(window.XMLHttpRequest){  // Este é o Mozilla, Safari,...
      ajax = new XMLHttpRequest();    
   }
   else if(window.ActiveXObject){ // Este é Internet Explorer
      ajax = new ActiveXObject("Msxml2.XMLHTTP");
      if(!ajax) {
         ajax = new ActiveXObject("Microsoft.XMLHTTP");
      }
   }
   if(ajax) // Aqui iniciou com sucesso
      iniciaRequisicao(tipo,url,assinc);
   else
      alert("O Seu navegador não possui suporte para acessar esta aplicação!");
}

// ---- Inicializar o objeto criado e envia os dados - se existirem ----
function iniciaRequisicao(tipo,url,bool){
   ajax.onreadystatechange=trataResposta;
   ajax.open(tipo,url,bool);
   ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UFT-8");
   //ajax.overrideMimeType("text/XML"); /* Usado somente no Mozilla */
   ajax.send(dadosUsuario);
}

// ---- Inicia a requisição com envio de dados
function enviaDados(url){
  criaQueryString();
  requisicaoHTTP("POST",url,true);
}

// ---- Cria a sting a ser enviada, formato campo1=valor1&campo2=valor2..... -----
function criaQueryString(){
   dadosUsuario="";
   var frm = document.forms[0];
   var numElementos = frm.elements.length;
   for(var i = 0; i < numElementos; i++) {
       if(i < numElementos-1){
          dadosUsuario += frm.elements[i].name+"=" + encodeURIComponent(frm.elements[i].value)+"&";
       } else {
          dadosUsuario += frm.elements[i].name+"=" + encodeURIComponent(frm.elements[i].value);
       }
    }
}

// ---- Tratar a resposta do servidor aqui ----
function trataResposta(){
   if(ajax.readyState == 4){
      if(ajax.status == 200){
         trataDados(); // Esta função deve ser criada no programa que for desenvolver ----
      } else {
         alert("Houve um problema de comunicação com os objetos desta aplicaçõa\nPor favor tente novamente ou volte mais tarde.");
      }
   }
}
