| /*! |
| * jQuery UI Effects Fold 1.9.2 |
| * http://jqueryui.com |
| * |
| * Copyright 2012 jQuery Foundation and other contributors |
| * Released under the MIT license. |
| * http://jquery.org/license |
| * |
| * http://api.jqueryui.com/fold-effect/ |
| * |
| * Depends: |
| * jquery.ui.effect.js |
| */ |
| (function( $, undefined ) { |
| |
| $.effects.effect.fold = function( o, done ) { |
| |
| // Create element |
| var el = $( this ), |
| props = [ "position", "top", "bottom", "left", "right", "height", "width" ], |
| mode = $.effects.setMode( el, o.mode || "hide" ), |
| show = mode === "show", |
| hide = mode === "hide", |
| size = o.size || 15, |
| percent = /([0-9]+)%/.exec( size ), |
| horizFirst = !!o.horizFirst, |
| widthFirst = show !== horizFirst, |
| ref = widthFirst ? [ "width", "height" ] : [ "height", "width" ], |
| duration = o.duration / 2, |
| wrapper, distance, |
| animation1 = {}, |
| animation2 = {}; |
| |
| $.effects.save( el, props ); |
| el.show(); |
| |
| // Create Wrapper |
| wrapper = $.effects.createWrapper( el ).css({ |
| overflow: "hidden" |
| }); |
| distance = widthFirst ? |
| [ wrapper.width(), wrapper.height() ] : |
| [ wrapper.height(), wrapper.width() ]; |
| |
| if ( percent ) { |
| size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ]; |
| } |
| if ( show ) { |
| wrapper.css( horizFirst ? { |
| height: 0, |
| width: size |
| } : { |
| height: size, |
| width: 0 |
| }); |
| } |
| |
| // Animation |
| animation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size; |
| animation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0; |
| |
| // Animate |
| wrapper |
| .animate( animation1, duration, o.easing ) |
| .animate( animation2, duration, o.easing, function() { |
| if ( hide ) { |
| el.hide(); |
| } |
| $.effects.restore( el, props ); |
| $.effects.removeWrapper( el ); |
| done(); |
| }); |
| |
| }; |
| |
| })(jQuery); |