/*
	Classe Ajax
	- Cria o objeto ajax
	- Faz a busca em uma página 
	- Retorna o resultado
*/

function AJAX(url, metodo, params, processa, modo)
{
	this.url 				= url;
	this.metodo 			= (metodo) ? metodo : 'GET';
	this.params 			= (metodo='GET') ? null : params;
	this.processaresultado 	= processa;
	this.modo				= (modo) ? modo : 'T';
	
	/* T = Text , X = XML */
	if( this.modo != 'T' && this.modo != 'X' ){
		this.modo = 'T';
	}
	
	this.conectar();
}

AJAX.prototype = {
	
	/*
		Cria o método conecter()
		Responsavel pela criação do objeto Ajax ( httprequest )
	*/
	conectar: function(){
		
				/* Verifica se URL é válda */
				if( this.url == undefined || this.url == ''){
					return;
				}
				
				/* Cria o objeto httpRequest */
				this.httprequest = null;
				
				/* Mozilla, Safari, FireFox ... */
				if( window.XMLHttpRequest ){
					this.httprequest = new XMLHttpRequest();
					
				/* IE */
				} else if( window.ActiveXObject){
					try{
						this.httprequest = new ActiveXObject("Msxml2.XMLHTTP");
					} catch (e){
						try{
							this.httprequest = new ActiveXObject("Microsoft.XMLHTTP");
						} catch (e) {}
					}
				}
				if(this.httprequest != null && this.httprequest != undefined ){
					var obj = this;
					this.httprequest.onreadystatechange = function(){
																obj.processaretorno.call(obj);
															}
					this.httprequest.open(this.metodo,this.url, true);
					this.httprequest.send(this.params);

				}
				
			}, // fim conectar

	/*
		Cria o método processaretorno()
		recebe a resposta do responseText ou responseXML
	*/			
	processaretorno: function(){
						if( this.httprequest.readyState == 4 ){
							if( this.httprequest.status == 200 ){
								var resp = ( this.modo == 'T' ) ? this.httprequest.responseText : this.httprequest.responseXML;
								
								if( this.processaresultado != null ){
									//alert(resp)	;
									this.processaresultado(resp);
								} else {
									alert("erro="+resp);
							}
							} else {
								this.processaerro();
							}
						}
					}, // fim processaretorno

	/*
		Cria o método processaerro()
		Retorna um alert de erro, caso houver
	*/					
	processaerro: 	function(){
	
	//					document.getElementById("resultado").setAttribute('class','erro-1');
		//				document.getElementById("resultado").setAttribute('className','erro-1');
			//			document.getElementById("resultado").innerHTML = "<br>"+this.httprequest.status + '-' + this.httprequest.statusText + ' :-> ' + this.url+"<br><br>";

						alert(this.httprequest.status + '-' + this.httprequest.statusText + ' :-> ' + this.url);
					}			
					
								
	
}
