/* Mini biblioteca criada para fazer interação com o Ajax.
	Criador: Rodrigo Otávio . Data 16/02/2006
*/
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. Baseado no sistema da veritas de chamada de funções(SYSTEM);
	Parametros:
	        system= Nome do módulo a ser chamado;
	        action= 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(system,action,parametro,strFuncao)
{
	var bufferAcao="";
	var bufferFuncao="";
	var strNomeDiv="";
	var strAcaoDiv="";
	if(ocupado==0)
	{
	    ocupado=1;// Função que define q o ajax está ocupado executando uma tarefa;
		if(system=="carrinho")
		{
			if(action=="exibe_valor_total")
			{
				strNomeDiv = "exibe_valor_total";  // Nome do div para ser substituido com o valor de retorno
   				strAcaoDiv = ".innerHTML";  // Funcao a ser executada quando estiver pronto o retorno. Ex: .innerHTML,.value,.style.background
			}
		}
		bufferAcao="dev.php?system="+system+"&action="+action +parametro;
  		bufferFuncao=strFuncao;
  		if(strNomeDiv)
			strFuncaoExecutar = 'document.getElementById("'+strNomeDiv+'")'+strAcaoDiv+'=xmlHttp.responseText';
	    iniciaRequisicao(bufferAcao,bufferFuncao);
	}else
		setTimeout("voidFuncaoGeral('"+system+"','"+action+"','"+parametro+"','"+strFuncao+"')",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)
				eval(strFuncaoExecutar);
			if(document.getElementById("aguarde"))
				document.getElementById("aguarde").style.display="none";
	        ocupado=0;
		}
	}
}
