/****************************************
Autor
Ilustríssimo Desconhecido xD
****************************************/

XAHR = {};
XAHR.prototype = {
	getObject: function(){
		var o;
		try{ o = new ActiveXObject("Msxml2.XMLHTTP"); }
		catch(e){ try{ o = new ActiveXObject("Microsoft.XMLHTTP"); }
		catch(e){ try{ o = new XMLHttpRequest(); }
		catch(e){ o = null; } } }
		return o;
	},
	open: function(url, method, args, sync){
		if (AJAX.requestType == "GET")
			url += (url.indexOf("?") + 1 ? "&" : "?");
	}
};

function XHR(){
	var xmlhttp, bComplete = false;
	try{ xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
	catch(e){ try{ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
	catch(e){ try{ xmlhttp = new XMLHttpRequest(); }
	catch(e){ xmlhttp = false; } } }
	if(!xmlhttp)
		return null;
	this.connect = function(sURL, sMethod, sVars, fnDone) {
		if (!xmlhttp)
			return false;
		bComplete = false;
		sMethod = sMethod.toUpperCase();

		try {
			if(sMethod == "GET"){
				xmlhttp.open(sMethod, sURL + "?" + sVars, true);
				sVars = "";
			}
			else{
				xmlhttp.open(sMethod, sURL, true);
				xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
				xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=iso-8859-1");
			}
			xmlhttp.onreadystatechange = function(){
				if (xmlhttp.readyState == 4 && !bComplete){
					bComplete = true;
					fnDone(xmlhttp);
				}
			};
			xmlhttp.send(sVars);
		}
		catch(z){
			return false;
		}
		return true;
	};
	return this;
}