/*##########FUNÇÃO PRINCIPAL DO AJAX###################################*/
function createXMLHttpRequest() {
	/*
		Interface genérica para acesso ao conector remoto.
	*/
   try{ return new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){}
   try{ return new ActiveXObject("Microsoft.XMLHTTP"); }catch(e){}
   try{ return new XMLHttpRequest(); }catch(e){}
   alert("XMLHttpRequest not supported");
   return null;
}


	// contem objeto para solicitar recursos remotos.

var xhReq = createXMLHttpRequest();

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);
              }
          }
 }


/*#####################################################################*/
/*#####################################################################*/
/*#####################################################################*/

/*Envio formulário via POST*/
          function ajaxEnviaPost(exibeEm,formID,url,mensagem){
              var form = document.getElementById(formID);
          	  var form_string = PostToGet(form);          	  
          	  var ajx = createXMLHttpRequest();
              var exibeEm = document.getElementById(exibeEm);
              if(mensagem != ''){
                  exibeEm.innerHTML = '<font style="color:#999999">'+mensagem+'</font>';
              }
          	  ajx.open("post",url,true);          	  
          	  ajx.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
          	  ajx.setRequestHeader('encoding','ISO-8859-1');
          	  ajx.setRequestHeader('Content-Length',form_string.length);          	  

              ajx.onreadystatechange=function(){
                   if(ajx.readyState == 4) {
                       exibeEm.innerHTML = ajx.responseText ;
                       extraiScript(ajx.responseText);
                   }
              }
              ajx.send(form_string)
          }
          
          //esta está obsoleta
          function enviaFormulario(exibeEm,formID,url){
          	/*
          		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 = get(form);
          	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.value = xhReq.responseText;
              }
              xhReq.send(form_string);
          }

          function get(obj){PostToGet(obj);}
          
          function PostToGet(obj) {
              var getstr = "";
              //alert('childNodes= ' + obj.elements[0].tagName);
              for (i=0; i<obj.elements.length; i++) {
            	 if (obj.elements[i].tagName == "INPUT") {
            		if (obj.elements[i].type == "text" || obj.elements[i].type == "password" || obj.elements[i].type == "hidden") {
            		   getstr += obj.elements[i].name + "=" + obj.elements[i].value + "&";
            		}
            		if (obj.elements[i].type == "checkbox") {
            		   if (obj.elements[i].checked) {
            			  getstr += obj.elements[i].name + "=" + obj.elements[i].value + "&";
            		   }
            		}
            		if (obj.elements[i].type == "radio") {
            		   if (obj.elements[i].checked) {
            			  getstr += obj.elements[i].name + "=" + obj.elements[i].value + "&";
            		   }
            		}
            	 }   
            	 if (obj.elements[i].tagName == "SELECT") {
            		var sel = obj.elements[i];
            		getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
            	 }
            	 if (obj.elements[i].tagName == "TEXTAREA") {
                     getstr += obj.elements[i].name + "=" + encodeURIComponent(obj.elements[i].value) + "&";
        	 	}
            	 
              }
              return getstr;
          }
          
          

/*Aqui termina o ENVIO DE FORMULÁRIO VIA POST*/


/*#####################################################################*/
/*#####################################################################*/

/*ENVIA DADOS E RECEBE VIA GET*/
          function enviaGET(exibeEm,url){
                   ajaxEnviaGet(exibeEm,url,'');
          }
          
          function ajaxEnviaGet(exibeEm,url,mensagem){
                   var ajx = createXMLHttpRequest();
                   var exibeEm = document.getElementById(exibeEm);
                   if(mensagem != ''){
                      exibeEm.innerHTML = '<font style="color:#999999">'+mensagem+'</font>';
                   }
                   ajx.open("GET",url,true);
    
                   ajx.onreadystatechange=function() {
                        if(ajx.readyState == 4) {
                             exibeEm.innerHTML = ajx.responseText ;
                             extraiScript(ajx.responseText);
                        }
                   }
                   ajx.send(null);
                   CB_Init();
          }
/*Aqui termina o ENVIO DADOS E RECEBE VIA GET*/

/*#####################################################################*/
/*#####################################################################*/

/*ENVIA DADOS E RECEBE VIA GET*/
          function atualizaCustos(exibeEm,botaoOculta,botaoOculta2,url){
               var exibeEm = document.getElementById(exibeEm);
               exibeEm.innerHTML = '[<font style="color:#999999">Aguarde</font>]';
               exibeEm.innerHTML+= '<br>';
               exibeEm.innerHTML+= '<img src="imagens/bounce_loading.gif">';

               var botaoOculta   = document.getElementById(botaoOculta);
               botaoOculta.disabled = true;

               var botaoOculta2   = document.getElementById(botaoOculta2);
               botaoOculta2.disabled = true;

               xhReq.open("GET",url,true);

               xhReq.onreadystatechange=function() {
                    if(xhReq.readyState == 4) {
                         exibeEm.innerHTML = xhReq.responseText ;
                         botaoOculta.disabled = false;
                         botaoOculta2.disabled = false;
                         extraiScript(xhReq.responseText);
                    }
               }
               xhReq.send(null);
          }
/*Aqui termina o ENVIO DADOS E RECEBE VIA GET*/

/*#####################################################################*/
/*#####################################################################*/

/*FUNÇÃO PARA COMBOBOX*/
function atualizaCombo(comboID,loadingText,msgEscolher,exibemsgEscolherAux,url,msgSemRegistro){
     comboField = document.getElementById(comboID);
     var exibemsgEscolher;
     exibemsgEscolher= exibemsgEscolherAux;
     if(msgSemRegistro == ''){
          msgSemRegistro = 'Não há registros para a opção escolhida';
     }

     //Zera a combo 'comboID'
     comboField.options.length = 0;

     //Adicionando um 'Carregando...' na combo 'comboID'
     comboField.options[0] = new Option(loadingText,'0');
     comboField.disabled = true;

     xhReq.open("GET",url,true);
     this.xhReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
	    this.xhReq.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
	    this.xhReq.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
	    this.xhReq.setRequestHeader("Pragma", "no-cache");

     xhReq.onreadystatechange=function() {
          if(xhReq.readyState == 4) {
               //Zerando novamente as opções da combo
               comboField.options.length = 0;

               //Retornando os resultados (o split seria um explode do PHP)
               //Cada valor de cada índice da variável arrayOpt é uma opção e valor retornado
               arrayOpt = xhReq.responseText.split("|**|");

                //Verificando se retornou algo na consulta
               if((arrayOpt.length - 1) == 0){
                    comboField.options[0] = new Option(msgSemRegistro,'0');
                    comboField.disabled = true;
               }else{
                    comboField.disabled = false;
                    if(exibemsgEscolher == true){
                         //Atribuindo ao primeiro campo cujo valor é empty, a msgEscolher
                         comboField.options[0] = new Option(msgEscolher,'0');
                         var controlaArray = 1;
                    }else{
                         var controlaArray = 0;
                    }

                    for(var controla = 0 ; controla < (arrayOpt.length - 1) ; controla++){
                         var opt_value = arrayOpt[controla].split("|=|");
                         //alert(opt_value[1] +' - '+ opt_value[2]);
                         if(opt_value[1] == opt_value[2]){
                            comboField.options[controla + controlaArray] = new Option(opt_value[0],opt_value[1],true,true);
                         }else{
                               comboField.options[controla + controlaArray] = new Option(opt_value[0],opt_value[1]);
                         }
                    }
               }
               extraiScript(xhReq.responseText);
          }
     }
     xhReq.send(null);
     return true;
}

function atualizaMultiplasCombos(arrayInfo){
     comboField = document.getElementById(comboID);
     var exibemsgEscolher;
     exibemsgEscolher= exibemsgEscolherAux;
     if(msgSemRegistro == ''){
          msgSemRegistro = 'Não há registros para a opção escolhida';
     }

     //Zera a combo 'comboID'
     comboField.options.length = 0;

     //Adicionando um 'Carregando...' na combo 'comboID'
     comboField.options[0] = new Option(loadingText,'0');
     comboField.disabled = true;

     xhReq.open("GET",url,true);
     this.xhReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
	    this.xhReq.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
	    this.xhReq.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
	    this.xhReq.setRequestHeader("Pragma", "no-cache");

     xhReq.onreadystatechange=function() {
          if(xhReq.readyState == 4) {
               //Zerando novamente as opções da combo
               comboField.options.length = 0;

               //Retornando os resultados (o split seria um explode do PHP)
               //Cada valor de cada índice da variável arrayOpt é uma opção e valor retornado
               arrayOpt = xhReq.responseText.split("|**|");

                //Verificando se retornou algo na consulta
               if((arrayOpt.length - 1) == 0){
                    comboField.options[0] = new Option(msgSemRegistro,'0');
                    comboField.disabled = true;
               }else{
                    comboField.disabled = false;
                    if(exibemsgEscolher == true){
                         //Atribuindo ao primeiro campo cujo valor é empty, a msgEscolher
                         comboField.options[0] = new Option(msgEscolher,'0');
                         var controlaArray = 1;
                    }else{
                         var controlaArray = 0;
                    }

                    for(var controla = 0 ; controla < (arrayOpt.length - 1) ; controla++){
                         var opt_value = arrayOpt[controla].split("|=|");

                         comboField.options[controla + controlaArray] = new Option(opt_value[0],opt_value[1]);
                    }
               }
               extraiScript(xhReq.responseText);
          }
     }
     xhReq.send(null);
     return true;
}


/*Aqui termina o ENVIO DADOS E RECEBE VIA GET*/
function atualizaItens(valor)
{
   var divItens = document.getElementById('Produto');
   xhReq.open("GET", "includes/atualizacombo.php?o=14&value=" + valor, true);
   xhReq.onreadystatechange = function()
   {
      if (xhReq.readyState == 4)
      {
	     divItens.innerHTML = xhReq.responseText;
      }
	  else
	  {
	     divItens.innerHTML = 'Carregando...';
	  }
   }
   xhReq.send(null);
}

