 /*##########FUNÇÃO PRINCIPAL DO AJAX###################################*/
 function createXMLHttpRequest() {     
          try{ return new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){}
          try{ return new ActiveXObject("Microsoft.XMLHTTP"); }catch(e){}
          try{ return new XMLHttpRequest(); }catch(e){}
          alert("XMLHttpRequest (AJAX) não suportado");
          return null;
 }
 
 /*#####################################################################*/

 function extraiScript(texto){        
          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);
              }
          }
 }

 function get(obj) {
        	 // come from: http://www.captain.at/howto-ajax-form-post-get.php
          var getstr = "";
          for (i=0; i<obj.childNodes.length; i++) {
        	 if (obj.childNodes[i].tagName == "INPUT") {
        		if (obj.childNodes[i].type == "text") {
        		   getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
        		}
        		if (obj.childNodes[i].type == "checkbox") {
        		   if (obj.childNodes[i].checked) {
        			  getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
        		   } else {
        			  getstr += obj.childNodes[i].name + "=&";
        		   }
        		}
        		if (obj.childNodes[i].type == "radio") {
        		   if (obj.childNodes[i].checked) {
        			  getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
        		   }
        		}
        		if (obj.childNodes[i].type == "hidden") {
        			  getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
        		}
        	 }   
        	 if (obj.childNodes[i].tagName == "SELECT") {
        		var sel = obj.childNodes[i];
        		getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
        	 }
        	 
          }
          return getstr;
 }
  
 function enviaFormulario(exibeEm,formID,url){
          var xhReq  = createXMLHttpRequest();
         	/*
         		envia a requisicao para o servidor, e tudo o que eh
         		retornado eh passado a funcao do_readyStateChange
         	*/         	         	
         	var form = document.getElementById(formID);
         	var form_string = transformaFormParaGet(form);
         	//alert(form_string);
         	xhReq.open("POST",url,true);
         	xhReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
         	xhReq.setRequestHeader('Content-Lenght',form_string.lenght);
         	
          xhReq.onreadystatechange = function(){
               if(xhReq.readyState!=4){
                     return;
               }
           	   var exibeEm   = document.getElementById(exibeEm);
               exibeEm.innerHTML = xhReq.responseText;
          }
          xhReq.send(form_string);
          
 }

 function transformaFormParaGet(obj) {
         	// come from: http://www.captain.at/howto-ajax-form-post-get.php
          var getstr = "";
          for(i=0; i<obj.childNodes.length; i++){
            	 if(obj.childNodes[i].tagName == "INPUT"){
               		if(obj.childNodes[i].type == "text"){
               	 	  getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
               		}
               		if(obj.childNodes[i].type == "hidden"){
               	 	  getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
               		}
               		if(obj.childNodes[i].type == "checkbox"){
               		   if(obj.childNodes[i].checked){
               			     getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
               		   }else{
               			        getstr += obj.childNodes[i].name + "=&";
               		   }
               		}
               		if(obj.childNodes[i].type == "radio"){
               		   if(obj.childNodes[i].checked){
               			     getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
               		   }
               		}
            	 }
            	 if(obj.childNodes[i].tagName == "TEXTAREA"){
               	 getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
              }
            	 if(obj.childNodes[i].tagName == "SELECT"){
               		var sel = obj.childNodes[i];
               		getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
            	 }
          }          
          return getstr;
 }
  
 function ajaxConsultaGet(exibeEm,url,mensagem){
          var xhReq  = createXMLHttpRequest();
          var exibeEm = document.getElementById(exibeEm);
          if(mensagem != ''){ 
             exibeEm.innerHTML = '<font style="color:#999999">'+mensagem+'</font>';
          }
          xhReq.open("GET",url,true);
          
          xhReq.onreadystatechange=function() {
               if(xhReq.readyState == 4) {
                    exibeEm.innerHTML = xhReq.responseText;
                    extraiScript(xhReq.responseText);
               }
          }
          xhReq.send(null);
 }
                     
 function ajaxConsultaPost(exibeEm,url,params,mensagem){
          var xhReq  = createXMLHttpRequest();
          var exibeEm= document.getElementById(exibeEm);          
          if(mensagem != ''){ 
             exibeEm.innerHTML = '<font style="color:#999999">'+mensagem+'</font>';
          }
          xhReq.open("POST", url, true);

          xhReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
          xhReq.setRequestHeader("Content-length", params.length);
          xhReq.setRequestHeader("Connection", "close");

          xhReq.onreadystatechange = function(){
              	if(xhReq.readyState == 4 && xhReq.status == 200){
              		  exibeEm.innerHTML = xhReq.responseText;
                  extraiScript(xhReq.responseText);
              	}
          }
          xhReq.send(params);
 }
 

