// JavaScript Document
// JavaScript Document

var request = null;
/* Função que cria um request object

  PArametros:
  reqType: Define o método HTTP, por exemplo GET ou POST.
  url: URL do a ser acessada, por exemplo um script no servidor.
  asynch: Se vai enviar a requisição assíncrona ou não.
  respHandle: O nome da função que vai tratar as respostas.
  
  Qualquer quinto parametro, representado por arguments[4], são os dados
  que uma requisição POST vai enviar. */
  
function httpRequest(reqType,url,asynch,respHandle){
    if(window.XMLHttpRequest){	//Browsers baseados no Mozilla
        request = new XMLHttpRequest(  );
    } else if (window.ActiveXObject){	//Internet Explorer
        request=new ActiveXObject("Msxml2.XMLHTTP");
        if (! request){
            request=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    //incomum, mas é feito o teste de um request nulo
    //se nenhum outro ActiveXObject foi inicializado
    if(request) {
        //se o parametro reqType for POST, então o
        //quinto argumento da funcao são os dados a ser enviados
        if(reqType.toLowerCase() != "post") {
            initReq(reqType,url,asynch,respHandle);
        }  else {
            //os dados a ser enviados
            var args = arguments[4];
            if(args != null && args.length > 0){
                initReq(reqType,url,asynch,respHandle,args);
            }
        }
    } else {
        alert("Seu browser não permite o uso de todas "+
              "as funcionalidades dessa aplicação!");
    }
}

/* Inicia um objeto request que já está construido */
function initReq(reqType,url,bool,respHandle){
    try{
        /* Especifica a função que tratará a resposta HTTP */
        request.onreadystatechange=respHandle;
        request.open(reqType,url,bool);
		
        //se o parametro reqType for POST, entao o
        //quinto argumento da função serão os dados a ser enviados
        if(reqType.toLowerCase() == "post") {
            request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=ISO-8859-1");
            request.send(arguments[4]);
        }  else {
			 request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=ISO-8859-1");
            request.send(null);
        }

    } catch (errv) {
        alert(
        "A aplicação não pode se comunicar com o servidor no momento. \n"+
        "Porfavor tente novamente em alguns segundos.\n"+
        "Detalhes do erro: \n\n"+errv.message);
    }
}
