Ignore:
Timestamp:
06/06/08 13:54:09 (16 years ago)
Author:
niltonneto
Message:

Correçoes

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); 
    89 
    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')) ) 
    1218        { 
    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); 
    1722        } 
    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')) ) 
    1941        { 
    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"/>'; 
    2565        } 
    26 } 
    2766 
    28 function clientDisconnectIm() 
    29 { 
    30         if( xtools_im == null ) 
    31                  xtools_im = new XTools; 
     67        function _stream(data) 
     68        { 
     69                data = data.replace(/^ | $/, ''); 
    3270 
    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; 
    4973 
    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 ) 
    7075                { 
    71                         conn_im.go('$this.Ujabber.listen', {'stream':stream, 'request':request}, 'classConstructor=read'); 
     76                        _disconnected = true; 
     77                        //alert('disconnected'); 
    7278                } 
    7379                else 
    7480                { 
    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                        } 
    77113                } 
    78114        } 
    79115 
    80         function stream(data) 
     116        function _request() 
    81117        { 
    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                        ); 
    144124        } 
    145125 
    146         function contacts(data) 
     126        function _wait() 
    147127        { 
    148                 setTimeout('clientConnectionIm()', 3000); 
     128                setTimeout(_request, 3000); 
    149129        } 
    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; 
    152165} 
    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.