 // Executar Ajax e obter retorno desejado
 function exeAjax ()
 {
    // Requisição ao objeto de acordo com o navegador
    function objAjax ()
    {
       try // Tenta o objeto padrão
       {
          return new XMLHttpRequest(); // Mozilla e similares
       }
       catch (e) // Se não funcionar captura o erro e tenta outros objetos
       {
          var msxml = new Array (
             'Msxml2.XMLHTTP.5.0',
             'Msxml2.XMLHTTP.4.0',
             'Msxml2.XMLHTTP.3.0',
             'Msxml2.XMLHTTP'    ,
             'Microsoft.XMLHTTP');
          for (var i=0; i<msxml.length; i++)
             try
             {
                return new ActiveXObject(msxml[i]); // IE
             }
             catch (e) { }
       }
    }
    var ajax   = objAjax(); // Iniciar requisição ao objeto
    var arg    = exeAjax.arguments; // Trazer argumentos da função
    var url    = '?f=' + arg[0]; // Passar para variável a função php que será executada
    var ini    = 2; // Iniciar contagem dos argumentos no indice 2
    var gEleId = document.getElementById(arg[2]);
    // Se o segundo argumento for 1 ou 2 inicia a contagem no indice 3
    if (arg[1] == 1 || arg[1] == 2)
    {
       ini = 3;
       // Verifica se existe algum elemento com o id transmitido
       if (!gEleId)
       {
          alert('Não existe elemento com ID '+ arg[2] +'!');
          return; // Parar aqui
       }
    }
    for (var i=ini; i<arg.length; i++)
        url += "&arg[]=" + arg[i]; // Passar para variável os argumentos da função
    // Verifica se a requisição foi iniciada com sucesso
    if (ajax)
    {
       ajax.open ("GET", url, true); // Abrir url em método get e assíncrona
       ajax.onreadystatechange = function ()
       {
          // Retornar o conteúdo obtido no evento desejado
          function retAjax (txtAjax)
          {
             if (arg[1] == 1) // Imprimi resultado em html
                gEleId.innerHTML = txtAjax;
             else
                if (arg[1] == 2) // Imprimi resultado em um campo form
                   gEleId.value = txtAjax;
                else
                   if (arg[1] == 3) // Imprimi o resultado em um alert
                      alert(txtAjax);
          }
          // Retornar quando estiver pronto
          if (ajax.readyState == 4 && ajax.status == 200)
              retAjax(unescape(ajax.responseText.replace(/\+/g, " ")));
       }
       ajax.send (null);
    }
 }