function ajaxGet(url,elemento_retorno,exibe_carregando){
/******* ajaxGet - Coloca o retorno de uma url em um elemento qualquer
* Use a vontade mas coloque meu nome nos créditos. Dúvidas, me mande um email.
* A função é grande, coloque-a em um arquivo .js separado.
* Versão: 1.2 - 20/04/2006
* Autor: Micox - Náiron J.C.G - micoxjcg@yahoo.com.br - elmicox.blogspot.com
* Parametros:
* url: string; elemento_retorno: object||string; exibe_carregando:boolean
*  - Se elemento_retorno for um elemento html (inclusive inputs e selects),
*    exibe o retorno no innerHTML / value / options do elemento
*  - Se elemento_retorno for o nome de uma variavel
*    (o nome da variável deve ser declarado por string, pois será feito um eval)
*    a função irá atribuir o retorno à variável ao receber a url.
*******/    
	var ajax1 = pegaAjax();    
	if(ajax1){        
		url = antiCacheRand(url)        
		ajax1.onreadystatechange = ajaxOnReady        
		ajax1.open("GET", url ,true);        
		//ajax1.setRequestHeader("Content-Type", "text/html; charset=iso-8859-1");//"application/x-www-form-urlencoded");        
		ajax1.setRequestHeader("Cache-Control", "no-cache");        
		ajax1.setRequestHeader("Pragma", "no-cache");        
		if(exibe_carregando){ put("Carregando ...")    }        
		ajax1.send(null)        
		return true;    
	}else{        
		return false;    
	}    
	function ajaxOnReady(){        
		if (ajax1.readyState==4){            
		if(ajax1.status == 200){                
		var texto=ajax1.responseText;                
		if(texto.indexOf(" ")<0) texto=texto.replace(/\+/g," ");                
		//texto=unescape(texto); //descomente esta linha se tiver usado o urlencode no php ou asp                
		put(texto);                
		extraiScript(texto);            
		}else{                
		if(exibe_carregando){put("Falha no carregamento. " + httpStatus(ajax1.status));}            
		}            
		ajax1 = null        
		}else if(exibe_carregando){
		//para mudar o status de cada carregando                
		put("Carregando ..." )        
		}    
		}    function put(valor){ 
		//coloca o valor na variavel/elemento de retorno        
		if((typeof(elemento_retorno)).toLowerCase()=="string"){ 
		//se for o nome da string            
		if(valor!="Falha no carregamento"){                
		eval(elemento_retorno + '= unescape("' + escape(valor) + '")')            
		}        }else if(elemento_retorno.tagName.toLowerCase()=="input"){            
		valor = escape(valor).replace(/\%0D\%0A/g,"")            
		elemento_retorno.value = unescape(valor);        
		}else if(elemento_retorno.tagName.toLowerCase()=="select"){                    
		select_innerHTML(elemento_retorno,valor)        
		}else if(elemento_retorno.tagName){            
		elemento_retorno.innerHTML = valor;            
		//alert(elemento_retorno.innerHTML)        
		}        
	}    
	function pegaAjax(){ 
	//instancia um novo xmlhttprequest        
	//baseado na getXMLHttpObj que possui muitas cópias na net e eu nao sei quem é o autor original        
	if(typeof(XMLHttpRequest)!='undefined'){return new XMLHttpRequest();}        
	var axO=['Microsoft.XMLHTTP','Msxml2.XMLHTTP','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0'];        
	for(var i=0;i<axO.length;i++){ try{ return new ActiveXObject(axO[i]);}catch(e){} }        
	return null;    
	}    
	function httpStatus(stat){ 
	//retorna o texto do erro http        
	switch(stat){            
	case 0: return "Erro desconhecido de javascript";            
	case 400: return "400: Solicitação incompreensível"; break;            
	case 403: case 404: return "404: Não foi encontrada a URL solicitada"; break;            
	case 405: return "405: O servidor não suporta o método solicitado"; break;            
	case 500: return "500: Erro desconhecido de natureza do servidor"; break;            
	case 503: return "503: Capacidade máxima do servidor alcançada"; break;            
	default: return "Erro " + stat + ". Mais informações em http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html"; break;        
	}    
	}    
	function antiCacheRand(aurl){        
	var dt = new Date();        
	if(aurl.indexOf("?")>=0){
	// já tem parametros            
	return aurl + "&" + encodeURI(Math.random() + "_" + dt.getTime());        
	}else{ return aurl + "?" + encodeURI(Math.random() + "_" + dt.getTime());}    
	}}function select_innerHTML(objeto,innerHTML){
	/******* select_innerHTML - altera o innerHTML de um select independente se é FF ou IE
	* Corrige o problema de não ser possível usar o innerHTML no IE corretamente
	* Veja o problema em: http://support.microsoft.com/default.aspx?scid=kb;en-us;276228
	* Use a vontade mas coloque meu nome nos créditos. Dúvidas, me mande um email.
	* Versão: 1.0 - 06/04/2006
	* Autor: Micox - Náiron J.C.G - micoxjcg@yahoo.com.br - elmicox.blogspot.com
	* Parametros:
	* objeto(tipo object): o select a ser alterado
	* innerHTML(tipo string): o novo valor do innerHTML
	*******/    
	objeto.innerHTML = ""    
	var selTemp = document.createElement("micoxselect")    
	var opt;    
	selTemp.id="micoxselect1"    
	document.body.appendChild(selTemp)    
	selTemp = document.getElementById("micoxselect1")    
	selTemp.style.display="none"    
	if(innerHTML.toLowerCase().indexOf("<option")<0){//se não é option eu converto        
	innerHTML = "<option>" + innerHTML + "</option>"    
	}    
	innerHTML = innerHTML.replace(/<option/g,"<span").replace(/<\/option/g,"</span")    
	selTemp.innerHTML = innerHTML    
	for(var i=0;i<selTemp.childNodes.length;i++){        
	if(selTemp.childNodes[i].tagName){            
	opt = document.createElement("OPTION")            
	for(var j=0;j<selTemp.childNodes[i].attributes.length;j++){                
	opt.setAttributeNode(selTemp.childNodes[i].attributes[j].cloneNode(true))            
	}            
	opt.value = selTemp.childNodes[i].getAttribute("value")            
	opt.text = selTemp.childNodes[i].innerHTML            
	if(document.all){ //IEca                
	objeto.add(opt)            
	}else{                
	objeto.appendChild(opt)            
	}                            
	}        
	}    
	document.body.removeChild(selTemp)    
	selTemp = null}function extraiScript(texto){//Maravilhosa função feita pelo SkyWalker.TO do imasters/forum//http://forum.imasters.com.br/index.php?showtopic=165277&    
	// inicializa o inicio ><    
	var ini = 0;    
	// loop enquanto achar um script    
	while (ini!=-1){        
	// procura uma tag de script        
	ini = texto.indexOf('<script', ini);        
	// se encontrar        
	if (ini >=0){            
	// define o inicio para depois do fechamento dessa tag            
	ini = texto.indexOf('>', ini) + 1;            
	// procura o final do script            
	var fim = texto.indexOf('</script>', ini);            
	// extrai apenas o script            
	codigo = texto.substring(ini,fim);            
	// executa o script            
	//eval(codigo);            
	/**********************            
	* Alterado por Micox - micoxjcg@yahoo.com.br            
	* Alterei pois com o eval não executava funções.            
	***********************/            
	novo = document.createElement("script")            
	novo.text = codigo;            
	document.body.appendChild(novo);        
	}    
	}}