/******************************************************************************************************************************************************************
*	AUTOR: 			Alexandre da Silva Mateus :: alexandre.silva.mateus@gmail.com
*	DATA:			30/11/2006
*	DERCRIÇÃO:		Este arquivo contém funções comuns para "criação" de um objeto XHLHTTPRequest 
*					compatível com o navegador, teste de compatibilidade de recursos,
*					e exibição de conteúdo em um DIV definido
******************************************************************************************************************************************************************/



/******************************************************************************************************************************************************************
*	FUNÇÃO: 		XMLHTTPRequest
*	ARGUMENTOS: 	void	
*	RETURN:			->		object		::		Retorna o objeto XMLHTTPRequest de acordo com o Navegador se for bem sucedida
*					->		false		::		Retorna "false" caso o navegador não suporte
*	DESCRIÇÃO:		Retorna um objeto XMLHTTPRequest compatível com o browser, ou retorna falso se não haver suporte
******************************************************************************************************************************************************************/
function XMLHTTPRequest() { 
	var http_request = 0;
	if (window.XMLHttpRequest) {
		http_request = new XMLHttpRequest(); 										// Objeto nativo (Firefox / Safari / Konqueror / Opera / Etc)
	}
	else {
		try { 
			http_request = new ActiveXObject("Msxml2.XMLHTTP");						// ActiveX (IE5.5+/MSXML2+) 
		} 
		catch(e) {
			try { 
				http_request = new ActiveXObject("Microsoft.XMLHTTP");				// ActiveX (IE5+/MSXML1)
			} 
			catch(e) { 
				http_request = false; 												// O navegador não tem suporte
			} 
		}
	} 
	return http_request; 															// Retornar resultado (Objeto, ou "false", no caso de erro)
}
/*****************************************************************************************************************************************************************/



/******************************************************************************************************************************************************************
*	FUNÇÃO: 		VALIDAR RECURSOS
*	ARGUMENTOS: 	void	
*	RETURN:			->		true		::		Tem suporte
*					->		false		::		Não tem suporte
*	DESCRIÇÃO:		Verifica se o navegador tem suporte aos recursos listados a seguir	->	[document.getElementById]
*																						->	[document.createElement]
******************************************************************************************************************************************************************/
function validar_recursos() {
	if (document.getElementById && document.createElement) {
		return(true);
	}
	else {
		return(false);	
	}
}
/*****************************************************************************************************************************************************************/

var status = 0;
function set_status(carregando) {
	var msg_status 	= document.getElementById('msg');
	if (status > 0) {
		msg_status.innerHTML 			= carregando;	
		msg_status.style.visibility 	= 'visible';
		document.body.style.cursor 		= 'wait';			
	}
	else if (status == 0) {
		msg_status.style.visibility 	= 'hidden';	
		document.body.style.cursor 		= 'default';
		msg_status.innerHTML 			= '';			
	}
}


/******************************************************************************************************************************************************************
*	FUNÇÃO: 		VALIDAR RECURSOS
*	ARGUMENTOS: 	void	
*	RETURN:			->		true		::		Tem suporte
*					->		false		::		Não tem suporte
*	DESCRIÇÃO:		Verifica se o navegador tem suporte aos recursos listados a seguir	->	[document.getElementById]
*																						->	[document.createElement]
******************************************************************************************************************************************************************/
function exibir_conteudo(http_request, div, carregando, processador, metodo) {

	//-----------------------------------------------------------------------------------------------------------------------------------------------------------//	
	var conteudo 						= document.getElementById(div);					// Div em que será exibido o resultado da requisição
	//-----------------------------------------------------------------------------------------------------------------------------------------------------------//
	status++;
	set_status(carregando);		
	//-----------------------------------------------------------------------------------------------------------------------------------------------------------//	
	http_request.open(metodo, processador, true);										// Abre o arquivo para requisição
	//http_request.setRequestHeader('content-type', 'text/xml');						// Cabeçalho pra ser enviado junto com a requisição		
	//-----------------------------------------------------------------------------------------------------------------------------------------------------------//	
	http_request.onreadystatechange 	= function() {
		if (http_request.readyState 	== 4) {											// Se a requisição estiver terminada 
			if (http_request.status 	== 200) { 										// Se a "Status" retornado for "ok
				if (div.length > 0) {
					var html 				= http_request.responseText;				// Lê o conteúdo
					conteudo.innerHTML 		= html;
				}
				status--;
				set_status(carregando);
			}
		}
	}
	//-----------------------------------------------------------------------------------------------------------------------------------------------------------//	
	http_request.send(null);															// Realiza a requisição
	//-----------------------------------------------------------------------------------------------------------------------------------------------------------//	
	return(1);
}
