/** xmlHttp.js
* SIGES-WEB!
* Programado por Alvaro Mora
* Propiedad Intelectual Asesoría AKTEK S.A.
* Enero 2007
* Todos los Derechos Reservados
* Objeto Manejador de Links vía AJAX
**/
function xmlHttp () {
// AJAX
var xmlhttpObj = null;
var strHTML_Data = "";
var strNULL = "";
var isDebugEnabled = false;
var strXML_NULL = new Object("");
// XML de Datos
var oXML = new Xmlt.getDomDocument();
oXML.async = false;
oXML.loadXML(strXML_NULL);
this.CargarLinkEnDiv = fnc_CargarLinkEnDiv;
this.Ejecutar = fnc_Ejecutar;
this.getHTML_Data = fnc_getHTML_Data;
this.responseText = fnc_responseText;
this.responseXML = fnc_responseXML;
this.getData = fnc_getData;
// this.setData = fnc_setData;
this.ShowData = fnc_ShowData;
this.LoadXML = fnc_LoadXML;
function fnc_responseXML()
{
return oXML;
}
function fnc_responseText()
{
if (xmlhttpObj == null) return "";
return xmlhttpObj.responseText;
}
function fnc_getHTML_Data()
{
return strHTML_Data;
}
function fnc_getData(strKey)
{
var elementPath = '//root/Data/'+ strKey;
var oNode = null;
if (oXML.evaluate) {
var nodes = oXML.evaluate(elementPath, oXML, null, XPathResult.ANY_TYPE, null);
var results = nodes.iterateNext();
oNode = results;
} else {
oNode = oXML.selectSingleNode(elementPath);
}
var strValor = (oNode != null)? oNode.text: '';
if (strValor == "" && oNode.textContent) strValor = oNode.textContent;
oNode = null;
return(strValor);
}
/** fnc_LoadXML
* Método utilizado para cargar una estructura XML a partir de un arreglo de arreglos
* Este XML usualmente será enviado al servidor para procesos en masa
* El arreglo que recibe, debe ser de la forma { { {CAMPO = VALOR}, {CAMPO = VALOR } },
* { {CAMPO = VALOR}, {CAMPO = VALOR } }
* }
* Ejemplo:
* var keys = new Array(new Array(new Array("CNT01COD","COL"),new Array("FAC23MON","1500")),
* new Array(new Array("CNT01COD","DOL"),new Array("FAC23MON","2500")));
* ArmarXML (keys) Produce:
* COL1500
* DOL2500
**/
function fnc_LoadXML (keys)
{
// Limpio el buffer XML
oXML.loadXML(strXML_NULL);
// Busco el nodo principal
var elementPath = '//root/Data';
var oNode = null;
if (oXML.evaluate) {
var nodes = oXML.evaluate(elementPath, oXML, null, XPathResult.ANY_TYPE, null);
var results = nodes.iterateNext();
oNode = results;
} else {
oNode = oXML.selectSingleNode(elementPath);
}
// Armo el XML
for (i = 0; i < keys.length ; i ++)
{
var oNewNode = oXML.createElement('Registro');
oNode.appendChild(oNewNode);
for (j=0;j Ejecutando, espere por favor...";
// Abro la conexion
xmlhttpObj.open("POST", strURL, false);
// xmlhttpObj.setRequestHeader ("Accept-Charset","ISO-8859-1");
xmlhttpObj.setRequestHeader("Content-Type", "text/xml; charset=ISO-8859-1");
xmlhttpObj.setRequestHeader ("Charset","ISO-8859-1");
xmlhttpObj.setRequestHeader('Expires','Sat, 1 Jan 2005 05:00:00 GMT');
xmlhttpObj.setRequestHeader('Last-Modified','Sat, 1 Jan 2005 05:00:00 GMT');
xmlhttpObj.setRequestHeader('Pragma','no-cache');
xmlhttpObj.setRequestHeader('Cache-Control', 'no-cache');
// Verifico si tengo que enviar XML
if (blnSendXML) {
// xmlhttpObj.setRequestHeader("Content-length", oXML.xml.length);
xmlhttpObj.send(oXML.xml);
} else {
// xmlhttpObj.setRequestHeader("Content-length", strNULL.length);
xmlhttpObj.send(strNULL);
}
// Espero la respuesta
if (xmlhttpObj.readyState == 4)
{
if (xmlhttpObj.status == 200){
// Cargo cualquier dato que venga en la variable
strHTML_Data = xmlhttpObj.responseText;
var sXML = "";
if (xmlhttpObj.responseXML)
{
// Si recibí un XML válido
sXML = xmlhttpObj.responseXML.xml;
if (sXML.length > 0) blnResult = true;
oXML.loadXML( xmlhttpObj.responseXML.xml )
}
} else {
alert(xmlhttpObj.status + ': URL no encontrado ('+strURL+')');
if (document.getElementById('debug').style.display=='inline')
{
document.getElementById("source").innerHTML = strURL + "
"+xmlhttpObj.responseText;
};
};
document.getElementById('div_mensajes').innerHTML = "";
xmlhttpObj == null;
};
return blnResult;
}
function fnc_CargarLinkEnDiv(strURL, strParams,blnSinc,strDivName, blnScript, blnEnviarXML, strScript, _CallBack)
{
if (Undefined(strParams)) strParams="";
if (Undefined(blnSinc)) blnSinc = true;
if (Undefined(blnEnviarXML)) blnEnviarXML = false;
if (Undefined(strScript)) strScript = "";
var xmlhttpObj = zXmlHttp.createRequest(); //Xmlt.getXmlHttpRequest();
//Verifico si estoy procesando algo. Si es así, aborto.
if (xmlhttpObj.readyState != 0) {
document.getElementById('div_mensajes').innerHTML = "";
document.getElementById('div_msg_tecnicos').innerHTML = "";
xmlhttpObj.abort();
}
// Siempre debe ser true, algo no pasa bien...
blnSinc = true;
document.getElementById('div_mensajes').innerHTML = "
Cargando, espere por favor...";
// Verifico si los parametros ya contienen un &
var strAmp = (strParams.substring(0,1) == "&" ? "" : "&");
// Abro la conexion para buscar los datos
xmlhttpObj.open("POST", "Security_Check?_URL=" + strURL + strAmp + strParams, blnSinc);
// xmlhttpObj.setRequestHeader ("Accept-Charset","ISO-8859-1");
xmlhttpObj.setRequestHeader ("Content-Type", "text/html;ISO-8859-1");
xmlhttpObj.setRequestHeader ("Charset","ISO-8859-1");
// xmlhttpObj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttpObj.setRequestHeader('Expires','Sat, 1 Jan 2005 05:00:00 GMT');
xmlhttpObj.setRequestHeader('Last-Modified','Sat, 1 Jan 2005 05:00:00 GMT');
xmlhttpObj.setRequestHeader('Pragma','no-cache');
xmlhttpObj.setRequestHeader('Cache-Control', 'no-cache');
if (blnSinc)
{
// Verifico si tengo que enviar XML
if (blnEnviarXML) {
// xmlhttpObj.setRequestHeader("Content-length", oXML.xml.length);
xmlhttpObj.send(oXML.xml);
} else {
// xmlhttpObj.setRequestHeader("Content-length", strNULL.length);
xmlhttpObj.send(strNULL);
}
xmlhttpObj.onreadystatechange=function() {
if (xmlhttpObj.readyState == 4)
{
if (xmlhttpObj.status == 200)
{
//if (isDebugEnabled) alert('CargarLinkEnDiv - Ya cargué');
// Limpio la memoria: Remuevo todos los objetos del DOM en memoria asociados al objeto
var doc = document.getElementById(strDivName);
while (doc.childNodes.length > 0)
doc.removeChild(doc.childNodes[0]);
// Intento limpiar la memoria, solo IE
if (window.CollectGarbage) window.CollectGarbage();
// Cargo los datos
document.getElementById(strDivName).innerHTML = xmlhttpObj.responseText;
document.getElementById('div_mensajes').innerHTML = " ";
// Cargo las funciones requeridas por la página cargada
// Debe exitir un archivo que se llame igual al URL en la carpeta js_specific
// Por el momento, todas estos archivos se cargan en el mismo segmento de memoria __jsRuntime__
if (strScript == "") strScript = strURL+".js";
if (isDebugEnabled) alert('CargarLinkEnDiv - Voy a cargar Script ' + strScript);
CrearScript(strScript,"__jsRuntime__");
}
else
{
if (xmlhttpObj.status == 500)
{
if (document.getElementById('debug').style.display=='inline')
{
document.getElementById('source').innerHTML = strURL +"?"+strParams+ "
" + xmlhttpObj.responseText;
alert('Error de Compilación');
} else {
document.getElementById('div_mensajes').innerHTML = "Ha ocurrido un error al accesar esta opción. " +"
" + xmlhttpObj.responseText;
}
} else {
alert(xmlhttpObj.status + ': URL no encontrado ('+strURL+')');
}
};
xmlhttpObj == null;
if (!Undefined(_CallBack)) _CallBack();
};
document.getElementById('div_mensajes').innerHTML = "";
};
} else {
document.getElementById('div_mensajes').innerHTML = "
Cargando, espere por favor...";
// Verifico si tengo que enviar XML
if (blnEnviarXML) {
xmlhttpObj.setRequestHeader("Content-length", oXML.xml.length);
xmlhttpObj.send(oXML.xml);
} else {
xmlhttpObj.setRequestHeader("Content-length", strNULL.length);
xmlhttpObj.send(strNULL);
}
if (xmlhttpObj.readyState == 4)
{
if (xmlhttpObj.status == 200){
document.getElementById(strDivName).innerHTML = xmlhttpObj.responseText;
document.getElementById('div_mensajes').innerHTML = " ";
// Cargo las funciones requeridas por la página cargada
// Debe exitir un archivo que se llame igual al URL en la carpeta js_specific
// Por el momento, todas estos archivos se cargan en el mismo segmento de memoria __jsRuntime__
if (strScript == "") strScript = strURL+".js";
if (isDebugEnabled) alert('CargarLinkEnDiv - Voy a cargar Script ' + strScript);
CrearScript(strScript,"__jsRuntime__");
} else {
alert(xmlhttpObj.status + ': URL no encontrado ('+strURL+')');
};
xmlhttpObj == null;
if (!Undefined(_CallBack)) _CallBack();
};
document.getElementById('div_mensajes').innerHTML = "";
};
// Limpio el buffer XML
oXML.loadXML(strXML_NULL);
if (isDebugEnabled) alert('CargarLinkEnDiv - Fin');
};
}