/* Mini Framework criada para fazer interação com o Ajax.
	Versão: 0.2
*/
var xmlHttp; // Objeto para comunicação com o server;
var ocupado=0;
var strFuncaoExecutar="";
/* Função que cria um objeto XMLHttpRequest(Ajax),
seria um manipulador para interação com o servidor sem precisar dar "refresh" na página.
*/

function createXMLHttpRequest() // Função que verifica se o objeto pode ser lido como activeX(IE) ou como objeto nativo(Mozilla, Opera..)
{
	if (window.ActiveXObject)
	{
		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else if (window.XMLHttpRequest)
	{
		xmlHttp = new XMLHttpRequest();
	}
}
/*
 Função que fara as chamadas gerais.
	Parametros:
	        modulo= Nome do módulo a ser chamado;
	        acao= Acao que será executada pelo módulo
	        parametro = Lista de parametros adicionais a serem enviados ao server.
	        strFuncao = Nome da Função a ser executada quando estiver pronto a requisição. Normalmente se chama a voidTrocaGeral();
	Replicar essa funcao para o form em que utilizar o ajax.
*/
function voidFuncaoGeral(modulo,acao,parametro,strFuncao, strNomeDiv,strAcaoDiv)
{
	var bufferAcao="";
	var bufferFuncao="";
    var dif_admin = /[a-zA-Z0-9]*.php/
	//var strNomeDiv="";
	//var strAcaoDiv="";
    if(strFuncao == "" || !strFuncao)
        strFuncao = "voidTrocaGeral";
	if(ocupado==0)
	{
	    ocupado=1;// Função que define q o ajax está ocupado executando uma tarefa;
        if(!dif_admin.test(modulo))
        {
            bufferAcao="?modulo="+modulo+"&acao="+acao +parametro;
        }else
        {
            bufferAcao=modulo+"?acao="+acao +parametro;
        }
  		bufferFuncao=strFuncao;
  		if(strNomeDiv)
			strFuncaoExecutar = 'document.getElementById("'+strNomeDiv+'")'+strAcaoDiv+'=xmlHttp.responseText';
        else
            strFuncaoExecutar = '';
	    iniciaRequisicao(bufferAcao,bufferFuncao);
	}else
		setTimeout("voidFuncaoGeral('"+modulo+"','"+acao+"','"+parametro+"','"+strFuncao+"','"+strNomeDiv+"','"+strAcaoDiv+"')",1);
		// A função acima envia a requisição até q o Buffer de execução esteja livre

}
/* Função que executa a comunicação com o servidor. Ela é uma espécie de manipulador das chamadas feitas ao servidor,
em poucas palavras, ela é o elo da página com o servidor.
	Parametros:
	        acaoUrl = nome do caminho a ser executado o comando. Ex: www.wv.com.br
	        Funcao  = nome da função que fará o tratamento posterior quando a função iniciaRequisicao receber finalmente
					os dados do servidor. Essa função será chamada automaticamente quanto xmlHttp.readyState=4.
			Obs: essa função não precisaria ser mexida, visto que sempre as requisições seguem o mesmo parametro.
*/
function iniciaRequisicao(acaoUrl,Funcao)
{
	createXMLHttpRequest();
	xmlHttp.onreadystatechange = eval(Funcao);
	xmlHttp.open("GET", acaoUrl, true);
	xmlHttp.send(null);
	ocupado=1;
}

/* Função que será executada quando o retorno do servidor estiver pronto. Essa é uma função padrão, mas pode-se criar
outras funções para tratar resultados vindo do servidor.

*/
function voidTrocaGeral()
{
	if(xmlHttp.readyState==4)
	{
	    if(xmlHttp.status==200)
	    {
			//alert(xmlHttp.responseText); //modo debug
            if(strFuncaoExecutar!="") // Esse if serve para rodar funçoes que já existam em js.
    			eval(strFuncaoExecutar);
            else
                eval(xmlHttp.responseText);
	        ocupado=0;
		}
	}
}

