var XMLTools = { "__DEBUG__" : false, "__DEFAULT_URI__" : im_path + 'controller.php?action=', "__HTTP__" : null, "__MODE__" : 'X', "__RETURN_MODE_DEFAULT__" : 'JSON', "__RETURN_MODE__" : false, "__THREADS__" : [], "http" : function() { try { this.__HTTP__ = new XMLHttpRequest(); this.__HTTP__.overrideMimeType('text/xml'); } catch (e) { try { this.__HTTP__ = new ActiveXObject('Msxml2.XMLHTTP'); } catch (e1) { try { this.__HTTP__ = new ActiveXObject('Microsoft.XMLHTTP'); } catch (e2) { this.__HTTP__ = null; } } } }, "load" : function(pFile) { var data = null; if ( document.implementation.createDocument ) data = document.implementation.createDocument("", "", null); else data = new ActiveXObject("Msxml2.FreeThreadedDOMDocument"); data.async = false; data.load(pFile); return data; }, "request" : function(pTarget, pMethod, pHandler, pData) { if ( typeof pHandler != 'function' || this.__THREADS__[pTarget] ) return false; var __this = this; var __pTarget = pTarget this.http(); var __HTTP__ = this.__HTTP__; this.__THREADS__[pTarget] = pHandler; var __handler = function () { try { if ( __HTTP__.readyState == 4 ) { switch ( __HTTP__.status ) { case 200: var data = ( __this.__MODE__ == 'X' ) ? __HTTP__.responseXML : __HTTP__.responseText; var handler = __this.__THREADS__[__pTarget]; delete __this.__THREADS__[__pTarget]; handler(data, __pTarget); break; /* [case : status 200] */ case 404: alert('Page Not Found!'); break; /* [case : status 404] */ default: } } } catch(e) { if ( __this.__DEBUG__ ) alert("request : #2\n\n" + e) } } try { var target = this.__DEFAULT_URI__ + pTarget; if ( this.__RETURN_MODE__ ) { target += '&returnMode=' + this.__RETURN_MODE__; this.__RETURN_MODE__ = false; } else target += '&returnMode=' + this.__RETURN_MODE_DEFAULT__; if ( pMethod == 'POST' ) { __HTTP__.open("POST", target, true); __HTTP__.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); __HTTP__.setRequestHeader('Cache-Control', 'no-store, no-cache, must-revalidate'); __HTTP__.setRequestHeader('Cache-Control', 'post-check=0, pre-check=0'); __HTTP__.setRequestHeader('Pragma', 'no-cache'); __HTTP__.onreadystatechange = __handler; pData = ( pData ) ? pData : null ; } else { __HTTP__.open("GET", target, true); __HTTP__.onreadystatechange = __handler; pData = null; } __HTTP__.send(pData); } catch(e) { if ( this.__DEBUG__ ) alert("request : #1\n\n" + e) } return true; }, "transform" : function(pXML, pXSL) { try { var fragment = null; if ( window.XSLTProcessor ) { var xslProc = new XSLTProcessor(); xslProc.importStylesheet(pXSL); fragment = xslProc.transformToFragment(pXML, document); // para retornar valor igual ao ie. var aux = document.createElement("div"); aux.appendChild(fragment); fragment = aux.innerHTML; } else { var xslTemplate = new ActiveXObject("MSXML2.XSLTemplate"); xslTemplate.stylesheet = pXSL; var myXslProc = xslTemplate.createProcessor(); myXslProc.input = pXML; myXslProc.transform(); fragment = myXslProc.output; } return fragment; } catch(e) { alert("transform\n\n" + e + "\n\n" + e.description); } }, "create" : function() { try { var a = false; if ( document.implementation.createDocument ) a = document.implementation.createDocument("", "", null); else if ( ActiveXObject ) a = new ActiveXObject("Msxml2.DOMDocument"); with ( a ) appendChild(createProcessingInstruction("xml", "version='1.0'")); return a; } catch(e) { alert("create\n\n" + e + "\n\n" + e.description); } } }