http://git-wip-us.apache.org/repos/asf/logging-log4j-audit/blob/7ccfa3aa/log4j-catalog/log4j-catalog-editor/src/main/webapp/js/jquery-ui-1.12.1/jquery-ui.js
----------------------------------------------------------------------
diff --git 
a/log4j-catalog/log4j-catalog-editor/src/main/webapp/js/jquery-ui-1.12.1/jquery-ui.js
 
b/log4j-catalog/log4j-catalog-editor/src/main/webapp/js/jquery-ui-1.12.1/jquery-ui.js
deleted file mode 100644
index 0213552..0000000
--- 
a/log4j-catalog/log4j-catalog-editor/src/main/webapp/js/jquery-ui-1.12.1/jquery-ui.js
+++ /dev/null
@@ -1,18706 +0,0 @@
-/*! jQuery UI - v1.12.1 - 2016-09-14
-* http://jqueryui.com
-* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, 
effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, 
effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, 
effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, 
effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, 
effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, 
focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, 
scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, 
widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, 
widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, 
widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, 
widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, 
widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, 
widgets/spinner.js, widgets/tabs.js, widgets/toolt
 ip.js
-* Copyright jQuery Foundation and other contributors; Licensed MIT */
-
-(function( factory ) {
-       if ( typeof define === "function" && define.amd ) {
-
-               // AMD. Register as an anonymous module.
-               define([ "jquery" ], factory );
-       } else {
-
-               // Browser globals
-               factory( jQuery );
-       }
-}(function( $ ) {
-
-$.ui = $.ui || {};
-
-var version = $.ui.version = "1.12.1";
-
-
-/*!
- * jQuery UI Widget 1.12.1
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- */
-
-//>>label: Widget
-//>>group: Core
-//>>description: Provides a factory for creating stateful widgets with a 
common API.
-//>>docs: http://api.jqueryui.com/jQuery.widget/
-//>>demos: http://jqueryui.com/widget/
-
-
-
-var widgetUuid = 0;
-var widgetSlice = Array.prototype.slice;
-
-$.cleanData = ( function( orig ) {
-       return function( elems ) {
-               var events, elem, i;
-               for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {
-                       try {
-
-                               // Only trigger remove when necessary to save 
time
-                               events = $._data( elem, "events" );
-                               if ( events && events.remove ) {
-                                       $( elem ).triggerHandler( "remove" );
-                               }
-
-                       // Http://bugs.jquery.com/ticket/8235
-                       } catch ( e ) {}
-               }
-               orig( elems );
-       };
-} )( $.cleanData );
-
-$.widget = function( name, base, prototype ) {
-       var existingConstructor, constructor, basePrototype;
-
-       // ProxiedPrototype allows the provided prototype to remain unmodified
-       // so that it can be used as a mixin for multiple widgets (#8876)
-       var proxiedPrototype = {};
-
-       var namespace = name.split( "." )[ 0 ];
-       name = name.split( "." )[ 1 ];
-       var fullName = namespace + "-" + name;
-
-       if ( !prototype ) {
-               prototype = base;
-               base = $.Widget;
-       }
-
-       if ( $.isArray( prototype ) ) {
-               prototype = $.extend.apply( null, [ {} ].concat( prototype ) );
-       }
-
-       // Create selector for plugin
-       $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
-               return !!$.data( elem, fullName );
-       };
-
-       $[ namespace ] = $[ namespace ] || {};
-       existingConstructor = $[ namespace ][ name ];
-       constructor = $[ namespace ][ name ] = function( options, element ) {
-
-               // Allow instantiation without "new" keyword
-               if ( !this._createWidget ) {
-                       return new constructor( options, element );
-               }
-
-               // Allow instantiation without initializing for simple 
inheritance
-               // must use "new" keyword (the code above always passes args)
-               if ( arguments.length ) {
-                       this._createWidget( options, element );
-               }
-       };
-
-       // Extend with the existing constructor to carry over any static 
properties
-       $.extend( constructor, existingConstructor, {
-               version: prototype.version,
-
-               // Copy the object used to create the prototype in case we need 
to
-               // redefine the widget later
-               _proto: $.extend( {}, prototype ),
-
-               // Track widgets that inherit from this widget in case this 
widget is
-               // redefined after a widget inherits from it
-               _childConstructors: []
-       } );
-
-       basePrototype = new base();
-
-       // We need to make the options hash a property directly on the new 
instance
-       // otherwise we'll modify the options hash on the prototype that we're
-       // inheriting from
-       basePrototype.options = $.widget.extend( {}, basePrototype.options );
-       $.each( prototype, function( prop, value ) {
-               if ( !$.isFunction( value ) ) {
-                       proxiedPrototype[ prop ] = value;
-                       return;
-               }
-               proxiedPrototype[ prop ] = ( function() {
-                       function _super() {
-                               return base.prototype[ prop ].apply( this, 
arguments );
-                       }
-
-                       function _superApply( args ) {
-                               return base.prototype[ prop ].apply( this, args 
);
-                       }
-
-                       return function() {
-                               var __super = this._super;
-                               var __superApply = this._superApply;
-                               var returnValue;
-
-                               this._super = _super;
-                               this._superApply = _superApply;
-
-                               returnValue = value.apply( this, arguments );
-
-                               this._super = __super;
-                               this._superApply = __superApply;
-
-                               return returnValue;
-                       };
-               } )();
-       } );
-       constructor.prototype = $.widget.extend( basePrototype, {
-
-               // TODO: remove support for widgetEventPrefix
-               // always use the name + a colon as the prefix, e.g., 
draggable:start
-               // don't prefix for widgets that aren't DOM-based
-               widgetEventPrefix: existingConstructor ? ( 
basePrototype.widgetEventPrefix || name ) : name
-       }, proxiedPrototype, {
-               constructor: constructor,
-               namespace: namespace,
-               widgetName: name,
-               widgetFullName: fullName
-       } );
-
-       // If this widget is being redefined then we need to find all widgets 
that
-       // are inheriting from it and redefine all of them so that they inherit 
from
-       // the new version of this widget. We're essentially trying to replace 
one
-       // level in the prototype chain.
-       if ( existingConstructor ) {
-               $.each( existingConstructor._childConstructors, function( i, 
child ) {
-                       var childPrototype = child.prototype;
-
-                       // Redefine the child widget using the same prototype 
that was
-                       // originally used, but inherit from the new version of 
the base
-                       $.widget( childPrototype.namespace + "." + 
childPrototype.widgetName, constructor,
-                               child._proto );
-               } );
-
-               // Remove the list of existing child constructors from the old 
constructor
-               // so the old child constructors can be garbage collected
-               delete existingConstructor._childConstructors;
-       } else {
-               base._childConstructors.push( constructor );
-       }
-
-       $.widget.bridge( name, constructor );
-
-       return constructor;
-};
-
-$.widget.extend = function( target ) {
-       var input = widgetSlice.call( arguments, 1 );
-       var inputIndex = 0;
-       var inputLength = input.length;
-       var key;
-       var value;
-
-       for ( ; inputIndex < inputLength; inputIndex++ ) {
-               for ( key in input[ inputIndex ] ) {
-                       value = input[ inputIndex ][ key ];
-                       if ( input[ inputIndex ].hasOwnProperty( key ) && value 
!== undefined ) {
-
-                               // Clone objects
-                               if ( $.isPlainObject( value ) ) {
-                                       target[ key ] = $.isPlainObject( 
target[ key ] ) ?
-                                               $.widget.extend( {}, target[ 
key ], value ) :
-
-                                               // Don't extend strings, 
arrays, etc. with objects
-                                               $.widget.extend( {}, value );
-
-                               // Copy everything else by reference
-                               } else {
-                                       target[ key ] = value;
-                               }
-                       }
-               }
-       }
-       return target;
-};
-
-$.widget.bridge = function( name, object ) {
-       var fullName = object.prototype.widgetFullName || name;
-       $.fn[ name ] = function( options ) {
-               var isMethodCall = typeof options === "string";
-               var args = widgetSlice.call( arguments, 1 );
-               var returnValue = this;
-
-               if ( isMethodCall ) {
-
-                       // If this is an empty collection, we need to have the 
instance method
-                       // return undefined instead of the jQuery instance
-                       if ( !this.length && options === "instance" ) {
-                               returnValue = undefined;
-                       } else {
-                               this.each( function() {
-                                       var methodValue;
-                                       var instance = $.data( this, fullName );
-
-                                       if ( options === "instance" ) {
-                                               returnValue = instance;
-                                               return false;
-                                       }
-
-                                       if ( !instance ) {
-                                               return $.error( "cannot call 
methods on " + name +
-                                                       " prior to 
initialization; " +
-                                                       "attempted to call 
method '" + options + "'" );
-                                       }
-
-                                       if ( !$.isFunction( instance[ options ] 
) || options.charAt( 0 ) === "_" ) {
-                                               return $.error( "no such method 
'" + options + "' for " + name +
-                                                       " widget instance" );
-                                       }
-
-                                       methodValue = instance[ options 
].apply( instance, args );
-
-                                       if ( methodValue !== instance && 
methodValue !== undefined ) {
-                                               returnValue = methodValue && 
methodValue.jquery ?
-                                                       returnValue.pushStack( 
methodValue.get() ) :
-                                                       methodValue;
-                                               return false;
-                                       }
-                               } );
-                       }
-               } else {
-
-                       // Allow multiple hashes to be passed on init
-                       if ( args.length ) {
-                               options = $.widget.extend.apply( null, [ 
options ].concat( args ) );
-                       }
-
-                       this.each( function() {
-                               var instance = $.data( this, fullName );
-                               if ( instance ) {
-                                       instance.option( options || {} );
-                                       if ( instance._init ) {
-                                               instance._init();
-                                       }
-                               } else {
-                                       $.data( this, fullName, new object( 
options, this ) );
-                               }
-                       } );
-               }
-
-               return returnValue;
-       };
-};
-
-$.Widget = function( /* options, element */ ) {};
-$.Widget._childConstructors = [];
-
-$.Widget.prototype = {
-       widgetName: "widget",
-       widgetEventPrefix: "",
-       defaultElement: "<div>",
-
-       options: {
-               classes: {},
-               disabled: false,
-
-               // Callbacks
-               create: null
-       },
-
-       _createWidget: function( options, element ) {
-               element = $( element || this.defaultElement || this )[ 0 ];
-               this.element = $( element );
-               this.uuid = widgetUuid++;
-               this.eventNamespace = "." + this.widgetName + this.uuid;
-
-               this.bindings = $();
-               this.hoverable = $();
-               this.focusable = $();
-               this.classesElementLookup = {};
-
-               if ( element !== this ) {
-                       $.data( element, this.widgetFullName, this );
-                       this._on( true, this.element, {
-                               remove: function( event ) {
-                                       if ( event.target === element ) {
-                                               this.destroy();
-                                       }
-                               }
-                       } );
-                       this.document = $( element.style ?
-
-                               // Element within the document
-                               element.ownerDocument :
-
-                               // Element is window or document
-                               element.document || element );
-                       this.window = $( this.document[ 0 ].defaultView || 
this.document[ 0 ].parentWindow );
-               }
-
-               this.options = $.widget.extend( {},
-                       this.options,
-                       this._getCreateOptions(),
-                       options );
-
-               this._create();
-
-               if ( this.options.disabled ) {
-                       this._setOptionDisabled( this.options.disabled );
-               }
-
-               this._trigger( "create", null, this._getCreateEventData() );
-               this._init();
-       },
-
-       _getCreateOptions: function() {
-               return {};
-       },
-
-       _getCreateEventData: $.noop,
-
-       _create: $.noop,
-
-       _init: $.noop,
-
-       destroy: function() {
-               var that = this;
-
-               this._destroy();
-               $.each( this.classesElementLookup, function( key, value ) {
-                       that._removeClass( value, key );
-               } );
-
-               // We can probably remove the unbind calls in 2.0
-               // all event bindings should go through this._on()
-               this.element
-                       .off( this.eventNamespace )
-                       .removeData( this.widgetFullName );
-               this.widget()
-                       .off( this.eventNamespace )
-                       .removeAttr( "aria-disabled" );
-
-               // Clean up events and states
-               this.bindings.off( this.eventNamespace );
-       },
-
-       _destroy: $.noop,
-
-       widget: function() {
-               return this.element;
-       },
-
-       option: function( key, value ) {
-               var options = key;
-               var parts;
-               var curOption;
-               var i;
-
-               if ( arguments.length === 0 ) {
-
-                       // Don't return a reference to the internal hash
-                       return $.widget.extend( {}, this.options );
-               }
-
-               if ( typeof key === "string" ) {
-
-                       // Handle nested keys, e.g., "foo.bar" => { foo: { bar: 
___ } }
-                       options = {};
-                       parts = key.split( "." );
-                       key = parts.shift();
-                       if ( parts.length ) {
-                               curOption = options[ key ] = $.widget.extend( 
{}, this.options[ key ] );
-                               for ( i = 0; i < parts.length - 1; i++ ) {
-                                       curOption[ parts[ i ] ] = curOption[ 
parts[ i ] ] || {};
-                                       curOption = curOption[ parts[ i ] ];
-                               }
-                               key = parts.pop();
-                               if ( arguments.length === 1 ) {
-                                       return curOption[ key ] === undefined ? 
null : curOption[ key ];
-                               }
-                               curOption[ key ] = value;
-                       } else {
-                               if ( arguments.length === 1 ) {
-                                       return this.options[ key ] === 
undefined ? null : this.options[ key ];
-                               }
-                               options[ key ] = value;
-                       }
-               }
-
-               this._setOptions( options );
-
-               return this;
-       },
-
-       _setOptions: function( options ) {
-               var key;
-
-               for ( key in options ) {
-                       this._setOption( key, options[ key ] );
-               }
-
-               return this;
-       },
-
-       _setOption: function( key, value ) {
-               if ( key === "classes" ) {
-                       this._setOptionClasses( value );
-               }
-
-               this.options[ key ] = value;
-
-               if ( key === "disabled" ) {
-                       this._setOptionDisabled( value );
-               }
-
-               return this;
-       },
-
-       _setOptionClasses: function( value ) {
-               var classKey, elements, currentElements;
-
-               for ( classKey in value ) {
-                       currentElements = this.classesElementLookup[ classKey ];
-                       if ( value[ classKey ] === this.options.classes[ 
classKey ] ||
-                                       !currentElements ||
-                                       !currentElements.length ) {
-                               continue;
-                       }
-
-                       // We are doing this to create a new jQuery object 
because the _removeClass() call
-                       // on the next line is going to destroy the reference 
to the current elements being
-                       // tracked. We need to save a copy of this collection 
so that we can add the new classes
-                       // below.
-                       elements = $( currentElements.get() );
-                       this._removeClass( currentElements, classKey );
-
-                       // We don't use _addClass() here, because that uses 
this.options.classes
-                       // for generating the string of classes. We want to use 
the value passed in from
-                       // _setOption(), this is the new value of the classes 
option which was passed to
-                       // _setOption(). We pass this value directly to 
_classes().
-                       elements.addClass( this._classes( {
-                               element: elements,
-                               keys: classKey,
-                               classes: value,
-                               add: true
-                       } ) );
-               }
-       },
-
-       _setOptionDisabled: function( value ) {
-               this._toggleClass( this.widget(), this.widgetFullName + 
"-disabled", null, !!value );
-
-               // If the widget is becoming disabled, then nothing is 
interactive
-               if ( value ) {
-                       this._removeClass( this.hoverable, null, 
"ui-state-hover" );
-                       this._removeClass( this.focusable, null, 
"ui-state-focus" );
-               }
-       },
-
-       enable: function() {
-               return this._setOptions( { disabled: false } );
-       },
-
-       disable: function() {
-               return this._setOptions( { disabled: true } );
-       },
-
-       _classes: function( options ) {
-               var full = [];
-               var that = this;
-
-               options = $.extend( {
-                       element: this.element,
-                       classes: this.options.classes || {}
-               }, options );
-
-               function processClassString( classes, checkOption ) {
-                       var current, i;
-                       for ( i = 0; i < classes.length; i++ ) {
-                               current = that.classesElementLookup[ classes[ i 
] ] || $();
-                               if ( options.add ) {
-                                       current = $( $.unique( 
current.get().concat( options.element.get() ) ) );
-                               } else {
-                                       current = $( current.not( 
options.element ).get() );
-                               }
-                               that.classesElementLookup[ classes[ i ] ] = 
current;
-                               full.push( classes[ i ] );
-                               if ( checkOption && options.classes[ classes[ i 
] ] ) {
-                                       full.push( options.classes[ classes[ i 
] ] );
-                               }
-                       }
-               }
-
-               this._on( options.element, {
-                       "remove": "_untrackClassesElement"
-               } );
-
-               if ( options.keys ) {
-                       processClassString( options.keys.match( /\S+/g ) || [], 
true );
-               }
-               if ( options.extra ) {
-                       processClassString( options.extra.match( /\S+/g ) || [] 
);
-               }
-
-               return full.join( " " );
-       },
-
-       _untrackClassesElement: function( event ) {
-               var that = this;
-               $.each( that.classesElementLookup, function( key, value ) {
-                       if ( $.inArray( event.target, value ) !== -1 ) {
-                               that.classesElementLookup[ key ] = $( 
value.not( event.target ).get() );
-                       }
-               } );
-       },
-
-       _removeClass: function( element, keys, extra ) {
-               return this._toggleClass( element, keys, extra, false );
-       },
-
-       _addClass: function( element, keys, extra ) {
-               return this._toggleClass( element, keys, extra, true );
-       },
-
-       _toggleClass: function( element, keys, extra, add ) {
-               add = ( typeof add === "boolean" ) ? add : extra;
-               var shift = ( typeof element === "string" || element === null ),
-                       options = {
-                               extra: shift ? keys : extra,
-                               keys: shift ? element : keys,
-                               element: shift ? this.element : element,
-                               add: add
-                       };
-               options.element.toggleClass( this._classes( options ), add );
-               return this;
-       },
-
-       _on: function( suppressDisabledCheck, element, handlers ) {
-               var delegateElement;
-               var instance = this;
-
-               // No suppressDisabledCheck flag, shuffle arguments
-               if ( typeof suppressDisabledCheck !== "boolean" ) {
-                       handlers = element;
-                       element = suppressDisabledCheck;
-                       suppressDisabledCheck = false;
-               }
-
-               // No element argument, shuffle and use this.element
-               if ( !handlers ) {
-                       handlers = element;
-                       element = this.element;
-                       delegateElement = this.widget();
-               } else {
-                       element = delegateElement = $( element );
-                       this.bindings = this.bindings.add( element );
-               }
-
-               $.each( handlers, function( event, handler ) {
-                       function handlerProxy() {
-
-                               // Allow widgets to customize the disabled 
handling
-                               // - disabled as an array instead of boolean
-                               // - disabled class as method for disabling 
individual parts
-                               if ( !suppressDisabledCheck &&
-                                               ( instance.options.disabled === 
true ||
-                                               $( this ).hasClass( 
"ui-state-disabled" ) ) ) {
-                                       return;
-                               }
-                               return ( typeof handler === "string" ? 
instance[ handler ] : handler )
-                                       .apply( instance, arguments );
-                       }
-
-                       // Copy the guid so direct unbinding works
-                       if ( typeof handler !== "string" ) {
-                               handlerProxy.guid = handler.guid =
-                                       handler.guid || handlerProxy.guid || 
$.guid++;
-                       }
-
-                       var match = event.match( /^([\w:-]*)\s*(.*)$/ );
-                       var eventName = match[ 1 ] + instance.eventNamespace;
-                       var selector = match[ 2 ];
-
-                       if ( selector ) {
-                               delegateElement.on( eventName, selector, 
handlerProxy );
-                       } else {
-                               element.on( eventName, handlerProxy );
-                       }
-               } );
-       },
-
-       _off: function( element, eventName ) {
-               eventName = ( eventName || "" ).split( " " ).join( 
this.eventNamespace + " " ) +
-                       this.eventNamespace;
-               element.off( eventName ).off( eventName );
-
-               // Clear the stack to avoid memory leaks (#10056)
-               this.bindings = $( this.bindings.not( element ).get() );
-               this.focusable = $( this.focusable.not( element ).get() );
-               this.hoverable = $( this.hoverable.not( element ).get() );
-       },
-
-       _delay: function( handler, delay ) {
-               function handlerProxy() {
-                       return ( typeof handler === "string" ? instance[ 
handler ] : handler )
-                               .apply( instance, arguments );
-               }
-               var instance = this;
-               return setTimeout( handlerProxy, delay || 0 );
-       },
-
-       _hoverable: function( element ) {
-               this.hoverable = this.hoverable.add( element );
-               this._on( element, {
-                       mouseenter: function( event ) {
-                               this._addClass( $( event.currentTarget ), null, 
"ui-state-hover" );
-                       },
-                       mouseleave: function( event ) {
-                               this._removeClass( $( event.currentTarget ), 
null, "ui-state-hover" );
-                       }
-               } );
-       },
-
-       _focusable: function( element ) {
-               this.focusable = this.focusable.add( element );
-               this._on( element, {
-                       focusin: function( event ) {
-                               this._addClass( $( event.currentTarget ), null, 
"ui-state-focus" );
-                       },
-                       focusout: function( event ) {
-                               this._removeClass( $( event.currentTarget ), 
null, "ui-state-focus" );
-                       }
-               } );
-       },
-
-       _trigger: function( type, event, data ) {
-               var prop, orig;
-               var callback = this.options[ type ];
-
-               data = data || {};
-               event = $.Event( event );
-               event.type = ( type === this.widgetEventPrefix ?
-                       type :
-                       this.widgetEventPrefix + type ).toLowerCase();
-
-               // The original event may come from any element
-               // so we need to reset the target on the new event
-               event.target = this.element[ 0 ];
-
-               // Copy original event properties over to the new event
-               orig = event.originalEvent;
-               if ( orig ) {
-                       for ( prop in orig ) {
-                               if ( !( prop in event ) ) {
-                                       event[ prop ] = orig[ prop ];
-                               }
-                       }
-               }
-
-               this.element.trigger( event, data );
-               return !( $.isFunction( callback ) &&
-                       callback.apply( this.element[ 0 ], [ event ].concat( 
data ) ) === false ||
-                       event.isDefaultPrevented() );
-       }
-};
-
-$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) 
{
-       $.Widget.prototype[ "_" + method ] = function( element, options, 
callback ) {
-               if ( typeof options === "string" ) {
-                       options = { effect: options };
-               }
-
-               var hasOptions;
-               var effectName = !options ?
-                       method :
-                       options === true || typeof options === "number" ?
-                               defaultEffect :
-                               options.effect || defaultEffect;
-
-               options = options || {};
-               if ( typeof options === "number" ) {
-                       options = { duration: options };
-               }
-
-               hasOptions = !$.isEmptyObject( options );
-               options.complete = callback;
-
-               if ( options.delay ) {
-                       element.delay( options.delay );
-               }
-
-               if ( hasOptions && $.effects && $.effects.effect[ effectName ] 
) {
-                       element[ method ]( options );
-               } else if ( effectName !== method && element[ effectName ] ) {
-                       element[ effectName ]( options.duration, 
options.easing, callback );
-               } else {
-                       element.queue( function( next ) {
-                               $( this )[ method ]();
-                               if ( callback ) {
-                                       callback.call( element[ 0 ] );
-                               }
-                               next();
-                       } );
-               }
-       };
-} );
-
-var widget = $.widget;
-
-
-/*!
- * jQuery UI Position 1.12.1
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/position/
- */
-
-//>>label: Position
-//>>group: Core
-//>>description: Positions elements relative to other elements.
-//>>docs: http://api.jqueryui.com/position/
-//>>demos: http://jqueryui.com/position/
-
-
-( function() {
-var cachedScrollbarWidth,
-       max = Math.max,
-       abs = Math.abs,
-       rhorizontal = /left|center|right/,
-       rvertical = /top|center|bottom/,
-       roffset = /[\+\-]\d+(\.[\d]+)?%?/,
-       rposition = /^\w+/,
-       rpercent = /%$/,
-       _position = $.fn.position;
-
-function getOffsets( offsets, width, height ) {
-       return [
-               parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? 
width / 100 : 1 ),
-               parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? 
height / 100 : 1 )
-       ];
-}
-
-function parseCss( element, property ) {
-       return parseInt( $.css( element, property ), 10 ) || 0;
-}
-
-function getDimensions( elem ) {
-       var raw = elem[ 0 ];
-       if ( raw.nodeType === 9 ) {
-               return {
-                       width: elem.width(),
-                       height: elem.height(),
-                       offset: { top: 0, left: 0 }
-               };
-       }
-       if ( $.isWindow( raw ) ) {
-               return {
-                       width: elem.width(),
-                       height: elem.height(),
-                       offset: { top: elem.scrollTop(), left: 
elem.scrollLeft() }
-               };
-       }
-       if ( raw.preventDefault ) {
-               return {
-                       width: 0,
-                       height: 0,
-                       offset: { top: raw.pageY, left: raw.pageX }
-               };
-       }
-       return {
-               width: elem.outerWidth(),
-               height: elem.outerHeight(),
-               offset: elem.offset()
-       };
-}
-
-$.position = {
-       scrollbarWidth: function() {
-               if ( cachedScrollbarWidth !== undefined ) {
-                       return cachedScrollbarWidth;
-               }
-               var w1, w2,
-                       div = $( "<div " +
-                               
"style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>"
 +
-                               "<div 
style='height:100px;width:auto;'></div></div>" ),
-                       innerDiv = div.children()[ 0 ];
-
-               $( "body" ).append( div );
-               w1 = innerDiv.offsetWidth;
-               div.css( "overflow", "scroll" );
-
-               w2 = innerDiv.offsetWidth;
-
-               if ( w1 === w2 ) {
-                       w2 = div[ 0 ].clientWidth;
-               }
-
-               div.remove();
-
-               return ( cachedScrollbarWidth = w1 - w2 );
-       },
-       getScrollInfo: function( within ) {
-               var overflowX = within.isWindow || within.isDocument ? "" :
-                               within.element.css( "overflow-x" ),
-                       overflowY = within.isWindow || within.isDocument ? "" :
-                               within.element.css( "overflow-y" ),
-                       hasOverflowX = overflowX === "scroll" ||
-                               ( overflowX === "auto" && within.width < 
within.element[ 0 ].scrollWidth ),
-                       hasOverflowY = overflowY === "scroll" ||
-                               ( overflowY === "auto" && within.height < 
within.element[ 0 ].scrollHeight );
-               return {
-                       width: hasOverflowY ? $.position.scrollbarWidth() : 0,
-                       height: hasOverflowX ? $.position.scrollbarWidth() : 0
-               };
-       },
-       getWithinInfo: function( element ) {
-               var withinElement = $( element || window ),
-                       isWindow = $.isWindow( withinElement[ 0 ] ),
-                       isDocument = !!withinElement[ 0 ] && withinElement[ 0 
].nodeType === 9,
-                       hasOffset = !isWindow && !isDocument;
-               return {
-                       element: withinElement,
-                       isWindow: isWindow,
-                       isDocument: isDocument,
-                       offset: hasOffset ? $( element ).offset() : { left: 0, 
top: 0 },
-                       scrollLeft: withinElement.scrollLeft(),
-                       scrollTop: withinElement.scrollTop(),
-                       width: withinElement.outerWidth(),
-                       height: withinElement.outerHeight()
-               };
-       }
-};
-
-$.fn.position = function( options ) {
-       if ( !options || !options.of ) {
-               return _position.apply( this, arguments );
-       }
-
-       // Make a copy, we don't want to modify arguments
-       options = $.extend( {}, options );
-
-       var atOffset, targetWidth, targetHeight, targetOffset, basePosition, 
dimensions,
-               target = $( options.of ),
-               within = $.position.getWithinInfo( options.within ),
-               scrollInfo = $.position.getScrollInfo( within ),
-               collision = ( options.collision || "flip" ).split( " " ),
-               offsets = {};
-
-       dimensions = getDimensions( target );
-       if ( target[ 0 ].preventDefault ) {
-
-               // Force left top to allow flipping
-               options.at = "left top";
-       }
-       targetWidth = dimensions.width;
-       targetHeight = dimensions.height;
-       targetOffset = dimensions.offset;
-
-       // Clone to reuse original targetOffset later
-       basePosition = $.extend( {}, targetOffset );
-
-       // Force my and at to have valid horizontal and vertical positions
-       // if a value is missing or invalid, it will be converted to center
-       $.each( [ "my", "at" ], function() {
-               var pos = ( options[ this ] || "" ).split( " " ),
-                       horizontalOffset,
-                       verticalOffset;
-
-               if ( pos.length === 1 ) {
-                       pos = rhorizontal.test( pos[ 0 ] ) ?
-                               pos.concat( [ "center" ] ) :
-                               rvertical.test( pos[ 0 ] ) ?
-                                       [ "center" ].concat( pos ) :
-                                       [ "center", "center" ];
-               }
-               pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
-               pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
-
-               // Calculate offsets
-               horizontalOffset = roffset.exec( pos[ 0 ] );
-               verticalOffset = roffset.exec( pos[ 1 ] );
-               offsets[ this ] = [
-                       horizontalOffset ? horizontalOffset[ 0 ] : 0,
-                       verticalOffset ? verticalOffset[ 0 ] : 0
-               ];
-
-               // Reduce to just the positions without the offsets
-               options[ this ] = [
-                       rposition.exec( pos[ 0 ] )[ 0 ],
-                       rposition.exec( pos[ 1 ] )[ 0 ]
-               ];
-       } );
-
-       // Normalize collision option
-       if ( collision.length === 1 ) {
-               collision[ 1 ] = collision[ 0 ];
-       }
-
-       if ( options.at[ 0 ] === "right" ) {
-               basePosition.left += targetWidth;
-       } else if ( options.at[ 0 ] === "center" ) {
-               basePosition.left += targetWidth / 2;
-       }
-
-       if ( options.at[ 1 ] === "bottom" ) {
-               basePosition.top += targetHeight;
-       } else if ( options.at[ 1 ] === "center" ) {
-               basePosition.top += targetHeight / 2;
-       }
-
-       atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
-       basePosition.left += atOffset[ 0 ];
-       basePosition.top += atOffset[ 1 ];
-
-       return this.each( function() {
-               var collisionPosition, using,
-                       elem = $( this ),
-                       elemWidth = elem.outerWidth(),
-                       elemHeight = elem.outerHeight(),
-                       marginLeft = parseCss( this, "marginLeft" ),
-                       marginTop = parseCss( this, "marginTop" ),
-                       collisionWidth = elemWidth + marginLeft + parseCss( 
this, "marginRight" ) +
-                               scrollInfo.width,
-                       collisionHeight = elemHeight + marginTop + parseCss( 
this, "marginBottom" ) +
-                               scrollInfo.height,
-                       position = $.extend( {}, basePosition ),
-                       myOffset = getOffsets( offsets.my, elem.outerWidth(), 
elem.outerHeight() );
-
-               if ( options.my[ 0 ] === "right" ) {
-                       position.left -= elemWidth;
-               } else if ( options.my[ 0 ] === "center" ) {
-                       position.left -= elemWidth / 2;
-               }
-
-               if ( options.my[ 1 ] === "bottom" ) {
-                       position.top -= elemHeight;
-               } else if ( options.my[ 1 ] === "center" ) {
-                       position.top -= elemHeight / 2;
-               }
-
-               position.left += myOffset[ 0 ];
-               position.top += myOffset[ 1 ];
-
-               collisionPosition = {
-                       marginLeft: marginLeft,
-                       marginTop: marginTop
-               };
-
-               $.each( [ "left", "top" ], function( i, dir ) {
-                       if ( $.ui.position[ collision[ i ] ] ) {
-                               $.ui.position[ collision[ i ] ][ dir ]( 
position, {
-                                       targetWidth: targetWidth,
-                                       targetHeight: targetHeight,
-                                       elemWidth: elemWidth,
-                                       elemHeight: elemHeight,
-                                       collisionPosition: collisionPosition,
-                                       collisionWidth: collisionWidth,
-                                       collisionHeight: collisionHeight,
-                                       offset: [ atOffset[ 0 ] + myOffset[ 0 
], atOffset [ 1 ] + myOffset[ 1 ] ],
-                                       my: options.my,
-                                       at: options.at,
-                                       within: within,
-                                       elem: elem
-                               } );
-                       }
-               } );
-
-               if ( options.using ) {
-
-                       // Adds feedback as second argument to using callback, 
if present
-                       using = function( props ) {
-                               var left = targetOffset.left - position.left,
-                                       right = left + targetWidth - elemWidth,
-                                       top = targetOffset.top - position.top,
-                                       bottom = top + targetHeight - 
elemHeight,
-                                       feedback = {
-                                               target: {
-                                                       element: target,
-                                                       left: targetOffset.left,
-                                                       top: targetOffset.top,
-                                                       width: targetWidth,
-                                                       height: targetHeight
-                                               },
-                                               element: {
-                                                       element: elem,
-                                                       left: position.left,
-                                                       top: position.top,
-                                                       width: elemWidth,
-                                                       height: elemHeight
-                                               },
-                                               horizontal: right < 0 ? "left" 
: left > 0 ? "right" : "center",
-                                               vertical: bottom < 0 ? "top" : 
top > 0 ? "bottom" : "middle"
-                                       };
-                               if ( targetWidth < elemWidth && abs( left + 
right ) < targetWidth ) {
-                                       feedback.horizontal = "center";
-                               }
-                               if ( targetHeight < elemHeight && abs( top + 
bottom ) < targetHeight ) {
-                                       feedback.vertical = "middle";
-                               }
-                               if ( max( abs( left ), abs( right ) ) > max( 
abs( top ), abs( bottom ) ) ) {
-                                       feedback.important = "horizontal";
-                               } else {
-                                       feedback.important = "vertical";
-                               }
-                               options.using.call( this, props, feedback );
-                       };
-               }
-
-               elem.offset( $.extend( position, { using: using } ) );
-       } );
-};
-
-$.ui.position = {
-       fit: {
-               left: function( position, data ) {
-                       var within = data.within,
-                               withinOffset = within.isWindow ? 
within.scrollLeft : within.offset.left,
-                               outerWidth = within.width,
-                               collisionPosLeft = position.left - 
data.collisionPosition.marginLeft,
-                               overLeft = withinOffset - collisionPosLeft,
-                               overRight = collisionPosLeft + 
data.collisionWidth - outerWidth - withinOffset,
-                               newOverRight;
-
-                       // Element is wider than within
-                       if ( data.collisionWidth > outerWidth ) {
-
-                               // Element is initially over the left side of 
within
-                               if ( overLeft > 0 && overRight <= 0 ) {
-                                       newOverRight = position.left + overLeft 
+ data.collisionWidth - outerWidth -
-                                               withinOffset;
-                                       position.left += overLeft - 
newOverRight;
-
-                               // Element is initially over right side of 
within
-                               } else if ( overRight > 0 && overLeft <= 0 ) {
-                                       position.left = withinOffset;
-
-                               // Element is initially over both left and 
right sides of within
-                               } else {
-                                       if ( overLeft > overRight ) {
-                                               position.left = withinOffset + 
outerWidth - data.collisionWidth;
-                                       } else {
-                                               position.left = withinOffset;
-                                       }
-                               }
-
-                       // Too far left -> align with left edge
-                       } else if ( overLeft > 0 ) {
-                               position.left += overLeft;
-
-                       // Too far right -> align with right edge
-                       } else if ( overRight > 0 ) {
-                               position.left -= overRight;
-
-                       // Adjust based on position and margin
-                       } else {
-                               position.left = max( position.left - 
collisionPosLeft, position.left );
-                       }
-               },
-               top: function( position, data ) {
-                       var within = data.within,
-                               withinOffset = within.isWindow ? 
within.scrollTop : within.offset.top,
-                               outerHeight = data.within.height,
-                               collisionPosTop = position.top - 
data.collisionPosition.marginTop,
-                               overTop = withinOffset - collisionPosTop,
-                               overBottom = collisionPosTop + 
data.collisionHeight - outerHeight - withinOffset,
-                               newOverBottom;
-
-                       // Element is taller than within
-                       if ( data.collisionHeight > outerHeight ) {
-
-                               // Element is initially over the top of within
-                               if ( overTop > 0 && overBottom <= 0 ) {
-                                       newOverBottom = position.top + overTop 
+ data.collisionHeight - outerHeight -
-                                               withinOffset;
-                                       position.top += overTop - newOverBottom;
-
-                               // Element is initially over bottom of within
-                               } else if ( overBottom > 0 && overTop <= 0 ) {
-                                       position.top = withinOffset;
-
-                               // Element is initially over both top and 
bottom of within
-                               } else {
-                                       if ( overTop > overBottom ) {
-                                               position.top = withinOffset + 
outerHeight - data.collisionHeight;
-                                       } else {
-                                               position.top = withinOffset;
-                                       }
-                               }
-
-                       // Too far up -> align with top
-                       } else if ( overTop > 0 ) {
-                               position.top += overTop;
-
-                       // Too far down -> align with bottom edge
-                       } else if ( overBottom > 0 ) {
-                               position.top -= overBottom;
-
-                       // Adjust based on position and margin
-                       } else {
-                               position.top = max( position.top - 
collisionPosTop, position.top );
-                       }
-               }
-       },
-       flip: {
-               left: function( position, data ) {
-                       var within = data.within,
-                               withinOffset = within.offset.left + 
within.scrollLeft,
-                               outerWidth = within.width,
-                               offsetLeft = within.isWindow ? 
within.scrollLeft : within.offset.left,
-                               collisionPosLeft = position.left - 
data.collisionPosition.marginLeft,
-                               overLeft = collisionPosLeft - offsetLeft,
-                               overRight = collisionPosLeft + 
data.collisionWidth - outerWidth - offsetLeft,
-                               myOffset = data.my[ 0 ] === "left" ?
-                                       -data.elemWidth :
-                                       data.my[ 0 ] === "right" ?
-                                               data.elemWidth :
-                                               0,
-                               atOffset = data.at[ 0 ] === "left" ?
-                                       data.targetWidth :
-                                       data.at[ 0 ] === "right" ?
-                                               -data.targetWidth :
-                                               0,
-                               offset = -2 * data.offset[ 0 ],
-                               newOverRight,
-                               newOverLeft;
-
-                       if ( overLeft < 0 ) {
-                               newOverRight = position.left + myOffset + 
atOffset + offset + data.collisionWidth -
-                                       outerWidth - withinOffset;
-                               if ( newOverRight < 0 || newOverRight < abs( 
overLeft ) ) {
-                                       position.left += myOffset + atOffset + 
offset;
-                               }
-                       } else if ( overRight > 0 ) {
-                               newOverLeft = position.left - 
data.collisionPosition.marginLeft + myOffset +
-                                       atOffset + offset - offsetLeft;
-                               if ( newOverLeft > 0 || abs( newOverLeft ) < 
overRight ) {
-                                       position.left += myOffset + atOffset + 
offset;
-                               }
-                       }
-               },
-               top: function( position, data ) {
-                       var within = data.within,
-                               withinOffset = within.offset.top + 
within.scrollTop,
-                               outerHeight = within.height,
-                               offsetTop = within.isWindow ? within.scrollTop 
: within.offset.top,
-                               collisionPosTop = position.top - 
data.collisionPosition.marginTop,
-                               overTop = collisionPosTop - offsetTop,
-                               overBottom = collisionPosTop + 
data.collisionHeight - outerHeight - offsetTop,
-                               top = data.my[ 1 ] === "top",
-                               myOffset = top ?
-                                       -data.elemHeight :
-                                       data.my[ 1 ] === "bottom" ?
-                                               data.elemHeight :
-                                               0,
-                               atOffset = data.at[ 1 ] === "top" ?
-                                       data.targetHeight :
-                                       data.at[ 1 ] === "bottom" ?
-                                               -data.targetHeight :
-                                               0,
-                               offset = -2 * data.offset[ 1 ],
-                               newOverTop,
-                               newOverBottom;
-                       if ( overTop < 0 ) {
-                               newOverBottom = position.top + myOffset + 
atOffset + offset + data.collisionHeight -
-                                       outerHeight - withinOffset;
-                               if ( newOverBottom < 0 || newOverBottom < abs( 
overTop ) ) {
-                                       position.top += myOffset + atOffset + 
offset;
-                               }
-                       } else if ( overBottom > 0 ) {
-                               newOverTop = position.top - 
data.collisionPosition.marginTop + myOffset + atOffset +
-                                       offset - offsetTop;
-                               if ( newOverTop > 0 || abs( newOverTop ) < 
overBottom ) {
-                                       position.top += myOffset + atOffset + 
offset;
-                               }
-                       }
-               }
-       },
-       flipfit: {
-               left: function() {
-                       $.ui.position.flip.left.apply( this, arguments );
-                       $.ui.position.fit.left.apply( this, arguments );
-               },
-               top: function() {
-                       $.ui.position.flip.top.apply( this, arguments );
-                       $.ui.position.fit.top.apply( this, arguments );
-               }
-       }
-};
-
-} )();
-
-var position = $.ui.position;
-
-
-/*!
- * jQuery UI :data 1.12.1
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- */
-
-//>>label: :data Selector
-//>>group: Core
-//>>description: Selects elements which have data stored under the specified 
key.
-//>>docs: http://api.jqueryui.com/data-selector/
-
-
-var data = $.extend( $.expr[ ":" ], {
-       data: $.expr.createPseudo ?
-               $.expr.createPseudo( function( dataName ) {
-                       return function( elem ) {
-                               return !!$.data( elem, dataName );
-                       };
-               } ) :
-
-               // Support: jQuery <1.8
-               function( elem, i, match ) {
-                       return !!$.data( elem, match[ 3 ] );
-               }
-} );
-
-/*!
- * jQuery UI Disable Selection 1.12.1
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- */
-
-//>>label: disableSelection
-//>>group: Core
-//>>description: Disable selection of text content within the set of matched 
elements.
-//>>docs: http://api.jqueryui.com/disableSelection/
-
-// This file is deprecated
-
-
-var disableSelection = $.fn.extend( {
-       disableSelection: ( function() {
-               var eventType = "onselectstart" in document.createElement( 
"div" ) ?
-                       "selectstart" :
-                       "mousedown";
-
-               return function() {
-                       return this.on( eventType + ".ui-disableSelection", 
function( event ) {
-                               event.preventDefault();
-                       } );
-               };
-       } )(),
-
-       enableSelection: function() {
-               return this.off( ".ui-disableSelection" );
-       }
-} );
-
-
-/*!
- * jQuery UI Effects 1.12.1
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- */
-
-//>>label: Effects Core
-//>>group: Effects
-// jscs:disable maximumLineLength
-//>>description: Extends the internal jQuery effects. Includes morphing and 
easing. Required by all other effects.
-// jscs:enable maximumLineLength
-//>>docs: http://api.jqueryui.com/category/effects-core/
-//>>demos: http://jqueryui.com/effect/
-
-
-
-var dataSpace = "ui-effects-",
-       dataSpaceStyle = "ui-effects-style",
-       dataSpaceAnimated = "ui-effects-animated",
-
-       // Create a local jQuery because jQuery Color relies on it and the
-       // global may not exist with AMD and a custom build (#10199)
-       jQuery = $;
-
-$.effects = {
-       effect: {}
-};
-
-/*!
- * jQuery Color Animations v2.1.2
- * https://github.com/jquery/jquery-color
- *
- * Copyright 2014 jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * Date: Wed Jan 16 08:47:09 2013 -0600
- */
-( function( jQuery, undefined ) {
-
-       var stepHooks = "backgroundColor borderBottomColor borderLeftColor 
borderRightColor " +
-               "borderTopColor color columnRuleColor outlineColor 
textDecorationColor textEmphasisColor",
-
-       // Plusequals test for += 100 -= 100
-       rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,
-
-       // A set of RE's that can match strings and generate color tuples.
-       stringParsers = [ {
-                       re: 
/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
-                       parse: function( execResult ) {
-                               return [
-                                       execResult[ 1 ],
-                                       execResult[ 2 ],
-                                       execResult[ 3 ],
-                                       execResult[ 4 ]
-                               ];
-                       }
-               }, {
-                       re: 
/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
-                       parse: function( execResult ) {
-                               return [
-                                       execResult[ 1 ] * 2.55,
-                                       execResult[ 2 ] * 2.55,
-                                       execResult[ 3 ] * 2.55,
-                                       execResult[ 4 ]
-                               ];
-                       }
-               }, {
-
-                       // This regex ignores A-F because it's compared against 
an already lowercased string
-                       re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,
-                       parse: function( execResult ) {
-                               return [
-                                       parseInt( execResult[ 1 ], 16 ),
-                                       parseInt( execResult[ 2 ], 16 ),
-                                       parseInt( execResult[ 3 ], 16 )
-                               ];
-                       }
-               }, {
-
-                       // This regex ignores A-F because it's compared against 
an already lowercased string
-                       re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,
-                       parse: function( execResult ) {
-                               return [
-                                       parseInt( execResult[ 1 ] + execResult[ 
1 ], 16 ),
-                                       parseInt( execResult[ 2 ] + execResult[ 
2 ], 16 ),
-                                       parseInt( execResult[ 3 ] + execResult[ 
3 ], 16 )
-                               ];
-                       }
-               }, {
-                       re: 
/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
-                       space: "hsla",
-                       parse: function( execResult ) {
-                               return [
-                                       execResult[ 1 ],
-                                       execResult[ 2 ] / 100,
-                                       execResult[ 3 ] / 100,
-                                       execResult[ 4 ]
-                               ];
-                       }
-               } ],
-
-       // JQuery.Color( )
-       color = jQuery.Color = function( color, green, blue, alpha ) {
-               return new jQuery.Color.fn.parse( color, green, blue, alpha );
-       },
-       spaces = {
-               rgba: {
-                       props: {
-                               red: {
-                                       idx: 0,
-                                       type: "byte"
-                               },
-                               green: {
-                                       idx: 1,
-                                       type: "byte"
-                               },
-                               blue: {
-                                       idx: 2,
-                                       type: "byte"
-                               }
-                       }
-               },
-
-               hsla: {
-                       props: {
-                               hue: {
-                                       idx: 0,
-                                       type: "degrees"
-                               },
-                               saturation: {
-                                       idx: 1,
-                                       type: "percent"
-                               },
-                               lightness: {
-                                       idx: 2,
-                                       type: "percent"
-                               }
-                       }
-               }
-       },
-       propTypes = {
-               "byte": {
-                       floor: true,
-                       max: 255
-               },
-               "percent": {
-                       max: 1
-               },
-               "degrees": {
-                       mod: 360,
-                       floor: true
-               }
-       },
-       support = color.support = {},
-
-       // Element for support tests
-       supportElem = jQuery( "<p>" )[ 0 ],
-
-       // Colors = jQuery.Color.names
-       colors,
-
-       // Local aliases of functions called often
-       each = jQuery.each;
-
-// Determine rgba support immediately
-supportElem.style.cssText = "background-color:rgba(1,1,1,.5)";
-support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1;
-
-// Define cache name and alpha properties
-// for rgba and hsla spaces
-each( spaces, function( spaceName, space ) {
-       space.cache = "_" + spaceName;
-       space.props.alpha = {
-               idx: 3,
-               type: "percent",
-               def: 1
-       };
-} );
-
-function clamp( value, prop, allowEmpty ) {
-       var type = propTypes[ prop.type ] || {};
-
-       if ( value == null ) {
-               return ( allowEmpty || !prop.def ) ? null : prop.def;
-       }
-
-       // ~~ is an short way of doing floor for positive numbers
-       value = type.floor ? ~~value : parseFloat( value );
-
-       // IE will pass in empty strings as value for alpha,
-       // which will hit this case
-       if ( isNaN( value ) ) {
-               return prop.def;
-       }
-
-       if ( type.mod ) {
-
-               // We add mod before modding to make sure that negatives values
-               // get converted properly: -10 -> 350
-               return ( value + type.mod ) % type.mod;
-       }
-
-       // For now all property types without mod have min and max
-       return 0 > value ? 0 : type.max < value ? type.max : value;
-}
-
-function stringParse( string ) {
-       var inst = color(),
-               rgba = inst._rgba = [];
-
-       string = string.toLowerCase();
-
-       each( stringParsers, function( i, parser ) {
-               var parsed,
-                       match = parser.re.exec( string ),
-                       values = match && parser.parse( match ),
-                       spaceName = parser.space || "rgba";
-
-               if ( values ) {
-                       parsed = inst[ spaceName ]( values );
-
-                       // If this was an rgba parse the assignment might 
happen twice
-                       // oh well....
-                       inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ 
spaceName ].cache ];
-                       rgba = inst._rgba = parsed._rgba;
-
-                       // Exit each( stringParsers ) here because we matched
-                       return false;
-               }
-       } );
-
-       // Found a stringParser that handled it
-       if ( rgba.length ) {
-
-               // If this came from a parsed string, force "transparent" when 
alpha is 0
-               // chrome, (and maybe others) return "transparent" as 
rgba(0,0,0,0)
-               if ( rgba.join() === "0,0,0,0" ) {
-                       jQuery.extend( rgba, colors.transparent );
-               }
-               return inst;
-       }
-
-       // Named colors
-       return colors[ string ];
-}
-
-color.fn = jQuery.extend( color.prototype, {
-       parse: function( red, green, blue, alpha ) {
-               if ( red === undefined ) {
-                       this._rgba = [ null, null, null, null ];
-                       return this;
-               }
-               if ( red.jquery || red.nodeType ) {
-                       red = jQuery( red ).css( green );
-                       green = undefined;
-               }
-
-               var inst = this,
-                       type = jQuery.type( red ),
-                       rgba = this._rgba = [];
-
-               // More than 1 argument specified - assume ( red, green, blue, 
alpha )
-               if ( green !== undefined ) {
-                       red = [ red, green, blue, alpha ];
-                       type = "array";
-               }
-
-               if ( type === "string" ) {
-                       return this.parse( stringParse( red ) || 
colors._default );
-               }
-
-               if ( type === "array" ) {
-                       each( spaces.rgba.props, function( key, prop ) {
-                               rgba[ prop.idx ] = clamp( red[ prop.idx ], prop 
);
-                       } );
-                       return this;
-               }
-
-               if ( type === "object" ) {
-                       if ( red instanceof color ) {
-                               each( spaces, function( spaceName, space ) {
-                                       if ( red[ space.cache ] ) {
-                                               inst[ space.cache ] = red[ 
space.cache ].slice();
-                                       }
-                               } );
-                       } else {
-                               each( spaces, function( spaceName, space ) {
-                                       var cache = space.cache;
-                                       each( space.props, function( key, prop 
) {
-
-                                               // If the cache doesn't exist, 
and we know how to convert
-                                               if ( !inst[ cache ] && space.to 
) {
-
-                                                       // If the value was 
null, we don't need to copy it
-                                                       // if the key was 
alpha, we don't need to copy it either
-                                                       if ( key === "alpha" || 
red[ key ] == null ) {
-                                                               return;
-                                                       }
-                                                       inst[ cache ] = 
space.to( inst._rgba );
-                                               }
-
-                                               // This is the only case where 
we allow nulls for ALL properties.
-                                               // call clamp with 
alwaysAllowEmpty
-                                               inst[ cache ][ prop.idx ] = 
clamp( red[ key ], prop, true );
-                                       } );
-
-                                       // Everything defined but alpha?
-                                       if ( inst[ cache ] &&
-                                                       jQuery.inArray( null, 
inst[ cache ].slice( 0, 3 ) ) < 0 ) {
-
-                                               // Use the default of 1
-                                               inst[ cache ][ 3 ] = 1;
-                                               if ( space.from ) {
-                                                       inst._rgba = 
space.from( inst[ cache ] );
-                                               }
-                                       }
-                               } );
-                       }
-                       return this;
-               }
-       },
-       is: function( compare ) {
-               var is = color( compare ),
-                       same = true,
-                       inst = this;
-
-               each( spaces, function( _, space ) {
-                       var localCache,
-                               isCache = is[ space.cache ];
-                       if ( isCache ) {
-                               localCache = inst[ space.cache ] || space.to && 
space.to( inst._rgba ) || [];
-                               each( space.props, function( _, prop ) {
-                                       if ( isCache[ prop.idx ] != null ) {
-                                               same = ( isCache[ prop.idx ] 
=== localCache[ prop.idx ] );
-                                               return same;
-                                       }
-                               } );
-                       }
-                       return same;
-               } );
-               return same;
-       },
-       _space: function() {
-               var used = [],
-                       inst = this;
-               each( spaces, function( spaceName, space ) {
-                       if ( inst[ space.cache ] ) {
-                               used.push( spaceName );
-                       }
-               } );
-               return used.pop();
-       },
-       transition: function( other, distance ) {
-               var end = color( other ),
-                       spaceName = end._space(),
-                       space = spaces[ spaceName ],
-                       startColor = this.alpha() === 0 ? color( "transparent" 
) : this,
-                       start = startColor[ space.cache ] || space.to( 
startColor._rgba ),
-                       result = start.slice();
-
-               end = end[ space.cache ];
-               each( space.props, function( key, prop ) {
-                       var index = prop.idx,
-                               startValue = start[ index ],
-                               endValue = end[ index ],
-                               type = propTypes[ prop.type ] || {};
-
-                       // If null, don't override start value
-                       if ( endValue === null ) {
-                               return;
-                       }
-
-                       // If null - use end
-                       if ( startValue === null ) {
-                               result[ index ] = endValue;
-                       } else {
-                               if ( type.mod ) {
-                                       if ( endValue - startValue > type.mod / 
2 ) {
-                                               startValue += type.mod;
-                                       } else if ( startValue - endValue > 
type.mod / 2 ) {
-                                               startValue -= type.mod;
-                                       }
-                               }
-                               result[ index ] = clamp( ( endValue - 
startValue ) * distance + startValue, prop );
-                       }
-               } );
-               return this[ spaceName ]( result );
-       },
-       blend: function( opaque ) {
-
-               // If we are already opaque - return ourself
-               if ( this._rgba[ 3 ] === 1 ) {
-                       return this;
-               }
-
-               var rgb = this._rgba.slice(),
-                       a = rgb.pop(),
-                       blend = color( opaque )._rgba;
-
-               return color( jQuery.map( rgb, function( v, i ) {
-                       return ( 1 - a ) * blend[ i ] + a * v;
-               } ) );
-       },
-       toRgbaString: function() {
-               var prefix = "rgba(",
-                       rgba = jQuery.map( this._rgba, function( v, i ) {
-                               return v == null ? ( i > 2 ? 1 : 0 ) : v;
-                       } );
-
-               if ( rgba[ 3 ] === 1 ) {
-                       rgba.pop();
-                       prefix = "rgb(";
-               }
-
-               return prefix + rgba.join() + ")";
-       },
-       toHslaString: function() {
-               var prefix = "hsla(",
-                       hsla = jQuery.map( this.hsla(), function( v, i ) {
-                               if ( v == null ) {
-                                       v = i > 2 ? 1 : 0;
-                               }
-
-                               // Catch 1 and 2
-                               if ( i && i < 3 ) {
-                                       v = Math.round( v * 100 ) + "%";
-                               }
-                               return v;
-                       } );
-
-               if ( hsla[ 3 ] === 1 ) {
-                       hsla.pop();
-                       prefix = "hsl(";
-               }
-               return prefix + hsla.join() + ")";
-       },
-       toHexString: function( includeAlpha ) {
-               var rgba = this._rgba.slice(),
-                       alpha = rgba.pop();
-
-               if ( includeAlpha ) {
-                       rgba.push( ~~( alpha * 255 ) );
-               }
-
-               return "#" + jQuery.map( rgba, function( v ) {
-
-                       // Default to 0 when nulls exist
-                       v = ( v || 0 ).toString( 16 );
-                       return v.length === 1 ? "0" + v : v;
-               } ).join( "" );
-       },
-       toString: function() {
-               return this._rgba[ 3 ] === 0 ? "transparent" : 
this.toRgbaString();
-       }
-} );
-color.fn.parse.prototype = color.fn;
-
-// Hsla conversions adapted from:
-// 
https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021
-
-function hue2rgb( p, q, h ) {
-       h = ( h + 1 ) % 1;
-       if ( h * 6 < 1 ) {
-               return p + ( q - p ) * h * 6;
-       }
-       if ( h * 2 < 1 ) {
-               return q;
-       }
-       if ( h * 3 < 2 ) {
-               return p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6;
-       }
-       return p;
-}
-
-spaces.hsla.to = function( rgba ) {
-       if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {
-               return [ null, null, null, rgba[ 3 ] ];
-       }
-       var r = rgba[ 0 ] / 255,
-               g = rgba[ 1 ] / 255,
-               b = rgba[ 2 ] / 255,
-               a = rgba[ 3 ],
-               max = Math.max( r, g, b ),
-               min = Math.min( r, g, b ),
-               diff = max - min,
-               add = max + min,
-               l = add * 0.5,
-               h, s;
-
-       if ( min === max ) {
-               h = 0;
-       } else if ( r === max ) {
-               h = ( 60 * ( g - b ) / diff ) + 360;
-       } else if ( g === max ) {
-               h = ( 60 * ( b - r ) / diff ) + 120;
-       } else {
-               h = ( 60 * ( r - g ) / diff ) + 240;
-       }
-
-       // Chroma (diff) == 0 means greyscale which, by definition, saturation 
= 0%
-       // otherwise, saturation is based on the ratio of chroma (diff) to 
lightness (add)
-       if ( diff === 0 ) {
-               s = 0;
-       } else if ( l <= 0.5 ) {
-               s = diff / add;
-       } else {
-               s = diff / ( 2 - add );
-       }
-       return [ Math.round( h ) % 360, s, l, a == null ? 1 : a ];
-};
-
-spaces.hsla.from = function( hsla ) {
-       if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {
-               return [ null, null, null, hsla[ 3 ] ];
-       }
-       var h = hsla[ 0 ] / 360,
-               s = hsla[ 1 ],
-               l = hsla[ 2 ],
-               a = hsla[ 3 ],
-               q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,
-               p = 2 * l - q;
-
-       return [
-               Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),
-               Math.round( hue2rgb( p, q, h ) * 255 ),
-               Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),
-               a
-       ];
-};
-
-each( spaces, function( spaceName, space ) {
-       var props = space.props,
-               cache = space.cache,
-               to = space.to,
-               from = space.from;
-
-       // Makes rgba() and hsla()
-       color.fn[ spaceName ] = function( value ) {
-
-               // Generate a cache for this space if it doesn't exist
-               if ( to && !this[ cache ] ) {
-                       this[ cache ] = to( this._rgba );
-               }
-               if ( value === undefined ) {
-                       return this[ cache ].slice();
-               }
-
-               var ret,
-                       type = jQuery.type( value ),
-                       arr = ( type === "array" || type === "object" ) ? value 
: arguments,
-                       local = this[ cache ].slice();
-
-               each( props, function( key, prop ) {
-                       var val = arr[ type === "object" ? key : prop.idx ];
-                       if ( val == null ) {
-                               val = local[ prop.idx ];
-                       }
-                       local[ prop.idx ] = clamp( val, prop );
-               } );
-
-               if ( from ) {
-                       ret = color( from( local ) );
-                       ret[ cache ] = local;
-                       return ret;
-               } else {
-                       return color( local );
-               }
-       };
-
-       // Makes red() green() blue() alpha() hue() saturation() lightness()
-       each( props, function( key, prop ) {
-
-               // Alpha is included in more than one space
-               if ( color.fn[ key ] ) {
-                       return;
-               }
-               color.fn[ key ] = function( value ) {
-                       var vtype = jQuery.type( value ),
-                               fn = ( key === "alpha" ? ( this._hsla ? "hsla" 
: "rgba" ) : spaceName ),
-                               local = this[ fn ](),
-                               cur = local[ prop.idx ],
-                               match;
-
-                       if ( vtype === "undefined" ) {
-                               return cur;
-                       }
-
-                       if ( vtype === "function" ) {
-                               value = value.call( this, cur );
-                               vtype = jQuery.type( value );
-                       }
-                       if ( value == null && prop.empty ) {
-                               return this;
-                       }
-                       if ( vtype === "string" ) {
-                               match = rplusequals.exec( value );
-                               if ( match ) {
-                                       value = cur + parseFloat( match[ 2 ] ) 
* ( match[ 1 ] === "+" ? 1 : -1 );
-                               }
-                       }
-                       local[ prop.idx ] = value;
-                       return this[ fn ]( local );
-               };
-       } );
-} );
-
-// Add cssHook and .fx.step function for each named hook.
-// accept a space separated string of properties
-color.hook = function( hook ) {
-       var hooks = hook.split( " " );
-       each( hooks, function( i, hook ) {
-               jQuery.cssHooks[ hook ] = {
-                       set: function( elem, value ) {
-                               var parsed, curElem,
-                                       backgroundColor = "";
-
-                               if ( value !== "transparent" && ( jQuery.type( 
value ) !== "string" ||
-                                               ( parsed = stringParse( value ) 
) ) ) {
-                                       value = color( parsed || value );
-                                       if ( !support.rgba && value._rgba[ 3 ] 
!== 1 ) {
-                                               curElem = hook === 
"backgroundColor" ? elem.parentNode : elem;
-                                               while (
-                                                       ( backgroundColor === 
"" || backgroundColor === "transparent" ) &&
-                                                       curElem && curElem.style
-                                               ) {
-                                                       try {
-                                                               backgroundColor 
= jQuery.css( curElem, "backgroundColor" );
-                                                               curElem = 
curElem.parentNode;
-                                                       } catch ( e ) {
-                                                       }
-                                               }
-
-                                               value = value.blend( 
backgroundColor && backgroundColor !== "transparent" ?
-                                                       backgroundColor :
-                                                       "_default" );
-                                       }
-
-                                       value = value.toRgbaString();
-                               }
-                               try {
-                                       elem.style[ hook ] = value;
-                               } catch ( e ) {
-
-                                       // Wrapped to prevent IE from throwing 
errors on "invalid" values like
-                                       // 'auto' or 'inherit'
-                               }
-                       }
-               };
-               jQuery.fx.step[ hook ] = function( fx ) {
-                       if ( !fx.colorInit ) {
-                               fx.start = color( fx.elem, hook );
-                               fx.end = color( fx.end );
-                               fx.colorInit = true;
-                       }
-                       jQuery.cssHooks[ hook ].set( fx.elem, 
fx.start.transition( fx.end, fx.pos ) );
-               };
-       } );
-
-};
-
-color.hook( stepHooks );
-
-jQuery.cssHooks.borderColor = {
-       expand: function( value ) {
-               var expanded = {};
-
-               each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) 
{
-                       expanded[ "border" + part + "Color" ] = value;
-               } );
-               return expanded;
-       }
-};
-
-// Basic color names only.
-// Usage of any of the other color names requires adding yourself or including
-// jquery.color.svg-names.js.
-colors = jQuery.Color.names = {
-
-       // 4.1. Basic color keywords
-       aqua: "#00ffff",
-       black: "#000000",
-       blue: "#0000ff",
-       fuchsia: "#ff00ff",
-       gray: "#808080",
-       green: "#008000",
-       lime: "#00ff00",
-       maroon: "#800000",
-       navy: "#000080",
-       olive: "#808000",
-       purple: "#800080",
-       red: "#ff0000",
-       silver: "#c0c0c0",
-       teal: "#008080",
-       white: "#ffffff",
-       yellow: "#ffff00",
-
-       // 4.2.3. "transparent" color keyword
-       transparent: [ null, null, null, 0 ],
-
-       _default: "#ffffff"
-};
-
-} )( jQuery );
-
-/******************************************************************************/
-/****************************** CLASS ANIMATIONS 
******************************/
-/******************************************************************************/
-( function() {
-
-var classAnimationActions = [ "add", "remove", "toggle" ],
-       shorthandStyles = {
-               border: 1,
-               borderBottom: 1,
-               borderColor: 1,
-               borderLeft: 1,
-               borderRight: 1,
-               borderTop: 1,
-               borderWidth: 1,
-               margin: 1,
-               padding: 1
-       };
-
-$.each(
-       [ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", 
"borderTopStyle" ],
-       function( _, prop ) {
-               $.fx.step[ prop ] = function( fx ) {
-                       if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 
&& !fx.setAttr ) {
-                               jQuery.style( fx.elem, prop, fx.end );
-                               fx.setAttr = true;
-                       }
-               };
-       }
-);
-
-function getElementStyles( elem ) {
-       var key, len,
-               style = elem.ownerDocument.defaultView ?
-                       elem.ownerDocument.defaultView.getComputedStyle( elem, 
null ) :
-                       elem.currentStyle,
-               styles = {};
-
-       if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {
-               len = style.length;
-               while ( len-- ) {
-                       key = style[ len ];
-                       if ( typeof style[ key ] === "string" ) {
-                               styles[ $.camelCase( key ) ] = style[ key ];
-                       }
-               }
-
-       // Support: Opera, IE <9
-       } else {
-               for ( key in style ) {
-                       if ( typeof style[ key ] === "string" ) {
-                               styles[ key ] = style[ key ];
-                       }
-               }
-       }
-
-       return styles;
-}
-
-function styleDifference( oldStyle, newStyle ) {
-       var diff = {},
-               name, value;
-
-       for ( name in newStyle ) {
-               value = newStyle[ name ];
-               if ( oldStyle[ name ] !== value ) {
-                       if ( !shorthandStyles[ name ] ) {
-                               if ( $.fx.step[ name ] || !isNaN( parseFloat( 
value ) ) ) {
-                                       diff[ name ] = value;
-                               }
-                       }
-               }
-       }
-
-       return diff;
-}
-
-// Support: jQuery <1.8
-if ( !$.fn.addBack ) {
-       $.fn.addBack = function( selector ) {
-               return this.add( selector == null ?
-                       this.prevObject : this.prevObject.filter( selector )
-               );
-       };
-}
-
-$.effects.animateClass = function( value, duration, easing, callback ) {
-       var o = $.speed( duration, easing, callback );
-
-       return this.queue( function() {
-               var animated = $( this ),
-                       baseClass = animated.attr( "class" ) || "",
-                       applyClassChange,
-                       allAnimations = o.children ? animated.find( "*" 
).addBack() : animated;
-
-               // Map the animated objects to store the original styles.
-               allAnimations = allAnimations.map( function() {
-                       var el = $( this );
-                       return {
-                               el: el,
-                               start: getElementStyles( this )
-                       };
-               } );
-
-               // Apply class change
-               applyClassChange = function() {
-                       $.each( classAnimationActions, function( i, action ) {
-                               if ( value[ action ] ) {
-                                       animated[ action + "Class" ]( value[ 
action ] );
-                               }
-                       } );
-               };
-               applyClassChange();
-
-               // Map all animated objects again - calculate new styles and 
diff
-               allAnimations = allAnimations.map( function() {
-                       this.end = getElementStyles( this.el[ 0 ] );
-                       this.diff = styleDifference( this.start, this.end );
-                       return this;
-               } );
-
-               // Apply original class
-               animated.attr( "class", baseClass );
-
-               // Map all animated objects again - this time collecting a 
promise
-               allAnimations = allAnimations.map( function() {
-                       var styleInfo = this,
-                               dfd = $.Deferred(),
-                               opts = $.extend( {}, o, {
-                                       queue: false,
-                                       complete: function() {
-                                               dfd.resolve( styleInfo );
-                                       }
-                               } );
-
-                       this.el.animate( this.diff, opts );
-                       return dfd.promise();
-               } );
-
-               // Once all animations have completed:
-               $.when.apply( $, allAnimations.get() ).done( function() {
-
-                       // Set the final class
-                       applyClassChange();
-
-                       // For each animated element,
-                       // clear all css properties that were animated
-                       $.each( arguments, function() {
-                               var el = this.el;
-                               $.each( this.diff, function( key ) {
-                                       el.css( key, "" );
-                               } );
-                       } );
-
-                       // This is guarnteed to be there if you use 
jQuery.speed()
-                       // it also handles dequeuing the next anim...
-                       o.complete.call( animated[ 0 ] );
-               } );
-       } );
-};
-
-$.fn.extend( {
-       addClass: ( function( orig ) {
-               return function( classNames, speed, easing, callback ) {
-                       return speed ?
-                               $.effects.animateClass.call( this,
-                                       { add: classNames }, speed, easing, 
callback ) :
-                               orig.apply( this, arguments );
-               };
-       } )( $.fn.addClass ),
-
-       removeClass: ( function( orig ) {
-               return function( classNames, speed, easing, callback ) {
-                       return arguments.length > 1 ?
-                               $.effects.animateClass.call( this,
-                                       { remove: classNames }, speed, easing, 
callback ) :
-                               orig.apply( this, arguments );
-               };
-       } )( $.fn.removeClass ),
-
-       toggleClass: ( function( orig ) {
-               return function( classNames, force, speed, easing, callback ) {
-                       if ( typeof force === "boolean" || force === undefined 
) {
-                               if ( !speed ) {
-
-                                       // Without speed parameter
-                                       return orig.apply( this, arguments );
-                               } else {
-                                       return $.effects.animateClass.call( 
this,
-                                               ( force ? { add: classNames } : 
{ remove: classNames } ),
-                                               speed, easing, callback );
-                               }
-                       } else {
-
-                               // Without force parameter
-                               return $.effects.animateClass.call( this,
-                                       { toggle: classNames }, force, speed, 
easing );
-                       }
-               };
-       } )( $.fn.toggleClass ),
-
-       switchClass: function( remove, add, speed, easing, callback ) {
-               return $.effects.animateClass.call( this, {
-                       add: add,
-                       remove: remove
-               }, speed, easing, callback );
-       }
-} );
-
-} )();
-
-/******************************************************************************/
-/*********************************** EFFECTS 
**********************************/
-/******************************************************************************/
-
-( function() {
-
-if ( $.expr && $.expr.filters && $.expr.filters.animated ) {
-       $.expr.filters.animated = ( function( orig ) {
-               return function( elem ) {
-                       return !!$( elem ).data( dataSpaceAnimated ) || orig( 
elem );
-               };
-       } )( $.expr.filters.animated );
-}
-
-if ( $.uiBackCompat !== false ) {
-       $.extend( $.effects, {
-
-               // Saves a set of properties in a data storage
-               save: function( element, set ) {
-                       var i = 0, length = set.length;
-                       for ( ; i < length; i++ ) {
-                               if ( set[ i ] !== null ) {
-                                       element.data( dataSpace + set[ i ], 
element[ 0 ].style[ set[ i ] ] );
-                               }
-                       }
-               },
-
-               // Restores a set of previously saved properties from a data 
storage
-               restore: function( element, set ) {
-                       var val, i = 0, length = set.length;
-                       for ( ; i < length; i++ ) {
-                               if ( set[ i ] !== null ) {
-                                       val = element.data( dataSpace + set[ i 
] );
-                                       element.css( set[ i ], val );
-                               }
-                       }
-               },
-
-               setMode: function( el, mode ) {
-                       if ( mode === "toggle" ) {
-                               mode = el.is( ":hidden" ) ? "show" : "hide";
-                       }
-                       return mode;
-               },
-
-               // Wraps the element around a wrapper that copies position 
properties
-               createWrapper: function( element ) {
-
-                       // If the element is already wrapped, return it
-                       if ( element.parent().is( ".ui-effects-wrapper" ) ) {
-                               return element.parent();
-                       }
-
-                       // Wrap the element
-                       var props = {
-                                       width: element.outerWidth( true ),
-                                       height: element.outerHeight( true ),
-                                       "float": element.css( "float" )
-                               },
-                               wrapper = $( "<div></div>" )
-                                       .addClass( "ui-effects-wrapper" )
-                                       .css( {
-                                               fontSize: "100%",
-                                               background: "transparent",
-                                               border: "none",
-                                               margin: 0,
-                                               padding: 0
-                                       } ),
-
-                               // Store the size in case width/height are 
defined in % - Fixes #5245
-                               size = {
-                                       width: element.width(),
-                                       height: element.height()
-                               },
-                               active = document.activeElement;
-
-                       // Support: Firefox
-                       // Firefox incorrectly exposes anonymous content
-                       // https://bugzilla.mozilla.org/show_bug.cgi?id=561664
-                       try {
-                               active.id;
-                       } catch ( e ) {
-                               active = document.body;
-                       }
-
-                       element.wrap( wrapper );
-
-                       // Fixes #7595 - Elements lose focus when wrapped.
-                       if ( element[ 0 ] === active || $.contains( element[ 0 
], active ) ) {
-                               $( active ).trigger( "focus" );
-                       }
-
-                       // Hotfix for jQuery 1.4 since some change in wrap() 
seems to actually
-                       // lose the reference to the wrapped element
-                       wrapper = element.parent();
-
-                       // Transfer positioning properties to the wrapper
-                       if ( element.css( "position" ) === "static" ) {
-                               wrapper.css( { position: "relative" } );
-                               element.css( { position: "relative" } );
-                       } else {
-                               $.extend( props, {
-                                       position: element.css( "position" ),
-                                       zIndex: element.css( "z-index" )
-                               } );
-                               $.each( [ "top", "left", "bottom", "right" ], 
function( i, pos ) {
-                                       props[ pos ] = element.css( pos );
-                                       if ( isNaN( parseInt( props[ pos ], 10 
) ) ) {
-                                               props[ pos ] = "auto";
-                                       }
-                               } );
-                               element.css( {
-                                       position: "relative",
-                                       top: 0,
-                                       left: 0,
-                                       right: "auto",
-                                       bottom: "auto"
-                               } );
-                       }
-                       element.css( size );
-
-                       return wrapper.css( props ).show();
-               },
-
-               removeWrapper: function( element ) {
-                       var active = document.activeElement;
-
-                       if ( element.parent().is( ".ui-effects-wrapper" ) ) {
-                               element.parent().replaceWith( element );
-
-                               // Fixes #7595 - Elements lose focus when 
wrapped.
-                               if ( element[ 0 ] === active || $.contains( 
element[ 0 ], active ) ) {
-                                       $( active ).trigger( "focus" );
-                               }
-                       }
-
-                       return element;
-               }
-       } );
-}
-
-$.extend( $.effects, {
-       version: "1.12.1",
-
-       define: function( name, mode, effect ) {
-               if ( !effect ) {
-                       effect = mode;
-                       mode = "effect";
-               }
-
-               $.effects.effect[ name ] = effect;
-               $.effects.effect[ name ].mode = mode;
-
-               return effect;
-       },
-
-       scaledDimensions: function( element, percent, direction ) {
-               if ( percent === 0 ) {
-                       return {
-                               height: 0,
-                               width: 0,
-                               outerHeight: 0,
-                               outerWidth: 0
-                       };
-               }
-
-               var x = direction !== "horizontal" ? ( ( percent || 100 ) / 100 
) : 1,
-                       y = direction !== "vertical" ? ( ( percent || 100 ) / 
100 ) : 1;
-
-               return {
-                       height: element.height() * y,
-                       width: element.width() * x,
-                       outerHeight: element.outerHeight() * y,
-                       outerWidth: element.outerWidth() * x
-               };
-
-       },
-
-       clipToBox: function( animation ) {
-               return {
-                       width: animation.clip.right - animation.clip.left,
-                       height: animation.clip.bottom - animation.clip.top,
-                       left: animation.clip.left,
-                       top: animation.clip.top
-               };
-       },
-
-       // Injects recently queued functions to be first in line (after 
"inprogress")
-       unshift: function( element, queueLength, count ) {
-               var queue = element.queue();
-
-               if ( queueLength > 1 ) {
-                       queue.splice.apply( queue,
-                               [ 1, 0 ].concat( queue.splice( queueLength, 
count ) ) );
-               }
-               element.dequeue();
-       },
-
-       saveStyle: function( element ) {
-               element.data( dataSpaceStyle, element[ 0 ].style.cssText );
-       },
-
-       restoreStyle: function( element ) {
-               element[ 0 ].style.cssText = element.data( dataSpaceStyle ) || 
"";
-               element.removeData( dataSpaceStyle );
-       },
-
-       mode: function( element, mode ) {
-               var hidden = element.is( ":hidden" );
-
-               if ( mode === "toggle" ) {
-                       mode = hidden ? "show" : "hide";
-               }
-               if ( hidden ? mode === "hide" : mode === "show" ) {
-                       mode = "none";
-               }
-               return mode;
-       },
-
-       // Translates a [top,left] array into a baseline value
-       getBaseline: function( origin, original ) {
-               var y, x;
-
-               switch ( origin[ 0 ] ) {
-               case "top":
-                       y = 0;
-                       break;
-               case "middle":
-                       y = 0.5;
-                       break;
-               case "bottom":
-                       y = 1;
-                       break;
-               default:
-                       y = origin[ 0 ] / original.height;
-               }
-
-               switch ( origin[ 1 ] ) {
-               case "left":
-                       x = 0;
-                       break;
-               case "center":
-                       x = 0.5;
-                       break;
-               case "right":
-                       x = 1;
-                       break;
-               default:
-                       x = origin[ 1 ] / original.width;
-               }
-
-               return {
-                       x: x,
-                       y: y
-               };
-       },
-
-       // Creates a placeholder element so that the original element can be 
made absolute
-       createPlaceholder: function( element ) {
-               var placeholder,
-                       cssPosition = element.css( "position" ),
-                       position = element.position();
-
-               // Lock in margins first to account for form elements, which
-               // will change margin if you explicitly set height
-               // see: http://jsfiddle.net/JZSMt/3/ 
https://bugs.webkit.org/show_bug.cgi?id=107380
-               // Support: Safari
-               element.css( {
-                       marginTop: element.css( "marginTop" ),
-                       marginBottom: element.css( "marginBottom" ),
-                       marginLeft: element.css( "marginLeft" ),
-                       marginRight: element.css( "marginRight" )
-               } )
-               .outerWidth( element.outerWidth() )
-               .outerHeight( element.outerHeight() );
-
-               if ( /^(static|relative)/.test( cssPosition ) ) {
-                       cssPosition = "absolute";
-
-                       placeholder = $( "<" + element[ 0 ].nodeName + ">" 
).insertAfter( element ).css( {
-
-                               // Convert inline to inline block to account 
for inline elements
-                               // that turn to inline block based on content 
(like img)
-                               display: /^(inline|ruby)/.test( element.css( 
"display" ) ) ?
-                                       "inline-block" :
-                                       "block",
-                               visibility: "hidden",
-
-                               // Margins need to be set to account for margin 
collapse
-                               marginTop: element.css( "marginTop" ),
-                               marginBottom: element.css( "marginBottom" ),
-                               marginLeft: element.css( "marginLeft" ),
-                               marginRight: element.css( "marginRight" ),
-                               "float": element.css( "float" )
-                       } )
-                       .outerWidth( element.outerWidth() )
-                       .outerHeight( element.outerHeight() )
-                       .addClass( "ui-effects-placeholder" );
-
-                       element.data( dataSpace + "placeholder", placeholder );
-               }
-
-               element.css( {
-                       position: cssPosition,
-                       left: position.left,
-                       top: position.top
-               } );
-
-               return placeholder;
-       },
-
-       removePlaceholder: function( element ) {
-               var dataKey = dataSpace + "placeholder",
-                               placeholder = element.data( dataKey );
-
-               if ( placeholder ) {
-                       placeholder.remove();
-                       element.removeData( dataKey );
-               }
-       },
-
-       // Removes a placeholder if it exists and restores
-       // properties that were modified during placeholder creation
-       cleanUp: function( element ) {
-               $.effects.restoreStyle( element );
-               $.effects.removePlaceholder( element );
-       },
-
-       setTransition: function( element, list, factor, value ) {
-               value = value || {};
-               $.each( list, function( i, x ) {
-                       var unit = element.cssUnit( x );
-                       if ( unit[ 0 ] > 0 ) {
-                               value[ x ] = unit[ 0 ] * factor + unit[ 1 ];
-                       }
-               } );
-               return value;
-       }
-} );
-
-// Return an effect options object for the given parameters:
-function _normalizeArguments( effect, options, speed, callback ) {
-
-       // Allow passing all options as the first parameter
-       if ( $.isPlainObject( effect ) ) {
-               options = effect;
-               effect = effect.effect;
-       }
-
-       // Convert to an object
-       effect = { effect: effect };
-
-       // Catch (effect, null, ...)
-       if ( options == null ) {
-               options = {};
-       }
-
-       // Catch (effect, callback)
-       if ( $.isFunction( options ) ) {
-               callback = options;
-               speed = null;
-               options = {};
-       }
-
-       // Catch (effect, speed, ?)
-       if ( typeof options === "number" || $.fx.speeds[ options ] ) {
-               callback = speed;
-               speed = options;
-               options = {};
-       }
-
-       // Catch (effect, options, callback)
-       if ( $.isFunction( speed ) ) {
-               callback = speed;
-               speed = null;
-       }
-
-       // Add options to effect
-       if ( options ) {
-               $.extend( effect, options );
-       }
-
-       speed = speed || options.duration;
-       effect.duration = $.fx.off ? 0 :
-               typeof speed === "number" ? speed :
-               speed in $.fx.speeds ? $.fx.speeds[ speed ] :
-               $.fx.speeds._default;
-
-       effect.complete = callback || options.complete;
-
-       return effect;
-}
-
-function standardAnimationOption( option ) {
-
-       // Valid standard speeds (nothing, number, named speed)
-       if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) {
-               return true;
-       }
-
-       // Invalid strings - treat as "normal" speed
-       if ( typeof option === "string" && !$.effects.effect[ option ] ) {
-               return true;
-       }
-
-       // Complete callback
-       if ( $.isFunction( option ) ) {
-               return true;
-       }
-
-       // Options hash (but not naming an effect)
-       if ( typeof option === "object" && !option.effect ) {
-               return true;
-       }
-
-       // Didn't match any standard API
-       return false;
-}
-
-$.fn.extend( {
-       effect: function( /* effect, options, speed, callback */ ) {
-               var args = _normalizeArguments.apply( this, arguments ),
-                       effectMethod = $.effects.effect[ args.effect ],
-                       defaultMode = effectMethod.mode,
-                       queue = args.queue,
-                       queueName = queue || "fx",
-                       complete = args.complete,
-                       mode = args.mode,
-                       modes = [],
-                       prefilter = function( next ) {
-                               var el = $( this ),
-                                       normalizedMode = $.effects.mode( el, 
mode ) || defaultMode;
-
-                               // Sentinel for duck-punching the :animated 
psuedo-selector
-                               el.data( dataSpaceAnimated, true );
-
-                               // Save effect mode for later use,
-                               // we can't just call $.effects.mode again 
later,
-                               // as the .show() below destroys the initial 
state
-                               modes.push( normalizedMode );
-
-                               // See $.uiBackCompat inside of run() for 
removal of defaultMode in 1.13
-                               if ( defaultMode && ( normalizedMode === "show" 
||
-                                               ( normalizedMode === 
defaultMode && normalizedMode === "hide" ) ) ) {
-                                       el.show();
-                               }
-
-                               if ( !defaultMode || normalizedMode !== "none" 
) {
-                                       $.effects.saveStyle( el );
-                               }
-
-                               if ( $.isFunction( next ) ) {
-                                       next();
-                               }
-                       };
-
-               if ( $.fx.off || !effectMethod ) {
-
-                       // Delegate to the original method (e.g., .show()) if 
possible
-                       if ( mode ) {
-                               return this[ mode ]( args.duration, complete );
-                       } else {
-                               return this.each( function() {
-                                       if ( complete ) {
-                                               complete.call( this );
-                                       }
-                               } );
-                       }
-               }
-
-               function run( next ) {
-                       var elem = $( this );
-
-                       function cleanup() {
-                               elem.removeData( dataSpaceAnimated );
-
-                               $.effects.cleanUp( elem );
-
-                               if ( args.mode === "hide" ) {
-                                       elem.hide();
-                               }
-
-                               done();
-                       }
-
-                       function done() {
-                               if ( $.isFunction( complete ) ) {
-                                       complete.call( elem[ 0 ] );
-                               }
-
-                               if ( $.isFunction( next ) ) {
-                                       next();
-                               }
-                       }
-
-                       // Override mode option on a per element basis,
-                       // as toggle can be either show or hide depending on 
element state
-                       args.mode = modes.shift();
-
-                       if ( $.uiBackCompat !== false && !defaultMode ) {
-                               if ( elem.is( ":hidden" ) ? mode === "hide" : 
mode === "show" ) {
-
-                                       // Call the core method to track 
"olddisplay" properly
-                                       elem[ mode ]();
-                                       done();
-                               } else {
-                                       effectMethod.call( elem[ 0 ], args, 
done );
-                               }
-                       } else {
-                               if ( args.mode === "none" ) {
-
-                                       // Call the core method to track 
"olddisplay" properly
-                                       elem[ mode ]();
-                                       done();
-                               } else {
-                                       effectMethod.call( elem[ 0 ], args, 
cleanup );
-                               }
-                       }
-               }
-
-               // Run prefilter on all elements first to ensure that
-               // any showing or hiding happens before placeholder creation,
-               // which ensures that any layout changes are correctly captured.
-               return queue === false ?
-                       this.each( prefilter ).each( run ) :
-                       this.queue( queueName, prefilter ).queue( queueName, 
run );
-       },
-
-       show: ( function( orig ) {
-               return function( option ) {
-                       if ( standardAnimationOption( option ) ) {
-                               return orig.apply( this, arguments );
-                       } else {
-                               var args = _normalizeArguments.apply( this, 
arguments );
-                               args.mode = "show";
-                               return this.effect.call( this, args );
-                       }
-               };
-       } )( $.fn.show ),
-
-       hide: ( function( orig ) {
-               return function( option ) {
-                       if ( standardAnimationOption( option ) ) {
-                               return orig.apply( this, arguments );
-                       } else {
-                               var args = _normalizeArguments.apply( this, 
arguments );
-                               args.mode = "hide";
-                               return this.effect.call( this, args );
-                       }
-               };
-       } )( $.fn.hide ),
-
-       toggle: ( function( orig ) {
-               return function( option ) {
-                       if ( standardAnimationOption( option ) || typeof option 
=== "boolean" ) {
-                               return orig.apply( this, arguments );
-                       } else {
-                               var args = _normalizeArguments.apply( this, 
arguments );
-                               args.mode = "toggle";
-                               return this.effect.call( this, args );
-                       }
-               };
-       } )( $.fn.toggle ),
-
-       cssUnit: function( key ) {
-               var style = this.css( key ),
-                       val = [];
-
-               $.each( [ "em", "px", "%", "pt" ], function( i, unit ) {
-                       if ( style.indexOf( unit ) > 0 ) {
-                               val = [ parseFloat( style ), unit ];
-                       }
-               } );
-               return val;
-       },
-
-       cssClip: function( clipObj ) {
-               if ( clipObj ) {
-                       return this.css( "clip", "rect(" + clipObj.top + "px " 
+ clipObj.right + "px " +
-                               clipObj.bottom + "px " + clipObj.left + "px)" );
-               }
-               return parseClip( this.css( "clip" ), this );
-       },
-
-       transfer: function( options, done ) {
-               var element = $( this ),
-                       target = $( options.to ),
-                       targetFixed = target.css( "position" ) === "fixed",
-                       body = $( "body" ),
-                       fixTop = targetFixed ? body.scrollTop() : 0,
-                       fixLeft = targetFixed ? body.scrollLeft() : 0,
-                       endPosition = target.offset(),
-                       animation = {
-                               top: endPosition.top - fixTop,
-                               left: endPosition.left - fixLeft,
-                               height: target.innerHeight(),
-                               width: target.innerWidth()
-                       },
-                       startPosition = element.offset(),
-                       transfer = $( "<div class='ui-effects-transfer'></div>" 
)
-                               .appendTo( "body" )
-                               .addClass( options.className )
-                               .css( {
-                                       top: startPosition.top - fixTop,
-                                       left: startPosition.left - fixLeft,
-                                       height: element.innerHeight(),
-                                       width: element.innerWidth(),
-                                       position: targetFixed ? "fixed" : 
"absolute"
-                               } )
-                               .animate( animation, options.duration, 
options.easing, function() {
-                                       transfer.remove();
-                                       if ( $.isFunction( done ) ) {
-                                               done();
-                                       }
-                               } );
-       }
-} );
-
-function parseClip( str, element ) {
-               var outerWidth = element.outerWidth(),
-                       outerHeight = element.outerHeight(),
-                       clipRegex = 
/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,
-                       values = clipRegex.exec( str ) || [ "", 0, outerWidth, 
outerHeight, 0 ];
-
-               return {
-                       top: parseFloat( values[ 1 ] ) || 0,
-                       right: values[ 2 ] === "auto" ? outerWidth : 
parseFloat( values[ 2 ] ),
-                       bottom: values[ 3 ] === "auto" ? outerHeight : 
parseFloat( values[ 3 ] ),
-                       left: parseFloat( values[ 4 ] ) || 0
-               };
-}
-
-$.fx.step.clip = function( fx ) {
-       if ( !fx.clipInit ) {
-               fx.start = $( fx.elem ).cssClip();
-               if ( typeof fx.end === "string" ) {
-                       fx.end = parseClip( fx.end, fx.elem );
-               }
-               fx.clipInit = true;
-       }
-
-       $( fx.elem ).cssClip( {
-               top: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top,
-               right: fx.pos * ( fx.end.right - fx.start.right ) + 
fx.start.right,
-               bottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + 
fx.start.bottom,
-               left: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left
-       } );
-};
-
-} )();
-
-/******************************************************************************/
-/*********************************** EASING 
***********************************/
-/******************************************************************************/
-
-( function() {
-
-// Based on easing equations from Robert Penner 
(http://www.robertpenner.com/easing)
-
-var baseEasings = {};
-
-$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) {
-       baseEasings[ name ] = function( p ) {
-               return Math.pow( p, i + 2 );
-       };
-} );
-
-$.extend( baseEasings, {
-       Sine: function( p ) {
-               return 1 - Math.cos( p * Math.PI / 2 );
-       },
-       Circ: function( p ) {
-               return 1 - Math.sqrt( 1 - p * p );
-       },
-       Elastic: function( p ) {
-               return p === 0 || p === 1 ? p :
-                       -Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 
80 - 7.5 ) * Math.PI / 15 );
-       },
-       Back: function( p ) {
-               return p * p * ( 3 * p - 2 );
-       },
-       Bounce: function( p ) {
-               var pow2,
-                       bounce = 4;
-
-               while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}
-               return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( 
pow2 * 3 - 2 ) / 22 - p, 2 );
-       }
-} );
-
-$.each( baseEasings, function( name, easeIn ) {
-       $.easing[ "easeIn" + name ] = easeIn;
-       $.easing[ "easeOut" + name ] = function( p ) {
-               return 1 - easeIn( 1 - p );
-       };
-       $.easing[ "easeInOut" + name ] = function( p ) {
-               return p < 0.5 ?
-                       easeIn( p * 2 ) / 2 :
-                       1 - easeIn( p * -2 + 2 ) / 2;
-       };
-} );
-
-} )();
-
-var effect = $.effects;
-
-
-/*!
- * jQuery UI Effects Blind 1.12.1
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- */
-
-//>>label: Blind Effect
-//>>group: Effects
-//>>description: Blinds the element.
-//>>docs: http://api.jqueryui.com/blind-effect/
-//>>demos: http://jqueryui.com/effect/
-
-
-
-var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, 
done ) {
-       var map = {
-                       up: [ "bottom", "top" ],
-                       vertical: [ "bottom", "top" ],
-                       down: [ "top", "bottom" ],
-                       left: [ "right", "left" ],
-                       horizontal: [ "right", "left" ],
-                       right: [ "left", "right" ]
-               },
-               element = $( this ),
-               direction = options.direction || "up",
-               start = element.cssClip(),
-               animate = { clip: $.extend( {}, start ) },
-               placeholder = $.effects.createPlaceholder( element );
-
-       animate.clip[ map[ direction ][ 0 ] ] = animate.clip[ map[ direction ][ 
1 ] ];
-
-       if ( options.mode === "show" ) {
-               element.cssClip( animate.clip );
-               if ( placeholder ) {
-                       placeholder.css( $.effects.clipToBox( animate ) );
-               }
-
-               animate.clip = start;
-       }
-
-       if ( placeholder ) {
-               placeholder.animate( $.effects.clipToBox( animate ), 
options.duration, options.easing );
-       }
-
-       element.animate( animate, {
-               queue: false,
-               duration: options.duration,
-               easing: options.easing,
-               complete: done
-       } );
-} );
-
-
-/*!
- * jQuery UI Effects Bounce 1.12.1
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- */
-
-//>>label: Bounce Effect
-//>>group: Effects
-//>>description: Bounces an element horizontally or vertically n times.
-//>>docs: http://api.jqueryui.com/bounce-effect/
-//>>demos: http://jqueryui.com/effect/
-
-
-
-var effectsEffectBounce = $.effects.define( "bounce", function( options, done 
) {
-       var upAnim, downAnim, refValue,
-               element = $( this ),
-
-               // Defaults:
-               mode = options.mode,
-               hide = mode === "hide",
-               show = mode === "show",
-               direction = options.direction || "up",
-               distance = options.distance,
-               times = options.times || 5,
-
-               // Number of internal animations
-               anims = times * 2 + ( show || hide ? 1 : 0 ),
-               speed = options.duration / anims,
-               easing = options.easing,
-
-               // Utility:
-               ref = ( direction === "up" || direction === "down" ) ? "top" : 
"left",
-               motion = ( direction === "up" || direction === "left" ),
-               i = 0,
-
-               queuelen = element.queue().length;
-
-       $.effects.createPlaceholder( element );
-
-       refValue = element.css( ref );
-
-       // Default distance for the BIGGEST bounce is the outer Distance / 3
-       if ( !distance ) {
-               distance = element[ ref === "top" ? "outerHeight" : 
"outerWidth" ]() / 3;
-       }
-
-       if ( show ) {
-               downAnim = { opacity: 1 };
-               downAnim[ ref ] = refValue;
-
-               // If we are showing, force opacity 0 and set the initial 
position
-               // then do the "first" animation
-               element
-                       .css( "opacity", 0 )
-                       .css( ref, motion ? -distance * 2 : distance * 2 )
-                       .animate( downAnim, speed, easing );
-       }
-
-       // Start at the smallest distance if we are hiding
-       if ( hide ) {
-               distance = distance / Math.pow( 2, times - 1 );
-       }
-
-       downAnim = {};
-       downAnim[ ref ] = refValue;
-
-       // Bounces up/down/left/right then back to 0 -- times * 2 animations 
happen here
-       for ( ; i < times; i++ ) {
-               upAnim = {};
-               upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
-
-               element
-                       .animate( upAnim, speed, easing )
-                       .animate( downAnim, speed, easing );
-
-               distance = hide ? distance * 2 : distance / 2;
-       }
-
-       // Last Bounce when Hiding
-       if ( hide ) {
-               upAnim = { opacity: 0 };
-               upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
-
-               element.animate( upAnim, speed, easing );
-       }
-
-       element.queue( done );
-
-       $.effects.unshift( element, queuelen, anims + 1 );
-} );
-
-
-/*!
- * jQuery UI Effects Clip 1.12.1
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- */
-
-//>>label: Clip Effect
-//>>group: Effects
-//>>description: Clips the element on and off like an old TV.
-//>>docs: http://api.jqueryui.com/clip-effect/
-//>>demos: http://jqueryui.com/effect/
-
-
-
-var effectsEffectClip = $.effects.define( "clip", "hide", function( options, 
done ) {
-       var start,
-               animate = {},
-               element = $( this ),
-               direction = options.direction || "vertical",
-               both = direction === "both",
-               horizontal = both || direction === "horizontal",
-               vertical = both || direction === "vertical";
-
-       start = element.cssClip();
-       animate.clip = {
-               top: vertical ? ( start.bottom - start.top ) / 2 : start.top,
-               right: horizontal ? ( start.right - start.left ) / 2 : 
start.right,
-               bottom: vertical ? ( start.bottom - start.top ) / 2 : 
start.bottom,
-               left: horizontal ? ( start.right - start.left ) / 2 : start.left
-       };
-
-       $.effects.createPlaceholder( element );
-
-       if ( options.mode === "show" ) {
-               element.cssClip( animate.clip );
-               animate.clip = start;
-       }
-
-       element.animate( animate, {
-               queue: false,
-               duration: options.duration,
-               easing: options.easing,
-               complete: done
-       } );
-
-} );
-
-
-/*!
- * jQuery UI Effects Drop 1.12.1
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- */
-
-//>>label: Drop Effect
-//>>group: Effects
-//>>description: Moves an element in one direction and hides it at the same 
time.
-//>>docs: http://api.jqueryui.com/drop-effect/
-//>>demos: http://jqueryui.com/effect/
-
-
-
-var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, 
done ) {
-
-       var distance,
-               element = $( this ),
-               mode = options.mode,
-               show = mode === "show",
-               direction = options.direction || "left",
-               ref = ( direction === "up" || direction === "down" ) ? "top" : 
"left",
-               motion = ( direction === "up" || direction === "left" ) ? "-=" 
: "+=",
-               oppositeMotion = ( motion === "+=" ) ? "-=" : "+=",
-               animation = {
-                       opacity: 0
-               };
-
-       $.effects.createPlaceholder( element );
-
-       distance = options.distance ||
-               element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ) 
/ 2;
-
-       animation[ ref ] = motion + distance;
-
-       if ( show ) {
-               element.css( animation );
-
-               animation[ ref ] = oppositeMotion + distance;
-               animation.opacity = 1;
-       }
-
-       // Animate
-       element.animate( animation, {
-               queue: false,
-               duration: options.duration,
-               easing: options.easing,
-               complete: done
-       } );
-} );
-
-
-/*!
- * jQuery UI Effects Explode 1.12.1
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- */
-
-//>>label: Explode Effect
-//>>group: Effects
-// jscs:disable maximumLineLength
-//>>description: Explodes an element in all directions into n pieces. Implodes 
an element to its original wholeness.
-// jscs:enable maximumLineLength
-//>>docs: http://api.jqueryui.com/explode-effect/
-//>>demos: http://jqueryui.com/effect/
-
-
-
-var effectsEffectExplode = $.effects.define( "explode", "hide", function( 
options, done ) {
-
-       var i, j, left, top, mx, my,
-               rows = options.pieces ? Math.round( Math.sqrt( options.pieces ) 
) : 3,
-               cells = rows,
-               element = $( this ),
-               mode = options.mode,
-               show = mode === "show",
-
-               // Show and then visibility:hidden the element before 
calculating offset
-               offset = element.show().css( "visibility", "hidden" ).offset(),
-
-               // Width and height of a piece
-               width = Math.ceil( element.outerWidth() / cells ),
-               height = Math.ceil( element.outerHeight() / rows ),
-               pieces = [];
-
-       // Children animate complete:
-       function childComplete() {
-               pieces.push( this );
-               if ( pieces.length === rows * cells ) {
-                       animComplete();
-               }
-       }
-
-       // Clone the element for each row and cell.
-       for ( i = 0; i < rows; i++ ) { // ===>
-               top = offset.top + i * height;
-               my = i - ( rows - 1 ) / 2;
-
-               for ( j = 0; j < cells; j++ ) { // |||
-                       left = offset.left + j * width;
-                       mx = j - ( cells - 1 ) / 2;
-
-                       // Create a clone of the now hidden main element that 
will be absolute positioned
-                       // within a wrapper div off the -left and -top equal to 
size of our pieces
-                       element
-                               .clone()
-                               .appendTo( "body" )
-                               .wrap( "<div></div>" )
-                               .css( {
-                                       position

<TRUNCATED>

Reply via email to