try{
    xmlhttp = new XMLHttpRequest();
}catch(ee){
    try{
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
        try{
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }catch(E){
            xmlhttp = false;
        }
    }
}

//Fila de conexões
fila=[]
ifila=0

//Carrega via XMLHTTP a url recebida e coloca seu valor
//no objeto com o id recebido
function carrega_ajax(id, url){
    
	//Carregando...
    switch(id){
		case 'titulo':
		document.getElementById(id).innerHTML='Carregando título...';	
		break;
		
		case 'foto_produto':
		document.getElementById(id).innerHTML='Atualizando fotos...';
		break;
		
		default:
		document.getElementById(id).innerHTML='<div class="carregando">Carregando o conteúdo, aguarde...<br /><img src="images/carregando.gif" alt="0" style="margin-top:5px;" border="0" /></div>';
		break;
	}
    //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], true);
	
	//Função para tratamento do retorno
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4){
            //Mostra o HTML recebido
            retorno=unescape(xmlhttp.responseText.replace(/\+/g," "));
			// mostra o retorno na tela
            document.getElementById(fila[ifila][0]).innerHTML=retorno;
			
			// verifica e executa javascripts no retorno.
			extraiScript(retorno);
			// coloca foco no 1º campo text que achar.
			if(fila[ifila][1].match("focus")){				
				var rep = fila[ifila][1].replace(/^.*&focus=([a-z_]*).*/, "$1");
				//document.getElementById(rep).focus();				
			}else if(fila[ifila][0] == 'tab_content'){				
				putFocusTab();				
			}else{
				putFocus();
				putFocus();
			}
			
            //Roda o próximo
			ifila++;
            if(ifila<fila.length){
				setTimeout("ajaxRun()",50);
			}
        }
    }
	switch(xmlhttp.readyState){		
		case 0:
		// imprime o erro na tela
		//alert("Ocorreu um erro na requisição do AJAX\n\nAbortando a requisição...\nEnviando novo pedido ao AJAX");
		// aborta a requisição xmlhttp
		xmlhttp.abort();
		// chama a função ajax novamente
		carrega_ajax(fila[ifila][0], fila[ifila][1]);
		break;
	}
	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...</div>'

    //Guarda a página escolhida na variável atual
    atual=pagina

    //Abre a url
	xmlhttp.open("POST", "funcoes/ajax.php?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

            //Desfaz o urlencode
            texto=texto.replace(/\+/g," ")
            texto=unescape(texto)

            if(texto.match("(erro-login)")){
				alert("Já existe um usuário com este login.");
			}else if(texto.match("(erro-cpf)")){
				alert("Já existe um usuário com este cpf.");
			}else if(texto.match("(erro-email)")){
				alert("Já existe um usuário com este email.");
			}else{
				//Exibe o texto no div conteúdo
            	var conteudo=document.getElementById(div);
            	conteudo.innerHTML=texto;
			}
        }
    }
	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);

}

////
//############################
////

function calculaSedex(){
	
	try {
    	netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
   	} catch (e) {
    	alert("Permission UniversalBrowserRead denied.");
   	}
	
	var queryString="?servico=40010&cepOrigem=89290000&cepDestino=45200310&peso=3&MaoPropria=n&valorDeclarado=4000&avisoRecebimento=n";
	
	//Abre a conexão
    xmlhttp.open("GET", "http://www.correios.com.br/encomendas/precos/calculo.cfm"+queryString, true);
	
	//Função para tratamento do retorno
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4){
            //Mostra o HTML recebido
            retorno=unescape(xmlhttp.responseText.replace(/\+/g," "));
			// mostra o retorno na tela
            alert(retorno)
        }
    }
	switch(xmlhttp.readyState){		
		case 0:
		// imprime o erro na tela
		//alert("Ocorreu um erro na requisição do AJAX\n\nAbortando a requisição...\nEnviando novo pedido ao AJAX");
		// aborta a requisição xmlhttp
		xmlhttp.abort();
		// chama a função ajax novamente
		carrega_ajax(fila[ifila][0], fila[ifila][1]);
		break;
	}
	xmlhttp.send(null);	
}