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("<img src='ajax-loader.gif' />")    }
        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("<div align='center' style='margin-top: 50px'>aguarde... carregando</div>" )
        }
    }
    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);
        }
    }
}



function adjustFrame(frame)  { 
   if (document.all) {

  var h = frame.document.body.scrollHeight;
  if(frame.document.body.scrollWidth > frame.document.body.offsetWidth) {
   document.all[frame.name].height = h + 0;
  }
  else {
   document.all[frame.name].height = h;
  }

   }
   else if (document.getElementById) {
  var h = frame.document.height;
  if(frame.document.body.scrollWidth > frame.document.body.offsetWidth)  {
   document.getElementById(frame.name).height = h + 0;
    }
  else  {
   document.getElementById(frame.name).height = h;
    }
   }
   return false;
}




// cria a fila
fila=[];
ifila=0;

// funcao que carrega uma pagina dentro de um objeto qualquer
function carrega(url, destino){
    // coloca o texto "carregando" no objeto de carregamento
    document.getElementById(destino).innerHTML="Carregando";

    // adiciona o item na fila
    fila[fila.length]=[url,destino];
    
    // se a fila estiver vazia, inicia a execução
    if((ifila+1)==fila.length)ajaxRun();
}

//Executa a próxima conexão da fila
function ajaxRun(){
    // carrega os dados da pagina da fila
    url        = fila[ifila][0];
    destino    = fila[ifila][1];
        
    // carrega a pagina
    xmlhttp.open("GET", url, true);
    
    // headers
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
    xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
    xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
    xmlhttp.setRequestHeader("Pragma", "no-cache");

    // ao completar o carregamento
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4){
            // coloca o valor no objeto requisitado
            texto=unescape(xmlhttp.responseText.replace(/\+/g," "));
            document.getElementById(destino).innerHTML=texto;

            // executa a proxima requisição da lista (se existir)
            ifila++;
            if(ifila<fila.length)setTimeout("ajaxRun()",20);
        }
    }
    
    // executa
    xmlhttp.send(url);
}

// função que le todos os campos de um form e envia!
function enviaForm(frmNome, url, destino){
    // Captura o form
    f = document.getElementById(frmNome);
    // inicializa nova URL
    var query=url;
    //Percorre elementos do formulario
    for (i=0;i<f.elements.length;i++){
        // se for a primeira variavel adiciona o "?" senao adiciona "&"
        query += i==0 ? '?' : '&';
        // concatena a variavel na query
        query += f.elements[i].name + '=' + f.elements[i].value;
    }
    // envia o formulario
    carrega(query, destino);
}

/************
outras funções

************/
function Menu(id) {  
/* função que muda a classe CSS dos elementos da lista
   de forma a abrir e fechar a árvore */

    var id;
    //pegando o li pai do link
    var lipai = id.parentNode;
    //pegando o primeiro ul
    var ulfilho = id.parentNode.getElementsByTagName ("ul")[0];
    
    if(ulfilho.className.indexOf('aberto')<0 && ulfilho.className.indexOf('fechado')<0){
        //definindo um estado inicial caso nao haja
        ulfilho.className = ulfilho.className + " aberto";
    }
    if(lipai.className.indexOf('paiaberto')<0 && lipai.className.indexOf('paifechado')<0){
        //definindo um estado inicial caso nao haja
        lipai.className = lipai.className + " paiaberto";
    }
    //fazendo a troca
    if(ulfilho.className.indexOf('aberto')>-1){
      ulfilho.className = ulfilho.className.replace("aberto","fechado");
    }else{
      ulfilho.className = ulfilho.className.replace("fechado","aberto");
    }
    //mudando a imagem do li pai
    if(lipai.className.indexOf('paiaberto')>-1){
      lipai.className = lipai.className.replace("paiaberto","paifechado");
    }else{
      lipai.className = lipai.className.replace("paifechado","paiaberto");
    }
    return false;
}

function fechaTodas(quem){
/* função para fechar inicialmente todos os elementos
   da árvore se desejar */
    var lis = document.getElementById(quem).getElementsByTagName("li");
    for (var i=0; i < lis.length ; i++){
        lis[i].className += " paifechado";
    }
    var uls = document.getElementById(quem).getElementsByTagName("ul");
    for (var i=0; i < uls.length ; i++){
        uls[i].className += " fechado";
    }
}


