/*
/*

	Assyncrous Request alpha 0.1
	Desenvolvida por Anderson Triacca - Infowebdesign - www.infowebdesign.com.br
	Classe de auxílio na manipulação de dados assincronamente
	
	A função base deste documento é a função efetuarPedido(), que recebe 3 parâmetros obrigatórios(URL, método, e alvo) e um opcional(loader).
	A URL é o caminho do documento que vai ser requisitado.
	O método pode ser GET(os dados vão na url com limite de 1024 caracteres) ou POST(os dados vão no corpo da requisição, sem limite de caracteres).
	O alvo é a id do elemento da pagina onde será depositada a requisição.
	O parâmetro conteúdo se torna obrigatório se o método da requisição for POST, e nele deve ser enviado em formato de string o conteúdo da requisição.
	O parâmetro opcional loader é a id do elemento da página que servirá como pré-loader da requisição.
	OBS: nesta versão o elemento alvo se tornará display = inline após a requisição, nas implementaçãoes futuras o problema será resolvido.
	
*/

/*
/*
	Função que faz os pedidos
*/
function efetuarPedido(url, metodo, alvo, conteudo, loader) {
	getHTTPObject();
	requisicao(metodo, url, alvo, conteudo, loader);
}

/*
	Função que cria o objeto de acordo com o navegador
*/
function getHTTPObject() {
  var xmlhttp;
  <!-- Se for Internet Explorer, e testa a versão do interpretador, se voce abrir no dreamweaver o código abaixo pode parecer um comentário, mas não é.7
  /*@cc_on
  @if (@_jscript_version >= 5)
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {
        xmlhttp = false;
		alert('Seu navegador não suporta os recursos desta página');
      }
    }
  @else
  xmlhttp = false;
  alert('Seu navegador não suporta os recursos desta página');
  @end @*/
  
  <!-- Se for Baseado no Gecko
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
    } catch (e) {
      xmlhttp = false;
 	  alert('Seu navegador não suporta os recursos desta página');
    }
  }
  return xmlhttp;
}
var http = getHTTPObject();


/*
/*
	Função para manipulação da resposta da requisição
*/
function manipularResposta(alvo, loader){
	if(http.readyState == 1 && document.getElementById(loader)) {
		if (loader != null)
			document.getElementById(loader).style.display = 'inline';
	}
	if (http.readyState == 4) { //Se o carregamento foi completado
		if(document.getElementById(alvo))
			document.getElementById(alvo).innerHTML = http.responseText;
		if (document.getElementById(loader))
			document.getElementById(loader).style.display = 'none';
	}
}


/*
/*
	Função que efetua a requisição
*/
function requisicao(metodo, url, alvo, conteudo, loader) {
	http.open(metodo, url, true); //Se por algum motivo desejar que a requisição não seja assíncrona mude o valor do terceiro parâmetro para false
	http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate"); //Eliminando o Cache
	http.setRequestHeader("Cache-Control", "post-check=0, pre-check=0"); //Eliminando o Cache
	http.setRequestHeader("Pragma", "no-cache"); //Eliminando o Cache
	http.onreadystatechange = function() {
		manipularResposta(alvo, loader);
	}
	http.send(conteudo);
}
