var request = null;
/**
	Função createRequest: Instancia o classe XMLHttpRequest tanto como
	objeto nativo (Firefox, Netscape, Opera, etc...), como um ActiveX
	para o navegador Internet Explorer
	retorno: object XMLHttpRequest
*/
function createRequest(){
	
	// verifica se é Firefox...
	try{
		request = new XMLHttpRequest();
	}
	// se não é, obtem a exceção e cria um objeto de erro trymicrosoft
	catch(trymicrosoft){
		// verifica se é IE, versão nova do ActiveX e tenta criar o objeto
		try{
			request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		// se não é, obtem a exceção e cria um objeto de erro othermicrosoft
		catch(othermicrosft){
			// tentar criar um objeto na versão antiga do ActiveX
			try{
				request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			// se tudo não deu certo, cria a exceção que é a falha, e retorna
			// o valor da variável request recebe null
			catch(falha){
				request = null;
			}
		}
	}
	// se não foi possível a criação do objeto, mostre um alerta ao visitante
	if(request == null){
		alert("Seu navegador não oferece suporte para AJAX");
	}
}



function showLoading(flag){
	var loading = document.getElementById('loading');
	if(flag == 'true'){
		loading.style.display = '';
	}
	else if(flag == 'false'){
		loading.style.display = 'none';
	}
}

function tempoEsgotado(){
	request.abort();
	alert("Problema na comunicação com o servidor.\nTente acessar mais tarde.");
}

function requisicaoAjax(url,idenfificacao)
{
	createRequest(); //Cria o objeto de requisição em AJAX: request
	request.open('GET',url,true);
	
	/**
		Só deixa a requisição rodando por 10 segundos.
		Se o servidor não responder, aborta e deixa uma msn para o usuário
	 */
	var idTimeout = setTimeout(tempoEsgotado,10000);
	
	request.onreadystatechange = function() {
		if(request.readyState == 4){ // A PÁGINA FOI CARREGADA
		
		/**
			Se o servidor respondeu, cancela o contador do timeout
		 */
		clearTimeout(idTimeout);
		
			if(request.status == 200) // A PÁGINA FOI CARREGADA CORRETAMENTE
			{
				trataDados(idenfificacao);
			}
			else
			{
				alert("Problema de comunicação com o servidor... \n Tente novamente em alguns minutos.");
			}
			showLoading('false');
		}
		else
		{
			showLoading('true');
			//alert('Problema:'+request.statusText);
		}
	}
	request.send(null);
}