Ignore:
Timestamp:
10/27/09 14:17:10 (15 years ago)
Author:
alexandrecorreia
Message:

Ticket #370 - Melhoria do layout das janelas, para criação de preferencia(on/offline).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/jabberit_messenger/js/dragdrop.js

    r382 r1530  
    11(function() 
    22{ 
    3         var _element = null; 
    4  
    5         function _config(pObj, pEvent, pHandler) 
     3        var _element    = null; 
     4        var _elementA   = null; 
     5        var _elementB   = null; 
     6        var _parent             = null; 
     7 
     8        function _configEvent(pObj, pEvent, pHandler) 
    69        { 
    710                if ( typeof pObj == 'object' ) 
     
    912                        if ( pEvent.substring(0, 2) == 'on' ) 
    1013                                pEvent = pEvent.substring(2, pEvent.length); 
    11  
     14         
    1215                        if ( arguments.length == 3 ) 
    1316                        { 
     
    1922                        else if ( arguments.length == 4 ) 
    2023                        { 
    21                                 if ( pObj.removeEventListener ) 
     24                                if ( pObj.removeEventListener && pObj.removeEventListener != 'undefined') 
    2225                                        pObj.removeEventListener(pEvent, pHandler, false); 
    2326                                else if ( pObj.detachEvent ) 
    2427                                        pObj.detachEvent('on' + pEvent, pHandler); 
    2528                        } 
     29                } 
     30        } 
     31 
     32        function _drag(e) 
     33        { 
     34                if (typeof e.preventDefault != 'undefined') 
     35                        e.preventDefault(); 
     36                else 
     37                        e.onselectstart = new Function("return false;"); 
     38 
     39                _element = ( e.target ) ? e.target : e.srcElement; 
     40 
     41                if ( _element ) 
     42                { 
     43                        _configEvent(_element, 'onmousemove', _mouseMove); 
     44                        _configEvent(top.document, 'onmousemove', _mouseMove); 
     45 
     46                        _configEvent(_element, 'onmouseup', _mouseUp); 
     47                        _configEvent(top.document, 'onmouseup', _mouseUp); 
     48                } 
     49        } 
     50 
     51        function _elementShadow( pId ) 
     52        { 
     53                if( _elementA ) 
     54                { 
     55                        var _elShadow                   = document.createElement("div"); 
     56                        _elShadow.id                    = _elementA.id + "__Shadow"; 
     57                        _elShadow.setAttribute("onselectstart" , "return false"); 
     58                        _elShadow.style.width   = _elementA.style.width; 
     59                        _elShadow.style.height  = _elementA.style.height; 
     60                        _elShadow.style.top             = _elementA.style.top; 
     61                        _elShadow.style.left    = _elementA.style.left; 
     62                        _elShadow.style.zIndex  = _elementA.style.zIndex; 
     63                        _elShadow.className             = "x-shadow_Div"; 
     64                         
     65                        return _elShadow; 
     66                } 
     67        } 
     68 
     69        function _load() 
     70        { 
     71                if( arguments.length > 0 ) 
     72                { 
     73                        var pId = arguments[0]; 
     74                         
     75                        _configEvent(document.getElementById( pId + "__draggable"), 'onmousedown', _mouseDownShadow); 
    2676                } 
    2777        } 
     
    71121                CoordX = ev.clientX + document.body.scrollLeft - document.body.clientLeft; 
    72122                CoordY = ev.clientY + document.body.scrollTop  - document.body.clientTop; 
     123                 
    73124                return { 
    74125                        'x' : CoordX, 
     
    97148                if ( _element ) 
    98149                { 
    99                         _config(_element, 'onmousemove', _mouseMove, 'remove'); 
    100                         _config(top.document, 'onmousemove', _mouseMove, 'remove'); 
    101  
    102                         _config(_element, 'onmouseup', _mouseUp, 'remove'); 
    103                         _config(top.document, 'onmouseup', _mouseUp, 'remove'); 
     150                        _mouseUpShadow(); 
     151                         
     152                        _configEvent(_element, 'onmousemove', _mouseMove, 'remove'); 
     153                        _configEvent(top.document, 'onmousemove', _mouseMove, 'remove'); 
     154 
     155                        _configEvent(_element, 'onmouseup', _mouseUp, 'remove'); 
     156                        _configEvent(top.document, 'onmouseup', _mouseUp, 'remove'); 
    104157 
    105158                        _element.mouseOffset = null; 
     
    108161        } 
    109162 
    110         function _toDrag(el) 
    111         { 
    112                 if ( el.getAttribute('dragdrop_parent') == null ) 
    113                 { 
    114                         if ( el.getAttribute('dragdrop_child') != null ) 
     163        function _mouseDownShadow(e) 
     164        { 
     165                try 
     166                { 
     167                        if( arguments.length > 0 ) 
    115168                        { 
    116                                 var children = 0; 
    117                                 while ( (++children < 5) && (el.getAttribute('dragdrop_parent') == null) ) 
    118                                         el = el.parentNode; 
     169                                var _el = ( e.target ) ? e.target : e.srcElement; 
     170                                var _id = (_el.id.substring(0, _el.id.indexOf("__draggable")));  
     171                                 
     172                                _elementA = document.getElementById( _id + "__parent"); 
     173                                _elementB = _elementShadow( _id + "__parent"); 
     174                                 
     175                                _elementA.style.left = '-1500px'; 
     176                                _parent   = _elementA.parentNode; 
     177                                 
     178                                var _B = _parent.appendChild(_elementB); 
     179                                 
     180                                _configEvent( _elementB, 'onmouseup', _mouseUpShadow); 
     181                                _configEvent( _elementB, 'onmousemove', _drag); 
    119182                        } 
    120                         if ( el.getAttribute('dragdrop_parent') == null ) 
    121                                 el = false; 
    122                 } 
    123                 return el; 
    124         } 
    125  
    126         function _drag(e) 
    127         { 
    128                 if (typeof e.preventDefault != 'undefined') 
    129                         e.preventDefault(); 
    130                 else 
    131                         e.onselectstart = new Function("return false;"); 
    132  
    133                 var el = ( e.target ) ? e.target : e.srcElement; 
    134  
    135                 el = _toDrag(el); 
    136  
    137                 if ( el ) 
    138                 { 
    139                         _element = el; 
    140  
    141                         _config(el, 'onmousemove', _mouseMove); 
    142                         _config(top.document, 'onmousemove', _mouseMove); 
    143  
    144                         _config(el, 'onmouseup', _mouseUp); 
    145                         _config(top.document, 'onmouseup', _mouseUp); 
    146                 } 
    147         } 
    148  
    149         function _set(_pObject) 
    150         { 
    151                 if ( typeof _pObject != 'object' ) 
    152                         return false; 
    153  
    154                 _pObject.setAttribute('dragdrop_parent', 'true'); 
    155  
    156                 _config(_pObject, 'onmousedown', _drag); 
    157         } 
    158  
    159         function DragDrop() 
    160         { 
    161         } 
    162  
    163         DragDrop.prototype.drag = _set; 
    164         window.JITDragDrop = DragDrop; 
    165 } 
    166 )(); 
     183                         
     184                }catch(e){} 
     185        } 
     186 
     187        function _mouseUpShadow() 
     188        { 
     189                try 
     190                { 
     191                        _elementA.style.top                     = _elementB.style.top; 
     192                        _elementA.style.left            = _elementB.style.left; 
     193                         
     194                        var _B = _parent.removeChild(_elementB); 
     195 
     196                        _elementA = null; 
     197                        _elementB = null; 
     198                        _element = null; 
     199                } 
     200                catch(e){} 
     201        } 
     202         
     203        function dragdrop(){} 
     204 
     205        dragdrop.prototype.set  = _load; 
     206        window.dragdrop = dragdrop; 
     207         
     208})(); 
Note: See TracChangeset for help on using the changeset viewer.