//Declarar variáveis globais -----------------------------------------------------------------------
var objAjaxCampoValor;      //Campo com o valor a ser buscado
var objAjaxCampoDestino;    //Campo para a ser preenchidos
var strAjaxMensagem0;       //Mensagem para quando não há valores selecionados
var strAjaxValorSelect;     //Valor anteriormente selelcionado na combo a ser preenchida
var strAjaxOpcao0;          //Valor do 1º item da combo após a leitura dos itens

//Função para preencher combo de tabelas na alteração do owner -------------------------------------
function trocarCombo(strURLXML) {
  //Declarar variáveis
  var strValor = "";

  //Limpar combobox de tabelas
  objAjaxCampoDestino.length = 1;

  objAjaxCampoDestino.options[0].value = "";

  if (objAjaxCampoValor.selectedIndex <= 0) {
    objAjaxCampoDestino.options[0].text  = strAjaxMensagem0;

    $.uniform.update();

    return;
  }

  //Montar a combo de tabelas
  objAjaxCampoDestino.options[0].text  = "Buscando valores...";

  strValor = objAjaxCampoValor.options[objAjaxCampoValor.selectedIndex].value;

  loadXMLDoc(strURLXML + strValor);
}

//Função Ajax para tratar o retorno do XML ---------------------------------------------------------
function stateXMLChange() {
  //Declarar variáveis
  var strTabela = "";
  var strErro   = "";
  var strValor  = "";
  var strTexto  = "";
  var xmlDoc;
  var xmlTabelas;
  var arrTabela;

  if (xmlhttp.readyState == 4) {
    if (xmlhttp.status != 200) {
      //Setar na combo o erro
      objAjaxCampoDestino.options[0].text = "Erro na leitura. " + strAjaxMensagem0;

      //Exibir mensagem de erro
      alert("Ocorreu um erro na pesquisa do XML com as valores.");

      //Sair
      return;
    }

    //Carregar o XML
    xmlDoc  = xmlhttp.responseXML.documentElement;

    //Ler a tag de erro
    strErro = xmlDoc.getElementsByTagName("erro")[0].firstChild.nodeValue;

    //Erro na montagem do XML ("_" significa sem erro - para que tag não fique vazia)
    if (strErro != "_") {
      //Setar na combo o erro
      objAjaxCampoDestino.options[0].text  = "Erro na leitura. " + strAjaxMensagem0;

      //Exibir mensagem de erro
      alert(strErro);

      //Sair
      return;
    }

    //Setar na combo leitura sem erro
    objAjaxCampoDestino.options[0].text = strAjaxOpcao0;

    //Montar combo com o XML recebido
    xmlTabelas = xmlhttp.responseXML.documentElement.getElementsByTagName("item");

    if (xmlTabelas != null) {
      for (var i = 0; i < xmlTabelas.length; i++) {
        strTabela = xmlTabelas[i].firstChild.nodeValue;

        arrTabela = strTabela.split("|");
        strValor  = arrTabela[0];
        strTexto  = arrTabela[1];

        objAjaxCampoDestino.length++;

        objAjaxCampoDestino.options[objAjaxCampoDestino.length - 1].value = strValor;
        objAjaxCampoDestino.options[objAjaxCampoDestino.length - 1].text  = strTexto;
          
        if (strAjaxValorSelect != "" && strValor == strAjaxValorSelect)
          objAjaxCampoDestino.options[objAjaxCampoDestino.length - 1].selected = true;
      }
    }

    $.uniform.update();
  }
}

//Função Ajax para buscar em uma URL o XML ---------------------------------------------------------
function loadXMLDoc(url) {
  if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
  }
  else {// code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  }

  if (xmlhttp == null) {
    alert("Seu browser não suporta as funcionalidades do AJAX!");
    return;
  }

  xmlhttp.onreadystatechange = function(){ stateXMLChange(); };

  xmlhttp.open("GET", url + "&sid=" + Math.random(), true);

  if (xmlhttp.overrideMimeType) 
    xmlhttp.overrideMimeType('text/xml');       

  xmlhttp.send(null);
}

