function getAjax(){
	window.document.body.style.cursor = "wait";

	// DEFINE AS VARIÁVEIS QUE SERÃO UTILIZADAS NO OBJETO

	var req;
	var arrRegistros = "";
	var txtObj = "";
	var txtFunction = "";
	var bitCombo = 0;
	var bitJavaScript = 0;
	var txtValSelected = "";
	var txtHost = "";
	var txtMetod = "GET";
	var bitAddInner = 0;
	var cmbLabelInicio = "";
	var txtExibeMSG = ""; //texto que o usuário pode enviar que aparecerá no lugar de "Consultando banco de dados"

	// INÍCIO DO PROCESSAMENTO

	// Seta o nome do objeto que irá receber o conteúdo da informação
	this.setObject = function(txtNome){
		txtObj = txtNome;
	};
	// Seta um valor binário 1=indica que o retorno deve entrar em um objeto do tipo combo; 0=indica que o retorno será em um objeto normal
	this.setCombo = function(txtNome){
		bitCombo = txtNome;
	};
	// Seta um valor binário 1=indica que o retorno deve ser executado como javascript; 0=indica que o retorno será em um objeto normal
	this.setJavaScript = function(txtNome){
		bitJavaScript = txtNome;
	};
	// Seta um nome de função que o objeto chamará após ser carregado as informações
	this.setFunction = function(txtNome){
		txtFunction = txtNome;
	};
	// Seta o valor default para caso for uma combo, este valor virá selecionado
	this.setValSelected = function(txtNome){
		txtValSelected = txtNome;
	};
	// Seta um texto como primeiro item do combo
	this.setComboLabelInicio = function(txtNome){
		cmbLabelInicio = txtNome;
	};
	// Seta o host
	this.setHost = function(txtNome){
		txtHost = txtNome;
	};
	// Seta o método de envio das informações
	this.setMetod = function(txtNome){
		txtMetod = txtNome;
	};
	// Seta um valor binário 1=indica que deve adicionar o valor junto ao conteúdo do innerHTML; 0=indica que o innerHTML será zerado e colocado o novo conteúdo.
	this.setAddInner = function(txtNome){
		bitAddInner = txtNome;
	};
	//texto que o usuário pode enviar que aparecerá no lugar de "Consultando banco de dados"
	this.setExibeMSG = function(txtNome){
		txtExibeMSG = txtNome;
	};

	if(window.XMLHttpRequest) {
    	try {
			req = new XMLHttpRequest();
        } catch(e) {
			req = false;
        };
    } else if(window.ActiveXObject) {
       	try {
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		req = false;
        	};
		};
    };

	this.sendAjax = function(){
		var objRetorno = "";
		if(bitJavaScript!="1"){
			if(txtObj==""){
				alert("Insira o nome do objeto.");
				return;
			};
			objRetorno = document.getElementById(txtObj);
			if(typeof(objRetorno)!="object") return false;
		};
		if(txtHost==""){
			alert("Insira o parâmetro de Host.");
			return;
		};

		if(txtExibeMSG==""){
			txtExibeMSG="<BR><BR>Consultando Banco de Dados.<BR>Aguarde...<BR><BR>";
		};
		if(bitCombo!="1" && bitAddInner!="1" && bitJavaScript!="1"){
			objRetorno.innerHTML = txtExibeMSG;
		};

		window.document.body.style.cursor = "wait";
		if(req) {
			req.onreadystatechange = function(){
				var resultado = "";
				var objRetorno = "";
				var contadorAjax = 0;
				var qtditens;
				var contArr;
				var controleGrupo;
				if (req.readyState == 4) {
					if (req.status == 200) {
						resultado = req.responseText;
					} else {
						resultado = "erro";
					};
					if(resultado=="erro"){
						alert("Problemas ao determinar a saida dos dados, favor contatar o suporte.");
					}else{
						if(bitJavaScript!="1"){
							var objRetorno = document.getElementById(txtObj);
							if(typeof(objRetorno)!="object") return false;
						};

						if(parseInt(bitCombo)==1){	// Se for combo
							eval(resultado);
							// Zera tudo as opções
							for(contadorAjax=objRetorno.length-1;contadorAjax>=0;contadorAjax--) {
								objRetorno.options[contadorAjax]=null;
							};
							// Zera tudo os grupos
							var optgroups = objRetorno.childNodes;
							for(contadorAjax=optgroups.length-1; contadorAjax>=0; contadorAjax--){
								objRetorno.removeChild(optgroups[contadorAjax]);
							};
							// Insere o primeiro label, se houver
							contArr = 0;
							if(trim(cmbLabelInicio)!=""){
								objRetorno.options[0] = new Option(cmbLabelInicio,0,true,false);
								contArr = 1;
							};
							// Carrega os dados
							qtditens = arrRegistros.length;
							controleGrupo = '0';
							for(contadorAjax=0;contadorAjax<(qtditens);contadorAjax++){
								if(controleGrupo!=arrRegistros[contadorAjax][2] && trim(arrRegistros[contadorAjax][3])!=""){
									var optgroup = document.createElement('optgroup');
									optgroup.label = trim(arrRegistros[contadorAjax][3]);
									objRetorno.appendChild(optgroup);
									controleGrupo = arrRegistros[contadorAjax][2];
								};
								objRetorno.options[contArr] = new Option(arrRegistros[contadorAjax][1],arrRegistros[contadorAjax][0],false);
								if(txtValSelected==arrRegistros[contadorAjax][0]){
									objRetorno.options[contArr].selected = true;
								};
								contArr++;
							};
						}else{ // if(parseInt(this.setCombo)==1){	// Se NÃO for combo
							if(parseInt(bitJavaScript)==1){	// Se for javascript
								eval(resultado);
							}else{ // if(parseInt(bitJavaScript)==1){	// Se NÃO for javascript
								if(bitAddInner==0){
									objRetorno.innerHTML = resultado;
								}else{
									objRetorno.innerHTML += resultado;
								};
							};
						};
	
						if(txtFunction!=""){ // Caso seja para executar alguma função no final do processamento
							eval(txtFunction);
						};
					};
				};
				window.document.body.style.cursor = "default";
			};
	
			req.open(txtMetod, txtHost, true);
			req.setRequestHeader("Content-Type", "text/html; charset=windows-1250"); //"application/x-www-form-urlencoded");
//			req.setRequestHeader('Charset','windows-1250');
//			req.setRequestHeader("charset","windows=1250-1");
			req.setRequestHeader("CharSet","windows-1250");
			req.setRequestHeader("Encoding","windows-1250");
			req.setRequestHeader("Cache-Control", "no-cache");
			req.setRequestHeader("Pragma", "no-cache");
			req.send(null);
			//request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		};
	};
	window.document.body.style.cursor = "default";
};