function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

/**
 * ajaxHistory - histórico de comandos para navegação por Ajax
 * -----------------------------------------------
 * autor: Cau Guanabara <caugb@ibest.com.br>
 * data: 2006-06-07 :: 2006-11-07
 * -----------------------------------------------
 * O objeto ajaxHistory permite trabalhar com o histórico do navegador
 * em páginas com sistema de navegação por ajax, onde para se mostrar um
 * conteúdo não há o carregamento de uma nova página, mas apenas a execução de
 * um comando em javascript. Para que tudo funcione, é preciso adicionar
 * itens ao histórico manualmente, a cada comando que mude o conteúdo exibido,
 * com o método ajaxHistory.add().
 * -----------------------------------------------
 */

/**
Propriedades
------------
ajaxHistory.items -> array - contém os itens do histórico (comandos em forma de texto)
ajaxHistory.captions -> array - contém os títulos para os itens do histórico (opcional)
ajaxHistory.currentIndex -> inteiro - índice do item atual no array ajaxHistory.items
ajaxHistory.activeHistory -> boleano - true se os botões de histórico foram ativados

Métodos públicos
----------------
ajaxHistory.activateBrowserHistory -> function - ativa os botões de histórico do navegador
                                      Deve ser executada apenas uma vez, no onload da página.
ajaxHistory.add -> function - adiciona um item ao histórico
  @param str - comando JS em forma de string para ser executado ao mostrar o item
  @param cap - string para ser usada como title da página no carregamento do item
ajaxHistory.go -> function - recebe um número x e avança ou retrocede x itens no histórico
  @param ref - inteiro indicando quantos itens avançar (pos.) ou retroceder (neg.) no histórico
ajaxHistory.goTo -> function - recebe um número x e mostra o item x do histórico
  @param ind - inteiro indicando o índice do item do histórico a exibir
ajaxHistory.hasBack -> function - testa se há um item anterior ao atual
ajaxHistory.hasForward -> function - testa se há um item à frente do atual

Métodos privados
----------------
ajaxHistory.makeIframe -> function - cria o iframe (IExplore)
ajaxHistory.checkHash -> function - checa se há mudanças no hash (Mozilla)
ajaxHistory.setHash -> function - aplica a mudança no hash
*/

/**
 * Para usar os botões de histórico do navegador, é preciso ter o arquivo 'historyframe.html',
 * na mesma pasta da página que está usando o objeto ajaxHistory (não do arquivo ajax_history.js).
 * O arquivo 'historyframe.html' será incluído na página, em um iframe (apenas para o IExplorer).

 historyframe.html
 -----------------
 <html><head><script type="text/javascript" language="javascript">
  function checkHistory() {
  var pi = parent.location.hash.replace(/#/,''), si = location.href.replace(/^.+\?/,'') || false;
    if(si && pi && (parent.ajaxHistory || false)) 
      if(pi != si) parent.ajaxHistory.goTo(si);
  }
  </script></head><body onLoad="checkHistory();"></body></html>
 */
