/*
// AJAX OBJECT
// Author: Anderson Martins Gonçalves.
// Last Change: 21/08/2008
// Current Version: 1.0
// Last Revisions: 26/02/2007
//Corrections was made so it can be faster
*/

var ajax = function() {
	var self = this;
	var http_request = false;
	var div;
	//Atributos
	this.file   	= null;
	this.ret    	= null;
	this.xmlDoc 	= null;	
	this.returnType = '';
	this.xmlDoc 	= null;
	this.url 		= '';
	this.metodo 	= '';
	this.modo 		= '';
	this.tagRetorno = '';
	this.parametros = '';
	this.tagId		= '';
	//métodos
	this.load 	  = _makeRequest;	
	
	function _makeRequest() 
	{
		document.body.style.cursor='wait';
		 //Verifica se o Browser é compativel e instancia o componente
	     if (window.XMLHttpRequest) { // Mozilla, Safari,...
	         self.http_request = new XMLHttpRequest();
	         if (self.http_request.overrideMimeType) {
	             self.http_request.overrideMimeType('text/xml');
	         }
	     } else if (window.ActiveXObject) { // IE
	         try {
	             self.http_request = new ActiveXObject("Msxml2.XMLHTTP");
	         } catch (e) {
	             try {
	             self.http_request = new ActiveXObject("Microsoft.XMLHTTP");
	             } catch (e) {}
	         }
	     }
	    if (!self.http_request)
		{
			alert("Cannot create an XMLHTTP instance.");
	    	return false; 
		}

		//seta DIV de resposta
		//tenta pegar oque foi passado na chamada do objeto
//		alert(self.tagId+self.http_request.readyState+isUndefined(self.tagId));
		div = document.getElementById(self.tagId);
				
		//exibe mensagem ao usuário
		self.http_request.onreadystatechange = alertContents;

		//verifica se é GET ou POST		
	    if(this.metodo == "GET") 
		{
			this.url = this.url + "?"+this.parametros;
			if (self.file != '')
			{
				self.http_request.open(this.metodo, self.file, this.modo);
			}
			else
			{
	        	self.http_request.open(this.metodo, this.url, this.modo);
	        }
			self.http_request.send(null);			
	    } 
		else 
		{       
			if (self.file != '')		
			{
				self.http_request.open(this.metodo, self.file, this.modo);
			}
			else
			{
	        	self.http_request.open(this.metodo, this.url, this.modo);
	        }
	        self.http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1");
	        self.http_request.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
	        self.http_request.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
	        self.http_request.setRequestHeader("Pragma", "no-cache");
			self.http_request.send(this.parametros);
	     }    
	     document.body.style.cursor='auto';
	}
	
	function alertContents() 
	{
	/** self.http_request.readyState(
	0 – Uninitialised 
	1 – Loading 
	2 – Loaded 
	3 – Interactive 
	4 – Completed 
	)**/  
		try {	
			
			// Quando estiver carregando, exibe: carregando...
			if(self.http_request.readyState == 1)
			{
			div.innerHTML='aguarde...<br><img src="http://www.acaq.org.br/images/loading.gif" width="32" height="32" alt="" border="0">';
			}			  
			if (self.http_request.readyState == 4) 
			{
				if (self.http_request.status == 200) 
				{
					var resultado = self.http_request.responseText;
					if (resultado==""){
			 		 	 div.innerHTML = "<strong>&raquo;Erro ao tentar resgatar dados do banco de dados.</strong>";
					}
					else 
					{
						resultado = resultado.replace('"','');
						resultado = resultado.replace(/\+/g," ");
						resultado = unescape(resultado);				
			 		 	div.innerHTML = resultado;
					}
				} 
				else 
				{
			   	  div.innerHTML = '';
		          alert('Error on loading AJAX 1: '+self.http_request.statusText+' - '+self.http_request.status);
				}
		    }
		} 
		catch (e) 
		{
			div.innerHTML = '';
            alert('Error on loading AJAX 2: '+e.description+self.http_request.statusText+' - '+self.http_request.status);
		}
	}
}
