//function SaveXML(SQL, iILHA){
//	var http = new XMLHttpRequest();
//	var cURL = "COMUM/ADO_XML.asp?TIPO=XMLSAVE&SQL=" + SQL;
//	http.open("POST",cURL, false);
//	http.send(iILHA.xml);
//	return(new XMLSerializer().serializeToString(http.responseXML);
//};

//function ExecXML(cSQL, TemRetorno){
//	var iSQL = new ActiveXObject("Microsoft.XMLDOM");
//	var ROOT_ = iSQL.createNode("element", "root", "");
//	iSQL.appendChild( ROOT_ );
//	var ROOT_ = iSQL.firstChild;
//	var No = iSQL.createNode("element", "SQL", "");
//	var Atributo = iSQL.createAttribute("SQL");
//	Atributo.text = cSQL;
//	No.setAttributeNode(Atributo);
//	iSQL.documentElement.appendChild(No);
//
//	var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
//	xmlhttp.Open("POST","COMUM/ADO_XML.asp?TIPO=XMLEXEC",false);
//	xmlhttp.send(iSQL.xml);
//
//	if (TemRetorno){
//		return (xmlhttp);
//	};
//};

function LoadXSL(cURL){
	var xsl = Sarissa.getDomDocument();
	xsl.async = false;
	xsl.load(cURL);
	return (xsl);
};

function LoadXML(cSQL, TemRetorno){
	var xml = Sarissa.getDomDocument();
	var cURL = "COMUM/ADO_XML.asp?SQL=" + cSQL + "&TIPO=CONSULTA";
	xml.async = false;

	xml.load(cURL);
	if (TemRetorno){
		return (xml);
	};
};

function LoadXMLHTTP(cSQL){
	var http = new ActiveXObject("Microsoft.XMLHTTP");
	var cURL = "COMUM/ADO_XML.asp?SQL=" + cSQL + "&TIPO=HTTP";
	http.open("POST",cURL, false);
	http.send();
	return (http);
};

function LoadXMLAUTO(cSQL){
	var xml = new ActiveXObject("Microsoft.XMLDOM");
	var cURL = "COMUM/ADO_XML.asp?SQL=" + cSQL + "&TIPO=AUTO";
	xml.async = false;

	xml.load(cURL);
	return (xml);
};

function LoadXML_Ilha(iILHA, sPathXSL){
	var xml = new ActiveXObject("Microsoft.XMLDOM");
	xml.async = false;

	xml.loadXML(iILHA.xml);
	var xsl = LoadXSL(sPathXSL);
	var DADOS = xml.transformNode(xsl);
	return(DADOS);
};


/**
 * Retorna o próprio xml de entrada ordenado, de acordo com os parametros.
 *
 * @version		1.0
 * @author		Humberto Sales da Silva
 *
 * @param objXML		Objeto XML (DOM)
 * @param select		String, Expressão que a função irá 
 *						se basear para ordenar, podendo ser nome de atributo, nó,
 *						concatenacao de atributos, utilizando funções do XSL.
 *						Se for atributo, o parametro deve iniciar
 *						com '@'. ex: @NomeEntidade
 * @param isDescending	Boleano, se false, os dados seráo ordenados ascendentemente,
 *						se verdadeiro, serão em ordem inversa. Opcional. Default false.
 * @param strType		Tipo de dado do parametro Select. 
 *						Pode ser "date", "datemy", "moeda", "number" ou "text" Opcional. Default é "text".
 *						Se for date, o valor o qual o XSL vai ser basear (parametro select),
 *						deve ser uma data no formato DD/MM/YYYY.
 * @param isLowerFirst	Boleano, se verdadeiro irá ordenar primeiro os valores 
 *						que iniciam minusculo e depois os maiusculos, caso falso, 
 *						faz o inverso. Opcional. Default false.
 *
 * @return				Retorna a string XML ordenada.
 *
 *						Ex: MinhaIlhaXML.loadXML(sortXML(MinhaIlhaXML,"@NomeOrgao",true));
 */	

