src/cm/media/js/lib/yui/yui_3.0.0b1/build/dd/dd-drop.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 0 40c8f766c9b8
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
/*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
Code licensed under the BSD License:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
http://developer.yahoo.net/yui/license.txt
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
version: 3.0.0b1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
build: 1163
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
YUI.add('dd-drop', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
     * The Drag & Drop Utility allows you to create a draggable interface efficiently, buffering you from browser-level abnormalities and enabling you to focus on the interesting logic surrounding your particular implementation. This component enables you to create a variety of standard draggable objects with just a few lines of code and then, using its extensive API, add your own specific implementation logic.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
     * @module dd
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
     * @submodule dd-drop
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
     */     
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
     * This class provides the ability to create a Drop Target.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
     * @class Drop
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
     * @extends Base
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
     * @constructor
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
     * @namespace DD
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
    var NODE = 'node',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
        DDM = Y.DD.DDM,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
        OFFSET_HEIGHT = 'offsetHeight',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
        OFFSET_WIDTH = 'offsetWidth',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
        * @event drop:over
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
        * @description Fires when a drag element is over this target.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
        * @bubbles DDM
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
        * @type {Event.Custom}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
        EV_DROP_OVER = 'drop:over',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
        * @event drop:enter
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
        * @description Fires when a drag element enters this target.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
        * @bubbles DDM
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
        * @type {Event.Custom}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
        EV_DROP_ENTER = 'drop:enter',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
        * @event drop:exit
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
        * @description Fires when a drag element exits this target.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
        * @bubbles DDM
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
        * @type {Event.Custom}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
        EV_DROP_EXIT = 'drop:exit',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
        * @event drop:hit
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
        * @description Fires when a draggable node is dropped on this Drop Target. (Fired from dd-ddm-drop)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
        * @bubbles DDM
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
        * @type {Event.Custom}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    57
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    58
    Drop = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    59
        this._lazyAddAttrs = false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    60
        Drop.superclass.constructor.apply(this, arguments);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    61
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    62
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    63
        //DD init speed up.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    64
        Y.on('domready', Y.bind(function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    65
            Y.later(100, this, this._createShim);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    66
        }, this));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    67
        DDM._regTarget(this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    68
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    69
        /* TODO
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    70
        if (Dom.getStyle(this.el, 'position') == 'fixed') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    71
            Event.on(window, 'scroll', function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    72
                this.activateShim();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    73
            }, this, true);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    74
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    75
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    76
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    77
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    78
    Drop.NAME = 'drop';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    79
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    80
    Drop.ATTRS = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    81
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    82
        * @attribute node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    83
        * @description Y.Node instanace to use as the element to make a Drop Target
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    84
        * @type Node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    85
        */        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    86
        node: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    87
            setter: function(node) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    88
                var n = Y.Node.get(node);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    89
                if (!n) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    90
                    Y.error('DD.Drop: Invalid Node Given: ' + node);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    91
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    92
                return n;               
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    93
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    94
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    95
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    96
        * @attribute groups
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    97
        * @description Array of groups to add this drop into.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    98
        * @type Array
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    99
        */        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   100
        groups: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   101
            value: ['default'],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   102
            setter: function(g) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   103
                this._groups = {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   104
                Y.each(g, function(v, k) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   105
                    this._groups[v] = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   106
                }, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   107
                return g;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   108
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   109
        },   
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   110
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   111
        * @attribute padding
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   112
        * @description CSS style padding to make the Drop Target bigger than the node.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   113
        * @type String
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   114
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   115
        padding: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   116
            value: '0',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   117
            setter: function(p) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   118
                return DDM.cssSizestoObject(p);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   119
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   120
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   121
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   122
        * @attribute lock
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   123
        * @description Set to lock this drop element.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   124
        * @type Boolean
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   125
        */        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   126
        lock: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   127
            value: false,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   128
            setter: function(lock) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   129
                if (lock) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   130
                    this.get(NODE).addClass(DDM.CSS_PREFIX + '-drop-locked');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   131
                } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   132
                    this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-locked');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   133
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   134
                return lock;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   135
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   136
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   137
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   138
        * @attribute bubbles
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   139
        * @description Controls the default bubble parent for this Drop instance. Default: Y.DD.DDM. Set to false to disable bubbling.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   140
        * @type Object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   141
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   142
        bubbles: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   143
            writeOnce: true,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   144
            value: Y.DD.DDM
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   145
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   146
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   147
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   148
    Y.extend(Drop, Y.Base, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   149
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   150
        * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   151
        * @method _createEvents
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   152
        * @description This method creates all the events for this Event Target and publishes them so we get Event Bubbling.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   153
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   154
        _createEvents: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   155
            
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   156
            var ev = [
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   157
                EV_DROP_OVER,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   158
                EV_DROP_ENTER,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   159
                EV_DROP_EXIT,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   160
                'drop:hit'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   161
            ];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   162
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   163
            Y.each(ev, function(v, k) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   164
                this.publish(v, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   165
                    type: v,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   166
                    emitFacade: true,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   167
                    preventable: false,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   168
                    bubbles: true,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   169
                    queuable: false,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   170
                    prefix: 'drop'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   171
                });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   172
            }, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   173
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   174
            if (this.get('bubbles')) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   175
                this.addTarget(this.get('bubbles'));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   176
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   177
            
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   178
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   179
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   180
        * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   181
        * @property _valid
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   182
        * @description Flag for determining if the target is valid in this operation.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   183
        * @type Boolean
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   184
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   185
        _valid: null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   186
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   187
        * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   188
        * @property _groups
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   189
        * @description The groups this target belongs to.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   190
        * @type Array
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   191
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   192
        _groups: null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   193
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   194
        * @property shim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   195
        * @description Node reference to the targets shim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   196
        * @type {Object}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   197
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   198
        shim: null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   199
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   200
        * @property region
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   201
        * @description A region object associated with this target, used for checking regions while dragging.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   202
        * @type Object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   203
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   204
        region: null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   205
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   206
        * @property overTarget
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   207
        * @description This flag is tripped when a drag element is over this target.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   208
        * @type Boolean
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   209
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   210
        overTarget: null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   211
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   212
        * @method inGroup
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   213
        * @description Check if this target is in one of the supplied groups.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   214
        * @param {Array} groups The groups to check against
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   215
        * @return Boolean
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   216
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   217
        inGroup: function(groups) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   218
            this._valid = false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   219
            var ret = false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   220
            Y.each(groups, function(v, k) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   221
                if (this._groups[v]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   222
                    ret = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   223
                    this._valid = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   224
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   225
            }, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   226
            return ret;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   227
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   228
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   229
        * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   230
        * @method initializer
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   231
        * @description Private lifecycle method
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   232
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   233
        initializer: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   234
            //this._createEvents();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   235
            Y.later(100, this, this._createEvents);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   236
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   237
            var node = this.get(NODE), id;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   238
            if (!node.get('id')) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   239
                id = Y.stamp(node);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   240
                node.set('id', id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   241
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   242
            node.addClass(DDM.CSS_PREFIX + '-drop');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   243
            //Shouldn't have to do this..
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   244
            this.set('groups', this.get('groups'));           
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   245
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   246
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   247
        * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   248
        * @method destructor
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   249
        * @description Lifecycle destructor, unreg the drag from the DDM and remove listeners
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   250
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   251
        destructor: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   252
            DDM._unregTarget(this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   253
            if (this.shim) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   254
                this.shim.detachAll();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   255
                this.shim.get('parentNode').removeChild(this.shim);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   256
                this.shim = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   257
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   258
            this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   259
            this.detachAll();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   260
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   261
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   262
        * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   263
        * @method _deactivateShim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   264
        * @description Removes classes from the target, resets some flags and sets the shims deactive position [-999, -999]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   265
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   266
        _deactivateShim: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   267
            if (!this.shim) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   268
                return false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   269
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   270
            this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-active-valid');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   271
            this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-active-invalid');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   272
            this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-over');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   273
            this.shim.setStyles({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   274
                top: '-999px',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   275
                left: '-999px',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   276
                zIndex: '2'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   277
            });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   278
            this.overTarget = false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   279
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   280
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   281
        * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   282
        * @method _activateShim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   283
        * @description Activates the shim and adds some interaction CSS classes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   284
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   285
        _activateShim: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   286
            if (!DDM.activeDrag) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   287
                return false; //Nothing is dragging, no reason to activate.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   288
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   289
            if (this.get(NODE) === DDM.activeDrag.get(NODE)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   290
                return false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   291
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   292
            if (this.get('lock')) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   293
                return false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   294
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   295
            var node = this.get(NODE);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   296
            //TODO Visibility Check..
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   297
            //if (this.inGroup(DDM.activeDrag.get('groups')) && this.get(NODE).isVisible()) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   298
            if (this.inGroup(DDM.activeDrag.get('groups'))) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   299
                node.removeClass(DDM.CSS_PREFIX + '-drop-active-invalid');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   300
                node.addClass(DDM.CSS_PREFIX + '-drop-active-valid');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   301
                DDM._addValid(this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   302
                this.overTarget = false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   303
                this.sizeShim();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   304
            } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   305
                DDM._removeValid(this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   306
                node.removeClass(DDM.CSS_PREFIX + '-drop-active-valid');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   307
                node.addClass(DDM.CSS_PREFIX + '-drop-active-invalid');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   308
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   309
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   310
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   311
        * @method sizeShim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   312
        * @description Positions and sizes the shim with the raw data from the node, this can be used to programatically adjust the Targets shim for Animation..
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   313
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   314
        sizeShim: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   315
            if (!DDM.activeDrag) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   316
                return false; //Nothing is dragging, no reason to activate.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   317
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   318
            if (this.get(NODE) === DDM.activeDrag.get(NODE)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   319
                return false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   320
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   321
            if (this.get('lock')) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   322
                return false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   323
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   324
            if (!this.shim) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   325
                Y.later(100, this, this.sizeShim);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   326
                return false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   327
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   328
            var node = this.get(NODE),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   329
                nh = node.get(OFFSET_HEIGHT),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   330
                nw = node.get(OFFSET_WIDTH),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   331
                xy = node.getXY(),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   332
                p = this.get('padding'),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   333
                dd, dH, dW;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   334
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   335
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   336
            //Apply padding
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   337
            nw = nw + p.left + p.right;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   338
            nh = nh + p.top + p.bottom;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   339
            xy[0] = xy[0] - p.left;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   340
            xy[1] = xy[1] - p.top;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   341
            
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   342
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   343
            if (DDM.activeDrag.get('dragMode') === DDM.INTERSECT) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   344
                //Intersect Mode, make the shim bigger
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   345
                dd = DDM.activeDrag;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   346
                dH = dd.get(NODE).get(OFFSET_HEIGHT);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   347
                dW = dd.get(NODE).get(OFFSET_WIDTH);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   348
                
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   349
                nh = (nh + dH);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   350
                nw = (nw + dW);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   351
                xy[0] = xy[0] - (dW - dd.deltaXY[0]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   352
                xy[1] = xy[1] - (dH - dd.deltaXY[1]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   353
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   354
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   355
            
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   356
            //Set the style on the shim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   357
            this.shim.setStyles({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   358
                height: nh + 'px',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   359
                width: nw + 'px',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   360
                top: xy[1] + 'px',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   361
                left: xy[0] + 'px'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   362
            });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   363
            
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   364
            //Create the region to be used by intersect when a drag node is over us.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   365
            this.region = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   366
                '0': xy[0], 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   367
                '1': xy[1],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   368
                area: 0,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   369
                top: xy[1],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   370
                right: xy[0] + nw,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   371
                bottom: xy[1] + nh,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   372
                left: xy[0]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   373
            };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   374
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   375
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   376
        * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   377
        * @method _createShim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   378
        * @description Creates the Target shim and adds it to the DDM's playground..
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   379
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   380
        _createShim: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   381
            //No playground, defer
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   382
            if (!DDM._pg) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   383
                Y.later(10, this, this._createShim);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   384
                return;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   385
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   386
            //Shim already here, cancel
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   387
            if (this.shim) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   388
                return;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   389
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   390
            var s = Y.Node.create('<div id="' + this.get(NODE).get('id') + '_shim"></div>');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   391
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   392
            s.setStyles({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   393
                height: this.get(NODE).get(OFFSET_HEIGHT) + 'px',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   394
                width: this.get(NODE).get(OFFSET_WIDTH) + 'px',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   395
                backgroundColor: 'yellow',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   396
                opacity: '.5',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   397
                zIndex: '1',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   398
                overflow: 'hidden',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   399
                top: '-900px',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   400
                left: '-900px',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   401
                position:  'absolute'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   402
            });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   403
            DDM._pg.appendChild(s);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   404
            this.shim = s;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   405
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   406
            s.on('mouseover', Y.bind(this._handleOverEvent, this));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   407
            s.on('mouseout', Y.bind(this._handleOutEvent, this));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   408
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   409
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   410
        * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   411
        * @method _handleOverTarget
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   412
        * @description This handles the over target call made from this object or from the DDM
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   413
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   414
        _handleTargetOver: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   415
            if (DDM.isOverTarget(this)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   416
                this.get(NODE).addClass(DDM.CSS_PREFIX + '-drop-over');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   417
                DDM.activeDrop = this;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   418
                DDM.otherDrops[this] = this;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   419
                if (this.overTarget) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   420
                    DDM.activeDrag.fire('drag:over', { drop: this, drag: DDM.activeDrag });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   421
                    this.fire(EV_DROP_OVER, { drop: this, drag: DDM.activeDrag });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   422
                } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   423
                    this.overTarget = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   424
                    this.fire(EV_DROP_ENTER, { drop: this, drag: DDM.activeDrag });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   425
                    DDM.activeDrag.fire('drag:enter', { drop: this, drag: DDM.activeDrag });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   426
                    DDM.activeDrag.get(NODE).addClass(DDM.CSS_PREFIX + '-drag-over');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   427
                    //TODO - Is this needed??
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   428
                    //DDM._handleTargetOver();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   429
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   430
            } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   431
                this._handleOut();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   432
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   433
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   434
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   435
        * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   436
        * @method _handleOverEvent
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   437
        * @description Handles the mouseover DOM event on the Target Shim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   438
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   439
        _handleOverEvent: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   440
            this.shim.setStyle('zIndex', '999');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   441
            DDM._addActiveShim(this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   442
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   443
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   444
        * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   445
        * @method _handleOutEvent
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   446
        * @description Handles the mouseout DOM event on the Target Shim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   447
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   448
        _handleOutEvent: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   449
            this.shim.setStyle('zIndex', '1');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   450
            DDM._removeActiveShim(this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   451
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   452
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   453
        * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   454
        * @method _handleOut
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   455
        * @description Handles out of target calls/checks
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   456
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   457
        _handleOut: function(force) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   458
            if (!DDM.isOverTarget(this) || force) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   459
                if (this.overTarget) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   460
                    this.overTarget = false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   461
                    if (!force) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   462
                        DDM._removeActiveShim(this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   463
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   464
                    if (DDM.activeDrag) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   465
                        this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-over');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   466
                        DDM.activeDrag.get(NODE).removeClass(DDM.CSS_PREFIX + '-drag-over');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   467
                        this.fire(EV_DROP_EXIT);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   468
                        DDM.activeDrag.fire('drag:exit', { drop: this });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   469
                        delete DDM.otherDrops[this];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   470
                        //if (DDM.activeDrop === this) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   471
                        //    DDM.activeDrop = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   472
                        //}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   473
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   474
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   475
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   476
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   477
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   478
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   479
    Y.DD.Drop = Drop;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   480
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   481
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   482
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   483
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   484
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   485
}, '3.0.0b1' ,{requires:['dd-ddm-drop', 'dd-drag'], skinnable:false});