// Objeto AJAX para comunicação Assincrona com um servidor de aplicações WEB
function AJAX(url,metodo,params,mudaestado,processa,modo,assincrono) {
	this.url = url;
	this.metodo = (metodo) ? metodo : 'GET';
	this.params  = (metodo='GET') ? null : params;
	this.processaresultado = processa;
	this.processamudanca = mudaestado;
	this.modo = (modo) ? modo : 'T';
	this.assincrono = (assincrono) ? assincrono : true;
	if(this.modo!='T'&&this.modo!='X') {
		this.modo = 'T';
	}
	this.conectar();
}
AJAX.prototype = {
	conectar:			function() {
							if(this.url==undefined||this.url=='') {
								return; 
							}
							this.httprequest = null;
						   	if (window.XMLHttpRequest) { // Mozilla, Safari,...
					         	this.httprequest = new XMLHttpRequest();
				        	} else if (window.ActiveXObject) { // IE
					         	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);
																		}
								if(this.metodo==undefined||this.metodo=='') { this.metodo = 'GET';}
								this.httprequest.open(this.metodo,this.url, this.assincrono);
								//alert(this.metodo.toUpperCase)
								if (this.metodo == 'POST' || this.metodo == 'post' || this.metodo == 'Post') 
								{
									this.httprequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
									//this.httprequest.setRequestHeader('Content-length', this.params.length)
								}
						        this.httprequest.send(this.params);
							}
						},
	processaretorno:	function() {
		                    if (this.processamudanca != null)
							{
								var estado = this.httprequest.readyState;
								this.processamudanca(estado)
							}
							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) {
										this.processaresultado(resp);
									} else {
										document.write(resp);
									}
								} else { 
									this.processaerro();
								}
							}
						},
	processaerro:		function() {
							alert(this.httprequest.status + '-' + this.httprequest.statusText + ' :-> ' + this.url);
						}
}

function XMLparaHTML(xmlDoc,xsltDoc)
{
	if(window.ActiveXObject)
	{
		result = xmlDoc.transformNode(xsltDoc);
	}
	else
	{
		var xsltp = new XSLTProcessor();
		xsltp.importStylesheet(xsltDoc);
		result = xsltp.transformToFragment(xmlDoc,document);
	}  
	return result;
}



