xojo-web2.0-jquery-effects/JQueryEffects.xojo_code
2021-12-08 23:29:10 -07:00

130 lines
60 KiB
Text

#tag Class
Protected Class JQueryEffects
Inherits WebSDKControl
#tag Event
Function SessionHead(session as WebSession) As String
'only used for demoing the transfer effect
Return "<style>.ui-effects-transfer { border: 2px dotted gray; }</style>"
End Function
#tag EndEvent
#tag Event
Function SessionJavascriptURLs(session as WebSession) As String()
REM https://www.github.com/donl/xojo-web2.0-jquery-effects
If jQueryEffects = Nil Then
jQueryEffects = New WebFile
jQueryEffects.Filename = "jquery-effects.js"
jQueryEffects.MIMEType = "text/javascript"
jQueryEffects.Data = kJavaScript
jQueryEffects.Session = Nil
End If
Return Array(jQueryEffects.URL)
End Function
#tag EndEvent
#tag Note, Name = Changelog
More information and feedback can be found on GitHub.
https://www.github.com/donl/xojo-web2.0-jquery-effects
2021-12-08
- Packaged jQuery UI Effects v1.12.1 for use in Xojo Web 2.0
- jQuery UI v1.12.1 is included with Xojo 2020r1 through 2021r3
- Include a demo ported from https://jqueryui.com/effect/
#tag EndNote
#tag Note, Name = TODO
- [x] Include demo of effects
- [ ] Add helper functions
- [ ] Investigate "explode" effect on Xojo controls with various layout attributes
- [x] Share with Xojo community
#tag EndNote
#tag Property, Flags = &h21
Private Shared jQueryEffects As WebFile
#tag EndProperty
#tag Constant, Name = kJavaScript, Type = String, Dynamic = False, Default = \"( function( factory ) {\n\t\"use strict\";\n\t\n\tif ( typeof define \x3D\x3D\x3D \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\" ]\x2C factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\n$.ui \x3D $.ui || {};\n\nvar version \x3D $.ui.version \x3D \"1.13.0\";\n\n/*!\n * jQuery UI Effects 1.13.0\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Effects Core\n//>>group: Effects\n/* eslint-disable max-len */\n//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.\n/* eslint-enable max-len */\n//>>docs: http://api.jqueryui.com/category/effects-core/\n//>>demos: http://jqueryui.com/effect/\n\n\nvar dataSpace \x3D \"ui-effects-\"\x2C\n\tdataSpaceStyle \x3D \"ui-effects-style\"\x2C\n\tdataSpaceAnimated \x3D \"ui-effects-animated\";\n\n$.effects \x3D {\n\teffect: {}\n};\n\n/******************************************************************************/\n/****************************** CLASS ANIMATIONS ******************************/\n/******************************************************************************/\n( function() {\n\nvar classAnimationActions \x3D [ \"add\"\x2C \"remove\"\x2C \"toggle\" ]\x2C\n\tshorthandStyles \x3D {\n\t\tborder: 1\x2C\n\t\tborderBottom: 1\x2C\n\t\tborderColor: 1\x2C\n\t\tborderLeft: 1\x2C\n\t\tborderRight: 1\x2C\n\t\tborderTop: 1\x2C\n\t\tborderWidth: 1\x2C\n\t\tmargin: 1\x2C\n\t\tpadding: 1\n\t};\n\n$.each(\n\t[ \"borderLeftStyle\"\x2C \"borderRightStyle\"\x2C \"borderBottomStyle\"\x2C \"borderTopStyle\" ]\x2C\n\tfunction( _\x2C prop ) {\n\t\t$.fx.step[ prop ] \x3D function( fx ) {\n\t\t\tif ( fx.end !\x3D\x3D \"none\" && !fx.setAttr || fx.pos \x3D\x3D\x3D 1 && !fx.setAttr ) {\n\t\t\t\tjQuery.style( fx.elem\x2C prop\x2C fx.end );\n\t\t\t\tfx.setAttr \x3D true;\n\t\t\t}\n\t\t};\n\t}\n);\n\nfunction camelCase( string ) {\n\treturn string.replace( /-([\\da-z])/gi\x2C function( all\x2C letter ) {\n\t\treturn letter.toUpperCase();\n\t} );\n}\n\nfunction getElementStyles( elem ) {\n\tvar key\x2C len\x2C\n\t\tstyle \x3D elem.ownerDocument.defaultView \?\n\t\t\telem.ownerDocument.defaultView.getComputedStyle( elem\x2C null ) :\n\t\t\telem.currentStyle\x2C\n\t\tstyles \x3D {};\n\n\tif ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {\n\t\tlen \x3D style.length;\n\t\twhile ( len-- ) {\n\t\t\tkey \x3D style[ len ];\n\t\t\tif ( typeof style[ key ] \x3D\x3D\x3D \"string\" ) {\n\t\t\t\tstyles[ camelCase( key ) ] \x3D style[ key ];\n\t\t\t}\n\t\t}\n\n\t// Support: Opera\x2C IE <9\n\t} else {\n\t\tfor ( key in style ) {\n\t\t\tif ( typeof style[ key ] \x3D\x3D\x3D \"string\" ) {\n\t\t\t\tstyles[ key ] \x3D style[ key ];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn styles;\n}\n\nfunction styleDifference( oldStyle\x2C newStyle ) {\n\tvar diff \x3D {}\x2C\n\t\tname\x2C value;\n\n\tfor ( name in newStyle ) {\n\t\tvalue \x3D newStyle[ name ];\n\t\tif ( oldStyle[ name ] !\x3D\x3D value ) {\n\t\t\tif ( !shorthandStyles[ name ] ) {\n\t\t\t\tif ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {\n\t\t\t\t\tdiff[ name ] \x3D value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n// Support: jQuery <1.8\nif ( !$.fn.addBack ) {\n\t$.fn.addBack \x3D function( selector ) {\n\t\treturn this.add( selector \x3D\x3D null \?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t};\n}\n\n$.effects.animateClass \x3D function( value\x2C duration\x2C easing\x2C callback ) {\n\tvar o \x3D $.speed( duration\x2C easing\x2C callback );\n\n\treturn this.queue( function() {\n\t\tvar animated \x3D $( this )\x2C\n\t\t\tbaseClass \x3D animated.attr( \"class\" ) || \"\"\x2C\n\t\t\tapplyClassChange\x2C\n\t\t\tallAnimations \x3D o.children \? animated.find( \"*\" ).addBack() : animated;\n\n\t\t// Map the animated objects to store the original styles.\n\t\tallAnimations \x3D allAnimations.map( function() {\n\t\t\tvar el \x3D $( this );\n\t\t\treturn {\n\t\t\t\tel: el\x2C\n\t\t\t\tstart: getElementStyles( this )\n\t\t\t};\n\t\t} );\n\n\t\t// Apply class change\n\t\tapplyClassChange \x3D function() {\n\t\t\t$.each( classAnimationActions\x2C function( i\x2C action ) {\n\t\t\t\tif ( value[ action ] ) {\n\t\t\t\t\tanimated[ action + \"Class\" ]( value[ action ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t\tapplyClassChange();\n\n\t\t// Map all animated objects again - calculate new styles and diff\n\t\tallAnimations \x3D allAnimations.map( function() {\n\t\t\tthis.end \x3D getElementStyles( this.el[ 0 ] );\n\t\t\tthis.diff \x3D styleDifference( this.start\x2C this.end );\n\t\t\treturn this;\n\t\t} );\n\n\t\t// Apply original class\n\t\tanimated.attr( \"class\"\x2C baseClass );\n\n\t\t// Map all animated objects again - this time collecting a promise\n\t\tallAnimations \x3D allAnimations.map( function() {\n\t\t\tvar styleInfo \x3D this\x2C\n\t\t\t\tdfd \x3D $.Deferred()\x2C\n\t\t\t\topts \x3D $.extend( {}\x2C o\x2C {\n\t\t\t\t\tqueue: false\x2C\n\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\tdfd.resolve( styleInfo );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\tthis.el.animate( this.diff\x2C opts );\n\t\t\treturn dfd.promise();\n\t\t} );\n\n\t\t// Once all animations have completed:\n\t\t$.when.apply( $\x2C allAnimations.get() ).done( function() {\n\n\t\t\t// Set the final class\n\t\t\tapplyClassChange();\n\n\t\t\t// For each animated element\x2C\n\t\t\t// clear all css properties that were animated\n\t\t\t$.each( arguments\x2C function() {\n\t\t\t\tvar el \x3D this.el;\n\t\t\t\t$.each( this.diff\x2C function( key ) {\n\t\t\t\t\tel.css( key\x2C \"\" );\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\t// This is guarnteed to be there if you use jQuery.speed()\n\t\t\t// it also handles dequeuing the next anim...\n\t\t\to.complete.call( animated[ 0 ] );\n\t\t} );\n\t} );\n};\n\n$.fn.extend( {\n\taddClass: ( function( orig ) {\n\t\treturn function( classNames\x2C speed\x2C easing\x2C callback ) {\n\t\t\treturn speed \?\n\t\t\t\t$.effects.animateClass.call( this\x2C\n\t\t\t\t\t{ add: classNames }\x2C speed\x2C easing\x2C callback ) :\n\t\t\t\torig.apply( this\x2C arguments );\n\t\t};\n\t} )( $.fn.addClass )\x2C\n\n\tremoveClass: ( function( orig ) {\n\t\treturn function( classNames\x2C speed\x2C easing\x2C callback ) {\n\t\t\treturn arguments.length > 1 \?\n\t\t\t\t$.effects.animateClass.call( this\x2C\n\t\t\t\t\t{ remove: classNames }\x2C speed\x2C easing\x2C callback ) :\n\t\t\t\torig.apply( this\x2C arguments );\n\t\t};\n\t} )( $.fn.removeClass )\x2C\n\n\ttoggleClass: ( function( orig ) {\n\t\treturn function( classNames\x2C force\x2C speed\x2C easing\x2C callback ) {\n\t\t\tif ( typeof force \x3D\x3D\x3D \"boolean\" || force \x3D\x3D\x3D undefined ) {\n\t\t\t\tif ( !speed ) {\n\n\t\t\t\t\t// Without speed parameter\n\t\t\t\t\treturn orig.apply( this\x2C arguments );\n\t\t\t\t} else {\n\t\t\t\t\treturn $.effects.animateClass.call( this\x2C\n\t\t\t\t\t\t( force \? { add: classNames } : { remove: classNames } )\x2C\n\t\t\t\t\t\tspeed\x2C easing\x2C callback );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Without force parameter\n\t\t\t\treturn $.effects.animateClass.call( this\x2C\n\t\t\t\t\t{ toggle: classNames }\x2C force\x2C speed\x2C easing );\n\t\t\t}\n\t\t};\n\t} )( $.fn.toggleClass )\x2C\n\n\tswitchClass: function( remove\x2C add\x2C speed\x2C easing\x2C callback ) {\n\t\treturn $.effects.animateClass.call( this\x2C {\n\t\t\tadd: add\x2C\n\t\t\tremove: remove\n\t\t}\x2C speed\x2C easing\x2C callback );\n\t}\n} );\n\n} )();\n\n/******************************************************************************/\n/*********************************** EFFECTS **********************************/\n/******************************************************************************/\n\n( function() {\n\nif ( $.expr && $.expr.pseudos && $.expr.pseudos.animated ) {\n\t$.expr.pseudos.animated \x3D ( function( orig ) {\n\t\treturn function( elem ) {\n\t\t\treturn !!$( elem ).data( dataSpaceAnimated ) || orig( elem );\n\t\t};\n\t} )( $.expr.pseudos.animated );\n}\n\nif ( $.uiBackCompat !\x3D\x3D false ) {\n\t$.extend( $.effects\x2C {\n\n\t\t// Saves a set of properties in a data storage\n\t\tsave: function( element\x2C set ) {\n\t\t\tvar i \x3D 0\x2C length \x3D set.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( set[ i ] !\x3D\x3D null ) {\n\t\t\t\t\telement.data( dataSpace + set[ i ]\x2C element[ 0 ].style[ set[ i ] ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\x2C\n\n\t\t// Restores a set of previously saved properties from a data storage\n\t\trestore: function( element\x2C set ) {\n\t\t\tvar val\x2C i \x3D 0\x2C length \x3D set.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( set[ i ] !\x3D\x3D null ) {\n\t\t\t\t\tval \x3D element.data( dataSpace + set[ i ] );\n\t\t\t\t\telement.css( set[ i ]\x2C val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\x2C\n\n\t\tsetMode: function( el\x2C mode ) {\n\t\t\tif ( mode \x3D\x3D\x3D \"toggle\" ) {\n\t\t\t\tmode \x3D el.is( \":hidden\" ) \? \"show\" : \"hide\";\n\t\t\t}\n\t\t\treturn mode;\n\t\t}\x2C\n\n\t\t// Wraps the element around a wrapper that copies position properties\n\t\tcreateWrapper: function( element ) {\n\n\t\t\t// If the element is already wrapped\x2C return it\n\t\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\t\treturn element.parent();\n\t\t\t}\n\n\t\t\t// Wrap the element\n\t\t\tvar props \x3D {\n\t\t\t\t\twidth: element.outerWidth( true )\x2C\n\t\t\t\t\theight: element.outerHeight( true )\x2C\n\t\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t\t}\x2C\n\t\t\t\twrapper \x3D $( \"<div></div>\" )\n\t\t\t\t\t.addClass( \"ui-effects-wrapper\" )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\tfontSize: \"100%\"\x2C\n\t\t\t\t\t\tbackground: \"transparent\"\x2C\n\t\t\t\t\t\tborder: \"none\"\x2C\n\t\t\t\t\t\tmargin: 0\x2C\n\t\t\t\t\t\tpadding: 0\n\t\t\t\t\t} )\x2C\n\n\t\t\t\t// Store the size in case width/height are defined in % - Fixes #5245\n\t\t\t\tsize \x3D {\n\t\t\t\t\twidth: element.width()\x2C\n\t\t\t\t\theight: element.height()\n\t\t\t\t}\x2C\n\t\t\t\tactive \x3D document.activeElement;\n\n\t\t\t// Support: Firefox\n\t\t\t// Firefox incorrectly exposes anonymous content\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi\?id\x3D561664\n\t\t\ttry {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\tactive.id;\n\t\t\t} catch ( e ) {\n\t\t\t\tactive \x3D document.body;\n\t\t\t}\n\n\t\t\telement.wrap( wrapper );\n\n\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\tif ( element[ 0 ] \x3D\x3D\x3D active || $.contains( element[ 0 ]\x2C active ) ) {\n\t\t\t\t$( active ).trigger( \"focus\" );\n\t\t\t}\n\n\t\t\t// Hotfix for jQuery 1.4 since some change in wrap() seems to actually\n\t\t\t// lose the reference to the wrapped element\n\t\t\twrapper \x3D element.parent();\n\n\t\t\t// Transfer positioning properties to the wrapper\n\t\t\tif ( element.css( \"position\" ) \x3D\x3D\x3D \"static\" ) {\n\t\t\t\twrapper.css( { position: \"relative\" } );\n\t\t\t\telement.css( { position: \"relative\" } );\n\t\t\t} else {\n\t\t\t\t$.extend( props\x2C {\n\t\t\t\t\tposition: element.css( \"position\" )\x2C\n\t\t\t\t\tzIndex: element.css( \"z-index\" )\n\t\t\t\t} );\n\t\t\t\t$.each( [ \"top\"\x2C \"left\"\x2C \"bottom\"\x2C \"right\" ]\x2C function( i\x2C pos ) {\n\t\t\t\t\tprops[ pos ] \x3D element.css( pos );\n\t\t\t\t\tif ( isNaN( parseInt( props[ pos ]\x2C 10 ) ) ) {\n\t\t\t\t\t\tprops[ pos ] \x3D \"auto\";\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\telement.css( {\n\t\t\t\t\tposition: \"relative\"\x2C\n\t\t\t\t\ttop: 0\x2C\n\t\t\t\t\tleft: 0\x2C\n\t\t\t\t\tright: \"auto\"\x2C\n\t\t\t\t\tbottom: \"auto\"\n\t\t\t\t} );\n\t\t\t}\n\t\t\telement.css( size );\n\n\t\t\treturn wrapper.css( props ).show();\n\t\t}\x2C\n\n\t\tremoveWrapper: function( element ) {\n\t\t\tvar active \x3D document.activeElement;\n\n\t\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\t\telement.parent().replaceWith( element );\n\n\t\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\t\tif ( element[ 0 ] \x3D\x3D\x3D active || $.contains( element[ 0 ]\x2C active ) ) {\n\t\t\t\t\t$( active ).trigger( \"focus\" );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn element;\n\t\t}\n\t} );\n}\n\n$.extend( $.effects\x2C {\n\tversion: \"1.13.0\"\x2C\n\n\tdefine: function( name\x2C mode\x2C effect ) {\n\t\tif ( !effect ) {\n\t\t\teffect \x3D mode;\n\t\t\tmode \x3D \"effect\";\n\t\t}\n\n\t\t$.effects.effect[ name ] \x3D effect;\n\t\t$.effects.effect[ name ].mode \x3D mode;\n\n\t\treturn effect;\n\t}\x2C\n\n\tscaledDimensions: function( element\x2C percent\x2C direction ) {\n\t\tif ( percent \x3D\x3D\x3D 0 ) {\n\t\t\treturn {\n\t\t\t\theight: 0\x2C\n\t\t\t\twidth: 0\x2C\n\t\t\t\touterHeight: 0\x2C\n\t\t\t\touterWidth: 0\n\t\t\t};\n\t\t}\n\n\t\tvar x \x3D direction !\x3D\x3D \"horizontal\" \? ( ( percent || 100 ) / 100 ) : 1\x2C\n\t\t\ty \x3D direction !\x3D\x3D \"vertical\" \? ( ( percent || 100 ) / 100 ) : 1;\n\n\t\treturn {\n\t\t\theight: element.height() * y\x2C\n\t\t\twidth: element.width() * x\x2C\n\t\t\touterHeight: element.outerHeight() * y\x2C\n\t\t\touterWidth: element.outerWidth() * x\n\t\t};\n\n\t}\x2C\n\n\tclipToBox: function( animation ) {\n\t\treturn {\n\t\t\twidth: animation.clip.right - animation.clip.left\x2C\n\t\t\theight: animation.clip.bottom - animation.clip.top\x2C\n\t\t\tleft: animation.clip.left\x2C\n\t\t\ttop: animation.clip.top\n\t\t};\n\t}\x2C\n\n\t// Injects recently queued functions to be first in line (after \"inprogress\")\n\tunshift: function( element\x2C queueLength\x2C count ) {\n\t\tvar queue \x3D element.queue();\n\n\t\tif ( queueLength > 1 ) {\n\t\t\tqueue.splice.apply( queue\x2C\n\t\t\t\t[ 1\x2C 0 ].concat( queue.splice( queueLength\x2C count ) ) );\n\t\t}\n\t\telement.dequeue();\n\t}\x2C\n\n\tsaveStyle: function( element ) {\n\t\telement.data( dataSpaceStyle\x2C element[ 0 ].style.cssText );\n\t}\x2C\n\n\trestoreStyle: function( element ) {\n\t\telement[ 0 ].style.cssText \x3D element.data( dataSpaceStyle ) || \"\";\n\t\telement.removeData( dataSpaceStyle );\n\t}\x2C\n\n\tmode: function( element\x2C mode ) {\n\t\tvar hidden \x3D element.is( \":hidden\" );\n\n\t\tif ( mode \x3D\x3D\x3D \"toggle\" ) {\n\t\t\tmode \x3D hidden \? \"show\" : \"hide\";\n\t\t}\n\t\tif ( hidden \? mode \x3D\x3D\x3D \"hide\" : mode \x3D\x3D\x3D \"show\" ) {\n\t\t\tmode \x3D \"none\";\n\t\t}\n\t\treturn mode;\n\t}\x2C\n\n\t// Translates a [top\x2Cleft] array into a baseline value\n\tgetBaseline: function( origin\x2C original ) {\n\t\tvar y\x2C x;\n\n\t\tswitch ( origin[ 0 ] ) {\n\t\tcase \"top\":\n\t\t\ty \x3D 0;\n\t\t\tbreak;\n\t\tcase \"middle\":\n\t\t\ty \x3D 0.5;\n\t\t\tbreak;\n\t\tcase \"bottom\":\n\t\t\ty \x3D 1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\ty \x3D origin[ 0 ] / original.height;\n\t\t}\n\n\t\tswitch ( origin[ 1 ] ) {\n\t\tcase \"left\":\n\t\t\tx \x3D 0;\n\t\t\tbreak;\n\t\tcase \"center\":\n\t\t\tx \x3D 0.5;\n\t\t\tbreak;\n\t\tcase \"right\":\n\t\t\tx \x3D 1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tx \x3D origin[ 1 ] / original.width;\n\t\t}\n\n\t\treturn {\n\t\t\tx: x\x2C\n\t\t\ty: y\n\t\t};\n\t}\x2C\n\n\t// Creates a placeholder element so that the original element can be made absolute\n\tcreatePlaceholder: function( element ) {\n\t\tvar placeholder\x2C\n\t\t\tcssPosition \x3D element.css( \"position\" )\x2C\n\t\t\tposition \x3D element.position();\n\n\t\t// Lock in margins first to account for form elements\x2C which\n\t\t// will change margin if you explicitly set height\n\t\t// see: http://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi\?id\x3D107380\n\t\t// Support: Safari\n\t\telement.css( {\n\t\t\tmarginTop: element.css( \"marginTop\" )\x2C\n\t\t\tmarginBottom: element.css( \"marginBottom\" )\x2C\n\t\t\tmarginLeft: element.css( \"marginLeft\" )\x2C\n\t\t\tmarginRight: element.css( \"marginRight\" )\n\t\t} )\n\t\t.outerWidth( element.outerWidth() )\n\t\t.outerHeight( element.outerHeight() );\n\n\t\tif ( /^(static|relative)/.test( cssPosition ) ) {\n\t\t\tcssPosition \x3D \"absolute\";\n\n\t\t\tplaceholder \x3D $( \"<\" + element[ 0 ].nodeName + \">\" ).insertAfter( element ).css( {\n\n\t\t\t\t// Convert inline to inline block to account for inline elements\n\t\t\t\t// that turn to inline block based on content (like img)\n\t\t\t\tdisplay: /^(inline|ruby)/.test( element.css( \"display\" ) ) \?\n\t\t\t\t\t\"inline-block\" :\n\t\t\t\t\t\"block\"\x2C\n\t\t\t\tvisibility: \"hidden\"\x2C\n\n\t\t\t\t// Margins need to be set to account for margin collapse\n\t\t\t\tmarginTop: element.css( \"marginTop\" )\x2C\n\t\t\t\tmarginBottom: element.css( \"marginBottom\" )\x2C\n\t\t\t\tmarginLeft: element.css( \"marginLeft\" )\x2C\n\t\t\t\tmarginRight: element.css( \"marginRight\" )\x2C\n\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t} )\n\t\t\t.outerWidth( element.outerWidth() )\n\t\t\t.outerHeight( element.outerHeight() )\n\t\t\t.addClass( \"ui-effects-placeholder\" );\n\n\t\t\telement.data( dataSpace + \"placeholder\"\x2C placeholder );\n\t\t}\n\n\t\telement.css( {\n\t\t\tposition: cssPosition\x2C\n\t\t\tleft: position.left\x2C\n\t\t\ttop: position.top\n\t\t} );\n\n\t\treturn placeholder;\n\t}\x2C\n\n\tremovePlaceholder: function( element ) {\n\t\tvar dataKey \x3D dataSpace + \"placeholder\"\x2C\n\t\t\t\tplaceholder \x3D element.data( dataKey );\n\n\t\tif ( placeholder ) {\n\t\t\tplaceholder.remove();\n\t\t\telement.removeData( dataKey );\n\t\t}\n\t}\x2C\n\n\t// Removes a placeholder if it exists and restores\n\t// properties that were modified during placeholder creation\n\tcleanUp: function( element ) {\n\t\t$.effects.restoreStyle( element );\n\t\t$.effects.removePlaceholder( element );\n\t}\x2C\n\n\tsetTransition: function( element\x2C list\x2C factor\x2C value ) {\n\t\tvalue \x3D value || {};\n\t\t$.each( list\x2C function( i\x2C x ) {\n\t\t\tvar unit \x3D element.cssUnit( x );\n\t\t\tif ( unit[ 0 ] > 0 ) {\n\t\t\t\tvalue[ x ] \x3D unit[ 0 ] * factor + unit[ 1 ];\n\t\t\t}\n\t\t} );\n\t\treturn value;\n\t}\n} );\n\n// Return an effect options object for the given parameters:\nfunction _normalizeArguments( effect\x2C options\x2C speed\x2C callback ) {\n\n\t// Allow passing all options as the first parameter\n\tif ( $.isPlainObject( effect ) ) {\n\t\toptions \x3D effect;\n\t\teffect \x3D effect.effect;\n\t}\n\n\t// Convert to an object\n\teffect \x3D { effect: effect };\n\n\t// Catch (effect\x2C null\x2C ...)\n\tif ( options \x3D\x3D null ) {\n\t\toptions \x3D {};\n\t}\n\n\t// Catch (effect\x2C callback)\n\tif ( typeof options \x3D\x3D\x3D \"function\" ) {\n\t\tcallback \x3D options;\n\t\tspeed \x3D null;\n\t\toptions \x3D {};\n\t}\n\n\t// Catch (effect\x2C speed\x2C \?)\n\tif ( typeof options \x3D\x3D\x3D \"number\" || $.fx.speeds[ options ] ) {\n\t\tcallback \x3D speed;\n\t\tspeed \x3D options;\n\t\toptions \x3D {};\n\t}\n\n\t// Catch (effect\x2C options\x2C callback)\n\tif ( typeof speed \x3D\x3D\x3D \"function\" ) {\n\t\tcallback \x3D speed;\n\t\tspeed \x3D null;\n\t}\n\n\t// Add options to effect\n\tif ( options ) {\n\t\t$.extend( effect\x2C options );\n\t}\n\n\tspeed \x3D speed || options.duration;\n\teffect.duration \x3D $.fx.off \? 0 :\n\t\ttypeof speed \x3D\x3D\x3D \"number\" \? speed :\n\t\tspeed in $.fx.speeds \? $.fx.speeds[ speed ] :\n\t\t$.fx.speeds._default;\n\n\teffect.complete \x3D callback || options.complete;\n\n\treturn effect;\n}\n\nfunction standardAnimationOption( option ) {\n\n\t// Valid standard speeds (nothing\x2C number\x2C named speed)\n\tif ( !option || typeof option \x3D\x3D\x3D \"number\" || $.fx.speeds[ option ] ) {\n\t\treturn true;\n\t}\n\n\t// Invalid strings - treat as \"normal\" speed\n\tif ( typeof option \x3D\x3D\x3D \"string\" && !$.effects.effect[ option ] ) {\n\t\treturn true;\n\t}\n\n\t// Complete callback\n\tif ( typeof option \x3D\x3D\x3D \"function\" ) {\n\t\treturn true;\n\t}\n\n\t// Options hash (but not naming an effect)\n\tif ( typeof option \x3D\x3D\x3D \"object\" && !option.effect ) {\n\t\treturn true;\n\t}\n\n\t// Didn\'t match any standard API\n\treturn false;\n}\n\n$.fn.extend( {\n\teffect: function( /* effect\x2C options\x2C speed\x2C callback */ ) {\n\t\tvar args \x3D _normalizeArguments.apply( this\x2C arguments )\x2C\n\t\t\teffectMethod \x3D $.effects.effect[ args.effect ]\x2C\n\t\t\tdefaultMode \x3D effectMethod.mode\x2C\n\t\t\tqueue \x3D args.queue\x2C\n\t\t\tqueueName \x3D queue || \"fx\"\x2C\n\t\t\tcomplete \x3D args.complete\x2C\n\t\t\tmode \x3D args.mode\x2C\n\t\t\tmodes \x3D []\x2C\n\t\t\tprefilter \x3D function( next ) {\n\t\t\t\tvar el \x3D $( this )\x2C\n\t\t\t\t\tnormalizedMode \x3D $.effects.mode( el\x2C mode ) || defaultMode;\n\n\t\t\t\t// Sentinel for duck-punching the :animated pseudo-selector\n\t\t\t\tel.data( dataSpaceAnimated\x2C true );\n\n\t\t\t\t// Save effect mode for later use\x2C\n\t\t\t\t// we can\'t just call $.effects.mode again later\x2C\n\t\t\t\t// as the .show() below destroys the initial state\n\t\t\t\tmodes.push( normalizedMode );\n\n\t\t\t\t// See $.uiBackCompat inside of run() for removal of defaultMode in 1.14\n\t\t\t\tif ( defaultMode && ( normalizedMode \x3D\x3D\x3D \"show\" ||\n\t\t\t\t\t\t( normalizedMode \x3D\x3D\x3D defaultMode && normalizedMode \x3D\x3D\x3D \"hide\" ) ) ) {\n\t\t\t\t\tel.show();\n\t\t\t\t}\n\n\t\t\t\tif ( !defaultMode || normalizedMode !\x3D\x3D \"none\" ) {\n\t\t\t\t\t$.effects.saveStyle( el );\n\t\t\t\t}\n\n\t\t\t\tif ( typeof next \x3D\x3D\x3D \"function\" ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( $.fx.off || !effectMethod ) {\n\n\t\t\t// Delegate to the original method (e.g.\x2C .show()) if possible\n\t\t\tif ( mode ) {\n\t\t\t\treturn this[ mode ]( args.duration\x2C complete );\n\t\t\t} else {\n\t\t\t\treturn this.each( function() {\n\t\t\t\t\tif ( complete ) {\n\t\t\t\t\t\tcomplete.call( this );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\tfunction run( next ) {\n\t\t\tvar elem \x3D $( this );\n\n\t\t\tfunction cleanup() {\n\t\t\t\telem.removeData( dataSpaceAnimated );\n\n\t\t\t\t$.effects.cleanUp( elem );\n\n\t\t\t\tif ( args.mode \x3D\x3D\x3D \"hide\" ) {\n\t\t\t\t\telem.hide();\n\t\t\t\t}\n\n\t\t\t\tdone();\n\t\t\t}\n\n\t\t\tfunction done() {\n\t\t\t\tif ( typeof complete \x3D\x3D\x3D \"function\" ) {\n\t\t\t\t\tcomplete.call( elem[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\tif ( typeof next \x3D\x3D\x3D \"function\" ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override mode option on a per element basis\x2C\n\t\t\t// as toggle can be either show or hide depending on element state\n\t\t\targs.mode \x3D modes.shift();\n\n\t\t\tif ( $.uiBackCompat !\x3D\x3D false && !defaultMode ) {\n\t\t\t\tif ( elem.is( \":hidden\" ) \? mode \x3D\x3D\x3D \"hide\" : mode \x3D\x3D\x3D \"show\" ) {\n\n\t\t\t\t\t// Call the core method to track \"olddisplay\" properly\n\t\t\t\t\telem[ mode ]();\n\t\t\t\t\tdone();\n\t\t\t\t} else {\n\t\t\t\t\teffectMethod.call( elem[ 0 ]\x2C args\x2C done );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( args.mode \x3D\x3D\x3D \"none\" ) {\n\n\t\t\t\t\t// Call the core method to track \"olddisplay\" properly\n\t\t\t\t\telem[ mode ]();\n\t\t\t\t\tdone();\n\t\t\t\t} else {\n\t\t\t\t\teffectMethod.call( elem[ 0 ]\x2C args\x2C cleanup );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Run prefilter on all elements first to ensure that\n\t\t// any showing or hiding happens before placeholder creation\x2C\n\t\t// which ensures that any layout changes are correctly captured.\n\t\treturn queue \x3D\x3D\x3D false \?\n\t\t\tthis.each( prefilter ).each( run ) :\n\t\t\tthis.queue( queueName\x2C prefilter ).queue( queueName\x2C run );\n\t}\x2C\n\n\tshow: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) ) {\n\t\t\t\treturn orig.apply( this\x2C arguments );\n\t\t\t} else {\n\t\t\t\tvar args \x3D _normalizeArguments.apply( this\x2C arguments );\n\t\t\t\targs.mode \x3D \"show\";\n\t\t\t\treturn this.effect.call( this\x2C args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.show )\x2C\n\n\thide: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) ) {\n\t\t\t\treturn orig.apply( this\x2C arguments );\n\t\t\t} else {\n\t\t\t\tvar args \x3D _normalizeArguments.apply( this\x2C arguments );\n\t\t\t\targs.mode \x3D \"hide\";\n\t\t\t\treturn this.effect.call( this\x2C args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.hide )\x2C\n\n\ttoggle: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) || typeof option \x3D\x3D\x3D \"boolean\" ) {\n\t\t\t\treturn orig.apply( this\x2C arguments );\n\t\t\t} else {\n\t\t\t\tvar args \x3D _normalizeArguments.apply( this\x2C arguments );\n\t\t\t\targs.mode \x3D \"toggle\";\n\t\t\t\treturn this.effect.call( this\x2C args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.toggle )\x2C\n\n\tcssUnit: function( key ) {\n\t\tvar style \x3D this.css( key )\x2C\n\t\t\tval \x3D [];\n\n\t\t$.each( [ \"em\"\x2C \"px\"\x2C \"%\"\x2C \"pt\" ]\x2C function( i\x2C unit ) {\n\t\t\tif ( style.indexOf( unit ) > 0 ) {\n\t\t\t\tval \x3D [ parseFloat( style )\x2C unit ];\n\t\t\t}\n\t\t} );\n\t\treturn val;\n\t}\x2C\n\n\tcssClip: function( clipObj ) {\n\t\tif ( clipObj ) {\n\t\t\treturn this.css( \"clip\"\x2C \"rect(\" + clipObj.top + \"px \" + clipObj.right + \"px \" +\n\t\t\t\tclipObj.bottom + \"px \" + clipObj.left + \"px)\" );\n\t\t}\n\t\treturn parseClip( this.css( \"clip\" )\x2C this );\n\t}\x2C\n\n\ttransfer: function( options\x2C done ) {\n\t\tvar element \x3D $( this )\x2C\n\t\t\ttarget \x3D $( options.to )\x2C\n\t\t\ttargetFixed \x3D target.css( \"position\" ) \x3D\x3D\x3D \"fixed\"\x2C\n\t\t\tbody \x3D $( \"body\" )\x2C\n\t\t\tfixTop \x3D targetFixed \? body.scrollTop() : 0\x2C\n\t\t\tfixLeft \x3D targetFixed \? body.scrollLeft() : 0\x2C\n\t\t\tendPosition \x3D target.offset()\x2C\n\t\t\tanimation \x3D {\n\t\t\t\ttop: endPosition.top - fixTop\x2C\n\t\t\t\tleft: endPosition.left - fixLeft\x2C\n\t\t\t\theight: target.innerHeight()\x2C\n\t\t\t\twidth: target.innerWidth()\n\t\t\t}\x2C\n\t\t\tstartPosition \x3D element.offset()\x2C\n\t\t\ttransfer \x3D $( \"<div class\x3D\'ui-effects-transfer\'></div>\" );\n\n\t\ttransfer\n\t\t\t.appendTo( \"body\" )\n\t\t\t.addClass( options.className )\n\t\t\t.css( {\n\t\t\t\ttop: startPosition.top - fixTop\x2C\n\t\t\t\tleft: startPosition.left - fixLeft\x2C\n\t\t\t\theight: element.innerHeight()\x2C\n\t\t\t\twidth: element.innerWidth()\x2C\n\t\t\t\tposition: targetFixed \? \"fixed\" : \"absolute\"\n\t\t\t} )\n\t\t\t.animate( animation\x2C options.duration\x2C options.easing\x2C function() {\n\t\t\t\ttransfer.remove();\n\t\t\t\tif ( typeof done \x3D\x3D\x3D \"function\" ) {\n\t\t\t\t\tdone();\n\t\t\t\t}\n\t\t\t} );\n\t}\n} );\n\nfunction parseClip( str\x2C element ) {\n\t\tvar outerWidth \x3D element.outerWidth()\x2C\n\t\t\touterHeight \x3D element.outerHeight()\x2C\n\t\t\tclipRegex \x3D /^rect\\((-\?\\d*\\.\?\\d*px|-\?\\d+%|auto)\x2C\?\\s*(-\?\\d*\\.\?\\d*px|-\?\\d+%|auto)\x2C\?\\s*(-\?\\d*\\.\?\\d*px|-\?\\d+%|auto)\x2C\?\\s*(-\?\\d*\\.\?\\d*px|-\?\\d+%|auto)\\)$/\x2C\n\t\t\tvalues \x3D clipRegex.exec( str ) || [ \"\"\x2C 0\x2C outerWidth\x2C outerHeight\x2C 0 ];\n\n\t\treturn {\n\t\t\ttop: parseFloat( values[ 1 ] ) || 0\x2C\n\t\t\tright: values[ 2 ] \x3D\x3D\x3D \"auto\" \? outerWidth : parseFloat( values[ 2 ] )\x2C\n\t\t\tbottom: values[ 3 ] \x3D\x3D\x3D \"auto\" \? outerHeight : parseFloat( values[ 3 ] )\x2C\n\t\t\tleft: parseFloat( values[ 4 ] ) || 0\n\t\t};\n}\n\n$.fx.step.clip \x3D function( fx ) {\n\tif ( !fx.clipInit ) {\n\t\tfx.start \x3D $( fx.elem ).cssClip();\n\t\tif ( typeof fx.end \x3D\x3D\x3D \"string\" ) {\n\t\t\tfx.end \x3D parseClip( fx.end\x2C fx.elem );\n\t\t}\n\t\tfx.clipInit \x3D true;\n\t}\n\n\t$( fx.elem ).cssClip( {\n\t\ttop: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top\x2C\n\t\tright: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right\x2C\n\t\tbottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom\x2C\n\t\tleft: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left\n\t} );\n};\n\n} )();\n\n/******************************************************************************/\n/*********************************** EASING ***********************************/\n/******************************************************************************/\n\n( function() {\n\n// Based on easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\nvar baseEasings \x3D {};\n\n$.each( [ \"Quad\"\x2C \"Cubic\"\x2C \"Quart\"\x2C \"Quint\"\x2C \"Expo\" ]\x2C function( i\x2C name ) {\n\tbaseEasings[ name ] \x3D function( p ) {\n\t\treturn Math.pow( p\x2C i + 2 );\n\t};\n} );\n\n$.extend( baseEasings\x2C {\n\tSine: function( p ) {\n\t\treturn 1 - Math.cos( p * Math.PI / 2 );\n\t}\x2C\n\tCirc: function( p ) {\n\t\treturn 1 - Math.sqrt( 1 - p * p );\n\t}\x2C\n\tElastic: function( p ) {\n\t\treturn p \x3D\x3D\x3D 0 || p \x3D\x3D\x3D 1 \? p :\n\t\t\t-Math.pow( 2\x2C 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 );\n\t}\x2C\n\tBack: function( p ) {\n\t\treturn p * p * ( 3 * p - 2 );\n\t}\x2C\n\tBounce: function( p ) {\n\t\tvar pow2\x2C\n\t\t\tbounce \x3D 4;\n\n\t\twhile ( p < ( ( pow2 \x3D Math.pow( 2\x2C --bounce ) ) - 1 ) / 11 ) {}\n\t\treturn 1 / Math.pow( 4\x2C 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p\x2C 2 );\n\t}\n} );\n\n$.each( baseEasings\x2C function( name\x2C easeIn ) {\n\t$.easing[ \"easeIn\" + name ] \x3D easeIn;\n\t$.easing[ \"easeOut\" + name ] \x3D function( p ) {\n\t\treturn 1 - easeIn( 1 - p );\n\t};\n\t$.easing[ \"easeInOut\" + name ] \x3D function( p ) {\n\t\treturn p < 0.5 \?\n\t\t\teaseIn( p * 2 ) / 2 :\n\t\t\t1 - easeIn( p * -2 + 2 ) / 2;\n\t};\n} );\n\n} )();\n\nvar effect \x3D $.effects;\n\n\n/*!\n * jQuery UI Effects Blind 1.13.0\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Blind Effect\n//>>group: Effects\n//>>description: Blinds the element.\n//>>docs: http://api.jqueryui.com/blind-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\nvar effectsEffectBlind \x3D $.effects.define( \"blind\"\x2C \"hide\"\x2C function( options\x2C done ) {\n\tvar map \x3D {\n\t\t\tup: [ \"bottom\"\x2C \"top\" ]\x2C\n\t\t\tvertical: [ \"bottom\"\x2C \"top\" ]\x2C\n\t\t\tdown: [ \"top\"\x2C \"bottom\" ]\x2C\n\t\t\tleft: [ \"right\"\x2C \"left\" ]\x2C\n\t\t\thorizontal: [ \"right\"\x2C \"left\" ]\x2C\n\t\t\tright: [ \"left\"\x2C \"right\" ]\n\t\t}\x2C\n\t\telement \x3D $( this )\x2C\n\t\tdirection \x3D options.direction || \"up\"\x2C\n\t\tstart \x3D element.cssClip()\x2C\n\t\tanimate \x3D { clip: $.extend( {}\x2C start ) }\x2C\n\t\tplaceholder \x3D $.effects.createPlaceholder( element );\n\n\tanimate.clip[ map[ direction ][ 0 ] ] \x3D animate.clip[ map[ direction ][ 1 ] ];\n\n\tif ( options.mode \x3D\x3D\x3D \"show\" ) {\n\t\telement.cssClip( animate.clip );\n\t\tif ( placeholder ) {\n\t\t\tplaceholder.css( $.effects.clipToBox( animate ) );\n\t\t}\n\n\t\tanimate.clip \x3D start;\n\t}\n\n\tif ( placeholder ) {\n\t\tplaceholder.animate( $.effects.clipToBox( animate )\x2C options.duration\x2C options.easing );\n\t}\n\n\telement.animate( animate\x2C {\n\t\tqueue: false\x2C\n\t\tduration: options.duration\x2C\n\t\teasing: options.easing\x2C\n\t\tcomplete: done\n\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Bounce 1.13.0\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Bounce Effect\n//>>group: Effects\n//>>description: Bounces an element horizontally or vertically n times.\n//>>docs: http://api.jqueryui.com/bounce-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\nvar effectsEffectBounce \x3D $.effects.define( \"bounce\"\x2C function( options\x2C done ) {\n\tvar upAnim\x2C downAnim\x2C refValue\x2C\n\t\telement \x3D $( this )\x2C\n\n\t\t// Defaults:\n\t\tmode \x3D options.mode\x2C\n\t\thide \x3D mode \x3D\x3D\x3D \"hide\"\x2C\n\t\tshow \x3D mode \x3D\x3D\x3D \"show\"\x2C\n\t\tdirection \x3D options.direction || \"up\"\x2C\n\t\tdistance \x3D options.distance\x2C\n\t\ttimes \x3D options.times || 5\x2C\n\n\t\t// Number of internal animations\n\t\tanims \x3D times * 2 + ( show || hide \? 1 : 0 )\x2C\n\t\tspeed \x3D options.duration / anims\x2C\n\t\teasing \x3D options.easing\x2C\n\n\t\t// Utility:\n\t\tref \x3D ( direction \x3D\x3D\x3D \"up\" || direction \x3D\x3D\x3D \"down\" ) \? \"top\" : \"left\"\x2C\n\t\tmotion \x3D ( direction \x3D\x3D\x3D \"up\" || direction \x3D\x3D\x3D \"left\" )\x2C\n\t\ti \x3D 0\x2C\n\n\t\tqueuelen \x3D element.queue().length;\n\n\t$.effects.createPlaceholder( element );\n\n\trefValue \x3D element.css( ref );\n\n\t// Default distance for the BIGGEST bounce is the outer Distance / 3\n\tif ( !distance ) {\n\t\tdistance \x3D element[ ref \x3D\x3D\x3D \"top\" \? \"outerHeight\" : \"outerWidth\" ]() / 3;\n\t}\n\n\tif ( show ) {\n\t\tdownAnim \x3D { opacity: 1 };\n\t\tdownAnim[ ref ] \x3D refValue;\n\n\t\t// If we are showing\x2C force opacity 0 and set the initial position\n\t\t// then do the \"first\" animation\n\t\telement\n\t\t\t.css( \"opacity\"\x2C 0 )\n\t\t\t.css( ref\x2C motion \? -distance * 2 : distance * 2 )\n\t\t\t.animate( downAnim\x2C speed\x2C easing );\n\t}\n\n\t// Start at the smallest distance if we are hiding\n\tif ( hide ) {\n\t\tdistance \x3D distance / Math.pow( 2\x2C times - 1 );\n\t}\n\n\tdownAnim \x3D {};\n\tdownAnim[ ref ] \x3D refValue;\n\n\t// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here\n\tfor ( ; i < times; i++ ) {\n\t\tupAnim \x3D {};\n\t\tupAnim[ ref ] \x3D ( motion \? \"-\x3D\" : \"+\x3D\" ) + distance;\n\n\t\telement\n\t\t\t.animate( upAnim\x2C speed\x2C easing )\n\t\t\t.animate( downAnim\x2C speed\x2C easing );\n\n\t\tdistance \x3D hide \? distance * 2 : distance / 2;\n\t}\n\n\t// Last Bounce when Hiding\n\tif ( hide ) {\n\t\tupAnim \x3D { opacity: 0 };\n\t\tupAnim[ ref ] \x3D ( motion \? \"-\x3D\" : \"+\x3D\" ) + distance;\n\n\t\telement.animate( upAnim\x2C speed\x2C easing );\n\t}\n\n\telement.queue( done );\n\n\t$.effects.unshift( element\x2C queuelen\x2C anims + 1 );\n} );\n\n\n/*!\n * jQuery UI Effects Clip 1.13.0\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Clip Effect\n//>>group: Effects\n//>>description: Clips the element on and off like an old TV.\n//>>docs: http://api.jqueryui.com/clip-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\nvar effectsEffectClip \x3D $.effects.define( \"clip\"\x2C \"hide\"\x2C function( options\x2C done ) {\n\tvar start\x2C\n\t\tanimate \x3D {}\x2C\n\t\telement \x3D $( this )\x2C\n\t\tdirection \x3D options.direction || \"vertical\"\x2C\n\t\tboth \x3D direction \x3D\x3D\x3D \"both\"\x2C\n\t\thorizontal \x3D both || direction \x3D\x3D\x3D \"horizontal\"\x2C\n\t\tvertical \x3D both || direction \x3D\x3D\x3D \"vertical\";\n\n\tstart \x3D element.cssClip();\n\tanimate.clip \x3D {\n\t\ttop: vertical \? ( start.bottom - start.top ) / 2 : start.top\x2C\n\t\tright: horizontal \? ( start.right - start.left ) / 2 : start.right\x2C\n\t\tbottom: vertical \? ( start.bottom - start.top ) / 2 : start.bottom\x2C\n\t\tleft: horizontal \? ( start.right - start.left ) / 2 : start.left\n\t};\n\n\t$.effects.createPlaceholder( element );\n\n\tif ( options.mode \x3D\x3D\x3D \"show\" ) {\n\t\telement.cssClip( animate.clip );\n\t\tanimate.clip \x3D start;\n\t}\n\n\telement.animate( animate\x2C {\n\t\tqueue: false\x2C\n\t\tduration: options.duration\x2C\n\t\teasing: options.easing\x2C\n\t\tcomplete: done\n\t} );\n\n} );\n\n\n/*!\n * jQuery UI Effects Drop 1.13.0\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Drop Effect\n//>>group: Effects\n//>>description: Moves an element in one direction and hides it at the same time.\n//>>docs: http://api.jqueryui.com/drop-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\nvar effectsEffectDrop \x3D $.effects.define( \"drop\"\x2C \"hide\"\x2C function( options\x2C done ) {\n\n\tvar distance\x2C\n\t\telement \x3D $( this )\x2C\n\t\tmode \x3D options.mode\x2C\n\t\tshow \x3D mode \x3D\x3D\x3D \"show\"\x2C\n\t\tdirection \x3D options.direction || \"left\"\x2C\n\t\tref \x3D ( direction \x3D\x3D\x3D \"up\" || direction \x3D\x3D\x3D \"down\" ) \? \"top\" : \"left\"\x2C\n\t\tmotion \x3D ( direction \x3D\x3D\x3D \"up\" || direction \x3D\x3D\x3D \"left\" ) \? \"-\x3D\" : \"+\x3D\"\x2C\n\t\toppositeMotion \x3D ( motion \x3D\x3D\x3D \"+\x3D\" ) \? \"-\x3D\" : \"+\x3D\"\x2C\n\t\tanimation \x3D {\n\t\t\topacity: 0\n\t\t};\n\n\t$.effects.createPlaceholder( element );\n\n\tdistance \x3D options.distance ||\n\t\telement[ ref \x3D\x3D\x3D \"top\" \? \"outerHeight\" : \"outerWidth\" ]( true ) / 2;\n\n\tanimation[ ref ] \x3D motion + distance;\n\n\tif ( show ) {\n\t\telement.css( animation );\n\n\t\tanimation[ ref ] \x3D oppositeMotion + distance;\n\t\tanimation.opacity \x3D 1;\n\t}\n\n\t// Animate\n\telement.animate( animation\x2C {\n\t\tqueue: false\x2C\n\t\tduration: options.duration\x2C\n\t\teasing: options.easing\x2C\n\t\tcomplete: done\n\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Explode 1.13.0\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Explode Effect\n//>>group: Effects\n/* eslint-disable max-len */\n//>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness.\n/* eslint-enable max-len */\n//>>docs: http://api.jqueryui.com/explode-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\nvar effectsEffectExplode \x3D $.effects.define( \"explode\"\x2C \"hide\"\x2C function( options\x2C done ) {\n\n\tvar i\x2C j\x2C left\x2C top\x2C mx\x2C my\x2C\n\t\trows \x3D options.pieces \? Math.round( Math.sqrt( options.pieces ) ) : 3\x2C\n\t\tcells \x3D rows\x2C\n\t\telement \x3D $( this )\x2C\n\t\tmode \x3D options.mode\x2C\n\t\tshow \x3D mode \x3D\x3D\x3D \"show\"\x2C\n\n\t\t// Show and then visibility:hidden the element before calculating offset\n\t\toffset \x3D element.show().css( \"visibility\"\x2C \"hidden\" ).offset()\x2C\n\n\t\t// Width and height of a piece\n\t\twidth \x3D Math.ceil( element.outerWidth() / cells )\x2C\n\t\theight \x3D Math.ceil( element.outerHeight() / rows )\x2C\n\t\tpieces \x3D [];\n\n\t// Children animate complete:\n\tfunction childComplete() {\n\t\tpieces.push( this );\n\t\tif ( pieces.length \x3D\x3D\x3D rows * cells ) {\n\t\t\tanimComplete();\n\t\t}\n\t}\n\n\t// Clone the element for each row and cell.\n\tfor ( i \x3D 0; i < rows; i++ ) { // \x3D\x3D\x3D>\n\t\ttop \x3D offset.top + i * height;\n\t\tmy \x3D i - ( rows - 1 ) / 2;\n\n\t\tfor ( j \x3D 0; j < cells; j++ ) { // |||\n\t\t\tleft \x3D offset.left + j * width;\n\t\t\tmx \x3D j - ( cells - 1 ) / 2;\n\n\t\t\t// Create a clone of the now hidden main element that will be absolute positioned\n\t\t\t// within a wrapper div off the -left and -top equal to size of our pieces\n\t\t\telement\n\t\t\t\t.clone()\n\t\t\t\t.appendTo( \"body\" )\n\t\t\t\t.wrap( \"<div></div>\" )\n\t\t\t\t.css( {\n\t\t\t\t\tposition: \"absolute\"\x2C\n\t\t\t\t\tvisibility: \"visible\"\x2C\n\t\t\t\t\tleft: -j * width\x2C\n\t\t\t\t\ttop: -i * height\n\t\t\t\t} )\n\n\t\t\t\t// Select the wrapper - make it overflow: hidden and absolute positioned based on\n\t\t\t\t// where the original was located +left and +top equal to the size of pieces\n\t\t\t\t.parent()\n\t\t\t\t\t.addClass( \"ui-effects-explode\" )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\tposition: \"absolute\"\x2C\n\t\t\t\t\t\toverflow: \"hidden\"\x2C\n\t\t\t\t\t\twidth: width\x2C\n\t\t\t\t\t\theight: height\x2C\n\t\t\t\t\t\tleft: left + ( show \? mx * width : 0 )\x2C\n\t\t\t\t\t\ttop: top + ( show \? my * height : 0 )\x2C\n\t\t\t\t\t\topacity: show \? 0 : 1\n\t\t\t\t\t} )\n\t\t\t\t\t.animate( {\n\t\t\t\t\t\tleft: left + ( show \? 0 : mx * width )\x2C\n\t\t\t\t\t\ttop: top + ( show \? 0 : my * height )\x2C\n\t\t\t\t\t\topacity: show \? 1 : 0\n\t\t\t\t\t}\x2C options.duration || 500\x2C options.easing\x2C childComplete );\n\t\t}\n\t}\n\n\tfunction animComplete() {\n\t\telement.css( {\n\t\t\tvisibility: \"visible\"\n\t\t} );\n\t\t$( pieces ).remove();\n\t\tdone();\n\t}\n} );\n\n\n/*!\n * jQuery UI Effects Fade 1.13.0\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Fade Effect\n//>>group: Effects\n//>>description: Fades the element.\n//>>docs: http://api.jqueryui.com/fade-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\nvar effectsEffectFade \x3D $.effects.define( \"fade\"\x2C \"toggle\"\x2C function( options\x2C done ) {\n\tvar show \x3D options.mode \x3D\x3D\x3D \"show\";\n\n\t$( this )\n\t\t.css( \"opacity\"\x2C show \? 0 : 1 )\n\t\t.animate( {\n\t\t\topacity: show \? 1 : 0\n\t\t}\x2C {\n\t\t\tqueue: false\x2C\n\t\t\tduration: options.duration\x2C\n\t\t\teasing: options.easing\x2C\n\t\t\tcomplete: done\n\t\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Fold 1.13.0\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Fold Effect\n//>>group: Effects\n//>>description: Folds an element first horizontally and then vertically.\n//>>docs: http://api.jqueryui.com/fold-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\nvar effectsEffectFold \x3D $.effects.define( \"fold\"\x2C \"hide\"\x2C function( options\x2C done ) {\n\n\t// Create element\n\tvar element \x3D $( this )\x2C\n\t\tmode \x3D options.mode\x2C\n\t\tshow \x3D mode \x3D\x3D\x3D \"show\"\x2C\n\t\thide \x3D mode \x3D\x3D\x3D \"hide\"\x2C\n\t\tsize \x3D options.size || 15\x2C\n\t\tpercent \x3D /([0-9]+)%/.exec( size )\x2C\n\t\thorizFirst \x3D !!options.horizFirst\x2C\n\t\tref \x3D horizFirst \? [ \"right\"\x2C \"bottom\" ] : [ \"bottom\"\x2C \"right\" ]\x2C\n\t\tduration \x3D options.duration / 2\x2C\n\n\t\tplaceholder \x3D $.effects.createPlaceholder( element )\x2C\n\n\t\tstart \x3D element.cssClip()\x2C\n\t\tanimation1 \x3D { clip: $.extend( {}\x2C start ) }\x2C\n\t\tanimation2 \x3D { clip: $.extend( {}\x2C start ) }\x2C\n\n\t\tdistance \x3D [ start[ ref[ 0 ] ]\x2C start[ ref[ 1 ] ] ]\x2C\n\n\t\tqueuelen \x3D element.queue().length;\n\n\tif ( percent ) {\n\t\tsize \x3D parseInt( percent[ 1 ]\x2C 10 ) / 100 * distance[ hide \? 0 : 1 ];\n\t}\n\tanimation1.clip[ ref[ 0 ] ] \x3D size;\n\tanimation2.clip[ ref[ 0 ] ] \x3D size;\n\tanimation2.clip[ ref[ 1 ] ] \x3D 0;\n\n\tif ( show ) {\n\t\telement.cssClip( animation2.clip );\n\t\tif ( placeholder ) {\n\t\t\tplaceholder.css( $.effects.clipToBox( animation2 ) );\n\t\t}\n\n\t\tanimation2.clip \x3D start;\n\t}\n\n\t// Animate\n\telement\n\t\t.queue( function( next ) {\n\t\t\tif ( placeholder ) {\n\t\t\t\tplaceholder\n\t\t\t\t\t.animate( $.effects.clipToBox( animation1 )\x2C duration\x2C options.easing )\n\t\t\t\t\t.animate( $.effects.clipToBox( animation2 )\x2C duration\x2C options.easing );\n\t\t\t}\n\n\t\t\tnext();\n\t\t} )\n\t\t.animate( animation1\x2C duration\x2C options.easing )\n\t\t.animate( animation2\x2C duration\x2C options.easing )\n\t\t.queue( done );\n\n\t$.effects.unshift( element\x2C queuelen\x2C 4 );\n} );\n\n\n/*!\n * jQuery UI Effects Highlight 1.13.0\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Highlight Effect\n//>>group: Effects\n//>>description: Highlights the background of an element in a defined color for a custom duration.\n//>>docs: http://api.jqueryui.com/highlight-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\nvar effectsEffectHighlight \x3D $.effects.define( \"highlight\"\x2C \"show\"\x2C function( options\x2C done ) {\n\tvar element \x3D $( this )\x2C\n\t\tanimation \x3D {\n\t\t\tbackgroundColor: element.css( \"backgroundColor\" )\n\t\t};\n\n\tif ( options.mode \x3D\x3D\x3D \"hide\" ) {\n\t\tanimation.opacity \x3D 0;\n\t}\n\n\t$.effects.saveStyle( element );\n\n\telement\n\t\t.css( {\n\t\t\tbackgroundImage: \"none\"\x2C\n\t\t\tbackgroundColor: options.color || \"#ffff99\"\n\t\t} )\n\t\t.animate( animation\x2C {\n\t\t\tqueue: false\x2C\n\t\t\tduration: options.duration\x2C\n\t\t\teasing: options.easing\x2C\n\t\t\tcomplete: done\n\t\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Size 1.13.0\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Size Effect\n//>>group: Effects\n//>>description: Resize an element to a specified width and height.\n//>>docs: http://api.jqueryui.com/size-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\nvar effectsEffectSize \x3D $.effects.define( \"size\"\x2C function( options\x2C done ) {\n\n\t// Create element\n\tvar baseline\x2C factor\x2C temp\x2C\n\t\telement \x3D $( this )\x2C\n\n\t\t// Copy for children\n\t\tcProps \x3D [ \"fontSize\" ]\x2C\n\t\tvProps \x3D [ \"borderTopWidth\"\x2C \"borderBottomWidth\"\x2C \"paddingTop\"\x2C \"paddingBottom\" ]\x2C\n\t\thProps \x3D [ \"borderLeftWidth\"\x2C \"borderRightWidth\"\x2C \"paddingLeft\"\x2C \"paddingRight\" ]\x2C\n\n\t\t// Set options\n\t\tmode \x3D options.mode\x2C\n\t\trestore \x3D mode !\x3D\x3D \"effect\"\x2C\n\t\tscale \x3D options.scale || \"both\"\x2C\n\t\torigin \x3D options.origin || [ \"middle\"\x2C \"center\" ]\x2C\n\t\tposition \x3D element.css( \"position\" )\x2C\n\t\tpos \x3D element.position()\x2C\n\t\toriginal \x3D $.effects.scaledDimensions( element )\x2C\n\t\tfrom \x3D options.from || original\x2C\n\t\tto \x3D options.to || $.effects.scaledDimensions( element\x2C 0 );\n\n\t$.effects.createPlaceholder( element );\n\n\tif ( mode \x3D\x3D\x3D \"show\" ) {\n\t\ttemp \x3D from;\n\t\tfrom \x3D to;\n\t\tto \x3D temp;\n\t}\n\n\t// Set scaling factor\n\tfactor \x3D {\n\t\tfrom: {\n\t\t\ty: from.height / original.height\x2C\n\t\t\tx: from.width / original.width\n\t\t}\x2C\n\t\tto: {\n\t\t\ty: to.height / original.height\x2C\n\t\t\tx: to.width / original.width\n\t\t}\n\t};\n\n\t// Scale the css box\n\tif ( scale \x3D\x3D\x3D \"box\" || scale \x3D\x3D\x3D \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !\x3D\x3D factor.to.y ) {\n\t\t\tfrom \x3D $.effects.setTransition( element\x2C vProps\x2C factor.from.y\x2C from );\n\t\t\tto \x3D $.effects.setTransition( element\x2C vProps\x2C factor.to.y\x2C to );\n\t\t}\n\n\t\t// Horizontal props scaling\n\t\tif ( factor.from.x !\x3D\x3D factor.to.x ) {\n\t\t\tfrom \x3D $.effects.setTransition( element\x2C hProps\x2C factor.from.x\x2C from );\n\t\t\tto \x3D $.effects.setTransition( element\x2C hProps\x2C factor.to.x\x2C to );\n\t\t}\n\t}\n\n\t// Scale the content\n\tif ( scale \x3D\x3D\x3D \"content\" || scale \x3D\x3D\x3D \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !\x3D\x3D factor.to.y ) {\n\t\t\tfrom \x3D $.effects.setTransition( element\x2C cProps\x2C factor.from.y\x2C from );\n\t\t\tto \x3D $.effects.setTransition( element\x2C cProps\x2C factor.to.y\x2C to );\n\t\t}\n\t}\n\n\t// Adjust the position properties based on the provided origin points\n\tif ( origin ) {\n\t\tbaseline \x3D $.effects.getBaseline( origin\x2C original );\n\t\tfrom.top \x3D ( original.outerHeight - from.outerHeight ) * baseline.y + pos.top;\n\t\tfrom.left \x3D ( original.outerWidth - from.outerWidth ) * baseline.x + pos.left;\n\t\tto.top \x3D ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top;\n\t\tto.left \x3D ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left;\n\t}\n\tdelete from.outerHeight;\n\tdelete from.outerWidth;\n\telement.css( from );\n\n\t// Animate the children if desired\n\tif ( scale \x3D\x3D\x3D \"content\" || scale \x3D\x3D\x3D \"both\" ) {\n\n\t\tvProps \x3D vProps.concat( [ \"marginTop\"\x2C \"marginBottom\" ] ).concat( cProps );\n\t\thProps \x3D hProps.concat( [ \"marginLeft\"\x2C \"marginRight\" ] );\n\n\t\t// Only animate children with width attributes specified\n\t\t// TODO: is this right\? should we include anything with css width specified as well\n\t\telement.find( \"*[width]\" ).each( function() {\n\t\t\tvar child \x3D $( this )\x2C\n\t\t\t\tchildOriginal \x3D $.effects.scaledDimensions( child )\x2C\n\t\t\t\tchildFrom \x3D {\n\t\t\t\t\theight: childOriginal.height * factor.from.y\x2C\n\t\t\t\t\twidth: childOriginal.width * factor.from.x\x2C\n\t\t\t\t\touterHeight: childOriginal.outerHeight * factor.from.y\x2C\n\t\t\t\t\touterWidth: childOriginal.outerWidth * factor.from.x\n\t\t\t\t}\x2C\n\t\t\t\tchildTo \x3D {\n\t\t\t\t\theight: childOriginal.height * factor.to.y\x2C\n\t\t\t\t\twidth: childOriginal.width * factor.to.x\x2C\n\t\t\t\t\touterHeight: childOriginal.height * factor.to.y\x2C\n\t\t\t\t\touterWidth: childOriginal.width * factor.to.x\n\t\t\t\t};\n\n\t\t\t// Vertical props scaling\n\t\t\tif ( factor.from.y !\x3D\x3D factor.to.y ) {\n\t\t\t\tchildFrom \x3D $.effects.setTransition( child\x2C vProps\x2C factor.from.y\x2C childFrom );\n\t\t\t\tchildTo \x3D $.effects.setTransition( child\x2C vProps\x2C factor.to.y\x2C childTo );\n\t\t\t}\n\n\t\t\t// Horizontal props scaling\n\t\t\tif ( factor.from.x !\x3D\x3D factor.to.x ) {\n\t\t\t\tchildFrom \x3D $.effects.setTransition( child\x2C hProps\x2C factor.from.x\x2C childFrom );\n\t\t\t\tchildTo \x3D $.effects.setTransition( child\x2C hProps\x2C factor.to.x\x2C childTo );\n\t\t\t}\n\n\t\t\tif ( restore ) {\n\t\t\t\t$.effects.saveStyle( child );\n\t\t\t}\n\n\t\t\t// Animate children\n\t\t\tchild.css( childFrom );\n\t\t\tchild.animate( childTo\x2C options.duration\x2C options.easing\x2C function() {\n\n\t\t\t\t// Restore children\n\t\t\t\tif ( restore ) {\n\t\t\t\t\t$.effects.restoreStyle( child );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Animate\n\telement.animate( to\x2C {\n\t\tqueue: false\x2C\n\t\tduration: options.duration\x2C\n\t\teasing: options.easing\x2C\n\t\tcomplete: function() {\n\n\t\t\tvar offset \x3D element.offset();\n\n\t\t\tif ( to.opacity \x3D\x3D\x3D 0 ) {\n\t\t\t\telement.css( \"opacity\"\x2C from.opacity );\n\t\t\t}\n\n\t\t\tif ( !restore ) {\n\t\t\t\telement\n\t\t\t\t\t.css( \"position\"\x2C position \x3D\x3D\x3D \"static\" \? \"relative\" : position )\n\t\t\t\t\t.offset( offset );\n\n\t\t\t\t// Need to save style here so that automatic style restoration\n\t\t\t\t// doesn\'t restore to the original styles from before the animation.\n\t\t\t\t$.effects.saveStyle( element );\n\t\t\t}\n\n\t\t\tdone();\n\t\t}\n\t} );\n\n} );\n\n\n/*!\n * jQuery UI Effects Scale 1.13.0\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Scale Effect\n//>>group: Effects\n//>>description: Grows or shrinks an element and its content.\n//>>docs: http://api.jqueryui.com/scale-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\nvar effectsEffectScale \x3D $.effects.define( \"scale\"\x2C function( options\x2C done ) {\n\n\t// Create element\n\tvar el \x3D $( this )\x2C\n\t\tmode \x3D options.mode\x2C\n\t\tpercent \x3D parseInt( options.percent\x2C 10 ) ||\n\t\t\t( parseInt( options.percent\x2C 10 ) \x3D\x3D\x3D 0 \? 0 : ( mode !\x3D\x3D \"effect\" \? 0 : 100 ) )\x2C\n\n\t\tnewOptions \x3D $.extend( true\x2C {\n\t\t\tfrom: $.effects.scaledDimensions( el )\x2C\n\t\t\tto: $.effects.scaledDimensions( el\x2C percent\x2C options.direction || \"both\" )\x2C\n\t\t\torigin: options.origin || [ \"middle\"\x2C \"center\" ]\n\t\t}\x2C options );\n\n\t// Fade option to support puff\n\tif ( options.fade ) {\n\t\tnewOptions.from.opacity \x3D 1;\n\t\tnewOptions.to.opacity \x3D 0;\n\t}\n\n\t$.effects.effect.size.call( this\x2C newOptions\x2C done );\n} );\n\n\n/*!\n * jQuery UI Effects Puff 1.13.0\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Puff Effect\n//>>group: Effects\n//>>description: Creates a puff effect by scaling the element up and hiding it at the same time.\n//>>docs: http://api.jqueryui.com/puff-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\nvar effectsEffectPuff \x3D $.effects.define( \"puff\"\x2C \"hide\"\x2C function( options\x2C done ) {\n\tvar newOptions \x3D $.extend( true\x2C {}\x2C options\x2C {\n\t\tfade: true\x2C\n\t\tpercent: parseInt( options.percent\x2C 10 ) || 150\n\t} );\n\n\t$.effects.effect.scale.call( this\x2C newOptions\x2C done );\n} );\n\n\n/*!\n * jQuery UI Effects Pulsate 1.13.0\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Pulsate Effect\n//>>group: Effects\n//>>description: Pulsates an element n times by changing the opacity to zero and back.\n//>>docs: http://api.jqueryui.com/pulsate-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\nvar effectsEffectPulsate \x3D $.effects.define( \"pulsate\"\x2C \"show\"\x2C function( options\x2C done ) {\n\tvar element \x3D $( this )\x2C\n\t\tmode \x3D options.mode\x2C\n\t\tshow \x3D mode \x3D\x3D\x3D \"show\"\x2C\n\t\thide \x3D mode \x3D\x3D\x3D \"hide\"\x2C\n\t\tshowhide \x3D show || hide\x2C\n\n\t\t// Showing or hiding leaves off the \"last\" animation\n\t\tanims \x3D ( ( options.times || 5 ) * 2 ) + ( showhide \? 1 : 0 )\x2C\n\t\tduration \x3D options.duration / anims\x2C\n\t\tanimateTo \x3D 0\x2C\n\t\ti \x3D 1\x2C\n\t\tqueuelen \x3D element.queue().length;\n\n\tif ( show || !element.is( \":visible\" ) ) {\n\t\telement.css( \"opacity\"\x2C 0 ).show();\n\t\tanimateTo \x3D 1;\n\t}\n\n\t// Anims - 1 opacity \"toggles\"\n\tfor ( ; i < anims; i++ ) {\n\t\telement.animate( { opacity: animateTo }\x2C duration\x2C options.easing );\n\t\tanimateTo \x3D 1 - animateTo;\n\t}\n\n\telement.animate( { opacity: animateTo }\x2C duration\x2C options.easing );\n\n\telement.queue( done );\n\n\t$.effects.unshift( element\x2C queuelen\x2C anims + 1 );\n} );\n\n\n/*!\n * jQuery UI Effects Shake 1.13.0\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Shake Effect\n//>>group: Effects\n//>>description: Shakes an element horizontally or vertically n times.\n//>>docs: http://api.jqueryui.com/shake-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\nvar effectsEffectShake \x3D $.effects.define( \"shake\"\x2C function( options\x2C done ) {\n\n\tvar i \x3D 1\x2C\n\t\telement \x3D $( this )\x2C\n\t\tdirection \x3D options.direction || \"left\"\x2C\n\t\tdistance \x3D options.distance || 20\x2C\n\t\ttimes \x3D options.times || 3\x2C\n\t\tanims \x3D times * 2 + 1\x2C\n\t\tspeed \x3D Math.round( options.duration / anims )\x2C\n\t\tref \x3D ( direction \x3D\x3D\x3D \"up\" || direction \x3D\x3D\x3D \"down\" ) \? \"top\" : \"left\"\x2C\n\t\tpositiveMotion \x3D ( direction \x3D\x3D\x3D \"up\" || direction \x3D\x3D\x3D \"left\" )\x2C\n\t\tanimation \x3D {}\x2C\n\t\tanimation1 \x3D {}\x2C\n\t\tanimation2 \x3D {}\x2C\n\n\t\tqueuelen \x3D element.queue().length;\n\n\t$.effects.createPlaceholder( element );\n\n\t// Animation\n\tanimation[ ref ] \x3D ( positiveMotion \? \"-\x3D\" : \"+\x3D\" ) + distance;\n\tanimation1[ ref ] \x3D ( positiveMotion \? \"+\x3D\" : \"-\x3D\" ) + distance * 2;\n\tanimation2[ ref ] \x3D ( positiveMotion \? \"-\x3D\" : \"+\x3D\" ) + distance * 2;\n\n\t// Animate\n\telement.animate( animation\x2C speed\x2C options.easing );\n\n\t// Shakes\n\tfor ( ; i < times; i++ ) {\n\t\telement\n\t\t\t.animate( animation1\x2C speed\x2C options.easing )\n\t\t\t.animate( animation2\x2C speed\x2C options.easing );\n\t}\n\n\telement\n\t\t.animate( animation1\x2C speed\x2C options.easing )\n\t\t.animate( animation\x2C speed / 2\x2C options.easing )\n\t\t.queue( done );\n\n\t$.effects.unshift( element\x2C queuelen\x2C anims + 1 );\n} );\n\n\n/*!\n * jQuery UI Effects Slide 1.13.0\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Slide Effect\n//>>group: Effects\n//>>description: Slides an element in and out of the viewport.\n//>>docs: http://api.jqueryui.com/slide-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\nvar effectsEffectSlide \x3D $.effects.define( \"slide\"\x2C \"show\"\x2C function( options\x2C done ) {\n\tvar startClip\x2C startRef\x2C\n\t\telement \x3D $( this )\x2C\n\t\tmap \x3D {\n\t\t\tup: [ \"bottom\"\x2C \"top\" ]\x2C\n\t\t\tdown: [ \"top\"\x2C \"bottom\" ]\x2C\n\t\t\tleft: [ \"right\"\x2C \"left\" ]\x2C\n\t\t\tright: [ \"left\"\x2C \"right\" ]\n\t\t}\x2C\n\t\tmode \x3D options.mode\x2C\n\t\tdirection \x3D options.direction || \"left\"\x2C\n\t\tref \x3D ( direction \x3D\x3D\x3D \"up\" || direction \x3D\x3D\x3D \"down\" ) \? \"top\" : \"left\"\x2C\n\t\tpositiveMotion \x3D ( direction \x3D\x3D\x3D \"up\" || direction \x3D\x3D\x3D \"left\" )\x2C\n\t\tdistance \x3D options.distance ||\n\t\t\telement[ ref \x3D\x3D\x3D \"top\" \? \"outerHeight\" : \"outerWidth\" ]( true )\x2C\n\t\tanimation \x3D {};\n\n\t$.effects.createPlaceholder( element );\n\n\tstartClip \x3D element.cssClip();\n\tstartRef \x3D element.position()[ ref ];\n\n\t// Define hide animation\n\tanimation[ ref ] \x3D ( positiveMotion \? -1 : 1 ) * distance + startRef;\n\tanimation.clip \x3D element.cssClip();\n\tanimation.clip[ map[ direction ][ 1 ] ] \x3D animation.clip[ map[ direction ][ 0 ] ];\n\n\t// Reverse the animation if we\'re showing\n\tif ( mode \x3D\x3D\x3D \"show\" ) {\n\t\telement.cssClip( animation.clip );\n\t\telement.css( ref\x2C animation[ ref ] );\n\t\tanimation.clip \x3D startClip;\n\t\tanimation[ ref ] \x3D startRef;\n\t}\n\n\t// Actually animate\n\telement.animate( animation\x2C {\n\t\tqueue: false\x2C\n\t\tduration: options.duration\x2C\n\t\teasing: options.easing\x2C\n\t\tcomplete: done\n\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Transfer 1.13.0\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Transfer Effect\n//>>group: Effects\n//>>description: Displays a transfer effect from one element to another.\n//>>docs: http://api.jqueryui.com/transfer-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\nvar effect;\nif ( $.uiBackCompat !\x3D\x3D false ) {\n\teffect \x3D $.effects.define( \"transfer\"\x2C function( options\x2C done ) {\n\t\t$( this ).transfer( options\x2C done );\n\t} );\n}\nvar effectsEffectTransfer \x3D effect;\n\n\n\n\n} );", Scope = Private
#tag EndConstant
#tag ViewBehavior
#tag ViewProperty
Name="_mPanelIndex"
Visible=false
Group="Behavior"
InitialValue="-1"
Type="Integer"
EditorType=""
#tag EndViewProperty
#tag ViewProperty
Name="Index"
Visible=true
Group="ID"
InitialValue="-2147483648"
Type="Integer"
EditorType=""
#tag EndViewProperty
#tag ViewProperty
Name="Name"
Visible=true
Group="ID"
InitialValue=""
Type="String"
EditorType=""
#tag EndViewProperty
#tag ViewProperty
Name="Super"
Visible=true
Group="ID"
InitialValue=""
Type="String"
EditorType=""
#tag EndViewProperty
#tag ViewProperty
Name="Left"
Visible=true
Group="Position"
InitialValue="0"
Type="Integer"
EditorType=""
#tag EndViewProperty
#tag ViewProperty
Name="Top"
Visible=true
Group="Position"
InitialValue="0"
Type="Integer"
EditorType=""
#tag EndViewProperty
#tag ViewProperty
Name="_mName"
Visible=false
Group="Behavior"
InitialValue=""
Type="String"
EditorType="MultiLineEditor"
#tag EndViewProperty
#tag ViewProperty
Name="ControlID"
Visible=false
Group="Behavior"
InitialValue=""
Type="String"
EditorType="MultiLineEditor"
#tag EndViewProperty
#tag ViewProperty
Name="Enabled"
Visible=true
Group="Appearance"
InitialValue=""
Type="Boolean"
EditorType=""
#tag EndViewProperty
#tag EndViewBehavior
End Class
#tag EndClass