Changeset 305 for trunk/instant_messenger/js/client.js
- Timestamp:
- 06/06/08 13:54:09 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/instant_messenger/js/client.js
r287 r305 1 var conn_im = new IMConnector; 2 var disconnected = false; 3 var validate_data = false; 4 var buffer_im = ''; 5 var xtools_im = null; 6 var count_im = 0; 7 var activate_timeOut = ''; 1 (function() 2 { 3 function _config(pObj, pEvent, pHandler) 4 { 5 if ( typeof pObj == 'object' ) 6 { 7 if ( pEvent.substring(0, 2) == 'on' ) 8 pEvent = pEvent.substring(2, pEvent.length); 8 9 9 function clientConnectionIm() 10 { 11 if( count_im < 2 ) 10 if ( pObj.addEventListener ) 11 pObj.addEventListener(pEvent, pHandler, false); 12 else if ( pObj.attachEvent ) 13 pObj.attachEvent('on' + pEvent, pHandler); 14 } 15 } 16 17 if ( !(top.document.getElementById('instant_messenger_content')) ) 12 18 { 13 if( buffer_im.length > 0 ) 14 activate_timeOut = setTimeout('clientConnectionIm()', 5000); 15 16 count_im++; 19 var _im_content = top.document.createElement('div'); 20 _im_content.setAttribute('id', 'instant_messenger_content'); 21 _im_content = top.document.body.appendChild(_im_content); 17 22 } 18 else 23 24 var buffer = ''; 25 var _disconnected = false; 26 27 var _conn = new IMConnector(path_im); 28 var _xtools = new XTools(path_im); 29 var _window = new Windows(_xtools, _im_content); 30 var _ldap = new InstantMessengerLDAP(_conn, _xtools, _window); 31 var _jabber = new Jabber(_conn, _xtools, _window, _ldap); 32 33 // XSL preload 34 var _xsl_preload = ['chat.xsl','layer.xsl','contacts']; 35 var _xsl_preload_legth = _xsl_preload.length; 36 for ( var i = 0; i < _xsl_preload_legth; i++ ) 37 _xtools.load(_xsl_preload[i]); 38 39 var local; 40 if ( (local = top.document.getElementById('user_info')) ) 19 41 { 20 count_im = 0; 21 buffer_im = 0; 22 clientDisconnectIm(); 23 clearTimeout(activate_timeOut); 24 killConnIm(); 42 local.innerHTML = ' ' + local.innerHTML; 43 var _status = top.document.createElement('img'); 44 _status.setAttribute('id','im_status_src'); 45 _status.src = im_available.src; 46 47 local.insertBefore(_status, local.firstChild); 48 49 _config(_status, 'onclick', _contacts); 50 51 var _menu; 52 _menu = top.document.createElement('span'); 53 _menu.setAttribute('id','fast_menu_im'); 54 local.insertBefore(_menu, local.firstChild); 55 56 _menu = top.document.createElement('img'); 57 _menu.src = im_fast_menu.src; 58 local.insertBefore(_menu, local.firstChild); 59 60 //var local_old = local.innerHTML ; 61 //local.innerHTML = '<img src="' + im_fast_menu.src + '" onclick="javascript:templates.fast_menu();">'; 62 //local.innerHTML += '<img id="im_status_src" src="' + im_available.src + '" onclick="javascript:load_im_contacts();"/>'; 63 //local.innerHTML += local_old; 64 //local.innerHTML += '<div id="instant_messenger_content"></div><span id="fast_menu_im"/>'; 25 65 } 26 }27 66 28 function clientDisconnectIm() 29 { 30 if( xtools_im == null ) 31 xtools_im = new XTools; 67 function _stream(data) 68 { 69 data = data.replace(/^ | $/, ''); 32 70 33 disconnected = true; 34 var XmlDoc = "<disconnected>" + 35 "<path>" + path_im + "</path>" + 36 "</disconnected>"; 37 38 im_window.load('__contacts_im_','instant_messenger_content','<title>.::Expresso Messenger::.</title>','window.xsl','190',true,true,false); 39 im_window.elementC('__contacts_im_').innerHTML = xtools_im.parse(XmlDoc,'disconnected.xsl'); 40 func.byId('im_status_src').src = im_unavailable.src; 41 im.status = 'type=unavailable'; 42 im.statusFlag = 'unavailable'; 43 44 function handler_presence_disconnected() 45 { 46 } 47 conn_im.go('$this.Ujabber.setPresence', {'request' : handler_presence_disconnected }, im.status); 48 } 71 if ( !(data.length) ) 72 return false; 49 73 50 function killConnIm() 51 { 52 var i; 53 disconnected = true; 54 55 for ( i in conn_im.__HTTP__ ) 56 conn_im.__HTTP__[i].abort(); 57 } 58 59 function client() 60 { 61 if( jabber == null ) 62 var jabber = new Jabber; 63 64 if( xtools_im == null ) 65 xtools_im = new XTools; 66 67 function request(data) 68 { 69 if ( !disconnected ) 74 if ( data.indexOf('disconnected') != -1 || data.indexOf('</stream:stream>') != -1 ) 70 75 { 71 conn_im.go('$this.Ujabber.listen', {'stream':stream, 'request':request}, 'classConstructor=read'); 76 _disconnected = true; 77 //alert('disconnected'); 72 78 } 73 79 else 74 80 { 75 clientDisconnectIm(); 76 return false; 81 if ( data.lastIndexOf('>') != data.length - 1) 82 buffer += data + ' '; 83 else 84 { 85 if ( buffer.length ) 86 { 87 data = buffer + data; 88 buffer = ''; 89 } 90 91 // com xmlns ocorre problemas durante o parse entre 92 // xml e xsl e por esse motivo está sendo retirado 93 data = data.replace(/ xmlns='.*?'/g, ''); 94 data = '<handler>' + data + '</handler>'; 95 96 var _xml = _xtools.convert(data); 97 98 if ( _xml ) 99 { 100 var _node = _xml.documentElement.firstChild; 101 102 while ( _node ) 103 { 104 if ( _node.nodeType == 1 ) 105 _jabber.action(_node); 106 //else 107 // alert('name : ' + _node.nodeName + "\n\nhas children:" + _node.hasChildNodes() + "\nvalue\n\n" + _node.nodeValue); 108 109 _node = _node.nextSibling; 110 } 111 } 112 } 77 113 } 78 114 } 79 115 80 function stream(data)116 function _request() 81 117 { 82 function trim(pData) 83 { 84 return pData.replace(/^ +| +$/g, ''); 85 } 86 87 function retrim(pData) 88 { 89 return pData.replace(/(_##_)+\b/g, ''); 90 } 91 92 data = trim(data); 93 94 if ( data == 'disconnected' || data == '</stream:stream>' ) 95 { 96 clientDisconnectIm(); 97 return false; 98 } 99 else if ( data.lastIndexOf('>') == data.length - 1 && data.length > 0 ) 100 { 101 if ( buffer_im.length ) 102 { 103 data = buffer_im + data; 104 buffer_im = ""; 105 } 106 107 // com xmlns ocorre problemas durante o parse entre 108 // xml e xsl e por esse motivo está sendo retirado 109 data = '<handler>' + data.replace(/ xmlns='.*?'/g, '') + '</handler>'; 110 111 if ( window.ActiveXObject ) 112 { 113 var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 114 xmlDoc.async = "false"; 115 xmlDoc.loadXML(data); 116 } 117 else 118 { 119 var parser = new DOMParser(); 120 var xmlDoc = parser.parseFromString(data, "text/xml"); 121 } 122 123 var node = xmlDoc.documentElement.firstChild; 124 125 while ( node ) 126 { 127 try 128 { 129 jabber.doIt(node.nodeName, node); 130 node = node.nextSibling; 131 } 132 catch(e) 133 { 134 alert('erro : ' + e + "\n\n" + e.description); 135 node = node.nextSibling; 136 } 137 } 138 } 139 else 140 { 141 data = data.replace(/^ +| +$/g, ''); 142 buffer_im += data + " "; 143 } 118 if ( !_disconnected ) 119 return _conn.go( 120 '$this.Ujabber.listen', 121 {'stream':_stream, 'request':_wait}, 122 'classCostructor=read' 123 ); 144 124 } 145 125 146 function contacts(data)126 function _wait() 147 127 { 148 setTimeout( 'clientConnectionIm()', 3000);128 setTimeout(_request, 3000); 149 129 } 150 request(); 151 setTimeout("conn_im.go('$this.Ujabber.getContacts', {'request':"+contacts+"})", 3000); 130 131 function _reconnect() 132 { 133 _disconnected = false; 134 _request(); 135 } 136 137 function _disconnect() 138 { 139 _disconnected = true; 140 } 141 142 function _contacts() 143 { 144 var _win = _window.get('contact_list'); 145 if ( _win ) 146 if ( _win.wm.style.display != 'none' ) 147 _win.wm.style.display = 'none'; 148 else 149 _win.wm.style.display = 'block'; 150 else 151 if ( !_disconnected ) 152 _conn.go('$this.Ujabber.getContacts'); 153 } 154 155 function Client() 156 { 157 _request(); 158 setTimeout('InstantMessengerContacts()', 3000); 159 } 160 161 window.InstantMessengerClient = Client; 162 window.InstantMessengerReconnect = _reconnect; 163 window.InstantMessengerDisconnect = _disconnect; 164 window.InstantMessengerContacts = _contacts; 152 165 } 153 154 var _bkp_onbeforeunload = window.onbeforeunload; 155 156 window.onbeforeunload = function() 157 { 158 if ( typeof _bkp_onbeforeunload == 'function' ) 159 _bkp_onbeforeunload(); 160 161 killConnIm(); 162 }; 166 )();
Note: See TracChangeset
for help on using the changeset viewer.