Merge "Special:Upload should not crash on failing previews"
[mediawiki.git] / resources / lib / jquery.ui / jquery.ui.effect-fold.js
blob9452c5da227d60f196c85d38a91776c00a4eca9b
1 /*!
2  * jQuery UI Effects Fold 1.9.2
3  * http://jqueryui.com
4  *
5  * Copyright 2012 jQuery Foundation and other contributors
6  * Released under the MIT license.
7  * http://jquery.org/license
8  *
9  * http://api.jqueryui.com/fold-effect/
10  *
11  * Depends:
12  *      jquery.ui.effect.js
13  */
14 (function( $, undefined ) {
16 $.effects.effect.fold = function( o, done ) {
18         // Create element
19         var el = $( this ),
20                 props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
21                 mode = $.effects.setMode( el, o.mode || "hide" ),
22                 show = mode === "show",
23                 hide = mode === "hide",
24                 size = o.size || 15,
25                 percent = /([0-9]+)%/.exec( size ),
26                 horizFirst = !!o.horizFirst,
27                 widthFirst = show !== horizFirst,
28                 ref = widthFirst ? [ "width", "height" ] : [ "height", "width" ],
29                 duration = o.duration / 2,
30                 wrapper, distance,
31                 animation1 = {},
32                 animation2 = {};
34         $.effects.save( el, props );
35         el.show();
37         // Create Wrapper
38         wrapper = $.effects.createWrapper( el ).css({
39                 overflow: "hidden"
40         });
41         distance = widthFirst ?
42                 [ wrapper.width(), wrapper.height() ] :
43                 [ wrapper.height(), wrapper.width() ];
45         if ( percent ) {
46                 size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];
47         }
48         if ( show ) {
49                 wrapper.css( horizFirst ? {
50                         height: 0,
51                         width: size
52                 } : {
53                         height: size,
54                         width: 0
55                 });
56         }
58         // Animation
59         animation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size;
60         animation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0;
62         // Animate
63         wrapper
64                 .animate( animation1, duration, o.easing )
65                 .animate( animation2, duration, o.easing, function() {
66                         if ( hide ) {
67                                 el.hide();
68                         }
69                         $.effects.restore( el, props );
70                         $.effects.removeWrapper( el );
71                         done();
72                 });
76 })(jQuery);