/**********************************************************************************
FUNÇÕES DO AJAX
**********************************************************************************/

/**
 * @return XMLHttpRequest
 */
__DIVISOR__ = "%^%";

function InitAjax() {
	    
	try {
		
		xmlhttp = new XMLHttpRequest();
		
	} catch(ee) {
	
		try{
			
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			
		} catch(e) {
			
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(E) {
				xmlhttp = false;
			}
			
		}
		
	}
	
	return xmlhttp;
	
}

/**********************************************************************************
EXECUTA O AJAX
**********************************************************************************/

function ExecutaAjax(url,destino,execFuncaoID) {
	
	// inicializa as variáveis
	var ajax = false;
	var conteudo = '';
	
	// inicializa o AJAX
	ajax = InitAjax();
	
	if (ajax) {
		
		// envia os dados via AJAX
		ajax.open("GET", url, true);
		
		//Executada quando o navegador obtiver o código
		ajax.onreadystatechange = function() { 
		
			if (ajax.readyState == 4) {
				
				if (ajax.status == 200) {
				
					texto = ajax.responseText; //Lê o texto
					texto = formataTexto(texto); //Desfaz o urlencode
					
					// VERIFICA O QUE VAI SER FEITO
					
					switch (execFuncaoID) {
						
						case 'select':
							carregaOpcoesSelect(texto,destino);
						break;
						
						case 'conteudo':
							EscreveConteudo(texto,destino);
						break;
						
						case 'conteudo_simples':
							document.getElementById(destino).innerHTML = texto;
						break;
						
						case 'conteudo_popup':
							EscreveConteudoPopup(texto,destino);
						break;
						
						case 'relogio':
							document.getElementById(destino).innerHTML = texto;
						break;
						
						case 'executa':
							ExecutaCodigo(texto);
						break;
						
						default:
							alert('Não fez nada');
						break;
						
					}
					
				
			     } else {
					
					//alert("Houve um problema ao obter os dados...\nTente novamente"); 
					
				}
				
			
			}
			
		}
		
		// limpa
		ajax.send(null);
		
	} else {
		
		alert("Falha na comunicação com o servidor");
		
	}
	
	// retorno FALSE
	return false;
	
}

/*******************************************************************************************
PEGA UMA STRING E EXECUTA COMO CÓDIGO
*******************************************************************************************/

function ExecutaCodigo(codigo) {
	
	if (codigo != "")
		eval(codigo);
	
}

/**********************************************************************************
ESCREVE O CONTEUDO
**********************************************************************************/

function EscreveConteudo(texto,destino) {
	
		var retorno = texto.split(__DIVISOR__);
	
		document.getElementById(destino).innerHTML = retorno[0];
		
		if (retorno.length > 1) {
			ExecutaCodigo(retorno[1]);
		}
	
}

function EscreveConteudoPopup(conteudo,destino) {
	
		var retorno = texto.split(__DIVISOR__);
	
		document.getElementById(destino).innerHTML = retorno[0];
		
		if (retorno.length > 1) {
			executaCodigo(retorno[1]);
		}

}

 /**********************************************************************************
ARRUMA O TEXTO DE RETORNO
Para que está função funcione é necessário retornar o conteúdo
com a função URLENCODE do PHP
**********************************************************************************/

function formataTexto(str) {
	
	//Desfaz o urlencode
	str=str.replace(/\+/g," ");
	str=unescape(str);
	
	return str;
	
}