aboutsummaryrefslogtreecommitdiffstats
path: root/ui/jquery.effects.blind.js
blob: 4ebba4071ca90c3121106c8736ec864c77522386 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/*
 * jQuery UI Effects Blind @VERSION
 *
 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 *
 * http://docs.jquery.com/UI/Effects/Blind
 *
 * Depends:
 *	jquery.effects.core.js
 */
(function( $, undefined ) {

$.effects.blind = function(o) {

	return this.queue(function() {

		// Create element
		var el = $(this), 
			props = ['position','top','bottom','left','right'],
			mode = $.effects.setMode( el, o.mode || 'hide' ),
			direction = o.direction || 'vertical',
			ref = (direction == 'vertical') ? 'height' : 'width',
			wrapper, distance; // Default direction

		// Adjust
		$.effects.save(el, props); el.show(); // Save & Show
		wrapper = $.effects.createWrapper(el).css({overflow:'hidden'}); // Create Wrapper
		distance = wrapper[ direction == 'vertical' ? "height" : "width" ]();
		if(mode == 'show') wrapper.css(ref, 0); // Shift

		// Animation
		var animation = {};
		animation[ref] = mode == 'show' ? distance : 0;

		// Animate
		wrapper.animate(animation, o.duration, o.easing, function() {
			if(mode == 'hide') el.hide(); // Hide
			$.effects.restore(el, props); $.effects.removeWrapper(el); // Restore
			if(o.complete) o.complete.apply(el[0], arguments); // Callback
			el.dequeue();
		});

	});

};

})(jQuery);