
//faz uma chamada ajax simples e retorna o objeto xmlhttp
// pagina: url página que retorna os dados 
//parametros: parametros para a pagina (e.g. "par1=val1&par2=val2")
//funcao: funcao a ser chamada no retorno da chamada, essa deve receber o oXmlHttp como parametro
function AjaxAbrirPagina(pagina,parametros,funcao){
	var oXmlHttp = createXMLHTTP();		
		
	oXmlHttp.open("post", pagina, true);		
	oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");							
	
	oXmlHttp.onreadystatechange=function() {					
		if (oXmlHttp.readyState==4){
			if (oXmlHttp.status == 200) { 
				//alert(oXmlHttp.responseText);
				funcao(oXmlHttp);
			}
			else{
				throw("Erro em AjaxAbrirPagina")
			}
		}
	}
	oXmlHttp.send(parametros);
}


////FUNCOES AUXILIARES
function createXMLHTTP() {
	try{
		ajax = new ActiveXObject("Microsoft.XMLHTTP");
	}catch(e){
		try{
			ajax = new ActiveXObject("Msxml2.XMLHTTP");
			alert(ajax);
		}catch(ex){
			try{
				ajax = new XMLHttpRequest();
			}catch(exc){
				alert("Esse browser não tem recursos para uso do Ajax");
				ajax = null;
			}
		}
		return ajax;
	}

	var arrSignatures = ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
	for (var i=0; i < arrSignatures.length; i++) {
		try {
			var oRequest = new ActiveXObject(arrSignatures[i]);
			return oRequest;
		}catch (oError) {
		}
	}

	throw new Error("MSXML is not installed on your system.");
}


//caminho: ... .Exemplo: pai/filho/neto
function selecionaPrimeiroNoh(oXml,caminho){
	var ind = caminho.indexOf("/");
	if (ind<0){
		ind = caminho.length;
	}
	var raiz = caminho.substring(0,ind);
	var resto = caminho.substring(ind+1,caminho.length);
	var nohRaiz, auxNoh, i, j, noh;
	
	nohRaiz = oXml.getElementsByTagName(raiz);
	nohRaiz = nohRaiz[0];
	
	if (resto==""){
		noh = nohRaiz;
	}else {
		noh = selecionaPrimeiroNoh(nohRaiz,resto);
	}
	return noh;
}

//caminho: ... .Exemplo: pai/filho/neto
function selecionaTodosNohs(oXml,caminho){
	var ind = caminho.indexOf("/");
	if (ind<0){
		ind = caminho.length;
	}
	var raiz = caminho.substring(0,ind);
	var resto = caminho.substring(ind+1,caminho.length);
	var nohsRaiz, auxNohs, i, j, nohs;
	
	nohsRaiz = oXml.getElementsByTagName(raiz);
	
	if (resto==""){
		nohs = nohsRaiz;
	}else {
		nohs = new Array();
		var l = 0;
		for (i=0; i<nohsRaiz.length; i++){
			auxNohs = selecionaNohs(nohsRaiz[i],resto);
			for(j=0; j<auxNohs.length; j++){
				nohs[l++] = auxNohs[j];
			}
		}
		
	}
	return nohs;
}
