source: trunk/jabberit_messenger/jmessenger/js/connector.mini.js @ 7303

Revision 7303, 5.1 KB checked in by gustavo, 12 years ago (diff)

Ticket #3131 - Usar IM no modulo IM, is_ie é UNDEFINED ao tentar abrir o messenger

  • Property svn:executable set to *
Line 
1
2(function()
3{
4if (document.all){
5navigator.userAgent.toLowerCase().indexOf('msie 5') != -1 ? is_ie5 = true : is_ie5 = false;
6is_ie = true;is_moz1_6 = false;is_mozilla = false;is_webkit = false;is_ns4 = false;}
7else if (document.getElementById){
8navigator.userAgent.toLowerCase().match('mozilla.*rv[:]1\.6.*gecko') ? is_moz1_6 = true : is_moz1_6 = false;
9navigator.userAgent.toLowerCase().match('applewebkit') ? is_webkit = true : is_webkit = false;
10is_ie = false;is_ie5 = false;is_mozilla = true;is_ns4 = false;}
11else if (document.layers)
12{is_ie = false;is_ie5 = falseis_moz1_6 = false;is_mozilla = false;is_webkit = false;is_ns4 = true;}     
13var _THREADS=[];var _ie;function _config(pObj,pEvent,pHandler)
14{if(typeof pObj=='object')
15{if(pEvent.substring(0,2)=='on')
16pEvent=pEvent.substring(2,pEvent.length);if(pObj.addEventListener)
17pObj.addEventListener(pEvent,pHandler,false);else if(pObj.attachEvent)
18pObj.attachEvent('on'+pEvent,pHandler);}}
19function _xhr()
20{try
21{return new XMLHttpRequest();}
22catch(_e)
23{_ie=true;try
24{return new ActiveXObject('Msxml2.XMLHTTP');}
25catch(_e1)
26{try
27{return new ActiveXObject('Microsoft.XMLHTTP');}
28catch(_e2)
29{return false;}}}}
30function _HANDLER()
31{var _ID=arguments[0];if(_THREADS[_ID])
32{if(_ie&&_THREADS[_ID]._XHR.readyState!=4)
33return false;switch(_THREADS[_ID]._XHR.readyState)
34{case 3:if(_THREADS[_ID]._HANDLER.stream)
35{var _data=_THREADS[_ID]._XHR.responseText.substr(_THREADS[_ID]._index).replace(/^ +| +$/g,'');_THREADS[_ID]._rtlen=_THREADS[_ID]._XHR.responseText.length;if(_THREADS[_ID]._index<_THREADS[_ID]._rtlen&&_data.length)
36{try
37{_THREADS[_ID]._HANDLER.stream(_data);}
38catch(_e)
39{}}
40if(_THREADS[_ID])
41{_THREADS[_ID]._index=_THREADS[_ID]._rtlen;}}
42break;case 4:try
43{switch(_THREADS[_ID]._XHR.status)
44{case 200:var _data=(_THREADS[_ID]._MODE=='XML')?_THREADS[_ID]._XHR.responseXML:_THREADS[_ID]._XHR.responseText;if(_ie&&_THREADS[_ID]._HANDLER.stream)
45_THREADS[_ID]._HANDLER.stream(_data);var _request=(_THREADS[_ID]._HANDLER.request)?_THREADS[_ID]._HANDLER.request:false;delete _THREADS[_ID];if(_request)
46try
47{_request(_data);}
48catch(_e)
49{}
50break;case 404:delete _THREADS[_ID];alert('Page Not Found!');break;default:delete _THREADS[_ID];}}
51catch(e)
52{}
53break;default:}}}
54function _execute()
55{var _ID=arguments[0];var _ACTION='act='+_ID;var _TARGET=this._PATH;var _SEND=null;if(_TARGET!=''&&_TARGET.lastIndexOf('/')!=(_TARGET.length-1))
56_TARGET+='/';_TARGET+=(this._CONTROLLER)?this._CONTROLLER:'controller.php';if(_THREADS[_ID]._METHOD=='GET')
57_TARGET+='?'+_ACTION;_THREADS[_ID]._XHR.open(_THREADS[_ID]._METHOD,_TARGET,true);if(_THREADS[_ID]._METHOD=='POST')
58{_THREADS[_ID]._XHR.setRequestHeader('Content-Type','application/x-www-form-urlencoded');_THREADS[_ID]._XHR.setRequestHeader('Cache-Control','no-store, no-cache, must-revalidate');_THREADS[_ID]._XHR.setRequestHeader('Cache-Control','post-check=0, pre-check=0');_THREADS[_ID]._XHR.setRequestHeader('Pragma','no-cache');_SEND=_ACTION+'&'+arguments[1];}
59_THREADS[_ID]._XHR.onreadystatechange=function(){_HANDLER(_ID);};_THREADS[_ID]._XHR.send(_SEND);}
60function usage()
61{return""+"Description:\n"+"\t<obj>.go(string access, [mixed handler[, mixed post]])\n\n"+"Parameters:\n"+"\taccess : assinatura de acesso à camada de controle.\n"+"\thandler : uma função a ser executada no fim da requisição\n"+"\t\tou um objeto que poderá conter dois índices sendo\n"+"\t\tque ambos deverão ser uma função que será executada\n"+"\t\tconforme o status do objeto xhr, sendo que na posição\n"+"\t\t'stream' será a função a ser executada a cada iteração\n"+"\t\tdo objeto xhr e na posição 'request' será a função\n"+"\t\ta ser executada no fim da requisição.\n"+"\tpost : se especificado deverá ser uma query string ou um\n"+"\tXML bem formatado.\n\n";}
62function go()
63{var _argv=arguments;var _argc=_argv.length;var _ID=_argv[0];var _POST;if(_argc<1||_argc>3)
64return{'error':"#0\n\n"+usage()};if(typeof _ID!='string')
65return{'error':"#1\n\n"+usage()};_THREADS[_ID]={'_HANDLER':{},'_METHOD':(_argv[2])?'POST':'GET','_MODE':null,'_TYPE':null,'_XHR':null};if(_argv[2])
66_POST=_argv[2];if(_argv[1])
67switch(typeof _argv[1])
68{case'function':_THREADS[_ID]._HANDLER={'request':_argv[1]};break;case'object':for(var i in _argv[1])
69if(i!='stream'&&i!='request')
70{delete _THREADS[_ID];return{'error':"#3\n\n"+usage()};}
71else if(i=='stream')
72{_THREADS[_ID]._index=0;_THREADS[_ID]._rtlen=0;}
73_THREADS[_ID]._HANDLER=_argv[1];break;case'string':if(_argc==2)
74{_THREADS[_ID]._METHOD='POST';_POST=_argv[1];}
75break;default:}
76if(!(_THREADS[_ID]._XHR=_xhr()))
77return{'error':"#4 it cannot make a xhr object"};(_THREADS[_ID]._METHOD=='GET')?_execute.call(this,_ID):_execute.call(this,_ID,_POST);return{'success':"your thread is running and the response "+"will be manipulated by the handler"};}
78function abort()
79{for(var _ID in _THREADS)
80{try
81{if(_THREADS[_ID]&&_THREADS[_ID]._XHR&&_THREADS[_ID]._XHR.abort)
82_THREADS[_ID]._XHR.abort();delete _THREADS[_ID];}
83catch(e){}}}
84function Connector()
85{var _argv=arguments;this._PATH=(_argv.length>0)?_argv[0]:'';this._CONTROLLER=(_argv.length==2)?_argv[1]:false;}
86Connector.prototype.go=go;Connector.prototype.abort=abort;window.AjaxConnector=Connector;_config(window,'onbeforeunload',abort);})();
Note: See TracBrowser for help on using the repository browser.