{"version":3,"file":"js/vendors~active_admin~application~global_dependencies-868d8c3e95cc2970c591.js","mappings":"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","sources":["webpack://marmosetmusic/./node_modules/jquery-ui/ui/data.js","webpack://marmosetmusic/./node_modules/jquery-ui/ui/ie.js","webpack://marmosetmusic/./node_modules/jquery-ui/ui/scroll-parent.js","webpack://marmosetmusic/./node_modules/jquery-ui/ui/version.js","webpack://marmosetmusic/./node_modules/jquery-ui/ui/widget.js","webpack://marmosetmusic/./node_modules/jquery-ui/ui/widgets/mouse.js","webpack://marmosetmusic/./node_modules/jquery-ui/ui/widgets/sortable.js"],"sourcesContent":["/*!\n * jQuery UI :data 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: :data Selector\n//>>group: Core\n//>>description: Selects elements which have data stored under the specified key.\n//>>docs: https://api.jqueryui.com/data-selector/\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nreturn $.extend( $.expr.pseudos, {\n\tdata: $.expr.createPseudo ?\n\t\t$.expr.createPseudo( function( dataName ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn !!$.data( elem, dataName );\n\t\t\t};\n\t\t} ) :\n\n\t\t// Support: jQuery <1.8\n\t\tfunction( elem, i, match ) {\n\t\t\treturn !!$.data( elem, match[ 3 ] );\n\t\t}\n} );\n} );\n","( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\n// This file is deprecated\nreturn $.ui.ie = !!/msie [\\w.]+/.exec( navigator.userAgent.toLowerCase() );\n} );\n","/*!\n * jQuery UI Scroll Parent 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: scrollParent\n//>>group: Core\n//>>description: Get the closest ancestor element that is scrollable.\n//>>docs: https://api.jqueryui.com/scrollParent/\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nreturn $.fn.scrollParent = function( includeHidden ) {\n\tvar position = this.css( \"position\" ),\n\t\texcludeStaticParent = position === \"absolute\",\n\t\toverflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,\n\t\tscrollParent = this.parents().filter( function() {\n\t\t\tvar parent = $( this );\n\t\t\tif ( excludeStaticParent && parent.css( \"position\" ) === \"static\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn overflowRegex.test( parent.css( \"overflow\" ) + parent.css( \"overflow-y\" ) +\n\t\t\t\tparent.css( \"overflow-x\" ) );\n\t\t} ).eq( 0 );\n\n\treturn position === \"fixed\" || !scrollParent.length ?\n\t\t$( this[ 0 ].ownerDocument || document ) :\n\t\tscrollParent;\n};\n\n} );\n","( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\n$.ui = $.ui || {};\n\nreturn $.ui.version = \"1.13.3\";\n\n} );\n","/*!\n * jQuery UI Widget 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Widget\n//>>group: Core\n//>>description: Provides a factory for creating stateful widgets with a common API.\n//>>docs: https://api.jqueryui.com/jQuery.widget/\n//>>demos: https://jqueryui.com/widget/\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nvar widgetUuid = 0;\nvar widgetHasOwnProperty = Array.prototype.hasOwnProperty;\nvar widgetSlice = Array.prototype.slice;\n\n$.cleanData = ( function( orig ) {\n\treturn function( elems ) {\n\t\tvar events, elem, i;\n\t\tfor ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {\n\n\t\t\t// Only trigger remove when necessary to save time\n\t\t\tevents = $._data( elem, \"events\" );\n\t\t\tif ( events && events.remove ) {\n\t\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t\t}\n\t\t}\n\t\torig( elems );\n\t};\n} )( $.cleanData );\n\n$.widget = function( name, base, prototype ) {\n\tvar existingConstructor, constructor, basePrototype;\n\n\t// ProxiedPrototype allows the provided prototype to remain unmodified\n\t// so that it can be used as a mixin for multiple widgets (#8876)\n\tvar proxiedPrototype = {};\n\n\tvar namespace = name.split( \".\" )[ 0 ];\n\tname = name.split( \".\" )[ 1 ];\n\tvar fullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\tif ( Array.isArray( prototype ) ) {\n\t\tprototype = $.extend.apply( null, [ {} ].concat( prototype ) );\n\t}\n\n\t// Create selector for plugin\n\t$.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\n\t\t// Allow instantiation without \"new\" keyword\n\t\tif ( !this || !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// Allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\n\t// Extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\n\t\t// Copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\n\t\t// Track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t} );\n\n\tbasePrototype = new base();\n\n\t// We need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( typeof value !== \"function\" ) {\n\t\t\tproxiedPrototype[ prop ] = value;\n\t\t\treturn;\n\t\t}\n\t\tproxiedPrototype[ prop ] = ( function() {\n\t\t\tfunction _super() {\n\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t}\n\n\t\t\tfunction _superApply( args ) {\n\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t}\n\n\t\t\treturn function() {\n\t\t\t\tvar __super = this._super;\n\t\t\t\tvar __superApply = this._superApply;\n\t\t\t\tvar returnValue;\n\n\t\t\t\tthis._super = _super;\n\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\tthis._super = __super;\n\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\treturn returnValue;\n\t\t\t};\n\t\t} )();\n\t} );\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name\n\t}, proxiedPrototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\twidgetFullName: fullName\n\t} );\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// Redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor,\n\t\t\t\tchild._proto );\n\t\t} );\n\n\t\t// Remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n\n\treturn constructor;\n};\n\n$.widget.extend = function( target ) {\n\tvar input = widgetSlice.call( arguments, 1 );\n\tvar inputIndex = 0;\n\tvar inputLength = input.length;\n\tvar key;\n\tvar value;\n\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) {\n\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\";\n\t\tvar args = widgetSlice.call( arguments, 1 );\n\t\tvar returnValue = this;\n\n\t\tif ( isMethodCall ) {\n\n\t\t\t// If this is an empty collection, we need to have the instance method\n\t\t\t// return undefined instead of the jQuery instance\n\t\t\tif ( !this.length && options === \"instance\" ) {\n\t\t\t\treturnValue = undefined;\n\t\t\t} else {\n\t\t\t\tthis.each( function() {\n\t\t\t\t\tvar methodValue;\n\t\t\t\t\tvar instance = $.data( this, fullName );\n\n\t\t\t\t\tif ( options === \"instance\" ) {\n\t\t\t\t\t\treturnValue = instance;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !instance ) {\n\t\t\t\t\t\treturn $.error( \"cannot call methods on \" + name +\n\t\t\t\t\t\t\t\" prior to initialization; \" +\n\t\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof instance[ options ] !== \"function\" ||\n\t\t\t\t\t\toptions.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name +\n\t\t\t\t\t\t\t\" widget instance\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\n\t\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\t\tmethodValue;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Allow multiple hashes to be passed on init\n\t\t\tif ( args.length ) {\n\t\t\t\toptions = $.widget.extend.apply( null, [ options ].concat( args ) );\n\t\t\t}\n\n\t\t\tthis.each( function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} );\n\t\t\t\t\tif ( instance._init ) {\n\t\t\t\t\t\tinstance._init();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"
\",\n\n\toptions: {\n\t\tclasses: {},\n\t\tdisabled: false,\n\n\t\t// Callbacks\n\t\tcreate: null\n\t},\n\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = widgetUuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\t\tthis.classesElementLookup = {};\n\n\t\tif ( element !== this ) {\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.document = $( element.style ?\n\n\t\t\t\t// Element within the document\n\t\t\t\telement.ownerDocument :\n\n\t\t\t\t// Element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );\n\t\t}\n\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis._create();\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._setOptionDisabled( this.options.disabled );\n\t\t}\n\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\n\t_getCreateOptions: function() {\n\t\treturn {};\n\t},\n\n\t_getCreateEventData: $.noop,\n\n\t_create: $.noop,\n\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tvar that = this;\n\n\t\tthis._destroy();\n\t\t$.each( this.classesElementLookup, function( key, value ) {\n\t\t\tthat._removeClass( value, key );\n\t\t} );\n\n\t\t// We can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeData( this.widgetFullName );\n\t\tthis.widget()\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" );\n\n\t\t// Clean up events and states\n\t\tthis.bindings.off( this.eventNamespace );\n\t},\n\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key;\n\t\tvar parts;\n\t\tvar curOption;\n\t\tvar i;\n\n\t\tif ( arguments.length === 0 ) {\n\n\t\t\t// Don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\n\t\t\t// Handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"classes\" ) {\n\t\t\tthis._setOptionClasses( value );\n\t\t}\n\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._setOptionDisabled( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOptionClasses: function( value ) {\n\t\tvar classKey, elements, currentElements;\n\n\t\tfor ( classKey in value ) {\n\t\t\tcurrentElements = this.classesElementLookup[ classKey ];\n\t\t\tif ( value[ classKey ] === this.options.classes[ classKey ] ||\n\t\t\t\t\t!currentElements ||\n\t\t\t\t\t!currentElements.length ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// We are doing this to create a new jQuery object because the _removeClass() call\n\t\t\t// on the next line is going to destroy the reference to the current elements being\n\t\t\t// tracked. We need to save a copy of this collection so that we can add the new classes\n\t\t\t// below.\n\t\t\telements = $( currentElements.get() );\n\t\t\tthis._removeClass( currentElements, classKey );\n\n\t\t\t// We don't use _addClass() here, because that uses this.options.classes\n\t\t\t// for generating the string of classes. We want to use the value passed in from\n\t\t\t// _setOption(), this is the new value of the classes option which was passed to\n\t\t\t// _setOption(). We pass this value directly to _classes().\n\t\t\telements.addClass( this._classes( {\n\t\t\t\telement: elements,\n\t\t\t\tkeys: classKey,\n\t\t\t\tclasses: value,\n\t\t\t\tadd: true\n\t\t\t} ) );\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._toggleClass( this.widget(), this.widgetFullName + \"-disabled\", null, !!value );\n\n\t\t// If the widget is becoming disabled, then nothing is interactive\n\t\tif ( value ) {\n\t\t\tthis._removeClass( this.hoverable, null, \"ui-state-hover\" );\n\t\t\tthis._removeClass( this.focusable, null, \"ui-state-focus\" );\n\t\t}\n\t},\n\n\tenable: function() {\n\t\treturn this._setOptions( { disabled: false } );\n\t},\n\n\tdisable: function() {\n\t\treturn this._setOptions( { disabled: true } );\n\t},\n\n\t_classes: function( options ) {\n\t\tvar full = [];\n\t\tvar that = this;\n\n\t\toptions = $.extend( {\n\t\t\telement: this.element,\n\t\t\tclasses: this.options.classes || {}\n\t\t}, options );\n\n\t\tfunction bindRemoveEvent() {\n\t\t\tvar nodesToBind = [];\n\n\t\t\toptions.element.each( function( _, element ) {\n\t\t\t\tvar isTracked = $.map( that.classesElementLookup, function( elements ) {\n\t\t\t\t\treturn elements;\n\t\t\t\t} )\n\t\t\t\t\t.some( function( elements ) {\n\t\t\t\t\t\treturn elements.is( element );\n\t\t\t\t\t} );\n\n\t\t\t\tif ( !isTracked ) {\n\t\t\t\t\tnodesToBind.push( element );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthat._on( $( nodesToBind ), {\n\t\t\t\tremove: \"_untrackClassesElement\"\n\t\t\t} );\n\t\t}\n\n\t\tfunction processClassString( classes, checkOption ) {\n\t\t\tvar current, i;\n\t\t\tfor ( i = 0; i < classes.length; i++ ) {\n\t\t\t\tcurrent = that.classesElementLookup[ classes[ i ] ] || $();\n\t\t\t\tif ( options.add ) {\n\t\t\t\t\tbindRemoveEvent();\n\t\t\t\t\tcurrent = $( $.uniqueSort( current.get().concat( options.element.get() ) ) );\n\t\t\t\t} else {\n\t\t\t\t\tcurrent = $( current.not( options.element ).get() );\n\t\t\t\t}\n\t\t\t\tthat.classesElementLookup[ classes[ i ] ] = current;\n\t\t\t\tfull.push( classes[ i ] );\n\t\t\t\tif ( checkOption && options.classes[ classes[ i ] ] ) {\n\t\t\t\t\tfull.push( options.classes[ classes[ i ] ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( options.keys ) {\n\t\t\tprocessClassString( options.keys.match( /\\S+/g ) || [], true );\n\t\t}\n\t\tif ( options.extra ) {\n\t\t\tprocessClassString( options.extra.match( /\\S+/g ) || [] );\n\t\t}\n\n\t\treturn full.join( \" \" );\n\t},\n\n\t_untrackClassesElement: function( event ) {\n\t\tvar that = this;\n\t\t$.each( that.classesElementLookup, function( key, value ) {\n\t\t\tif ( $.inArray( event.target, value ) !== -1 ) {\n\t\t\t\tthat.classesElementLookup[ key ] = $( value.not( event.target ).get() );\n\t\t\t}\n\t\t} );\n\n\t\tthis._off( $( event.target ) );\n\t},\n\n\t_removeClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, false );\n\t},\n\n\t_addClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, true );\n\t},\n\n\t_toggleClass: function( element, keys, extra, add ) {\n\t\tadd = ( typeof add === \"boolean\" ) ? add : extra;\n\t\tvar shift = ( typeof element === \"string\" || element === null ),\n\t\t\toptions = {\n\t\t\t\textra: shift ? keys : extra,\n\t\t\t\tkeys: shift ? element : keys,\n\t\t\t\telement: shift ? this.element : element,\n\t\t\t\tadd: add\n\t\t\t};\n\t\toptions.element.toggleClass( this._classes( options ), add );\n\t\treturn this;\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement;\n\t\tvar instance = this;\n\n\t\t// No suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// No element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\n\t\t\t\t// Allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// Copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^([\\w:-]*)\\s*(.*)$/ );\n\t\t\tvar eventName = match[ 1 ] + instance.eventNamespace;\n\t\t\tvar selector = match[ 2 ];\n\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.on( eventName, selector, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.on( eventName, handlerProxy );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = ( eventName || \"\" ).split( \" \" ).join( this.eventNamespace + \" \" ) +\n\t\t\tthis.eventNamespace;\n\t\telement.off( eventName );\n\n\t\t// Clear the stack to avoid memory leaks (#10056)\n\t\tthis.bindings = $( this.bindings.not( element ).get() );\n\t\tthis.focusable = $( this.focusable.not( element ).get() );\n\t\tthis.hoverable = $( this.hoverable.not( element ).get() );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig;\n\t\tvar callback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\n\t\t// The original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// Copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( typeof callback === \"function\" &&\n\t\t\tcallback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\n\t\tvar hasOptions;\n\t\tvar effectName = !options ?\n\t\t\tmethod :\n\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\tdefaultEffect :\n\t\t\t\toptions.effect || defaultEffect;\n\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t} else if ( options === true ) {\n\t\t\toptions = {};\n\t\t}\n\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\n\t\tif ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue( function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t} );\n\t\t}\n\t};\n} );\n\nreturn $.widget;\n\n} );\n","/*!\n * jQuery UI Mouse 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Mouse\n//>>group: Widgets\n//>>description: Abstracts mouse-based interactions to assist in creating certain widgets.\n//>>docs: https://api.jqueryui.com/mouse/\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"../ie\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nvar mouseHandled = false;\n$( document ).on( \"mouseup\", function() {\n\tmouseHandled = false;\n} );\n\nreturn $.widget( \"ui.mouse\", {\n\tversion: \"1.13.3\",\n\toptions: {\n\t\tcancel: \"input, textarea, button, select, option\",\n\t\tdistance: 1,\n\t\tdelay: 0\n\t},\n\t_mouseInit: function() {\n\t\tvar that = this;\n\n\t\tthis.element\n\t\t\t.on( \"mousedown.\" + this.widgetName, function( event ) {\n\t\t\t\treturn that._mouseDown( event );\n\t\t\t} )\n\t\t\t.on( \"click.\" + this.widgetName, function( event ) {\n\t\t\t\tif ( true === $.data( event.target, that.widgetName + \".preventClickEvent\" ) ) {\n\t\t\t\t\t$.removeData( event.target, that.widgetName + \".preventClickEvent\" );\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\n\t\tthis.started = false;\n\t},\n\n\t// TODO: make sure destroying one instance of mouse doesn't mess with\n\t// other instances of mouse\n\t_mouseDestroy: function() {\n\t\tthis.element.off( \".\" + this.widgetName );\n\t\tif ( this._mouseMoveDelegate ) {\n\t\t\tthis.document\n\t\t\t\t.off( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t\t.off( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\t\t}\n\t},\n\n\t_mouseDown: function( event ) {\n\n\t\t// don't let more than one widget handle mouseStart\n\t\tif ( mouseHandled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._mouseMoved = false;\n\n\t\t// We may have missed mouseup (out of window)\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseUp( event );\n\t\t}\n\n\t\tthis._mouseDownEvent = event;\n\n\t\tvar that = this,\n\t\t\tbtnIsLeft = ( event.which === 1 ),\n\n\t\t\t// event.target.nodeName works around a bug in IE 8 with\n\t\t\t// disabled inputs (#7620)\n\t\t\telIsCancel = ( typeof this.options.cancel === \"string\" && event.target.nodeName ?\n\t\t\t\t$( event.target ).closest( this.options.cancel ).length : false );\n\t\tif ( !btnIsLeft || elIsCancel || !this._mouseCapture( event ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.mouseDelayMet = !this.options.delay;\n\t\tif ( !this.mouseDelayMet ) {\n\t\t\tthis._mouseDelayTimer = setTimeout( function() {\n\t\t\t\tthat.mouseDelayMet = true;\n\t\t\t}, this.options.delay );\n\t\t}\n\n\t\tif ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {\n\t\t\tthis._mouseStarted = ( this._mouseStart( event ) !== false );\n\t\t\tif ( !this._mouseStarted ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// Click event may never have fired (Gecko & Opera)\n\t\tif ( true === $.data( event.target, this.widgetName + \".preventClickEvent\" ) ) {\n\t\t\t$.removeData( event.target, this.widgetName + \".preventClickEvent\" );\n\t\t}\n\n\t\t// These delegates are required to keep context\n\t\tthis._mouseMoveDelegate = function( event ) {\n\t\t\treturn that._mouseMove( event );\n\t\t};\n\t\tthis._mouseUpDelegate = function( event ) {\n\t\t\treturn that._mouseUp( event );\n\t\t};\n\n\t\tthis.document\n\t\t\t.on( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.on( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tevent.preventDefault();\n\n\t\tmouseHandled = true;\n\t\treturn true;\n\t},\n\n\t_mouseMove: function( event ) {\n\n\t\t// Only check for mouseups outside the document if you've moved inside the document\n\t\t// at least once. This prevents the firing of mouseup in the case of IE<9, which will\n\t\t// fire a mousemove event if content is placed under the cursor. See #7778\n\t\t// Support: IE <9\n\t\tif ( this._mouseMoved ) {\n\n\t\t\t// IE mouseup check - mouseup happened when mouse was out of window\n\t\t\tif ( $.ui.ie && ( !document.documentMode || document.documentMode < 9 ) &&\n\t\t\t\t\t!event.button ) {\n\t\t\t\treturn this._mouseUp( event );\n\n\t\t\t// Iframe mouseup check - mouseup occurred in another document\n\t\t\t} else if ( !event.which ) {\n\n\t\t\t\t// Support: Safari <=8 - 9\n\t\t\t\t// Safari sets which to 0 if you press any of the following keys\n\t\t\t\t// during a drag (#14461)\n\t\t\t\tif ( event.originalEvent.altKey || event.originalEvent.ctrlKey ||\n\t\t\t\t\t\tevent.originalEvent.metaKey || event.originalEvent.shiftKey ) {\n\t\t\t\t\tthis.ignoreMissingWhich = true;\n\t\t\t\t} else if ( !this.ignoreMissingWhich ) {\n\t\t\t\t\treturn this._mouseUp( event );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( event.which || event.button ) {\n\t\t\tthis._mouseMoved = true;\n\t\t}\n\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseDrag( event );\n\t\t\treturn event.preventDefault();\n\t\t}\n\n\t\tif ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {\n\t\t\tthis._mouseStarted =\n\t\t\t\t( this._mouseStart( this._mouseDownEvent, event ) !== false );\n\t\t\tif ( this._mouseStarted ) {\n\t\t\t\tthis._mouseDrag( event );\n\t\t\t} else {\n\t\t\t\tthis._mouseUp( event );\n\t\t\t}\n\t\t}\n\n\t\treturn !this._mouseStarted;\n\t},\n\n\t_mouseUp: function( event ) {\n\t\tthis.document\n\t\t\t.off( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.off( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseStarted = false;\n\n\t\t\tif ( event.target === this._mouseDownEvent.target ) {\n\t\t\t\t$.data( event.target, this.widgetName + \".preventClickEvent\", true );\n\t\t\t}\n\n\t\t\tthis._mouseStop( event );\n\t\t}\n\n\t\tif ( this._mouseDelayTimer ) {\n\t\t\tclearTimeout( this._mouseDelayTimer );\n\t\t\tdelete this._mouseDelayTimer;\n\t\t}\n\n\t\tthis.ignoreMissingWhich = false;\n\t\tmouseHandled = false;\n\t\tevent.preventDefault();\n\t},\n\n\t_mouseDistanceMet: function( event ) {\n\t\treturn ( Math.max(\n\t\t\t\tMath.abs( this._mouseDownEvent.pageX - event.pageX ),\n\t\t\t\tMath.abs( this._mouseDownEvent.pageY - event.pageY )\n\t\t\t) >= this.options.distance\n\t\t);\n\t},\n\n\t_mouseDelayMet: function( /* event */ ) {\n\t\treturn this.mouseDelayMet;\n\t},\n\n\t// These are placeholder methods, to be overriden by extending plugin\n\t_mouseStart: function( /* event */ ) {},\n\t_mouseDrag: function( /* event */ ) {},\n\t_mouseStop: function( /* event */ ) {},\n\t_mouseCapture: function( /* event */ ) {\n\t\treturn true;\n\t}\n} );\n\n} );\n","/*!\n * jQuery UI Sortable 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Sortable\n//>>group: Interactions\n//>>description: Enables items in a list to be sorted using the mouse.\n//>>docs: https://api.jqueryui.com/sortable/\n//>>demos: https://jqueryui.com/sortable/\n//>>css.structure: ../../themes/base/sortable.css\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"./mouse\",\n\t\t\t\"../data\",\n\t\t\t\"../ie\",\n\t\t\t\"../scroll-parent\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nreturn $.widget( \"ui.sortable\", $.ui.mouse, {\n\tversion: \"1.13.3\",\n\twidgetEventPrefix: \"sort\",\n\tready: false,\n\toptions: {\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectWith: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tdropOnEmpty: true,\n\t\tforcePlaceholderSize: false,\n\t\tforceHelperSize: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\titems: \"> *\",\n\t\topacity: false,\n\t\tplaceholder: false,\n\t\trevert: false,\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tscope: \"default\",\n\t\ttolerance: \"intersect\",\n\t\tzIndex: 1000,\n\n\t\t// Callbacks\n\t\tactivate: null,\n\t\tbeforeStop: null,\n\t\tchange: null,\n\t\tdeactivate: null,\n\t\tout: null,\n\t\tover: null,\n\t\treceive: null,\n\t\tremove: null,\n\t\tsort: null,\n\t\tstart: null,\n\t\tstop: null,\n\t\tupdate: null\n\t},\n\n\t_isOverAxis: function( x, reference, size ) {\n\t\treturn ( x >= reference ) && ( x < ( reference + size ) );\n\t},\n\n\t_isFloating: function( item ) {\n\t\treturn ( /left|right/ ).test( item.css( \"float\" ) ) ||\n\t\t\t( /inline|table-cell/ ).test( item.css( \"display\" ) );\n\t},\n\n\t_create: function() {\n\t\tthis.containerCache = {};\n\t\tthis._addClass( \"ui-sortable\" );\n\n\t\t//Get the items\n\t\tthis.refresh();\n\n\t\t//Let's determine the parent's offset\n\t\tthis.offset = this.element.offset();\n\n\t\t//Initialize mouse events for interaction\n\t\tthis._mouseInit();\n\n\t\tthis._setHandleClassName();\n\n\t\t//We're ready to go\n\t\tthis.ready = true;\n\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"handle\" ) {\n\t\t\tthis._setHandleClassName();\n\t\t}\n\t},\n\n\t_setHandleClassName: function() {\n\t\tvar that = this;\n\t\tthis._removeClass( this.element.find( \".ui-sortable-handle\" ), \"ui-sortable-handle\" );\n\t\t$.each( this.items, function() {\n\t\t\tthat._addClass(\n\t\t\t\tthis.instance.options.handle ?\n\t\t\t\t\tthis.item.find( this.instance.options.handle ) :\n\t\t\t\t\tthis.item,\n\t\t\t\t\"ui-sortable-handle\"\n\t\t\t);\n\t\t} );\n\t},\n\n\t_destroy: function() {\n\t\tthis._mouseDestroy();\n\n\t\tfor ( var i = this.items.length - 1; i >= 0; i-- ) {\n\t\t\tthis.items[ i ].item.removeData( this.widgetName + \"-item\" );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_mouseCapture: function( event, overrideHandle ) {\n\t\tvar currentItem = null,\n\t\t\tvalidHandle = false,\n\t\t\tthat = this;\n\n\t\tif ( this.reverting ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( this.options.disabled || this.options.type === \"static\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t//We have to refresh the items data once first\n\t\tthis._refreshItems( event );\n\n\t\t//Find out if the clicked node (or one of its parents) is a actual item in this.items\n\t\t$( event.target ).parents().each( function() {\n\t\t\tif ( $.data( this, that.widgetName + \"-item\" ) === that ) {\n\t\t\t\tcurrentItem = $( this );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} );\n\t\tif ( $.data( event.target, that.widgetName + \"-item\" ) === that ) {\n\t\t\tcurrentItem = $( event.target );\n\t\t}\n\n\t\tif ( !currentItem ) {\n\t\t\treturn false;\n\t\t}\n\t\tif ( this.options.handle && !overrideHandle ) {\n\t\t\t$( this.options.handle, currentItem ).find( \"*\" ).addBack().each( function() {\n\t\t\t\tif ( this === event.target ) {\n\t\t\t\t\tvalidHandle = true;\n\t\t\t\t}\n\t\t\t} );\n\t\t\tif ( !validHandle ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tthis.currentItem = currentItem;\n\t\tthis._removeCurrentsFromItems();\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function( event, overrideHandle, noActivation ) {\n\n\t\tvar i, body,\n\t\t\to = this.options;\n\n\t\tthis.currentContainer = this;\n\n\t\t//We only need to call refreshPositions, because the refreshItems call has been moved to\n\t\t// mouseCapture\n\t\tthis.refreshPositions();\n\n\t\t//Prepare the dragged items parent\n\t\tthis.appendTo = $( o.appendTo !== \"parent\" ?\n\t\t\t\to.appendTo :\n\t\t\t\tthis.currentItem.parent() );\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper( event );\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.currentItem.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t$.extend( this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\n\t\t\t// This is a relative to absolute position minus the actual position calculation -\n\t\t\t// only used for relative positioned helper\n\t\t\trelative: this._getRelativeOffset()\n\t\t} );\n\n\t\t// After we get the helper offset, but before we get the parent offset we can\n\t\t// change the helper's position to absolute\n\t\t// TODO: Still need to figure out a way to make relative sorting possible\n\t\tthis.helper.css( \"position\", \"absolute\" );\n\t\tthis.cssPosition = this.helper.css( \"position\" );\n\n\t\t//Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\n\t\tif ( o.cursorAt ) {\n\t\t\tthis._adjustOffsetFromHelper( o.cursorAt );\n\t\t}\n\n\t\t//Cache the former DOM position\n\t\tthis.domPosition = {\n\t\t\tprev: this.currentItem.prev()[ 0 ],\n\t\t\tparent: this.currentItem.parent()[ 0 ]\n\t\t};\n\n\t\t// If the helper is not the original, hide the original so it's not playing any role during\n\t\t// the drag, won't cause anything bad this way\n\t\tif ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {\n\t\t\tthis.currentItem.hide();\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthis._createPlaceholder();\n\n\t\t//Get the next scrolling parent\n\t\tthis.scrollParent = this.placeholder.scrollParent();\n\n\t\t$.extend( this.offset, {\n\t\t\tparent: this._getParentOffset()\n\t\t} );\n\n\t\t//Set a containment if given in the options\n\t\tif ( o.containment ) {\n\t\t\tthis._setContainment();\n\t\t}\n\n\t\tif ( o.cursor && o.cursor !== \"auto\" ) { // cursor option\n\t\t\tbody = this.document.find( \"body\" );\n\n\t\t\t// Support: IE\n\t\t\tthis.storedCursor = body.css( \"cursor\" );\n\t\t\tbody.css( \"cursor\", o.cursor );\n\n\t\t\tthis.storedStylesheet =\n\t\t\t\t$( \"\" ).appendTo( body );\n\t\t}\n\n\t\t// We need to make sure to grab the zIndex before setting the\n\t\t// opacity, because setting the opacity to anything lower than 1\n\t\t// causes the zIndex to change from \"auto\" to 0.\n\t\tif ( o.zIndex ) { // zIndex option\n\t\t\tif ( this.helper.css( \"zIndex\" ) ) {\n\t\t\t\tthis._storedZIndex = this.helper.css( \"zIndex\" );\n\t\t\t}\n\t\t\tthis.helper.css( \"zIndex\", o.zIndex );\n\t\t}\n\n\t\tif ( o.opacity ) { // opacity option\n\t\t\tif ( this.helper.css( \"opacity\" ) ) {\n\t\t\t\tthis._storedOpacity = this.helper.css( \"opacity\" );\n\t\t\t}\n\t\t\tthis.helper.css( \"opacity\", o.opacity );\n\t\t}\n\n\t\t//Prepare scrolling\n\t\tif ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\tthis.scrollParent[ 0 ].tagName !== \"HTML\" ) {\n\t\t\tthis.overflowOffset = this.scrollParent.offset();\n\t\t}\n\n\t\t//Call callbacks\n\t\tthis._trigger( \"start\", event, this._uiHash() );\n\n\t\t//Recache the helper size\n\t\tif ( !this._preserveHelperProportions ) {\n\t\t\tthis._cacheHelperProportions();\n\t\t}\n\n\t\t//Post \"activate\" events to possible containers\n\t\tif ( !noActivation ) {\n\t\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tthis.containers[ i ]._trigger( \"activate\", event, this._uiHash( this ) );\n\t\t\t}\n\t\t}\n\n\t\t//Prepare possible droppables\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.current = this;\n\t\t}\n\n\t\tif ( $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( this, event );\n\t\t}\n\n\t\tthis.dragging = true;\n\n\t\tthis._addClass( this.helper, \"ui-sortable-helper\" );\n\n\t\t//Move the helper, if needed\n\t\tif ( !this.helper.parent().is( this.appendTo ) ) {\n\t\t\tthis.helper.detach().appendTo( this.appendTo );\n\n\t\t\t//Update position\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\t//Generate the original position\n\t\tthis.position = this.originalPosition = this._generatePosition( event );\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\t\tthis.lastPositionAbs = this.positionAbs = this._convertPositionTo( \"absolute\" );\n\n\t\tthis._mouseDrag( event );\n\n\t\treturn true;\n\n\t},\n\n\t_scroll: function( event ) {\n\t\tvar o = this.options,\n\t\t\tscrolled = false;\n\n\t\tif ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\tthis.scrollParent[ 0 ].tagName !== \"HTML\" ) {\n\n\t\t\tif ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) -\n\t\t\t\t\tevent.pageY < o.scrollSensitivity ) {\n\t\t\t\tthis.scrollParent[ 0 ].scrollTop =\n\t\t\t\t\tscrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed;\n\t\t\t} else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) {\n\t\t\t\tthis.scrollParent[ 0 ].scrollTop =\n\t\t\t\t\tscrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed;\n\t\t\t}\n\n\t\t\tif ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) -\n\t\t\t\t\tevent.pageX < o.scrollSensitivity ) {\n\t\t\t\tthis.scrollParent[ 0 ].scrollLeft = scrolled =\n\t\t\t\t\tthis.scrollParent[ 0 ].scrollLeft + o.scrollSpeed;\n\t\t\t} else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) {\n\t\t\t\tthis.scrollParent[ 0 ].scrollLeft = scrolled =\n\t\t\t\t\tthis.scrollParent[ 0 ].scrollLeft - o.scrollSpeed;\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) {\n\t\t\t\tscrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed );\n\t\t\t} else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) <\n\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\tscrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed );\n\t\t\t}\n\n\t\t\tif ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) {\n\t\t\t\tscrolled = this.document.scrollLeft(\n\t\t\t\t\tthis.document.scrollLeft() - o.scrollSpeed\n\t\t\t\t);\n\t\t\t} else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) <\n\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\tscrolled = this.document.scrollLeft(\n\t\t\t\t\tthis.document.scrollLeft() + o.scrollSpeed\n\t\t\t\t);\n\t\t\t}\n\n\t\t}\n\n\t\treturn scrolled;\n\t},\n\n\t_mouseDrag: function( event ) {\n\t\tvar i, item, itemElement, intersection,\n\t\t\to = this.options;\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition( event );\n\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\n\n\t\t//Set the helper position\n\t\tif ( !this.options.axis || this.options.axis !== \"y\" ) {\n\t\t\tthis.helper[ 0 ].style.left = this.position.left + \"px\";\n\t\t}\n\t\tif ( !this.options.axis || this.options.axis !== \"x\" ) {\n\t\t\tthis.helper[ 0 ].style.top = this.position.top + \"px\";\n\t\t}\n\n\t\t//Do scrolling\n\t\tif ( o.scroll ) {\n\t\t\tif ( this._scroll( event ) !== false ) {\n\n\t\t\t\t//Update item positions used in position checks\n\t\t\t\tthis._refreshItemPositions( true );\n\n\t\t\t\tif ( $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t\t\t$.ui.ddmanager.prepareOffsets( this, event );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.dragDirection = {\n\t\t\tvertical: this._getDragVerticalDirection(),\n\t\t\thorizontal: this._getDragHorizontalDirection()\n\t\t};\n\n\t\t//Rearrange\n\t\tfor ( i = this.items.length - 1; i >= 0; i-- ) {\n\n\t\t\t//Cache variables and intersection, continue if no intersection\n\t\t\titem = this.items[ i ];\n\t\t\titemElement = item.item[ 0 ];\n\t\t\tintersection = this._intersectsWithPointer( item );\n\t\t\tif ( !intersection ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Only put the placeholder inside the current Container, skip all\n\t\t\t// items from other containers. This works because when moving\n\t\t\t// an item from one container to another the\n\t\t\t// currentContainer is switched before the placeholder is moved.\n\t\t\t//\n\t\t\t// Without this, moving items in \"sub-sortables\" can cause\n\t\t\t// the placeholder to jitter between the outer and inner container.\n\t\t\tif ( item.instance !== this.currentContainer ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Cannot intersect with itself\n\t\t\t// no useless actions that have been done before\n\t\t\t// no action if the item moved is the parent of the item checked\n\t\t\tif ( itemElement !== this.currentItem[ 0 ] &&\n\t\t\t\tthis.placeholder[ intersection === 1 ?\n\t\t\t\t\"next\" : \"prev\" ]()[ 0 ] !== itemElement &&\n\t\t\t\t!$.contains( this.placeholder[ 0 ], itemElement ) &&\n\t\t\t\t( this.options.type === \"semi-dynamic\" ?\n\t\t\t\t\t!$.contains( this.element[ 0 ], itemElement ) :\n\t\t\t\t\ttrue\n\t\t\t\t)\n\t\t\t) {\n\n\t\t\t\tthis.direction = intersection === 1 ? \"down\" : \"up\";\n\n\t\t\t\tif ( this.options.tolerance === \"pointer\" ||\n\t\t\t\t\t\tthis._intersectsWithSides( item ) ) {\n\t\t\t\t\tthis._rearrange( event, item );\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis._trigger( \"change\", event, this._uiHash() );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tthis._contactContainers( event );\n\n\t\t//Interconnect with droppables\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.drag( this, event );\n\t\t}\n\n\t\t//Call callbacks\n\t\tthis._trigger( \"sort\", event, this._uiHash() );\n\n\t\tthis.lastPositionAbs = this.positionAbs;\n\t\treturn false;\n\n\t},\n\n\t_mouseStop: function( event, noPropagation ) {\n\n\t\tif ( !event ) {\n\t\t\treturn;\n\t\t}\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tif ( $.ui.ddmanager && !this.options.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.drop( this, event );\n\t\t}\n\n\t\tif ( this.options.revert ) {\n\t\t\tvar that = this,\n\t\t\t\tcur = this.placeholder.offset(),\n\t\t\t\taxis = this.options.axis,\n\t\t\t\tanimation = {};\n\n\t\t\tif ( !axis || axis === \"x\" ) {\n\t\t\t\tanimation.left = cur.left - this.offset.parent.left - this.margins.left +\n\t\t\t\t\t( this.offsetParent[ 0 ] === this.document[ 0 ].body ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tthis.offsetParent[ 0 ].scrollLeft\n\t\t\t\t\t);\n\t\t\t}\n\t\t\tif ( !axis || axis === \"y\" ) {\n\t\t\t\tanimation.top = cur.top - this.offset.parent.top - this.margins.top +\n\t\t\t\t\t( this.offsetParent[ 0 ] === this.document[ 0 ].body ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tthis.offsetParent[ 0 ].scrollTop\n\t\t\t\t\t);\n\t\t\t}\n\t\t\tthis.reverting = true;\n\t\t\t$( this.helper ).animate(\n\t\t\t\tanimation,\n\t\t\t\tparseInt( this.options.revert, 10 ) || 500,\n\t\t\t\tfunction() {\n\t\t\t\t\tthat._clear( event );\n\t\t\t\t}\n\t\t\t);\n\t\t} else {\n\t\t\tthis._clear( event, noPropagation );\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tcancel: function() {\n\n\t\tif ( this.dragging ) {\n\n\t\t\tthis._mouseUp( new $.Event( \"mouseup\", { target: null } ) );\n\n\t\t\tif ( this.options.helper === \"original\" ) {\n\t\t\t\tthis.currentItem.css( this._storedCSS );\n\t\t\t\tthis._removeClass( this.currentItem, \"ui-sortable-helper\" );\n\t\t\t} else {\n\t\t\t\tthis.currentItem.show();\n\t\t\t}\n\n\t\t\t//Post deactivating events to containers\n\t\t\tfor ( var i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tthis.containers[ i ]._trigger( \"deactivate\", null, this._uiHash( this ) );\n\t\t\t\tif ( this.containers[ i ].containerCache.over ) {\n\t\t\t\t\tthis.containers[ i ]._trigger( \"out\", null, this._uiHash( this ) );\n\t\t\t\t\tthis.containers[ i ].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.placeholder ) {\n\n\t\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,\n\t\t\t// it unbinds ALL events from the original node!\n\t\t\tif ( this.placeholder[ 0 ].parentNode ) {\n\t\t\t\tthis.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );\n\t\t\t}\n\t\t\tif ( this.options.helper !== \"original\" && this.helper &&\n\t\t\t\t\tthis.helper[ 0 ].parentNode ) {\n\t\t\t\tthis.helper.remove();\n\t\t\t}\n\n\t\t\t$.extend( this, {\n\t\t\t\thelper: null,\n\t\t\t\tdragging: false,\n\t\t\t\treverting: false,\n\t\t\t\t_noFinalSort: null\n\t\t\t} );\n\n\t\t\tif ( this.domPosition.prev ) {\n\t\t\t\t$( this.domPosition.prev ).after( this.currentItem );\n\t\t\t} else {\n\t\t\t\t$( this.domPosition.parent ).prepend( this.currentItem );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tserialize: function( o ) {\n\n\t\tvar items = this._getItemsAsjQuery( o && o.connected ),\n\t\t\tstr = [];\n\t\to = o || {};\n\n\t\t$( items ).each( function() {\n\t\t\tvar res = ( $( o.item || this ).attr( o.attribute || \"id\" ) || \"\" )\n\t\t\t\t.match( o.expression || ( /(.+)[\\-=_](.+)/ ) );\n\t\t\tif ( res ) {\n\t\t\t\tstr.push(\n\t\t\t\t\t( o.key || res[ 1 ] + \"[]\" ) +\n\t\t\t\t\t\"=\" + ( o.key && o.expression ? res[ 1 ] : res[ 2 ] ) );\n\t\t\t}\n\t\t} );\n\n\t\tif ( !str.length && o.key ) {\n\t\t\tstr.push( o.key + \"=\" );\n\t\t}\n\n\t\treturn str.join( \"&\" );\n\n\t},\n\n\ttoArray: function( o ) {\n\n\t\tvar items = this._getItemsAsjQuery( o && o.connected ),\n\t\t\tret = [];\n\n\t\to = o || {};\n\n\t\titems.each( function() {\n\t\t\tret.push( $( o.item || this ).attr( o.attribute || \"id\" ) || \"\" );\n\t\t} );\n\t\treturn ret;\n\n\t},\n\n\t/* Be careful with the following core functions */\n\t_intersectsWith: function( item ) {\n\n\t\tvar x1 = this.positionAbs.left,\n\t\t\tx2 = x1 + this.helperProportions.width,\n\t\t\ty1 = this.positionAbs.top,\n\t\t\ty2 = y1 + this.helperProportions.height,\n\t\t\tl = item.left,\n\t\t\tr = l + item.width,\n\t\t\tt = item.top,\n\t\t\tb = t + item.height,\n\t\t\tdyClick = this.offset.click.top,\n\t\t\tdxClick = this.offset.click.left,\n\t\t\tisOverElementHeight = ( this.options.axis === \"x\" ) || ( ( y1 + dyClick ) > t &&\n\t\t\t\t( y1 + dyClick ) < b ),\n\t\t\tisOverElementWidth = ( this.options.axis === \"y\" ) || ( ( x1 + dxClick ) > l &&\n\t\t\t\t( x1 + dxClick ) < r ),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth;\n\n\t\tif ( this.options.tolerance === \"pointer\" ||\n\t\t\tthis.options.forcePointerForContainers ||\n\t\t\t( this.options.tolerance !== \"pointer\" &&\n\t\t\t\tthis.helperProportions[ this.floating ? \"width\" : \"height\" ] >\n\t\t\t\titem[ this.floating ? \"width\" : \"height\" ] )\n\t\t) {\n\t\t\treturn isOverElement;\n\t\t} else {\n\n\t\t\treturn ( l < x1 + ( this.helperProportions.width / 2 ) && // Right Half\n\t\t\t\tx2 - ( this.helperProportions.width / 2 ) < r && // Left Half\n\t\t\t\tt < y1 + ( this.helperProportions.height / 2 ) && // Bottom Half\n\t\t\t\ty2 - ( this.helperProportions.height / 2 ) < b ); // Top Half\n\n\t\t}\n\t},\n\n\t_intersectsWithPointer: function( item ) {\n\t\tvar verticalDirection, horizontalDirection,\n\t\t\tisOverElementHeight = ( this.options.axis === \"x\" ) ||\n\t\t\t\tthis._isOverAxis(\n\t\t\t\t\tthis.positionAbs.top + this.offset.click.top, item.top, item.height ),\n\t\t\tisOverElementWidth = ( this.options.axis === \"y\" ) ||\n\t\t\t\tthis._isOverAxis(\n\t\t\t\t\tthis.positionAbs.left + this.offset.click.left, item.left, item.width ),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth;\n\n\t\tif ( !isOverElement ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tverticalDirection = this.dragDirection.vertical;\n\t\thorizontalDirection = this.dragDirection.horizontal;\n\n\t\treturn this.floating ?\n\t\t\t( ( horizontalDirection === \"right\" || verticalDirection === \"down\" ) ? 2 : 1 ) :\n\t\t\t( verticalDirection && ( verticalDirection === \"down\" ? 2 : 1 ) );\n\n\t},\n\n\t_intersectsWithSides: function( item ) {\n\n\t\tvar isOverBottomHalf = this._isOverAxis( this.positionAbs.top +\n\t\t\t\tthis.offset.click.top, item.top + ( item.height / 2 ), item.height ),\n\t\t\tisOverRightHalf = this._isOverAxis( this.positionAbs.left +\n\t\t\t\tthis.offset.click.left, item.left + ( item.width / 2 ), item.width ),\n\t\t\tverticalDirection = this.dragDirection.vertical,\n\t\t\thorizontalDirection = this.dragDirection.horizontal;\n\n\t\tif ( this.floating && horizontalDirection ) {\n\t\t\treturn ( ( horizontalDirection === \"right\" && isOverRightHalf ) ||\n\t\t\t\t( horizontalDirection === \"left\" && !isOverRightHalf ) );\n\t\t} else {\n\t\t\treturn verticalDirection && ( ( verticalDirection === \"down\" && isOverBottomHalf ) ||\n\t\t\t\t( verticalDirection === \"up\" && !isOverBottomHalf ) );\n\t\t}\n\n\t},\n\n\t_getDragVerticalDirection: function() {\n\t\tvar delta = this.positionAbs.top - this.lastPositionAbs.top;\n\t\treturn delta !== 0 && ( delta > 0 ? \"down\" : \"up\" );\n\t},\n\n\t_getDragHorizontalDirection: function() {\n\t\tvar delta = this.positionAbs.left - this.lastPositionAbs.left;\n\t\treturn delta !== 0 && ( delta > 0 ? \"right\" : \"left\" );\n\t},\n\n\trefresh: function( event ) {\n\t\tthis._refreshItems( event );\n\t\tthis._setHandleClassName();\n\t\tthis.refreshPositions();\n\t\treturn this;\n\t},\n\n\t_connectWith: function() {\n\t\tvar options = this.options;\n\t\treturn options.connectWith.constructor === String ?\n\t\t\t[ options.connectWith ] :\n\t\t\toptions.connectWith;\n\t},\n\n\t_getItemsAsjQuery: function( connected ) {\n\n\t\tvar i, j, cur, inst,\n\t\t\titems = [],\n\t\t\tqueries = [],\n\t\t\tconnectWith = this._connectWith();\n\n\t\tif ( connectWith && connected ) {\n\t\t\tfor ( i = connectWith.length - 1; i >= 0; i-- ) {\n\t\t\t\tcur = $( connectWith[ i ], this.document[ 0 ] );\n\t\t\t\tfor ( j = cur.length - 1; j >= 0; j-- ) {\n\t\t\t\t\tinst = $.data( cur[ j ], this.widgetFullName );\n\t\t\t\t\tif ( inst && inst !== this && !inst.options.disabled ) {\n\t\t\t\t\t\tqueries.push( [ typeof inst.options.items === \"function\" ?\n\t\t\t\t\t\t\tinst.options.items.call( inst.element ) :\n\t\t\t\t\t\t\t$( inst.options.items, inst.element )\n\t\t\t\t\t\t\t\t.not( \".ui-sortable-helper\" )\n\t\t\t\t\t\t\t\t.not( \".ui-sortable-placeholder\" ), inst ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tqueries.push( [ typeof this.options.items === \"function\" ?\n\t\t\tthis.options.items\n\t\t\t\t.call( this.element, null, { options: this.options, item: this.currentItem } ) :\n\t\t\t$( this.options.items, this.element )\n\t\t\t\t.not( \".ui-sortable-helper\" )\n\t\t\t\t.not( \".ui-sortable-placeholder\" ), this ] );\n\n\t\tfunction addItems() {\n\t\t\titems.push( this );\n\t\t}\n\t\tfor ( i = queries.length - 1; i >= 0; i-- ) {\n\t\t\tqueries[ i ][ 0 ].each( addItems );\n\t\t}\n\n\t\treturn $( items );\n\n\t},\n\n\t_removeCurrentsFromItems: function() {\n\n\t\tvar list = this.currentItem.find( \":data(\" + this.widgetName + \"-item)\" );\n\n\t\tthis.items = $.grep( this.items, function( item ) {\n\t\t\tfor ( var j = 0; j < list.length; j++ ) {\n\t\t\t\tif ( list[ j ] === item.item[ 0 ] ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} );\n\n\t},\n\n\t_refreshItems: function( event ) {\n\n\t\tthis.items = [];\n\t\tthis.containers = [ this ];\n\n\t\tvar i, j, cur, inst, targetData, _queries, item, queriesLength,\n\t\t\titems = this.items,\n\t\t\tqueries = [ [ typeof this.options.items === \"function\" ?\n\t\t\t\tthis.options.items.call( this.element[ 0 ], event, { item: this.currentItem } ) :\n\t\t\t\t$( this.options.items, this.element ), this ] ],\n\t\t\tconnectWith = this._connectWith();\n\n\t\t//Shouldn't be run the first time through due to massive slow-down\n\t\tif ( connectWith && this.ready ) {\n\t\t\tfor ( i = connectWith.length - 1; i >= 0; i-- ) {\n\t\t\t\tcur = $( connectWith[ i ], this.document[ 0 ] );\n\t\t\t\tfor ( j = cur.length - 1; j >= 0; j-- ) {\n\t\t\t\t\tinst = $.data( cur[ j ], this.widgetFullName );\n\t\t\t\t\tif ( inst && inst !== this && !inst.options.disabled ) {\n\t\t\t\t\t\tqueries.push( [ typeof inst.options.items === \"function\" ?\n\t\t\t\t\t\t\tinst.options.items\n\t\t\t\t\t\t\t\t.call( inst.element[ 0 ], event, { item: this.currentItem } ) :\n\t\t\t\t\t\t\t$( inst.options.items, inst.element ), inst ] );\n\t\t\t\t\t\tthis.containers.push( inst );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor ( i = queries.length - 1; i >= 0; i-- ) {\n\t\t\ttargetData = queries[ i ][ 1 ];\n\t\t\t_queries = queries[ i ][ 0 ];\n\n\t\t\tfor ( j = 0, queriesLength = _queries.length; j < queriesLength; j++ ) {\n\t\t\t\titem = $( _queries[ j ] );\n\n\t\t\t\t// Data for target checking (mouse manager)\n\t\t\t\titem.data( this.widgetName + \"-item\", targetData );\n\n\t\t\t\titems.push( {\n\t\t\t\t\titem: item,\n\t\t\t\t\tinstance: targetData,\n\t\t\t\t\twidth: 0, height: 0,\n\t\t\t\t\tleft: 0, top: 0\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t},\n\n\t_refreshItemPositions: function( fast ) {\n\t\tvar i, item, t, p;\n\n\t\tfor ( i = this.items.length - 1; i >= 0; i-- ) {\n\t\t\titem = this.items[ i ];\n\n\t\t\t//We ignore calculating positions of all connected containers when we're not over them\n\t\t\tif ( this.currentContainer && item.instance !== this.currentContainer &&\n\t\t\t\t\titem.item[ 0 ] !== this.currentItem[ 0 ] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tt = this.options.toleranceElement ?\n\t\t\t\t$( this.options.toleranceElement, item.item ) :\n\t\t\t\titem.item;\n\n\t\t\tif ( !fast ) {\n\t\t\t\titem.width = t.outerWidth();\n\t\t\t\titem.height = t.outerHeight();\n\t\t\t}\n\n\t\t\tp = t.offset();\n\t\t\titem.left = p.left;\n\t\t\titem.top = p.top;\n\t\t}\n\t},\n\n\trefreshPositions: function( fast ) {\n\n\t\t// Determine whether items are being displayed horizontally\n\t\tthis.floating = this.items.length ?\n\t\t\tthis.options.axis === \"x\" || this._isFloating( this.items[ 0 ].item ) :\n\t\t\tfalse;\n\n\t\t// This has to be redone because due to the item being moved out/into the offsetParent,\n\t\t// the offsetParent's position will change\n\t\tif ( this.offsetParent && this.helper ) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\tthis._refreshItemPositions( fast );\n\n\t\tvar i, p;\n\n\t\tif ( this.options.custom && this.options.custom.refreshContainers ) {\n\t\t\tthis.options.custom.refreshContainers.call( this );\n\t\t} else {\n\t\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tp = this.containers[ i ].element.offset();\n\t\t\t\tthis.containers[ i ].containerCache.left = p.left;\n\t\t\t\tthis.containers[ i ].containerCache.top = p.top;\n\t\t\t\tthis.containers[ i ].containerCache.width =\n\t\t\t\t\tthis.containers[ i ].element.outerWidth();\n\t\t\t\tthis.containers[ i ].containerCache.height =\n\t\t\t\t\tthis.containers[ i ].element.outerHeight();\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_createPlaceholder: function( that ) {\n\t\tthat = that || this;\n\t\tvar className, nodeName,\n\t\t\to = that.options;\n\n\t\tif ( !o.placeholder || o.placeholder.constructor === String ) {\n\t\t\tclassName = o.placeholder;\n\t\t\tnodeName = that.currentItem[ 0 ].nodeName.toLowerCase();\n\t\t\to.placeholder = {\n\t\t\t\telement: function() {\n\n\t\t\t\t\tvar element = $( \"<\" + nodeName + \">\", that.document[ 0 ] );\n\n\t\t\t\t\tthat._addClass( element, \"ui-sortable-placeholder\",\n\t\t\t\t\t\t\tclassName || that.currentItem[ 0 ].className )\n\t\t\t\t\t\t._removeClass( element, \"ui-sortable-helper\" );\n\n\t\t\t\t\tif ( nodeName === \"tbody\" ) {\n\t\t\t\t\t\tthat._createTrPlaceholder(\n\t\t\t\t\t\t\tthat.currentItem.find( \"tr\" ).eq( 0 ),\n\t\t\t\t\t\t\t$( \"\", that.document[ 0 ] ).appendTo( element )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if ( nodeName === \"tr\" ) {\n\t\t\t\t\t\tthat._createTrPlaceholder( that.currentItem, element );\n\t\t\t\t\t} else if ( nodeName === \"img\" ) {\n\t\t\t\t\t\telement.attr( \"src\", that.currentItem.attr( \"src\" ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !className ) {\n\t\t\t\t\t\telement.css( \"visibility\", \"hidden\" );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn element;\n\t\t\t\t},\n\t\t\t\tupdate: function( container, p ) {\n\n\t\t\t\t\t// 1. If a className is set as 'placeholder option, we don't force sizes -\n\t\t\t\t\t// the class is responsible for that\n\t\t\t\t\t// 2. The option 'forcePlaceholderSize can be enabled to force it even if a\n\t\t\t\t\t// class name is specified\n\t\t\t\t\tif ( className && !o.forcePlaceholderSize ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// If the element doesn't have a actual height or width by itself (without\n\t\t\t\t\t// styles coming from a stylesheet), it receives the inline height and width\n\t\t\t\t\t// from the dragged item. Or, if it's a tbody or tr, it's going to have a height\n\t\t\t\t\t// anyway since we're populating them with s above, but they're unlikely to\n\t\t\t\t\t// be the correct height on their own if the row heights are dynamic, so we'll\n\t\t\t\t\t// always assign the height of the dragged item given forcePlaceholderSize\n\t\t\t\t\t// is true.\n\t\t\t\t\tif ( !p.height() || ( o.forcePlaceholderSize &&\n\t\t\t\t\t\t\t( nodeName === \"tbody\" || nodeName === \"tr\" ) ) ) {\n\t\t\t\t\t\tp.height(\n\t\t\t\t\t\t\tthat.currentItem.innerHeight() -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingTop\" ) || 0, 10 ) -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingBottom\" ) || 0, 10 ) );\n\t\t\t\t\t}\n\t\t\t\t\tif ( !p.width() ) {\n\t\t\t\t\t\tp.width(\n\t\t\t\t\t\t\tthat.currentItem.innerWidth() -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingLeft\" ) || 0, 10 ) -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingRight\" ) || 0, 10 ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthat.placeholder = $( o.placeholder.element.call( that.element, that.currentItem ) );\n\n\t\t//Append it after the actual current item\n\t\tthat.currentItem.after( that.placeholder );\n\n\t\t//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)\n\t\to.placeholder.update( that, that.placeholder );\n\n\t},\n\n\t_createTrPlaceholder: function( sourceTr, targetTr ) {\n\t\tvar that = this;\n\n\t\tsourceTr.children().each( function() {\n\t\t\t$( \" \", that.document[ 0 ] )\n\t\t\t\t.attr( \"colspan\", $( this ).attr( \"colspan\" ) || 1 )\n\t\t\t\t.appendTo( targetTr );\n\t\t} );\n\t},\n\n\t_contactContainers: function( event ) {\n\t\tvar i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom,\n\t\t\tfloating, axis,\n\t\t\tinnermostContainer = null,\n\t\t\tinnermostIndex = null;\n\n\t\t// Get innermost container that intersects with item\n\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\n\t\t\t// Never consider a container that's located within the item itself\n\t\t\tif ( $.contains( this.currentItem[ 0 ], this.containers[ i ].element[ 0 ] ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( this._intersectsWith( this.containers[ i ].containerCache ) ) {\n\n\t\t\t\t// If we've already found a container and it's more \"inner\" than this, then continue\n\t\t\t\tif ( innermostContainer &&\n\t\t\t\t\t\t$.contains(\n\t\t\t\t\t\t\tthis.containers[ i ].element[ 0 ],\n\t\t\t\t\t\t\tinnermostContainer.element[ 0 ] ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tinnermostContainer = this.containers[ i ];\n\t\t\t\tinnermostIndex = i;\n\n\t\t\t} else {\n\n\t\t\t\t// container doesn't intersect. trigger \"out\" event if necessary\n\t\t\t\tif ( this.containers[ i ].containerCache.over ) {\n\t\t\t\t\tthis.containers[ i ]._trigger( \"out\", event, this._uiHash( this ) );\n\t\t\t\t\tthis.containers[ i ].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t// If no intersecting containers found, return\n\t\tif ( !innermostContainer ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Move the item into the container if it's not there already\n\t\tif ( this.containers.length === 1 ) {\n\t\t\tif ( !this.containers[ innermostIndex ].containerCache.over ) {\n\t\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash( this ) );\n\t\t\t\tthis.containers[ innermostIndex ].containerCache.over = 1;\n\t\t\t}\n\t\t} else {\n\n\t\t\t// When entering a new container, we will find the item with the least distance and\n\t\t\t// append our item near it\n\t\t\tdist = 10000;\n\t\t\titemWithLeastDistance = null;\n\t\t\tfloating = innermostContainer.floating || this._isFloating( this.currentItem );\n\t\t\tposProperty = floating ? \"left\" : \"top\";\n\t\t\tsizeProperty = floating ? \"width\" : \"height\";\n\t\t\taxis = floating ? \"pageX\" : \"pageY\";\n\n\t\t\tfor ( j = this.items.length - 1; j >= 0; j-- ) {\n\t\t\t\tif ( !$.contains(\n\t\t\t\t\t\tthis.containers[ innermostIndex ].element[ 0 ], this.items[ j ].item[ 0 ] )\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif ( this.items[ j ].item[ 0 ] === this.currentItem[ 0 ] ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcur = this.items[ j ].item.offset()[ posProperty ];\n\t\t\t\tnearBottom = false;\n\t\t\t\tif ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) {\n\t\t\t\t\tnearBottom = true;\n\t\t\t\t}\n\n\t\t\t\tif ( Math.abs( event[ axis ] - cur ) < dist ) {\n\t\t\t\t\tdist = Math.abs( event[ axis ] - cur );\n\t\t\t\t\titemWithLeastDistance = this.items[ j ];\n\t\t\t\t\tthis.direction = nearBottom ? \"up\" : \"down\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//Check if dropOnEmpty is enabled\n\t\t\tif ( !itemWithLeastDistance && !this.options.dropOnEmpty ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this.currentContainer === this.containers[ innermostIndex ] ) {\n\t\t\t\tif ( !this.currentContainer.containerCache.over ) {\n\t\t\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash() );\n\t\t\t\t\tthis.currentContainer.containerCache.over = 1;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( itemWithLeastDistance ) {\n\t\t\t\tthis._rearrange( event, itemWithLeastDistance, null, true );\n\t\t\t} else {\n\t\t\t\tthis._rearrange( event, null, this.containers[ innermostIndex ].element, true );\n\t\t\t}\n\t\t\tthis._trigger( \"change\", event, this._uiHash() );\n\t\t\tthis.containers[ innermostIndex ]._trigger( \"change\", event, this._uiHash( this ) );\n\t\t\tthis.currentContainer = this.containers[ innermostIndex ];\n\n\t\t\t//Update the placeholder\n\t\t\tthis.options.placeholder.update( this.currentContainer, this.placeholder );\n\n\t\t\t//Update scrollParent\n\t\t\tthis.scrollParent = this.placeholder.scrollParent();\n\n\t\t\t//Update overflowOffset\n\t\t\tif ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t\tthis.scrollParent[ 0 ].tagName !== \"HTML\" ) {\n\t\t\t\tthis.overflowOffset = this.scrollParent.offset();\n\t\t\t}\n\n\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash( this ) );\n\t\t\tthis.containers[ innermostIndex ].containerCache.over = 1;\n\t\t}\n\n\t},\n\n\t_createHelper: function( event ) {\n\n\t\tvar o = this.options,\n\t\t\thelper = typeof o.helper === \"function\" ?\n\t\t\t\t$( o.helper.apply( this.element[ 0 ], [ event, this.currentItem ] ) ) :\n\t\t\t\t( o.helper === \"clone\" ? this.currentItem.clone() : this.currentItem );\n\n\t\t//Add the helper to the DOM if that didn't happen already\n\t\tif ( !helper.parents( \"body\" ).length ) {\n\t\t\tthis.appendTo[ 0 ].appendChild( helper[ 0 ] );\n\t\t}\n\n\t\tif ( helper[ 0 ] === this.currentItem[ 0 ] ) {\n\t\t\tthis._storedCSS = {\n\t\t\t\twidth: this.currentItem[ 0 ].style.width,\n\t\t\t\theight: this.currentItem[ 0 ].style.height,\n\t\t\t\tposition: this.currentItem.css( \"position\" ),\n\t\t\t\ttop: this.currentItem.css( \"top\" ),\n\t\t\t\tleft: this.currentItem.css( \"left\" )\n\t\t\t};\n\t\t}\n\n\t\tif ( !helper[ 0 ].style.width || o.forceHelperSize ) {\n\t\t\thelper.width( this.currentItem.width() );\n\t\t}\n\t\tif ( !helper[ 0 ].style.height || o.forceHelperSize ) {\n\t\t\thelper.height( this.currentItem.height() );\n\t\t}\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function( obj ) {\n\t\tif ( typeof obj === \"string\" ) {\n\t\t\tobj = obj.split( \" \" );\n\t\t}\n\t\tif ( Array.isArray( obj ) ) {\n\t\t\tobj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };\n\t\t}\n\t\tif ( \"left\" in obj ) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ( \"right\" in obj ) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ( \"top\" in obj ) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ( \"bottom\" in obj ) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the\n\t\t// following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the\n\t\t// next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't\n\t\t// the document, which means that the scroll is included in the initial calculation of the\n\t\t// offset of the parent, and never recalculated upon drag\n\t\tif ( this.cssPosition === \"absolute\" && this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\t// This needs to be actually done for all browsers, since pageX/pageY includes this\n\t\t// information with an ugly IE fix\n\t\tif ( this.offsetParent[ 0 ] === this.document[ 0 ].body ||\n\t\t\t\t( this.offsetParent[ 0 ].tagName &&\n\t\t\t\tthis.offsetParent[ 0 ].tagName.toLowerCase() === \"html\" && $.ui.ie ) ) {\n\t\t\tpo = { top: 0, left: 0 };\n\t\t}\n\n\t\treturn {\n\t\t\ttop: po.top + ( parseInt( this.offsetParent.css( \"borderTopWidth\" ), 10 ) || 0 ),\n\t\t\tleft: po.left + ( parseInt( this.offsetParent.css( \"borderLeftWidth\" ), 10 ) || 0 )\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif ( this.cssPosition === \"relative\" ) {\n\t\t\tvar p = this.currentItem.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - ( parseInt( this.helper.css( \"top\" ), 10 ) || 0 ) +\n\t\t\t\t\tthis.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - ( parseInt( this.helper.css( \"left\" ), 10 ) || 0 ) +\n\t\t\t\t\tthis.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: ( parseInt( this.currentItem.css( \"marginLeft\" ), 10 ) || 0 ),\n\t\t\ttop: ( parseInt( this.currentItem.css( \"marginTop\" ), 10 ) || 0 )\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar ce, co, over,\n\t\t\to = this.options;\n\t\tif ( o.containment === \"parent\" ) {\n\t\t\to.containment = this.helper[ 0 ].parentNode;\n\t\t}\n\t\tif ( o.containment === \"document\" || o.containment === \"window\" ) {\n\t\t\tthis.containment = [\n\t\t\t\t0 - this.offset.relative.left - this.offset.parent.left,\n\t\t\t\t0 - this.offset.relative.top - this.offset.parent.top,\n\t\t\t\to.containment === \"document\" ?\n\t\t\t\t\tthis.document.width() :\n\t\t\t\t\tthis.window.width() - this.helperProportions.width - this.margins.left,\n\t\t\t\t( o.containment === \"document\" ?\n\t\t\t\t\t( this.document.height() || document.body.parentNode.scrollHeight ) :\n\t\t\t\t\tthis.window.height() || this.document[ 0 ].body.parentNode.scrollHeight\n\t\t\t\t) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t\tif ( !( /^(document|window|parent)$/ ).test( o.containment ) ) {\n\t\t\tce = $( o.containment )[ 0 ];\n\t\t\tco = $( o.containment ).offset();\n\t\t\tover = ( $( ce ).css( \"overflow\" ) !== \"hidden\" );\n\n\t\t\tthis.containment = [\n\t\t\t\tco.left + ( parseInt( $( ce ).css( \"borderLeftWidth\" ), 10 ) || 0 ) +\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingLeft\" ), 10 ) || 0 ) - this.margins.left,\n\t\t\t\tco.top + ( parseInt( $( ce ).css( \"borderTopWidth\" ), 10 ) || 0 ) +\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingTop\" ), 10 ) || 0 ) - this.margins.top,\n\t\t\t\tco.left + ( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"borderLeftWidth\" ), 10 ) || 0 ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingRight\" ), 10 ) || 0 ) -\n\t\t\t\t\tthis.helperProportions.width - this.margins.left,\n\t\t\t\tco.top + ( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"borderTopWidth\" ), 10 ) || 0 ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingBottom\" ), 10 ) || 0 ) -\n\t\t\t\t\tthis.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function( d, pos ) {\n\n\t\tif ( !pos ) {\n\t\t\tpos = this.position;\n\t\t}\n\t\tvar mod = d === \"absolute\" ? 1 : -1,\n\t\t\tscroll = this.cssPosition === \"absolute\" &&\n\t\t\t\t!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?\n\t\t\t\t\tthis.offsetParent :\n\t\t\t\t\tthis.scrollParent,\n\t\t\tscrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.top\t+\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top * mod -\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollTop() :\n\t\t\t\t\t( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.left +\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left * mod\t-\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 :\n\t\t\t\t\tscroll.scrollLeft() ) * mod )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function( event ) {\n\n\t\tvar top, left,\n\t\t\to = this.options,\n\t\t\tpageX = event.pageX,\n\t\t\tpageY = event.pageY,\n\t\t\tscroll = this.cssPosition === \"absolute\" &&\n\t\t\t\t!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?\n\t\t\t\t\tthis.offsetParent :\n\t\t\t\t\tthis.scrollParent,\n\t\t\t\tscrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );\n\n\t\t// This is another very weird special case that only happens for relative elements:\n\t\t// 1. If the css position is relative\n\t\t// 2. and the scroll parent is the document or similar to the offset parent\n\t\t// we have to refresh the relative offset during the scroll so there are no jumps\n\t\tif ( this.cssPosition === \"relative\" && !( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\tthis.scrollParent[ 0 ] !== this.offsetParent[ 0 ] ) ) {\n\t\t\tthis.offset.relative = this._getRelativeOffset();\n\t\t}\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif ( this.originalPosition ) { //If we are not dragging yet, we won't check for options\n\n\t\t\tif ( this.containment ) {\n\t\t\t\tif ( event.pageX - this.offset.click.left < this.containment[ 0 ] ) {\n\t\t\t\t\tpageX = this.containment[ 0 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top < this.containment[ 1 ] ) {\n\t\t\t\t\tpageY = this.containment[ 1 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t\tif ( event.pageX - this.offset.click.left > this.containment[ 2 ] ) {\n\t\t\t\t\tpageX = this.containment[ 2 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top > this.containment[ 3 ] ) {\n\t\t\t\t\tpageY = this.containment[ 3 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( o.grid ) {\n\t\t\t\ttop = this.originalPageY + Math.round( ( pageY - this.originalPageY ) /\n\t\t\t\t\to.grid[ 1 ] ) * o.grid[ 1 ];\n\t\t\t\tpageY = this.containment ?\n\t\t\t\t\t( ( top - this.offset.click.top >= this.containment[ 1 ] &&\n\t\t\t\t\t\ttop - this.offset.click.top <= this.containment[ 3 ] ) ?\n\t\t\t\t\t\t\ttop :\n\t\t\t\t\t\t\t( ( top - this.offset.click.top >= this.containment[ 1 ] ) ?\n\t\t\t\t\t\t\t\ttop - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) :\n\t\t\t\t\t\t\t\ttop;\n\n\t\t\t\tleft = this.originalPageX + Math.round( ( pageX - this.originalPageX ) /\n\t\t\t\t\to.grid[ 0 ] ) * o.grid[ 0 ];\n\t\t\t\tpageX = this.containment ?\n\t\t\t\t\t( ( left - this.offset.click.left >= this.containment[ 0 ] &&\n\t\t\t\t\t\tleft - this.offset.click.left <= this.containment[ 2 ] ) ?\n\t\t\t\t\t\t\tleft :\n\t\t\t\t\t\t\t( ( left - this.offset.click.left >= this.containment[ 0 ] ) ?\n\t\t\t\t\t\t\t\tleft - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) :\n\t\t\t\t\t\t\t\tleft;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageY -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.top -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top +\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollTop() :\n\t\t\t\t\t( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageX -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.left -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left +\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollLeft() :\n\t\t\t\t\tscrollIsRootNode ? 0 : scroll.scrollLeft() ) )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_rearrange: function( event, i, a, hardRefresh ) {\n\n\t\tif ( a ) {\n\t\t\ta[ 0 ].appendChild( this.placeholder[ 0 ] );\n\t\t} else {\n\t\t\ti.item[ 0 ].parentNode.insertBefore( this.placeholder[ 0 ],\n\t\t\t\t( this.direction === \"down\" ? i.item[ 0 ] : i.item[ 0 ].nextSibling ) );\n\t\t}\n\n\t\t//Various things done here to improve the performance:\n\t\t// 1. we create a setTimeout, that calls refreshPositions\n\t\t// 2. on the instance, we have a counter variable, that get's higher after every append\n\t\t// 3. on the local scope, we copy the counter variable, and check in the timeout,\n\t\t// if it's still the same\n\t\t// 4. this lets only the last addition to the timeout stack through\n\t\tthis.counter = this.counter ? ++this.counter : 1;\n\t\tvar counter = this.counter;\n\n\t\tthis._delay( function() {\n\t\t\tif ( counter === this.counter ) {\n\n\t\t\t\t//Precompute after each DOM insertion, NOT on mousemove\n\t\t\t\tthis.refreshPositions( !hardRefresh );\n\t\t\t}\n\t\t} );\n\n\t},\n\n\t_clear: function( event, noPropagation ) {\n\n\t\tthis.reverting = false;\n\n\t\t// We delay all events that have to be triggered to after the point where the placeholder\n\t\t// has been removed and everything else normalized again\n\t\tvar i,\n\t\t\tdelayedTriggers = [];\n\n\t\t// We first have to update the dom position of the actual currentItem\n\t\t// Note: don't do it if the current item is already removed (by a user), or it gets\n\t\t// reappended (see #4088)\n\t\tif ( !this._noFinalSort && this.currentItem.parent().length ) {\n\t\t\tthis.placeholder.before( this.currentItem );\n\t\t}\n\t\tthis._noFinalSort = null;\n\n\t\tif ( this.helper[ 0 ] === this.currentItem[ 0 ] ) {\n\t\t\tfor ( i in this._storedCSS ) {\n\t\t\t\tif ( this._storedCSS[ i ] === \"auto\" || this._storedCSS[ i ] === \"static\" ) {\n\t\t\t\t\tthis._storedCSS[ i ] = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.currentItem.css( this._storedCSS );\n\t\t\tthis._removeClass( this.currentItem, \"ui-sortable-helper\" );\n\t\t} else {\n\t\t\tthis.currentItem.show();\n\t\t}\n\n\t\tif ( this.fromOutside && !noPropagation ) {\n\t\t\tdelayedTriggers.push( function( event ) {\n\t\t\t\tthis._trigger( \"receive\", event, this._uiHash( this.fromOutside ) );\n\t\t\t} );\n\t\t}\n\t\tif ( ( this.fromOutside ||\n\t\t\t\tthis.domPosition.prev !==\n\t\t\t\tthis.currentItem.prev().not( \".ui-sortable-helper\" )[ 0 ] ||\n\t\t\t\tthis.domPosition.parent !== this.currentItem.parent()[ 0 ] ) && !noPropagation ) {\n\n\t\t\t// Trigger update callback if the DOM position has changed\n\t\t\tdelayedTriggers.push( function( event ) {\n\t\t\t\tthis._trigger( \"update\", event, this._uiHash() );\n\t\t\t} );\n\t\t}\n\n\t\t// Check if the items Container has Changed and trigger appropriate\n\t\t// events.\n\t\tif ( this !== this.currentContainer ) {\n\t\t\tif ( !noPropagation ) {\n\t\t\t\tdelayedTriggers.push( function( event ) {\n\t\t\t\t\tthis._trigger( \"remove\", event, this._uiHash() );\n\t\t\t\t} );\n\t\t\t\tdelayedTriggers.push( ( function( c ) {\n\t\t\t\t\treturn function( event ) {\n\t\t\t\t\t\tc._trigger( \"receive\", event, this._uiHash( this ) );\n\t\t\t\t\t};\n\t\t\t\t} ).call( this, this.currentContainer ) );\n\t\t\t\tdelayedTriggers.push( ( function( c ) {\n\t\t\t\t\treturn function( event ) {\n\t\t\t\t\t\tc._trigger( \"update\", event, this._uiHash( this ) );\n\t\t\t\t\t};\n\t\t\t\t} ).call( this, this.currentContainer ) );\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tfunction delayEvent( type, instance, container ) {\n\t\t\treturn function( event ) {\n\t\t\t\tcontainer._trigger( type, event, instance._uiHash( instance ) );\n\t\t\t};\n\t\t}\n\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\tif ( !noPropagation ) {\n\t\t\t\tdelayedTriggers.push( delayEvent( \"deactivate\", this, this.containers[ i ] ) );\n\t\t\t}\n\t\t\tif ( this.containers[ i ].containerCache.over ) {\n\t\t\t\tdelayedTriggers.push( delayEvent( \"out\", this, this.containers[ i ] ) );\n\t\t\t\tthis.containers[ i ].containerCache.over = 0;\n\t\t\t}\n\t\t}\n\n\t\t//Do what was originally in plugins\n\t\tif ( this.storedCursor ) {\n\t\t\tthis.document.find( \"body\" ).css( \"cursor\", this.storedCursor );\n\t\t\tthis.storedStylesheet.remove();\n\t\t}\n\t\tif ( this._storedOpacity ) {\n\t\t\tthis.helper.css( \"opacity\", this._storedOpacity );\n\t\t}\n\t\tif ( this._storedZIndex ) {\n\t\t\tthis.helper.css( \"zIndex\", this._storedZIndex === \"auto\" ? \"\" : this._storedZIndex );\n\t\t}\n\n\t\tthis.dragging = false;\n\n\t\tif ( !noPropagation ) {\n\t\t\tthis._trigger( \"beforeStop\", event, this._uiHash() );\n\t\t}\n\n\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,\n\t\t// it unbinds ALL events from the original node!\n\t\tthis.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );\n\n\t\tif ( !this.cancelHelperRemoval ) {\n\t\t\tif ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {\n\t\t\t\tthis.helper.remove();\n\t\t\t}\n\t\t\tthis.helper = null;\n\t\t}\n\n\t\tif ( !noPropagation ) {\n\t\t\tfor ( i = 0; i < delayedTriggers.length; i++ ) {\n\n\t\t\t\t// Trigger all delayed events\n\t\t\t\tdelayedTriggers[ i ].call( this, event );\n\t\t\t}\n\t\t\tthis._trigger( \"stop\", event, this._uiHash() );\n\t\t}\n\n\t\tthis.fromOutside = false;\n\t\treturn !this.cancelHelperRemoval;\n\n\t},\n\n\t_trigger: function() {\n\t\tif ( $.Widget.prototype._trigger.apply( this, arguments ) === false ) {\n\t\t\tthis.cancel();\n\t\t}\n\t},\n\n\t_uiHash: function( _inst ) {\n\t\tvar inst = _inst || this;\n\t\treturn {\n\t\t\thelper: inst.helper,\n\t\t\tplaceholder: inst.placeholder || $( [] ),\n\t\t\tposition: inst.position,\n\t\t\toriginalPosition: inst.originalPosition,\n\t\t\toffset: inst.positionAbs,\n\t\t\titem: inst.currentItem,\n\t\t\tsender: _inst ? _inst.element : null\n\t\t};\n\t}\n\n} );\n\n} );\n"],"names":["factory","$","extend","expr","pseudos","data","createPseudo","dataName","elem","i","match","ui","ie","exec","navigator","userAgent","toLowerCase","fn","scrollParent","includeHidden","position","this","css","excludeStaticParent","overflowRegex","parents","filter","parent","test","eq","length","ownerDocument","document","version","widgetUuid","widgetHasOwnProperty","Array","prototype","hasOwnProperty","widgetSlice","slice","cleanData","orig","elems","events","_data","remove","triggerHandler","widget","name","base","existingConstructor","constructor","basePrototype","proxiedPrototype","namespace","split","fullName","Widget","isArray","apply","concat","options","element","_createWidget","arguments","_proto","_childConstructors","each","prop","value","_super","_superApply","args","returnValue","__super","__superApply","widgetEventPrefix","widgetName","widgetFullName","child","childPrototype","push","bridge","target","key","input","call","inputIndex","inputLength","undefined","isPlainObject","object","isMethodCall","methodValue","instance","charAt","error","jquery","pushStack","get","option","_init","defaultElement","classes","disabled","create","uuid","eventNamespace","bindings","hoverable","focusable","classesElementLookup","_on","event","destroy","style","window","defaultView","parentWindow","_getCreateOptions","_create","_setOptionDisabled","_trigger","_getCreateEventData","noop","that","_destroy","_removeClass","off","removeData","removeAttr","parts","curOption","shift","pop","_setOptions","_setOption","_setOptionClasses","classKey","elements","currentElements","addClass","_classes","keys","add","_toggleClass","enable","disable","full","bindRemoveEvent","nodesToBind","_","map","some","is","processClassString","checkOption","current","uniqueSort","not","extra","join","_untrackClassesElement","inArray","_off","_addClass","toggleClass","suppressDisabledCheck","handlers","delegateElement","handler","handlerProxy","hasClass","guid","eventName","selector","on","_delay","delay","setTimeout","_hoverable","mouseenter","currentTarget","mouseleave","_focusable","focusin","focusout","type","callback","Event","originalEvent","trigger","isDefaultPrevented","show","hide","method","defaultEffect","hasOptions","effect","effectName","duration","isEmptyObject","complete","effects","easing","queue","next","mouseHandled","cancel","distance","_mouseInit","_mouseDown","stopImmediatePropagation","started","_mouseDestroy","_mouseMoveDelegate","_mouseUpDelegate","_mouseMoved","_mouseStarted","_mouseUp","_mouseDownEvent","btnIsLeft","which","elIsCancel","nodeName","closest","_mouseCapture","mouseDelayMet","_mouseDelayTimer","_mouseDistanceMet","_mouseDelayMet","_mouseStart","preventDefault","_mouseMove","documentMode","button","altKey","ctrlKey","metaKey","shiftKey","ignoreMissingWhich","_mouseDrag","_mouseStop","clearTimeout","Math","max","abs","pageX","pageY","mouse","ready","appendTo","axis","connectWith","containment","cursor","cursorAt","dropOnEmpty","forcePlaceholderSize","forceHelperSize","grid","handle","helper","items","opacity","placeholder","revert","scroll","scrollSensitivity","scrollSpeed","scope","tolerance","zIndex","activate","beforeStop","change","deactivate","out","over","receive","sort","start","stop","update","_isOverAxis","x","reference","size","_isFloating","item","containerCache","refresh","offset","_setHandleClassName","find","overrideHandle","currentItem","validHandle","reverting","_refreshItems","addBack","_removeCurrentsFromItems","noActivation","body","o","currentContainer","refreshPositions","_createHelper","_cacheHelperProportions","_cacheMargins","top","margins","left","click","relative","_getRelativeOffset","cssPosition","_adjustOffsetFromHelper","domPosition","prev","_createPlaceholder","_getParentOffset","_setContainment","storedCursor","storedStylesheet","_storedZIndex","_storedOpacity","tagName","overflowOffset","_uiHash","_preserveHelperProportions","containers","ddmanager","dropBehaviour","prepareOffsets","dragging","detach","originalPosition","_generatePosition","originalPageX","originalPageY","lastPositionAbs","positionAbs","_convertPositionTo","_scroll","scrolled","offsetHeight","scrollTop","offsetWidth","scrollLeft","height","width","itemElement","intersection","_refreshItemPositions","dragDirection","vertical","_getDragVerticalDirection","horizontal","_getDragHorizontalDirection","_intersectsWithPointer","contains","direction","_intersectsWithSides","_rearrange","_contactContainers","drag","noPropagation","drop","cur","animation","offsetParent","animate","parseInt","_clear","_storedCSS","parentNode","removeChild","_noFinalSort","after","prepend","serialize","_getItemsAsjQuery","connected","str","res","attr","attribute","expression","toArray","ret","_intersectsWith","x1","x2","helperProportions","y1","y2","l","r","t","b","dyClick","dxClick","isOverElementHeight","isOverElementWidth","isOverElement","forcePointerForContainers","floating","verticalDirection","horizontalDirection","isOverBottomHalf","isOverRightHalf","delta","_connectWith","String","j","inst","queries","addItems","list","grep","targetData","_queries","queriesLength","fast","p","toleranceElement","outerWidth","outerHeight","custom","refreshContainers","className","_createTrPlaceholder","container","innerHeight","innerWidth","sourceTr","targetTr","children","dist","itemWithLeastDistance","posProperty","sizeProperty","nearBottom","innermostContainer","innermostIndex","clone","appendChild","obj","right","bottom","po","ce","co","scrollHeight","scrollWidth","d","pos","mod","scrollIsRootNode","round","a","hardRefresh","insertBefore","nextSibling","counter","delayedTriggers","before","delayEvent","fromOutside","c","cancelHelperRemoval","_inst","sender"],"sourceRoot":""}