function SortXML(objXML, select, isDescending, strType, isLowerFirst){
	try{	
		var ordem = (isDescending || false) ? "descending" : "ascending";
		var tipo = (strType=="number"||strType=="date"||strType=="datemy"||strType=="moeda")? strType : null ||"text" ;
		var caseOrder = (isLowerFirst || false) ? "lower-first" : "upper-first";
				
		if (tipo == "date"){
			tipo = "text";
			select = "concat(substring("+select+", 7,4),substring("+select+", 4,2),substring("+select+", 1,2))";
		};

		if (tipo == "datemy"){
			tipo = "number";
			select = "concat( substring-after(" + select + ", \"/\"),substring-before(" + select + ", \"/\"))";
		};

		if (tipo == "moeda"){
			tipo = "number";
			select = "translate(translate("+ select +",\".\",\"\"),\",\",\".\")"
		};

		var xslDoc = new ActiveXObject("Microsoft.XMLDOM");

		var strXSL = "<?xml version='1.0'?>"
		strXSL += "<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>"
		strXSL += "<xsl:decimal-format name='brasileiro' decimal-separator=',' grouping-separator='.' />"
		strXSL += "<xsl:template match='*|text()|@*'>"
		strXSL += "<xsl:copy>"
		strXSL += "<xsl:apply-templates select='*|text()|@*'>"
		var conector = '';
		var vtSelect = select.split(';');
		for(i=0; i< vtSelect.length;i++){
			strXSL += "<xsl:sort select='" + vtSelect[i] + "' order='" + ordem + "' data-type='" + tipo + "' case-order='" + caseOrder + "'/>"
		};
		strXSL += "</xsl:apply-templates>"
		strXSL += "</xsl:copy>"
		strXSL += "</xsl:template>"
		strXSL += "</xsl:stylesheet>"

		xslDoc.loadXML(strXSL)

		return objXML.transformNode(xslDoc.documentElement);	
	};
	catch(e){
		alert(e.message);
	};
};

function MontaComboXML(iIlhaXML, oObjSelect, sCampoTexto, sCampoValor){
	var ROOT_ = iIlhaXML.firstChild;
	oObjSelect.innerHTML = '';
	if (ROOT_.hasChildNodes()){
		var ListaNo = ROOT_.selectNodes("*")
		var QtdNo = ListaNo.length;
		var ContaNo;
		for (ContaNo=0; ContaNo <QtdNo; ContaNo++){
			var OPCAO = document.createElement("OPTION");
			OPCAO.text = ListaNo.item(ContaNo).getAttribute(sCampoTexto);
			OPCAO.value = ListaNo.item(ContaNo).getAttribute(sCampoValor);
			oObjSelect.add(OPCAO);
		};
	}else{
		var OPCAO = document.createElement("OPTION");
		OPCAO.text = 'NADA ENCONTRADO';
		OPCAO.value = '';
		oObjSelect.add(OPCAO);
	};
};

function MesclaXML_XSL(cSQL, ArqXSL){
	var xml = LoadXML(cSQL, true);
	var xsl = LoadXSL(ArqXSL);
	return (xml.transformNode(xsl));
};

function CarregaComboXML(cSQL, oCOMBO, bOpcional){
	var xml = LoadXML(cSQL, true);
	var xsl = LoadXSL('COMUM/MontaSelectXML.asp');
	var DADOS = xml.transformNode(xsl);

	var xOPCIONAL = "";
	if(DADOS=='' || DADOS == null)xOPCIONAL = "<OPTION>NENHUM DADO ENCONTRADO</OPTION>";
	if(bOpcional)xOPCIONAL = "<OPTION>SELECIONE UMA OPÇÃO</OPTION>";

	DADOS = xOPCIONAL + DADOS;
	var strSelect = oCOMBO.outerHTML;
	oCOMBO.outerHTML = strSelect.substring(0, strSelect.indexOf(">", 6) + 1) + DADOS + '</SELECT>';
};

function CarregaComboXML_EX(cSQL, oCOMBO, bOpcional, cCOMPLEMENTO){
	var xml = LoadXML(cSQL, true);
	var xsl = LoadXSL('COMUM/MontaSelectXML.asp' + cCOMPLEMENTO);
	var DADOS = xml.transformNode(xsl);

	var xOPCIONAL = "";
	if(DADOS=='' || DADOS == null)xOPCIONAL = "<OPTION>NENHUM DADO ENCONTRADO</OPTION>";
	if(bOpcional)xOPCIONAL = "<OPTION>SELECIONE UMA OPÇÃO</OPTION>";

	DADOS = xOPCIONAL + DADOS;
	var strSelect = oCOMBO.outerHTML;
	oCOMBO.outerHTML = strSelect.substring(0, strSelect.indexOf(">", 6) + 1) + DADOS + '</SELECT>';
};

