//Tenta criar o objeto xmlHTTP
try{
    xmlhttp = new XMLHttpRequest();
}catch(ee){
    try{
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
        try{
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }catch(E){
            xmlhttp = false;
        }
    }
}

/*###############################################################################################################################*/

function extraiScript(texto){
    // inicializa
    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);
		}
    }
}
/*###############################################################################################################################*/

//Fila de conexões
fila=[]
ifila=0

//Carrega via XMLHTTP a url recebida e coloca seu valor
//no objeto com o id recebido
function ajax(id, url, tipo){
    
	if(tipo == 'menu'){
		// limpa as divs
		var limpa=document.getElementsByTagName('div');
		for(var i=0; i<limpa.length; i++) {
   			if(limpa[i].className=="menu_selecionado") {
    			limpa[i].className="";
        	}
    	}
	
		// marca a div selecionada
		var div = document.getElementById("menu_"+url);
		div.className="menu_selecionado";
	}
	
	//Carregando...
    document.getElementById(id).innerHTML="<div class=\"carregando\">Carregando conteúdo, aguarde...<br /><br /><img src=\"images/ajax-loader.gif\" border=\"0\" alt=\"\" /></div>"
    //Adiciona à fila
    fila[fila.length]=[id, url]
    //Se não há conexões pendentes, executa
    if((ifila+1)==fila.length)ajaxRun()
}

//Executa a próxima conexão da fila
function ajaxRun(){
    //Abre a conexão
    xmlhttp.open("GET", "funcoes/ajax.php?pagina="+fila[ifila][1]+"&AJAX=1", true);
	
	//Função para tratamento do retorno
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4){
            //Mostra o HTML recebido
            retorno=unescape(xmlhttp.responseText.replace(/\+/g," "));
			extraiScript(retorno);
			if(retorno == ''){
				retorno = 'nao retornou nada';
			}
            document.getElementById(fila[ifila][0]).innerHTML=retorno
			
			/*var er = /^(\w+)&(\w+)/;
			var matriz = er.exec(fila[ifila][1]);
			if(matriz[1] == 'template1'){
				var campo = document.getElementById('pesquisa');
				campo.focus();
			}*/
            //Roda o próximo
            ifila++
            if(ifila<fila.length)setTimeout("ajaxRun()",20)
        }
    }
    //Executa
    xmlhttp.send(null)
}


function ajax_form2(div, pagina, post){

	//Exibe o texto carregando no div conteúdo
    var conteudo=document.getElementById(div)
    conteudo.innerHTML='<div class="carregando">Enviando os dados. Aguarde...<br /><br /><img src=\"images/ajaxloader.gif\" border=\"0\" alt=\"\" /></div>'

    //Guarda a página escolhida na variável atual
    atual=pagina

    //Abre a url
	xmlhttp.open("POST", "funcoes/ajax.php?AJAX=1&pagina="+pagina,true);
	xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

    //Executada quando o navegador obtiver o código
    xmlhttp.onreadystatechange=function() {

        if (xmlhttp.readyState==4){

            //Lê o texto
            var texto=xmlhttp.responseText
			
			extraiScript(texto);

            //Desfaz o urlencode
            texto=texto.replace(/\+/g," ")
            texto=unescape(texto)

            //Exibe o texto no div conteúdo
            var conteudo=document.getElementById(div);
            conteudo.innerHTML=texto;

            //Obtém os links do menu
            /*var menu=document.getElementById("menu")
            var links=menu.getElementsByTagName("a")

            //Limpa as classes do menu
            for(var i=0;i<links.length;i++)
                links[i].className=""

            //Marca o selecionado
            links[atual-1].className="selected"*/
        }
    }
	xmlhttp.send(post);
}

function ajax_form(id, id_form, url)
{
	var elementosFormulario = document.getElementById(id_form).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;
            }
        }
    }
	ajax_form2(id, url, queryString);

}