var ajaxHistory = {
  'items': [],
  'captions': [],
  'currentIndex': 0,
  'go': function(ref) {
    if(this.hasKey(this.currentIndex + ref)) this.currentIndex += ref;
    else return;
  this.setHash();  
    if(this.captions[this.currentIndex]) document.title = this.captions[this.currentIndex];
  new Function(this.items[this.currentIndex])();
  },
  'goTo': function(ind) {
    if(this.hasKey(ind)) this.currentIndex = ind;
    else return;
  this.setHash();
    if(this.captions[this.currentIndex]) document.title = this.captions[this.currentIndex];
  new Function(this.items[this.currentIndex])();
  },
  'add': function(str, cap) { 
    if(str == this.items[this.currentIndex]) return false;
  this.currentIndex = this.items.length;
  this.items.push(str);
  this.captions.push(cap || false);
  this.setHash();  
  return true;
  },
  'hasKey': function(key) { return (this.items[key] || false) ? true : false; },
  'hasBack': function() { return (this.items[this.currentIndex - 1] || false) ? true : false; },
  'hasForward': function() { return (this.items[this.currentIndex + 1] || false) ? true : false; },
  'activeHistory': false,
  'activateBrowserHistory': function() {
    if(document.all) this.makeIframe();
    else setInterval("ajaxHistory.checkHash()", 100);
  this.activeHistory = true;
  },
  'makeIframe': function() {
  this.iframe = document.createElement('iframe');
  this.iframe.src = 'historyframe.html';
  this.iframe.style.display = 'none';
  document.getElementsByTagName('body')[0].appendChild(this.iframe);
  },
  'checkHash': function() {
  var curHash = location.hash.replace(/#/,'');
    if(this.currentIndex != curHash) this.goTo(curHash);
  },
  'setHash': function() {
	  if(!this.activeHistory) return;
  top.location.hash = this.currentIndex;
    if(!document.all) return;
	this.iframe.contentWindow.location.href = 'historyframe.html?'+this.currentIndex;
  }
};


//INICIALIZA AS VARIAVEIS PARA CONTROLE DA FILA
var ifila = 0
var fila = new Array();
//fila[X][0] - Div onde sera carregada a pagina
//fila[X][1] - Pagina que sera chamada
//fila[X][2] - Metodo de envio
//fila[X][3] - Campos do form concatenados no padrao para serem enviados. Null caso seja um link



//INICIALIZA O OBJETO QUE IRA FAZER AS SOLICITACOES
try{
    xmlhttp = new XMLHttpRequest();// Mozilla, Safari, Firefox, etc...
    try {
        if (xmlhttp.overrideMimeType) {
            //Se possível, ignora cabecalho usado pelo servidor e forca o padrao "text/xml". Alguns navegadores exigem esse padrao e pode dar erro se o servidor nao utilizar ele
            xmlhttp.overrideMimeType('text/xml');
        }
    } catch (e1) { }
}catch(e2){
    try{
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");// Internet Explorer
    }catch(e3){
        try{
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");// Internet Explorer
        }catch(e4){
            //tratamento para alguma outra forma de implementar XMLHTTP
            xmlhttp = false;
        }
    }
}
if (!xmlhttp){
    //Nao conseguiu instanciar o objeto xmlhttp para fazer as solicitacoes
    alert("AJAX error. Your browser must support XMLHttpRequest object or enable use of scripting.");
}



//GUARDA NA FILA O ID DO OBJETO E A URL QUE SERAO CARREGADOS PELO LINK CLICADO
function ajaxLink(id_target,url){
    //Exibe mensagem de que esta carregando a pagina no objeto de ID informado
    ajaxMensagemCarregando(id_target);

    //Adiciona a solicitacao na fila
    fila[fila.length]=[id_target,url,"GET",null];

    //Se nao tem conexoes na fila, inicia a execucao
    if(fila.length==1){
        ajaxRun();
    }
    return;
}



//GUARDA NA FILA O ID DO OBJETO E O FORM QUE SERAO CARREGADOS PELO LINK CLICADO
function ajaxForm(id_target,id_form){
    //Pega a pagina que sera chamada pelo form
    var url = document.getElementById(id_form).action;
    //Busca metodo de envio definido no form
    var metodoEnvio = document.getElementById(id_form).method.toUpperCase();
    //Busca os elementos do form que serao enviados para a pagina solicitada
    var elementos_form = BuscaElementosForm(id_form);

    //Exibe mensagem de que esta carregando a pagina no objeto de ID informado
    ajaxMensagemCarregando(id_target);

    //Adiciona a solicitacao na fila
    fila[fila.length]=[id_target,url,metodoEnvio,elementos_form];

    //Se nao tem conexoes na fila, inicia a execucao
    if(fila.length==1){
        ajaxRun();
    }
    return;
}



//EXECUTA A PROXIMA SOLICITACAO DA FILA
function ajaxRun(){
    var url = fila[ifila][1];

    //Define o metodo de envio (GET ou POST)
    var metodoEnvio;
    if (fila[ifila][3]==null){
        //Se for Link, utiliza GET
        metodoEnvio = "GET";
    }else{
        //Se for Form, define o metodo de envio e prepara a url
        metodoEnvio = fila[ifila][2];
        if (metodoEnvio=="" || metodoEnvio==null){
            //Se nao tiver definido nada, usa POST
            metodoEnvio = "POST";
        }
        if (metodoEnvio=="GET"){
            //Metodo GET passa as informacoes na linha da url
            url = url + "?" + fila[ifila][3];
        }
    }

    //Abre a conexao
    xmlhttp.open(metodoEnvio,url,true);

    //Seta as funcoes que irao tratar a mudanca de estado do objeto XMLHTTP
    xmlhttp.onreadystatechange=ajaxXMLHTTP_StateChange;

    //Executa a solicitacao
    if (metodoEnvio=="POST"){
        //Metodo POST precisa definir este RequestHeader
        xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        //Metodo POST passa as variaveis pelo metodo Send
        xmlhttp.send(fila[ifila][3]);
    }else{
        xmlhttp.send(null);
    }
    return;
}



//FUNCAO EXECUTADA QUANDO ALTERAR O STATUS DA SOLICITACAO (readyState)
function ajaxXMLHTTP_StateChange() {
    //0-Nao inicializado, 1-Carregando, 2-Carregado, 3-Interativo, 4-Completo
    if (xmlhttp.readyState==1){
        ajaxXMLHTTP_StateChange_Carregando(fila[ifila][0]);//Quando iniciar a solicitacao
    }else{
        if (xmlhttp.readyState==4){
            ajaxXMLHTTP_StateChange_Completo(xmlhttp, fila[ifila][0]);//Quando estiver completa a solicitacao
        }
    }
}



//FUNCAO EXECUTADA QUANDO INICIAR A SOLICITACAO (readyState=1)
function ajaxXMLHTTP_StateChange_Carregando(id){
    //Exibe mensagem de que está carregando a página no objeto de ID que solicitacao esta sendo feita
    ajaxMensagemCarregando(id);
    return;
}



//FUNCAO EXECUTADA QUANDO A SOLICITACAO ESTIVER COMPLETA (readyState=4)
function ajaxXMLHTTP_StateChange_Completo(xmlhttp, id){
    var retorno;

    //Verifica o status da pagina de retorno
    if (xmlhttp.status == 200 || xmlhttp.status==0) {
        //Caso o status seja 200(Sucesso) ou nao utilize servidor(chamada local [C:\...]), trata o valor retornado
        retorno=unescape(xmlhttp.responseText.replace(/\+/g," "));
    }else{
        //Caso o status ainda nao foi tratado, chama a funcao de tratamento de pagina de erro
        retorno=ajaxPaginaErro(xmlhttp);
    }
    //Exibe o valor retornado no objeto de ID informado
    document.getElementById(id).innerHTML=retorno;
    // executa scripts
    ExtraiScript(retorno);

    //passa para a proxima posicao da fila
    ifila++;
    if(ifila<fila.length){
        //Caso tenha mais solicitacoes na fila, executa a proxima
        setTimeout("ajaxRun()",20);
    }else{
        //Caso nao tenha mais solicitacoes na fila, reinicia a fila
        fila = null;
        fila = new Array();
        ifila = 0;
    }
    return;
}



//FUNCAO PARA RETORNAR A MENSAGEM DE ERRO QUANDO O SERVIDOR RETORNAR UMA PAGINA DE ERRO
function ajaxPaginaErro(xmlhttp){
    var retorno;
    switch (xmlhttp.status) {
        case 404:
            return "Página não encontrada!!!";
            break;
        case 500:
            return "Erro interno do servidor!!!";
            break;
        default:
            return "Erro desconhecido!!!<br>" + xmlhttp.status + " - " + xmlhttp.statusText.replace(/\+/g," ");
    }
}



//FUNCAO PARA RETORNAR A MENSAGEM DE QUE ESTA CARREGANDO A PAGINA
function ajaxMensagemCarregando(id){
    document.getElementById(id).innerHTML = "<div align='center' style='margin-top: 50px'>aguarde... carregando</div><div align='center' style='margin-top: 50px'></div>";
}



//FUNCAO PARA PEGAR OS CODIGOS SCRIPT
function ExtraiScript(texto){
    var ini, pos_src, fim, codigo, texto_pesquisa;
    var objScript = null;
    //Joga na variavel de pesquisa o texto todo em minusculo para na hora da pesquisa nao ter problema com case-sensitive
    texto_pesquisa = texto.toLowerCase()
    // Busca a primeira tag <script
    ini = texto_pesquisa.indexOf('<script', 0)
    // Executa o loop enquanto achar um <script
    while (ini!=-1){
        //Inicia o objeto script
        var objScript = document.createElement("script");

        //Busca se tem algum src a partir do inicio do script
        pos_src = texto_pesquisa.indexOf(' src', ini)
        // Define o inicio para depois do fechamento dessa tag
        ini = texto_pesquisa.indexOf('>', ini) + 1;

        //Verifica se este e um bloco de script ou include para um arquivo de scripts
        if (pos_src < ini && pos_src >=0){//Se encontrou um "src" dentro da tag script, esta e um include de um arquivo script
            //Marca como sendo o inicio do nome do arquivo para depois do src
            ini = pos_src + 4;
            //Procura pelo ponto do nome da extencao do arquivo e marca para depois dele
            fim = texto_pesquisa.indexOf('.', ini)+4;
            //Pega o nome do arquivo
            codigo = texto.substring(ini,fim);
            //Elimina do nome do arquivo os caracteres que possam ter sido pegos por engano
            codigo = codigo.replace("=","").replace(" ","").replace("\"","").replace("\"","").replace("\'","").replace("\'","").replace(">","");
            // Adiciona o arquivo de script ao objeto que sera adicionado ao documento
            objScript.src = codigo;
        }else{//Se nao encontrou um "src" dentro da tag script, esta e um bloco de codigo script
            // Procura o final do script
            fim = texto_pesquisa.indexOf('</script>', ini);
            // Extrai apenas o script
            codigo = texto.substring(ini,fim);
            // Adiciona o bloco de script ao objeto que sera adicionado ao documento
            objScript.text = codigo;
        }

        //Adiciona o script ao documento
        document.body.appendChild(objScript);
        // Procura a proxima tag de <script
        ini = texto.indexOf('<script', fim);

        //Limpa o objeto de script
        objScript = null;
    }
}



//FUNCAO PARA PEGAR OS ELEMENTOS DO FORM
function BuscaElementosForm(idForm) {
    var elementosFormulario = document.getElementById(idForm).elements;
    var qtdElementos = elementosFormulario.length;
    var queryString = "";
    var elemento;

    //Cria uma funcao interna para concatenar os elementos do form
    this.ConcatenaElemento = function(nome,valor) {
                                if (queryString.length>0) {
                                    queryString += "&";
                                }
                                queryString += encodeURIComponent(nome) + "=" + encodeURIComponent(valor);
                             };

    //Loop para percorrer todos os elementos
    for (var i=0; i<qtdElementos; i++) {
        //Pega o elemento
        elemento = elementosFormulario[i];
        if (!elemento.disabled) {
            //Trabalha com o elemento caso ele nao esteja desabilitado
            switch(elemento.type) {
                //Realiza a acao dependendo do tipo de elemento
                case 'text': case 'password': case 'hidden': case 'textarea':
                    this.ConcatenaElemento(elemento.name,elemento.value);
                    break;
                case 'select-one':
                    if (elemento.selectedIndex>=0) {
                        this.ConcatenaElemento(elemento.name,elemento.options[elemento.selectedIndex].value);
                    }
                    break;
                case 'select-multiple':
                    for (var j=0; j<elemento.options.length; j++) {
                        if (elemento.options[j].selected) {
                            this.ConcatenaElemento(elemento.name,elemento.options[j].value);
                        }
                    }
                    break;
                case 'checkbox': case 'radio':
                    if (elemento.checked) {
                        this.ConcatenaElemento(elemento.name,elemento.value);
                    }
                    break;
            }
        }
    }
    return queryString;
}



function MM_showHideLayers() { //v9.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) 
  with (document) if (getElementById && ((obj=getElementById(args[i]))!=null)) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}
