function carregarXML(url, funcaoRS, asyncrono) {
	if (funcaoRS == null) asyncrono = false; //Caso nao insiram função Ready State então é um carregamento syncrono
	if (asyncrono == null) asyncrono = true; //Caso tenham inserido função Ready State e nao tenham escolhido o padrão será asyncrono.
	if (window.ActiveXObject) {
		var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async = asyncrono;
		xmlDoc.onreadystatechange = function() { xmlCarregado(xmlDoc, funcaoRS); };
		xmlDoc.load(url);
	} else
		if (window.XMLHttpRequest) {
            var xmlDoc = new XMLHttpRequest();
			xmlDoc.onreadystatechange = function() { xmlCarregado(xmlDoc, funcaoRS); };	
            xmlDoc.open("GET", url, asyncrono);
            xmlDoc.send(null);
		}
	return xmlDoc;
}
function xmlCarregado(xmlDoc, funcaoRS) {
	if (funcaoRS == null) funcaoRS = String;
	//try {
		if (xmlDoc.readyState == 4) {
			xmlDoc = xmlDoc.responseXML;
			new funcaoRS;
		} 
	//} catch( e ) { alert("[xmlCarregando]: Erro Carregando Resposta XML do Servidor: \r\n" + e.description + "\r\nLinha: " + e.line); }
}
function transformarXML(xmlDoc, xslDoc, objDestino) {
	objetoDestino = document.getElementById(objDestino);
	if (window.ActiveXObject) {
		if (objDestino == null)
			return xmlDoc.transformNode(xslDoc);
		else {
			objetoDestino.innerHTML = xmlDoc.transformNode(xslDoc);
			return false;
		}
	} else
		if (window.XMLHttpRequest) {
			var xsltProcessor = new XSLTProcessor();
			var xslStylesheet = xslDoc.responseXML;
            xsltProcessor.importStylesheet(xslStylesheet);
            var xmlSource = xmlDoc.responseXML;
            var resultDocument = xsltProcessor.transformToFragment(xmlSource, document);
            if (objDestino == null)
				return resultDocument;
			else {
				objetoDestino.innerHTML = "";
				objetoDestino.appendChild(resultDocument);
				return false;
			}
		}
}
/***********************************
Início Utilitário para Obter dados do XML
***********************************/
function getObjetoXML(objetoXML, nome, registro) { 
	output = '';
	if (!window.ActiveXObject) {
		objetoXML = objetoXML.responseXML;
		try {
			output = objetoXML.getElementsByTagName(nome)[registro].childNodes[0].nodeValue;
		} catch (e) {
			if (e.name == 'TypeError') 
				output = '';
			else
				alert(e);
		}
	} else
		output = objetoXML.getElementsByTagName(nome).item(registro).text
	return output;
}
function getStringXML(objetoXML, nome, registro, campo) {	
	if (campo == null)
		document.getElementById(nome).value = getObjetoXML(objetoXML, nome, registro);
	else
		document.getElementById(campo).value = getObjetoXML(objetoXML, nome, registro);
}
function getDecimalXML(objetoXML, nome, registro, campo) {
	if (campo == null)
		document.getElementById(nome).value = getObjetoXML(objetoXML, nome, registro).replace(".", ",");
	else
		document.getElementById(campo).value = getObjetoXML(objetoXML, nome, registro).replace(".", ",");
}
/***********************************
Fim Utilitário para Obter dados do XML
***********************************/