/** * @author jchernandez */ var sendReq = getXmlHttpRequestObject(); var receiveReq = getXmlHttpRequestObject(); var mTimer; var vtEvntGrdd; var vsPathRemote; var vsRemoteFile; var vbEjctRmteEspc = false; window['RutaOriginalPortal'] = '/portalv2/webservices'; var ResidentRoutines = new Array(); //*** Rutina para ejecutar la consulta del archivo XML que tiene el nombre del componente y si se despliega o no function getRemoteControl() { vbEjctRmteEspc = false; if (receiveReq.readyState == 4 || receiveReq.readyState == 0) { receiveReq.open("GET", 'http://www.femexfut.org.mx/PortalV2/webservices/ws_RemoteControl.aspx?pnRdn=' + Math.random(), true); //*** Cuando conteste el archivo XML pasamos el control a la rutina que se encarga de verificar las instrucciones remotas receiveReq.onreadystatechange = function() { handleRemoteControl(receiveReq) } receiveReq.send(null); } } function getRemoteControl2(psPathRemote, psRemoteFile) { vbEjctRmteEspc = true; if(vsPathRemote==null) { vsPathRemote = psPathRemote; window['RutaOriginalPortal'] = psPathRemote; } if(vsRemoteFile==null) { vsRemoteFile = psRemoteFile; } if (receiveReq.readyState == 4 || receiveReq.readyState == 0) { receiveReq.open("GET", 'http://www.femexfut.org.mx' + vsPathRemote + '/ws_RemoteControl.aspx?psRemoteControl=' + vsRemoteFile + '&pnRdn=' + Math.random(), true); //*** Cuando conteste el archivo XML pasamos el control a la rutina que se encarga de verificar las instrucciones remotas receiveReq.onreadystatechange = function() { handleRemoteControl(receiveReq) } receiveReq.send(null); } } //*** Rutina que interpreta el contenido del XML y enciendo o apaga el(los) componente(s) especificado(s) function handleRemoteControl(poRespuestaXML) { var funcionRemote = ""; if(vbEjctRmteEspc) { funcionRemote = "getRemoteControl2"; } else { funcionRemote = "getRemoteControl"; } if (poRespuestaXML.readyState == 4) { switch(poRespuestaXML.status) { case 200: //*** Extraemos un arreglo de los componentes especificados en el XML if(poRespuestaXML.responseXML!=null){ var vaoElementos = poRespuestaXML.responseXML.getElementsByTagName('Elemento'); for(var vnTmp=0; vnTmp 0) { vaParametrosInternos = vsParametros.split('|'); vsInstancia = vaParametrosInternos[0]; if(xVisibility(vsNombreComponente + '_' + vsInstancia + '_' + vsDestinoGadget) != 'visible' && DatoXML(vaoElementos.item(vnTmp), 'Display') == 'On') { //alert(vsNombreComponente + '_' + vsDestinoGadget + '_' + vsInstancia); //*** if(xVisibility(vsNombreComponente + '_' + DatoXML(vaoElementos.item(vnTmp), 'Padre')) != 'visible' && DatoXML(vaoElementos.item(vnTmp), 'Display') == 'On') { //*** Si la cadena de parametros tiene un Pipe, sabemos que se especifico un instancia y creamos el objeto asi //*** Convertimos el parametro 0 en el nombre compuesto que debe ejecutar la instancia vaParametrosInternos = vaParametrosInternos.slice(1); //*** Finalmente enviamos los parametros de tipo arreglo como un string f_CreaObjeto(vsNombreComponente, vsDestinoGadget, vsInstancia, vaParametrosInternos.join('|')); } if(xVisibility(vsNombreComponente + '_' + vsInstancia + '_' + vsDestinoGadget) == 'visible' && DatoXML(vaoElementos.item(vnTmp), 'Display') == 'Off') { //*** Si la cadena de parametros tiene un Pipe, sabemos que se especifico un instancia y creamos el objeto asi //*** Convertimos el parametro 0 en el nombre compuesto que debe ejecutar la instancia f_MataObjeto(vsNombreComponente, vsDestinoGadget, vsInstancia); } } else { if(xVisibility(vsNombreComponente + '_' + DatoXML(vaoElementos.item(vnTmp), 'Padre')) != 'visible' && DatoXML(vaoElementos.item(vnTmp), 'Display') == 'On') { //*** Se generan los componentes sin instancia f_MakeComponent(vsNombreComponente, DatoXML(vaoElementos.item(vnTmp), 'Padre'), vsParametros); } if(xVisibility(DatoXML(vaoElementos.item(vnTmp), 'Nombre') + '_' + DatoXML(vaoElementos.item(vnTmp), 'Padre')) == 'visible' && DatoXML(vaoElementos.item(vnTmp), 'Display') == 'Off') { f_KillComponent(DatoXML(vaoElementos.item(vnTmp), 'Nombre'), DatoXML(vaoElementos.item(vnTmp), 'Padre')); } } } } //*** Si existe el arreglo para verificar rutinas residentes lo recorremos para hacer las llamadas correspondientes if(f_VariableExist('ResidentRoutines')) { for(var vsNameRsdnRtns in window['ResidentRoutines']) { CallTo(window['ResidentRoutines'][vsNameRsdnRtns]); } } //*** Una vez que terminamos de procesar todos los componentes entonces hacemos que el timer se ejecute mTimer = setTimeout(funcionRemote + '();', 10000); break; } default: if(poRespuestaXML.status > 400) { mTimer = setTimeout(funcionRemote + '();', 5000); } } } } //*** Rutina para generar el div dinamico function f_MakeComponent(psNombreComponente, psDestino, psParametros, psInstancia) { var vsParametros = ""; var vsNombreComponente = psNombreComponente; var voComponent; //*** El parametro instancia es opcional if (typeof psInstancia != "undefined") { if((xGetElementById(psDestino) != null) && (xGetElementById(psInstancia) == null)) { voComponent = f_CreaObjetoHTML(psInstancia, 'div', psDestino); f_NewGVar("ResidentRoutines']['" + psInstancia, "'f_" + psInstancia + "'"); var vsNmbrPrmtr = psInstancia + '_GADGET_Parametros'; vsNmbrPrmtr = vsNmbrPrmtr.toUpperCase(); var voComponentParams = f_CreaObjetoHTML(vsNmbrPrmtr, 'div', psInstancia); xDisplay(voComponentParams, 'none'); //*** Evaluamos si los parametros son un arreglo lo convertimos a string unido por PIPES de los contrario solo se pasa al siguiente nivel if (typeof psParametros == 'object' && typeof psParametros.length == 'number') { vsParametros = psParametros.join("|"); } else { vsParametros = psParametros; } //*** Incrustamos los parametros en el DIV correspondiente voComponentParams.innerHTML = vsParametros; //*** Desplegamos el DIV del gadget xShow(voComponent); procesaXML('http://www.femexfut.org.mx' + window['RutaOriginalPortal'] + '/ws_universal.aspx', f_MakeDIVFromXML, '_Query=Gadgets/Gdgt_' + vsNombreComponente + '.txt' + '&_Objeto=' + psNombreComponente + '_Gadget|' + psInstancia, psNombreComponente + '_Gadget', psInstancia); } } else { if((xGetElementById(psDestino) != null) && (xGetElementById(psNombreComponente + '_' + psDestino) == null)) { voComponent = f_CreaObjetoHTML(psNombreComponente + '_' + psDestino, 'div', psDestino); f_NewGVar("ResidentRoutines']['" + psNombreComponente, "'f_" + psNombreComponente + "'"); var vsNmbrPrmtr = psNombreComponente + '_GADGET_Parametros'; vsNmbrPrmtr = vsNmbrPrmtr.toUpperCase(); var voComponentParams = f_CreaObjetoHTML(vsNmbrPrmtr, 'div', psNombreComponente + '_' + psDestino); xDisplay(voComponentParams, 'none'); //*** Evaluamos si los parametros son un arreglo lo convertimos a string unido por PIPES de los contrario solo se pasa al siguiente nivel if (typeof psParametros == 'object' && typeof psParametros.length == 'number') { vsParametros = psParametros.join("|"); } else { vsParametros = psParametros; } //*** Incrustamos los parametros en el DIV correspondiente voComponentParams.innerHTML = vsParametros; //*** Desplegamos el DIV del gadget xShow(voComponent); procesaXML('http://www.femexfut.org.mx' + window['RutaOriginalPortal'] + '/ws_universal.aspx', f_MakeDIVFromXML, '_Query=Gadgets/Gdgt_' + vsNombreComponente + '.txt' + '&_Objeto=' + psNombreComponente + '_Gadget', psNombreComponente + '_Gadget', psNombreComponente + '_' + psDestino); } } } function f_MakeDIVFromXML(poRespuestaXML, poObjetoDiv, psDestino) { var vaoElementosGrupo = poRespuestaXML.responseXML.getElementsByTagName('Elementos'); var vaoElementos = poRespuestaXML.responseXML.getElementsByTagName('Elemento'); for(var vnTmp=0; vnTmp0){ var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); var EntroRutina = false; script.type = 'text/javascript'; script.setAttribute('id', jsName); //*** En IE aplica de esta manera la ejecución de una funcion cargada dinamicamente if(psNombreGadget.indexOf("|")>0) { var vaParametros = psNombreGadget.split("|"); psNombreGadget = vaParametros[0]; var args = [xGetElementById(vaParametros[1] + '_GADGET_PARAMETROS').innerHTML]; } else { var args = [xGetElementById(psNombreGadget + '_PARAMETROS').innerHTML]; } script.onreadystatechange = function() { if(script.readyState == 'loaded' || script.readyState == 'complete') { if(!EntroRutina) { EntroRutina = true; try { CallTo('f_' + psNombreGadget + '_OnStart', args); } catch(err) { } } } } //*** Esto es en el modo de Firefox, etc. script.onload = function() { if(!EntroRutina) { EntroRutina = true; try { CallTo('f_' + psNombreGadget + '_OnStart', args); } catch(err) { } } } //script.src= 'http://www.femexfut.org.mx/webservices/ws_includefile.aspx?psPath=/TXT/Gadgets/js/' + jsName; script.setAttribute('src','http://www.femexfut.org.mx/TXT/Gadgets/js/' + jsName + '?pnRdn=' + Math.random()); head.appendChild(script); } } function f_LoadJS1(jsName, psNombreGadget) { if(jsName.length>0){ var MyJS = document.createElement('script'); MyJS.setAttribute('type','text/javascript'); MyJS.setAttribute('id', jsName); MyJS.setAttribute('src','http://www.femexfut.org.mx/TXT/Gadgets/js/' + jsName); MyJS.onload = function() { try { setTimeout(eval('f_' + psNombreGadget + '_OnStart').apply(), 1000); } catch(err) { } } document.getElementsByTagName('head')[0].appendChild(MyJS); } } function f_UnloadJS(jsName) { if(document.getElementById(jsName)!=null) { var s = document.getElementById(jsName); document.getElementsByTagName('head')[0].removeChild(s); } } //*** Rutina para desaparecer el div dinamico function f_KillComponent(psNombreComponente, psDestino) { if((xGetElementById(psDestino)!=null) && (xGetElementById(psNombreComponente + '_' + psDestino)!=null)) { try { //*** Cuando destruimos el componente quitamos la rutina residente en el arreglo general f_NewGVar("ResidentRoutines']['" + psNombreComponente, "'undefined'"); f_BorraObjetoHTML(psNombreComponente + '_' + psDestino, psDestino); f_UnloadJS('Gdgt_' + psNombreComponente + '.js') } catch(err) { } } } function f_MataObjeto(psNombreComponente, psDestino, psInstancia) { if((xGetElementById(psDestino)!=null) && (xGetElementById(psNombreComponente + '_' + psInstancia + '_' + psDestino)!=null)) { try { //*** Cuando destruimos el componente quitamos la rutina residente en el arreglo general f_NewGVar("ResidentRoutines']['" + psNombreComponente, "'undefined'"); f_BorraObjetoHTML(psNombreComponente + '_' + psInstancia + '_' + psDestino, psDestino); f_UnloadJS('Gdgt_' + psNombreComponente + '.js') } catch(err) { } } } function getXmlHttpRequestObject() { if (window.XMLHttpRequest) { return new XMLHttpRequest(); } else if(window.ActiveXObject) { return new ActiveXObject("Microsoft.XMLHTTP"); } else { //*** document.getElementById("MXM").innerHTML = 'Status: Cound not create XmlHttpRequest Object.' + 'Consider upgrading your browser.'; } } function f_Nada() { return true; } function CallTo(psNameFunction, paValues) { var vaValues; if (typeof paValues == 'object' && typeof paValues.length == 'number') { vaValues = paValues; } else { vaValues = Array(); vaValues[0] = paValues; } try { eval(psNameFunction).apply(window, vaValues); } catch(err) { //*** document.title = "Ocurrio un error en la función: CallTo(" + psNameFunction + ")"; } } function f_XML2When(poRespuestaXML, psObjetoDestinoUser) { var psObjetoDestino = psObjetoDestinoUser; //*** Si tiene un pipe entonces lo cortamos para que la funcion ignore lo que sigue de este if(psObjetoDestino.indexOf("|")>0) { var vaFuncionTmp = psObjetoDestino.split("|"); psObjetoDestino = vaFuncionTmp[0]; } var vaNada = []; vaNada[0] = psObjetoDestinoUser; //*** El webservice esta respondiendo if(poRespuestaXML.readyState == 4) { //*** El webservice concluyo if(poRespuestaXML.status == 200) { //*** Cuantos renglones hay en el web services var vaoElementos = poRespuestaXML.responseXML.getElementsByTagName('Elemento'); var vnElementos=0; //*** Primero generamos el evento WhenStart con el nombre de las columnas CallTo(psObjetoDestino + "_WhenStartQuery", vaNada); for(var vnElementos=0; vnElementos