Ignore:
Timestamp:
Feb 18, 2013, 10:18:40 PM (11 years ago)
Author:
rvelices
Message:

upgraded jquery ui from 1.9.0 to 1.10.1

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/themes/default/js/ui/jquery.ui.draggable.js

    r18630 r20824  
    11/*!
    2  * jQuery UI Draggable 1.9.0
     2 * jQuery UI Draggable 1.10.1
    33 * http://jqueryui.com
    44 *
    5  * Copyright 2012 jQuery Foundation and other contributors
     5 * Copyright 2013 jQuery Foundation and other contributors
    66 * Released under the MIT license.
    77 * http://jquery.org/license
     
    1717
    1818$.widget("ui.draggable", $.ui.mouse, {
    19         version: "1.9.0",
     19        version: "1.10.1",
    2020        widgetEventPrefix: "drag",
    2121        options: {
     
    4343                snapTolerance: 20,
    4444                stack: false,
    45                 zIndex: false
     45                zIndex: false,
     46
     47                // callbacks
     48                drag: null,
     49                start: null,
     50                stop: null
    4651        },
    4752        _create: function() {
    4853
    49                 if (this.options.helper == 'original' && !(/^(?:r|a|f)/).test(this.element.css("position")))
    50                         this.element[0].style.position = 'relative';
    51 
    52                 (this.options.addClasses && this.element.addClass("ui-draggable"));
    53                 (this.options.disabled && this.element.addClass("ui-draggable-disabled"));
     54                if (this.options.helper === "original" && !(/^(?:r|a|f)/).test(this.element.css("position"))) {
     55                        this.element[0].style.position = "relative";
     56                }
     57                if (this.options.addClasses){
     58                        this.element.addClass("ui-draggable");
     59                }
     60                if (this.options.disabled){
     61                        this.element.addClass("ui-draggable-disabled");
     62                }
    5463
    5564                this._mouseInit();
     
    6776
    6877                // among others, prevent a drag on a resizable-handle
    69                 if (this.helper || o.disabled || $(event.target).is('.ui-resizable-handle'))
     78                if (this.helper || o.disabled || $(event.target).closest(".ui-resizable-handle").length > 0) {
    7079                        return false;
     80                }
    7181
    7282                //Quit if we're not on a valid handle
    7383                this.handle = this._getHandle(event);
    74                 if (!this.handle)
     84                if (!this.handle) {
    7585                        return false;
    76                
     86                }
     87
    7788                $(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
    78                         $('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>')
     89                        $("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>")
    7990                        .css({
    8091                                width: this.offsetWidth+"px", height: this.offsetHeight+"px",
     
    102113
    103114                //If ddmanager is used for droppables, set the global draggable
    104                 if($.ui.ddmanager)
     115                if($.ui.ddmanager) {
    105116                        $.ui.ddmanager.current = this;
     117                }
    106118
    107119                /*
     
    138150                this.originalPageY = event.pageY;
    139151
    140                 //Adjust the mouse offset relative to the helper if 'cursorAt' is supplied
     152                //Adjust the mouse offset relative to the helper if "cursorAt" is supplied
    141153                (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));
    142154
    143155                //Set a containment if given in the options
    144                 if(o.containment)
     156                if(o.containment) {
    145157                        this._setContainment();
     158                }
    146159
    147160                //Trigger event + callbacks
     
    155168
    156169                //Prepare the droppable offsets
    157                 if ($.ui.ddmanager && !o.dropBehaviour)
     170                if ($.ui.ddmanager && !o.dropBehaviour) {
    158171                        $.ui.ddmanager.prepareOffsets(this, event);
    159 
    160                
     172                }
     173
     174
    161175                this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
    162                
     176
    163177                //If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)
    164                 if ( $.ui.ddmanager ) $.ui.ddmanager.dragStart(this, event);
    165                
     178                if ( $.ui.ddmanager ) {
     179                        $.ui.ddmanager.dragStart(this, event);
     180                }
     181
    166182                return true;
    167183        },
     
    176192                if (!noPropagation) {
    177193                        var ui = this._uiHash();
    178                         if(this._trigger('drag', event, ui) === false) {
     194                        if(this._trigger("drag", event, ui) === false) {
    179195                                this._mouseUp({});
    180196                                return false;
     
    183199                }
    184200
    185                 if(!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left+'px';
    186                 if(!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top+'px';
    187                 if($.ui.ddmanager) $.ui.ddmanager.drag(this, event);
     201                if(!this.options.axis || this.options.axis !== "y") {
     202                        this.helper[0].style.left = this.position.left+"px";
     203                }
     204                if(!this.options.axis || this.options.axis !== "x") {
     205                        this.helper[0].style.top = this.position.top+"px";
     206                }
     207                if($.ui.ddmanager) {
     208                        $.ui.ddmanager.drag(this, event);
     209                }
    188210
    189211                return false;
     
    193215
    194216                //If we are using droppables, inform the manager about the drop
    195                 var dropped = false;
    196                 if ($.ui.ddmanager && !this.options.dropBehaviour)
     217                var element,
     218                        that = this,
     219                        elementInDom = false,
     220                        dropped = false;
     221                if ($.ui.ddmanager && !this.options.dropBehaviour) {
    197222                        dropped = $.ui.ddmanager.drop(this, event);
     223                }
    198224
    199225                //if a drop comes from outside (a sortable)
     
    202228                        this.dropped = false;
    203229                }
    204                
     230
    205231                //if the original element is no longer in the DOM don't bother to continue (see #8269)
    206                 var element = this.element[0], elementInDom = false;
     232                element = this.element[0];
    207233                while ( element && (element = element.parentNode) ) {
    208                         if (element == document ) {
     234                        if (element === document ) {
    209235                                elementInDom = true;
    210236                        }
    211237                }
    212                 if ( !elementInDom && this.options.helper === "original" )
     238                if ( !elementInDom && this.options.helper === "original" ) {
    213239                        return false;
    214 
    215                 if((this.options.revert == "invalid" && !dropped) || (this.options.revert == "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {
    216                         var that = this;
     240                }
     241
     242                if((this.options.revert === "invalid" && !dropped) || (this.options.revert === "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {
    217243                        $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {
    218244                                if(that._trigger("stop", event) !== false) {
     
    228254                return false;
    229255        },
    230        
     256
    231257        _mouseUp: function(event) {
    232258                //Remove frame helpers
    233                 $("div.ui-draggable-iframeFix").each(function() { 
    234                         this.parentNode.removeChild(this); 
     259                $("div.ui-draggable-iframeFix").each(function() {
     260                        this.parentNode.removeChild(this);
    235261                });
    236                
     262
    237263                //If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)
    238                 if( $.ui.ddmanager ) $.ui.ddmanager.dragStop(this, event);
    239                
     264                if( $.ui.ddmanager ) {
     265                        $.ui.ddmanager.dragStop(this, event);
     266                }
     267
    240268                return $.ui.mouse.prototype._mouseUp.call(this, event);
    241269        },
    242        
     270
    243271        cancel: function() {
    244                
     272
    245273                if(this.helper.is(".ui-draggable-dragging")) {
    246274                        this._mouseUp({});
     
    248276                        this._clear();
    249277                }
    250                
     278
    251279                return this;
    252                
     280
    253281        },
    254282
     
    258286                $(this.options.handle, this.element)
    259287                        .find("*")
    260                         .andSelf()
     288                        .addBack()
    261289                        .each(function() {
    262                                 if(this == event.target) handle = true;
     290                                if(this === event.target) {
     291                                        handle = true;
     292                                }
    263293                        });
    264294
     
    269299        _createHelper: function(event) {
    270300
    271                 var o = this.options;
    272                 var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == 'clone' ? this.element.clone().removeAttr('id') : this.element);
    273 
    274                 if(!helper.parents('body').length)
    275                         helper.appendTo((o.appendTo == 'parent' ? this.element[0].parentNode : o.appendTo));
    276 
    277                 if(helper[0] != this.element[0] && !(/(fixed|absolute)/).test(helper.css("position")))
     301                var o = this.options,
     302                        helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper === "clone" ? this.element.clone().removeAttr("id") : this.element);
     303
     304                if(!helper.parents("body").length) {
     305                        helper.appendTo((o.appendTo === "parent" ? this.element[0].parentNode : o.appendTo));
     306                }
     307
     308                if(helper[0] !== this.element[0] && !(/(fixed|absolute)/).test(helper.css("position"))) {
    278309                        helper.css("position", "absolute");
     310                }
    279311
    280312                return helper;
     
    283315
    284316        _adjustOffsetFromHelper: function(obj) {
    285                 if (typeof obj == 'string') {
    286                         obj = obj.split(' ');
     317                if (typeof obj === "string") {
     318                        obj = obj.split(" ");
    287319                }
    288320                if ($.isArray(obj)) {
    289321                        obj = {left: +obj[0], top: +obj[1] || 0};
    290322                }
    291                 if ('left' in obj) {
     323                if ("left" in obj) {
    292324                        this.offset.click.left = obj.left + this.margins.left;
    293325                }
    294                 if ('right' in obj) {
     326                if ("right" in obj) {
    295327                        this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
    296328                }
    297                 if ('top' in obj) {
     329                if ("top" in obj) {
    298330                        this.offset.click.top = obj.top + this.margins.top;
    299331                }
    300                 if ('bottom' in obj) {
     332                if ("bottom" in obj) {
    301333                        this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
    302334                }
     
    313345                // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
    314346                //    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
    315                 if(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) {
     347                if(this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {
    316348                        po.left += this.scrollParent.scrollLeft();
    317349                        po.top += this.scrollParent.scrollTop();
    318350                }
    319351
    320                 if((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information
    321                 || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.browser.msie)) //Ugly IE fix
     352                //This needs to be actually done for all browsers, since pageX/pageY includes this information
     353                //Ugly IE fix
     354                if((this.offsetParent[0] === document.body) ||
     355                        (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) {
    322356                        po = { top: 0, left: 0 };
     357                }
    323358
    324359                return {
     
    331366        _getRelativeOffset: function() {
    332367
    333                 if(this.cssPosition == "relative") {
     368                if(this.cssPosition === "relative") {
    334369                        var p = this.element.position();
    335370                        return {
     
    361396        _setContainment: function() {
    362397
    363                 var o = this.options;
    364                 if(o.containment == 'parent') o.containment = this.helper[0].parentNode;
    365                 if(o.containment == 'document' || o.containment == 'window') this.containment = [
    366                         o.containment == 'document' ? 0 : $(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left,
    367                         o.containment == 'document' ? 0 : $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top,
    368                         (o.containment == 'document' ? 0 : $(window).scrollLeft()) + $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,
    369                         (o.containment == 'document' ? 0 : $(window).scrollTop()) + ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
    370                 ];
    371 
    372                 if(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) {
    373                         var c = $(o.containment);
    374                         var ce = c[0]; if(!ce) return;
    375                         var co = c.offset();
    376                         var over = ($(ce).css("overflow") != 'hidden');
     398                var over, c, ce,
     399                        o = this.options;
     400
     401                if(o.containment === "parent") {
     402                        o.containment = this.helper[0].parentNode;
     403                }
     404                if(o.containment === "document" || o.containment === "window") {
     405                        this.containment = [
     406                                o.containment === "document" ? 0 : $(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left,
     407                                o.containment === "document" ? 0 : $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top,
     408                                (o.containment === "document" ? 0 : $(window).scrollLeft()) + $(o.containment === "document" ? document : window).width() - this.helperProportions.width - this.margins.left,
     409                                (o.containment === "document" ? 0 : $(window).scrollTop()) + ($(o.containment === "document" ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
     410                        ];
     411                }
     412
     413                if(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor !== Array) {
     414                        c = $(o.containment);
     415                        ce = c[0];
     416
     417                        if(!ce) {
     418                                return;
     419                        }
     420
     421                        over = ($(ce).css("overflow") !== "hidden");
    377422
    378423                        this.containment = [
     
    384429                        this.relative_container = c;
    385430
    386                 } else if(o.containment.constructor == Array) {
     431                } else if(o.containment.constructor === Array) {
    387432                        this.containment = o.containment;
    388433                }
     
    392437        _convertPositionTo: function(d, pos) {
    393438
    394                 if(!pos) pos = this.position;
    395                 var mod = d == "absolute" ? 1 : -1;
    396                 var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
     439                if(!pos) {
     440                        pos = this.position;
     441                }
     442
     443                var mod = d === "absolute" ? 1 : -1,
     444                        scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
    397445
    398446                return {
    399447                        top: (
    400                                 pos.top                                                                                                                                 // The absolute mouse position
    401                                 + this.offset.relative.top * mod                                                                                // Only for relative positioned nodes: Relative offset from element to offset parent
    402                                 + this.offset.parent.top * mod                                                                                  // The offsetParent's offset without borders (offset + border)
    403                                 - ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)
     448                                pos.top +                                                                                                                               // The absolute mouse position
     449                                this.offset.relative.top * mod +                                                                                // Only for relative positioned nodes: Relative offset from element to offset parent
     450                                this.offset.parent.top * mod -                                                                          // The offsetParent's offset without borders (offset + border)
     451                                ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)
    404452                        ),
    405453                        left: (
    406                                 pos.left                                                                                                                                // The absolute mouse position
    407                                 + this.offset.relative.left * mod                                                                               // Only for relative positioned nodes: Relative offset from element to offset parent
    408                                 + this.offset.parent.left * mod                                                                                 // The offsetParent's offset without borders (offset + border)
    409                                 - ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)
     454                                pos.left +                                                                                                                              // The absolute mouse position
     455                                this.offset.relative.left * mod +                                                                               // Only for relative positioned nodes: Relative offset from element to offset parent
     456                                this.offset.parent.left * mod   -                                                                               // The offsetParent's offset without borders (offset + border)
     457                                ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)
    410458                        )
    411459                };
     
    415463        _generatePosition: function(event) {
    416464
    417                 var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
    418                 var pageX = event.pageX;
    419                 var pageY = event.pageY;
     465                var containment, co, top, left,
     466                        o = this.options,
     467                        scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent,
     468                        scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName),
     469                        pageX = event.pageX,
     470                        pageY = event.pageY;
    420471
    421472                /*
     
    425476
    426477                if(this.originalPosition) { //If we are not dragging yet, we won't check for options
    427                         var containment;
    428478                        if(this.containment) {
    429479                        if (this.relative_container){
    430                                 var co = this.relative_container.offset();
     480                                co = this.relative_container.offset();
    431481                                containment = [ this.containment[0] + co.left,
    432482                                        this.containment[1] + co.top,
     
    438488                        }
    439489
    440                                 if(event.pageX - this.offset.click.left < containment[0]) pageX = containment[0] + this.offset.click.left;
    441                                 if(event.pageY - this.offset.click.top < containment[1]) pageY = containment[1] + this.offset.click.top;
    442                                 if(event.pageX - this.offset.click.left > containment[2]) pageX = containment[2] + this.offset.click.left;
    443                                 if(event.pageY - this.offset.click.top > containment[3]) pageY = containment[3] + this.offset.click.top;
     490                                if(event.pageX - this.offset.click.left < containment[0]) {
     491                                        pageX = containment[0] + this.offset.click.left;
     492                                }
     493                                if(event.pageY - this.offset.click.top < containment[1]) {
     494                                        pageY = containment[1] + this.offset.click.top;
     495                                }
     496                                if(event.pageX - this.offset.click.left > containment[2]) {
     497                                        pageX = containment[2] + this.offset.click.left;
     498                                }
     499                                if(event.pageY - this.offset.click.top > containment[3]) {
     500                                        pageY = containment[3] + this.offset.click.top;
     501                                }
    444502                        }
    445503
    446504                        if(o.grid) {
    447505                                //Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950)
    448                                 var top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;
    449                                 pageY = containment ? (!(top - this.offset.click.top < containment[1] || top - this.offset.click.top > containment[3]) ? top : (!(top - this.offset.click.top < containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
    450 
    451                                 var left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;
    452                                 pageX = containment ? (!(left - this.offset.click.left < containment[0] || left - this.offset.click.left > containment[2]) ? left : (!(left - this.offset.click.left < containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
     506                                top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;
     507                                pageY = containment ? ((top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3]) ? top : ((top - this.offset.click.top >= containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
     508
     509                                left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;
     510                                pageX = containment ? ((left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2]) ? left : ((left - this.offset.click.left >= containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
    453511                        }
    454512
     
    457515                return {
    458516                        top: (
    459                                 pageY                                                                                                                           // The absolute mouse position
    460                                 - this.offset.click.top                                                                                                 // Click offset (relative to the element)
    461                                 - this.offset.relative.top                                                                                              // Only for relative positioned nodes: Relative offset from element to offset parent
    462                                 - this.offset.parent.top                                                                                                // The offsetParent's offset without borders (offset + border)
    463                                 + ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))
     517                                pageY -                                                                                                                                 // The absolute mouse position
     518                                this.offset.click.top   -                                                                                               // Click offset (relative to the element)
     519                                this.offset.relative.top -                                                                                              // Only for relative positioned nodes: Relative offset from element to offset parent
     520                                this.offset.parent.top +                                                                                                // The offsetParent's offset without borders (offset + border)
     521                                ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))
    464522                        ),
    465523                        left: (
    466                                 pageX                                                                                                                           // The absolute mouse position
    467                                 - this.offset.click.left                                                                                                // Click offset (relative to the element)
    468                                 - this.offset.relative.left                                                                                             // Only for relative positioned nodes: Relative offset from element to offset parent
    469                                 - this.offset.parent.left                                                                                               // The offsetParent's offset without borders (offset + border)
    470                                 + ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))
     524                                pageX -                                                                                                                                 // The absolute mouse position
     525                                this.offset.click.left -                                                                                                // Click offset (relative to the element)
     526                                this.offset.relative.left -                                                                                             // Only for relative positioned nodes: Relative offset from element to offset parent
     527                                this.offset.parent.left +                                                                                               // The offsetParent's offset without borders (offset + border)
     528                                ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))
    471529                        )
    472530                };
     
    476534        _clear: function() {
    477535                this.helper.removeClass("ui-draggable-dragging");
    478                 if(this.helper[0] != this.element[0] && !this.cancelHelperRemoval) this.helper.remove();
    479                 //if($.ui.ddmanager) $.ui.ddmanager.current = null;
     536                if(this.helper[0] !== this.element[0] && !this.cancelHelperRemoval) {
     537                        this.helper.remove();
     538                }
    480539                this.helper = null;
    481540                this.cancelHelperRemoval = false;
     
    487546                ui = ui || this._uiHash();
    488547                $.ui.plugin.call(this, type, [event, ui]);
    489                 if(type == "drag") this.positionAbs = this._convertPositionTo("absolute"); //The absolute position has to be recalculated after plugins
     548                //The absolute position has to be recalculated after plugins
     549                if(type === "drag") {
     550                        this.positionAbs = this._convertPositionTo("absolute");
     551                }
    490552                return $.Widget.prototype._trigger.call(this, type, event, ui);
    491553        },
     
    493555        plugins: {},
    494556
    495         _uiHash: function(event) {
     557        _uiHash: function() {
    496558                return {
    497559                        helper: this.helper,
     
    507569        start: function(event, ui) {
    508570
    509                 var inst = $(this).data("draggable"), o = inst.options,
     571                var inst = $(this).data("ui-draggable"), o = inst.options,
    510572                        uiSortable = $.extend({}, ui, { item: inst.element });
    511573                inst.sortables = [];
    512574                $(o.connectToSortable).each(function() {
    513                         var sortable = $.data(this, 'sortable');
     575                        var sortable = $.data(this, "ui-sortable");
    514576                        if (sortable && !sortable.options.disabled) {
    515577                                inst.sortables.push({
     
    526588
    527589                //If we are still over the sortable, we fake the stop event of the sortable, but also remove helper
    528                 var inst = $(this).data("draggable"),
     590                var inst = $(this).data("ui-draggable"),
    529591                        uiSortable = $.extend({}, ui, { item: inst.element });
    530592
     
    537599                                this.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work)
    538600
    539                                 //The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: 'valid/invalid'
    540                                 if(this.shouldRevert) this.instance.options.revert = true;
     601                                //The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: "valid/invalid"
     602                                if(this.shouldRevert) {
     603                                        this.instance.options.revert = true;
     604                                }
    541605
    542606                                //Trigger the stop of the sortable
     
    546610
    547611                                //If the helper has been the original item, restore properties in the sortable
    548                                 if(inst.options.helper == 'original')
    549                                         this.instance.currentItem.css({ top: 'auto', left: 'auto' });
     612                                if(inst.options.helper === "original") {
     613                                        this.instance.currentItem.css({ top: "auto", left: "auto" });
     614                                }
    550615
    551616                        } else {
     
    559624        drag: function(event, ui) {
    560625
    561                 var inst = $(this).data("draggable"), that = this;
    562 
    563                 var checkPos = function(o) {
    564                         var dyClick = this.offset.click.top, dxClick = this.offset.click.left;
    565                         var helperTop = this.positionAbs.top, helperLeft = this.positionAbs.left;
    566                         var itemHeight = o.height, itemWidth = o.width;
    567                         var itemTop = o.top, itemLeft = o.left;
    568 
    569                         return $.ui.isOver(helperTop + dyClick, helperLeft + dxClick, itemTop, itemLeft, itemHeight, itemWidth);
    570                 };
    571 
    572                 $.each(inst.sortables, function(i) {
    573                        
     626                var inst = $(this).data("ui-draggable"), that = this;
     627
     628                $.each(inst.sortables, function() {
     629
     630                        var innermostIntersecting = false,
     631                                thisSortable = this;
     632
    574633                        //Copy over some variables to allow calling the sortable's native _intersectsWith
    575634                        this.instance.positionAbs = inst.positionAbs;
    576635                        this.instance.helperProportions = inst.helperProportions;
    577636                        this.instance.offset.click = inst.offset.click;
    578                        
     637
    579638                        if(this.instance._intersectsWith(this.instance.containerCache)) {
    580 
     639                                innermostIntersecting = true;
     640                                $.each(inst.sortables, function () {
     641                                        this.instance.positionAbs = inst.positionAbs;
     642                                        this.instance.helperProportions = inst.helperProportions;
     643                                        this.instance.offset.click = inst.offset.click;
     644                                        if (this !== thisSortable &&
     645                                                this.instance._intersectsWith(this.instance.containerCache) &&
     646                                                $.contains(thisSortable.instance.element[0], this.instance.element[0])
     647                                        ) {
     648                                                innermostIntersecting = false;
     649                                        }
     650                                        return innermostIntersecting;
     651                                });
     652                        }
     653
     654
     655                        if(innermostIntersecting) {
    581656                                //If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once
    582657                                if(!this.instance.isOver) {
     
    586661                                        //by cloning the list group item, appending it to the sortable and using it as inst.currentItem
    587662                                        //We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one)
    588                                         this.instance.currentItem = $(that).clone().removeAttr('id').appendTo(this.instance.element).data("sortable-item", true);
     663                                        this.instance.currentItem = $(that).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item", true);
    589664                                        this.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it
    590665                                        this.instance.options.helper = function() { return ui.helper[0]; };
     
    609684
    610685                                //Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable
    611                                 if(this.instance.currentItem) this.instance._mouseDrag(event);
     686                                if(this.instance.currentItem) {
     687                                        this.instance._mouseDrag(event);
     688                                }
    612689
    613690                        } else {
     
    619696                                        this.instance.isOver = 0;
    620697                                        this.instance.cancelHelperRemoval = true;
    621                                        
     698
    622699                                        //Prevent reverting on this forced stop
    623700                                        this.instance.options.revert = false;
    624                                        
     701
    625702                                        // The out event needs to be triggered independently
    626                                         this.instance._trigger('out', event, this.instance._uiHash(this.instance));
    627                                        
     703                                        this.instance._trigger("out", event, this.instance._uiHash(this.instance));
     704
    628705                                        this.instance._mouseStop(event, true);
    629706                                        this.instance.options.helper = this.instance.options._helper;
     
    631708                                        //Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size
    632709                                        this.instance.currentItem.remove();
    633                                         if(this.instance.placeholder) this.instance.placeholder.remove();
     710                                        if(this.instance.placeholder) {
     711                                                this.instance.placeholder.remove();
     712                                        }
    634713
    635714                                        inst._trigger("fromSortable", event);
     
    637716                                }
    638717
    639                         };
     718                        }
    640719
    641720                });
     
    645724
    646725$.ui.plugin.add("draggable", "cursor", {
    647         start: function(event, ui) {
    648                 var t = $('body'), o = $(this).data('draggable').options;
    649                 if (t.css("cursor")) o._cursor = t.css("cursor");
     726        start: function() {
     727                var t = $("body"), o = $(this).data("ui-draggable").options;
     728                if (t.css("cursor")) {
     729                        o._cursor = t.css("cursor");
     730                }
    650731                t.css("cursor", o.cursor);
    651732        },
    652         stop: function(event, ui) {
    653                 var o = $(this).data('draggable').options;
    654                 if (o._cursor) $('body').css("cursor", o._cursor);
     733        stop: function() {
     734                var o = $(this).data("ui-draggable").options;
     735                if (o._cursor) {
     736                        $("body").css("cursor", o._cursor);
     737                }
    655738        }
    656739});
     
    658741$.ui.plugin.add("draggable", "opacity", {
    659742        start: function(event, ui) {
    660                 var t = $(ui.helper), o = $(this).data('draggable').options;
    661                 if(t.css("opacity")) o._opacity = t.css("opacity");
    662                 t.css('opacity', o.opacity);
     743                var t = $(ui.helper), o = $(this).data("ui-draggable").options;
     744                if(t.css("opacity")) {
     745                        o._opacity = t.css("opacity");
     746                }
     747                t.css("opacity", o.opacity);
    663748        },
    664749        stop: function(event, ui) {
    665                 var o = $(this).data('draggable').options;
    666                 if(o._opacity) $(ui.helper).css('opacity', o._opacity);
     750                var o = $(this).data("ui-draggable").options;
     751                if(o._opacity) {
     752                        $(ui.helper).css("opacity", o._opacity);
     753                }
    667754        }
    668755});
    669756
    670757$.ui.plugin.add("draggable", "scroll", {
    671         start: function(event, ui) {
    672                 var i = $(this).data("draggable");
    673                 if(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') i.overflowOffset = i.scrollParent.offset();
    674         },
    675         drag: function(event, ui) {
    676 
    677                 var i = $(this).data("draggable"), o = i.options, scrolled = false;
    678 
    679                 if(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') {
    680 
    681                         if(!o.axis || o.axis != 'x') {
    682                                 if((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)
     758        start: function() {
     759                var i = $(this).data("ui-draggable");
     760                if(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== "HTML") {
     761                        i.overflowOffset = i.scrollParent.offset();
     762                }
     763        },
     764        drag: function( event ) {
     765
     766                var i = $(this).data("ui-draggable"), o = i.options, scrolled = false;
     767
     768                if(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== "HTML") {
     769
     770                        if(!o.axis || o.axis !== "x") {
     771                                if((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) {
    683772                                        i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed;
    684                                 else if(event.pageY - i.overflowOffset.top < o.scrollSensitivity)
     773                                } else if(event.pageY - i.overflowOffset.top < o.scrollSensitivity) {
    685774                                        i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed;
    686                         }
    687 
    688                         if(!o.axis || o.axis != 'y') {
    689                                 if((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)
     775                                }
     776                        }
     777
     778                        if(!o.axis || o.axis !== "y") {
     779                                if((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) {
    690780                                        i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed;
    691                                 else if(event.pageX - i.overflowOffset.left < o.scrollSensitivity)
     781                                } else if(event.pageX - i.overflowOffset.left < o.scrollSensitivity) {
    692782                                        i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed;
     783                                }
    693784                        }
    694785
    695786                } else {
    696787
    697                         if(!o.axis || o.axis != 'x') {
    698                                 if(event.pageY - $(document).scrollTop() < o.scrollSensitivity)
     788                        if(!o.axis || o.axis !== "x") {
     789                                if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) {
    699790                                        scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
    700                                 else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)
     791                                } else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {
    701792                                        scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
    702                         }
    703 
    704                         if(!o.axis || o.axis != 'y') {
    705                                 if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)
     793                                }
     794                        }
     795
     796                        if(!o.axis || o.axis !== "y") {
     797                                if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {
    706798                                        scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
    707                                 else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)
     799                                } else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {
    708800                                        scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
    709                         }
    710 
    711                 }
    712 
    713                 if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)
     801                                }
     802                        }
     803
     804                }
     805
     806                if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {
    714807                        $.ui.ddmanager.prepareOffsets(i, event);
     808                }
    715809
    716810        }
     
    718812
    719813$.ui.plugin.add("draggable", "snap", {
    720         start: function(event, ui) {
    721 
    722                 var i = $(this).data("draggable"), o = i.options;
     814        start: function() {
     815
     816                var i = $(this).data("ui-draggable"),
     817                        o = i.options;
     818
    723819                i.snapElements = [];
    724820
    725                 $(o.snap.constructor != String ? ( o.snap.items || ':data(draggable)' ) : o.snap).each(function() {
    726                         var $t = $(this); var $o = $t.offset();
    727                         if(this != i.element[0]) i.snapElements.push({
    728                                 item: this,
    729                                 width: $t.outerWidth(), height: $t.outerHeight(),
    730                                 top: $o.top, left: $o.left
    731                         });
     821                $(o.snap.constructor !== String ? ( o.snap.items || ":data(ui-draggable)" ) : o.snap).each(function() {
     822                        var $t = $(this),
     823                                $o = $t.offset();
     824                        if(this !== i.element[0]) {
     825                                i.snapElements.push({
     826                                        item: this,
     827                                        width: $t.outerWidth(), height: $t.outerHeight(),
     828                                        top: $o.top, left: $o.left
     829                                });
     830                        }
    732831                });
    733832
     
    735834        drag: function(event, ui) {
    736835
    737                 var inst = $(this).data("draggable"), o = inst.options;
    738                 var d = o.snapTolerance;
    739 
    740                 var x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,
     836                var ts, bs, ls, rs, l, r, t, b, i, first,
     837                        inst = $(this).data("ui-draggable"),
     838                        o = inst.options,
     839                        d = o.snapTolerance,
     840                        x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,
    741841                        y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;
    742842
    743                 for (var i = inst.snapElements.length - 1; i >= 0; i--){
    744 
    745                         var l = inst.snapElements[i].left, r = l + inst.snapElements[i].width,
    746                                 t = inst.snapElements[i].top, b = t + inst.snapElements[i].height;
     843                for (i = inst.snapElements.length - 1; i >= 0; i--){
     844
     845                        l = inst.snapElements[i].left;
     846                        r = l + inst.snapElements[i].width;
     847                        t = inst.snapElements[i].top;
     848                        b = t + inst.snapElements[i].height;
    747849
    748850                        //Yes, I know, this is insane ;)
    749851                        if(!((l-d < x1 && x1 < r+d && t-d < y1 && y1 < b+d) || (l-d < x1 && x1 < r+d && t-d < y2 && y2 < b+d) || (l-d < x2 && x2 < r+d && t-d < y1 && y1 < b+d) || (l-d < x2 && x2 < r+d && t-d < y2 && y2 < b+d))) {
    750                                 if(inst.snapElements[i].snapping) (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
     852                                if(inst.snapElements[i].snapping) {
     853                                        (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
     854                                }
    751855                                inst.snapElements[i].snapping = false;
    752856                                continue;
    753857                        }
    754858
    755                         if(o.snapMode != 'inner') {
    756                                 var ts = Math.abs(t - y2) <= d;
    757                                 var bs = Math.abs(b - y1) <= d;
    758                                 var ls = Math.abs(l - x2) <= d;
    759                                 var rs = Math.abs(r - x1) <= d;
    760                                 if(ts) ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
    761                                 if(bs) ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top;
    762                                 if(ls) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;
    763                                 if(rs) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left;
    764                         }
    765 
    766                         var first = (ts || bs || ls || rs);
    767 
    768                         if(o.snapMode != 'outer') {
    769                                 var ts = Math.abs(t - y1) <= d;
    770                                 var bs = Math.abs(b - y2) <= d;
    771                                 var ls = Math.abs(l - x1) <= d;
    772                                 var rs = Math.abs(r - x2) <= d;
    773                                 if(ts) ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top;
    774                                 if(bs) ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
    775                                 if(ls) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left;
    776                                 if(rs) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;
    777                         }
    778 
    779                         if(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first))
     859                        if(o.snapMode !== "inner") {
     860                                ts = Math.abs(t - y2) <= d;
     861                                bs = Math.abs(b - y1) <= d;
     862                                ls = Math.abs(l - x2) <= d;
     863                                rs = Math.abs(r - x1) <= d;
     864                                if(ts) {
     865                                        ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
     866                                }
     867                                if(bs) {
     868                                        ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top;
     869                                }
     870                                if(ls) {
     871                                        ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;
     872                                }
     873                                if(rs) {
     874                                        ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left;
     875                                }
     876                        }
     877
     878                        first = (ts || bs || ls || rs);
     879
     880                        if(o.snapMode !== "outer") {
     881                                ts = Math.abs(t - y1) <= d;
     882                                bs = Math.abs(b - y2) <= d;
     883                                ls = Math.abs(l - x1) <= d;
     884                                rs = Math.abs(r - x2) <= d;
     885                                if(ts) {
     886                                        ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top;
     887                                }
     888                                if(bs) {
     889                                        ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
     890                                }
     891                                if(ls) {
     892                                        ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left;
     893                                }
     894                                if(rs) {
     895                                        ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;
     896                                }
     897                        }
     898
     899                        if(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) {
    780900                                (inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
     901                        }
    781902                        inst.snapElements[i].snapping = (ts || bs || ls || rs || first);
    782903
    783                 };
     904                }
    784905
    785906        }
     
    787908
    788909$.ui.plugin.add("draggable", "stack", {
    789         start: function(event, ui) {
    790 
    791                 var o = $(this).data("draggable").options;
    792 
    793                 var group = $.makeArray($(o.stack)).sort(function(a,b) {
    794                         return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0);
     910        start: function() {
     911                var min,
     912                        o = this.data("ui-draggable").options,
     913                        group = $.makeArray($(o.stack)).sort(function(a,b) {
     914                                return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0);
     915                        });
     916
     917                if (!group.length) { return; }
     918
     919                min = parseInt($(group[0]).css("zIndex"), 10) || 0;
     920                $(group).each(function(i) {
     921                        $(this).css("zIndex", min + i);
    795922                });
    796                 if (!group.length) { return; }
    797                
    798                 var min = parseInt(group[0].style.zIndex) || 0;
    799                 $(group).each(function(i) {
    800                         this.style.zIndex = min + i;
    801                 });
    802 
    803                 this[0].style.zIndex = min + group.length;
    804 
     923                this.css("zIndex", (min + group.length));
    805924        }
    806925});
     
    808927$.ui.plugin.add("draggable", "zIndex", {
    809928        start: function(event, ui) {
    810                 var t = $(ui.helper), o = $(this).data("draggable").options;
    811                 if(t.css("zIndex")) o._zIndex = t.css("zIndex");
    812                 t.css('zIndex', o.zIndex);
     929                var t = $(ui.helper), o = $(this).data("ui-draggable").options;
     930                if(t.css("zIndex")) {
     931                        o._zIndex = t.css("zIndex");
     932                }
     933                t.css("zIndex", o.zIndex);
    813934        },
    814935        stop: function(event, ui) {
    815                 var o = $(this).data("draggable").options;
    816                 if(o._zIndex) $(ui.helper).css('zIndex', o._zIndex);
     936                var o = $(this).data("ui-draggable").options;
     937                if(o._zIndex) {
     938                        $(ui.helper).css("zIndex", o._zIndex);
     939                }
    817940        }
    818941});
Note: See TracChangeset for help on using the changeset viewer.