
var objXMLHttpRequest = "";
var req = null;
var response = null;

var XMLHTTP_VERSIONS = ["Microsoft.XMLHTTP",
						"MSXML2.XMLHTTP",
						"Msxml2.XMLHTTP.7.0",
						"Msxml2.XMLHTTP.6.0",
						"Msxml2.XMLHTTP.5.0",
						"Msxml2.XMLHTTP.4.0",
						"MSXML2.XMLHTTP.3.0"];

// Se callback = null, faz a chamada sincrona
function callUrlAjax(dscUrl, method, callback)
{
	req = null;
	
	var objExiste = true;
	try {
	    req = new XMLHttpRequest();
	}
	catch (ex) {
		try {
	        if (objXMLHttpRequest) {
	            req = new ActiveXObject(objXMLHttpRequest);
	        }
			else {
				for (var i=0; i<XMLHTTP_VERSIONS.length ; i++) {
					try {
						req = new ActiveXObject(XMLHTTP_VERSIONS[i]);
						if (req) {
							objXMLHttpRequest = XMLHTTP_VERSIONS[i];
							break;
						}
					}
					catch (exA) {
						objExiste = false;
					}
				}
	        }
	    }
		catch (exB) {
			objExiste = false;
		}
	}	
	
	// Verifica se o objeto foi criado
	if (objExiste == false) return false;

	if (callback != null) req.onreadystatechange = callback;
	req.open(method, dscUrl+"&iebug="+Math.random(), (callback!=null));
	req.send(null);
	
	return true;
}

function isResponseCompleteAjax()
{
    if (req.readyState == 4) return true;
	else return false;
}

function isValidResponseAjax()
{
	if (req.status == 200 && req.responseXML != null) {
		response  = req.responseXML.documentElement;
		if (response != null) return true;
		else return false;
	}
	else return false;
}

function isValidResponseTextAjax()
{
	if (req.status == 200 && req.responseText != null) return true;
	else return false;
}

function getResponseValueText()
{
	if (req.responseText != null) return req.responseText;
	else return "";
}

function getResponseValueAjax(tagName, position)
{
	if (response != null) {
		var elements = response.getElementsByTagName(tagName);
		if (elements != null && elements.length > position && elements[position].firstChild != null) return elements[position].firstChild.data;
		else return "";
	}
	else return "";
}

function getResponseSizeAjax(tagName)
{
	if (response != null) {
		var elements = response.getElementsByTagName(tagName);
		if (elements != null) return elements.length;
		else return 0;
	}
	else return 0;
}





