function envia_requisicao(metodo, url, usaXml, dados, metodoRetorno){
		
		var httpRequest;
			
		if (window.XMLHttpRequest){           //Navegadores sem ActiveX
			httpRequest = new XMLHttpRequest();
			if (usaXml && httpRequest.overrideMimeType){
				httpRequest.overrideMimeType('text/xml');
			}
		}else if (window.ActiveXObject){     //Internet Explorer
			try{
				httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
			}catch(e){
				try{
					httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
				}catch(f){
					try{
						httpRequest = new ActiveXObject("MSXML2.XMLHTTP.3.0");
					}catch(g){
					
					}
				}
			}
		}
		
		if (!httpRequest){
			alert("Não foi possível encontrar a api Ajax");
			return false;
		}
		
		httpRequest.open(metodo, url, true); //O ultimo parâmetro indica se a chamada será assincrona
		
		if (metodoRetorno != null){
			httpRequest.onreadystatechange = function(){
				retorna_requisicao(metodo, url, httpRequest, metodoRetorno);
			}
		}
		
		if (metodo == 'POST' && dados != null){
			httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		}
		
		httpRequest.setRequestHeader('Content-length', dados.length);
		httpRequest.send(dados);
	}
	
	function retorna_requisicao(metodo, url, httpRequest, metodoRetorno){
		if (httpRequest.readyState == 4){
			if (httpRequest.status == 200){
					metodoRetorno(httpRequest);
			}else if (httpRequest.status == 0){
				
			}else{
				alert('Erro na recepção dos dados: Status '+httpRequest.status+'\n'+metodo+' '+url);
			}
		}
	}
	
	function montaParametros(form){
    	var elements=form.elements;
    	var parametros = '';
		for(var i=0;i<elements.length;i++){
			if(elements[i].type=='text'
				|| elements[i].type.indexOf('sel') != -1){
				parametros +='&'+elements[i].name+'='+elements[i].value;
			}
			if(elements[i].type=='radio'
				&& elements[i].checked){
				parametros +='&'+elements[i].name+'='+elements[i].value;
			}
			if(elements[i].type=='checkbox'){
				parametros +='&'+elements[i].name+'='+elements[i].checked;
			}
		}
		return parametros;
	}
