*/
(function( $, undefined ) {
-$.effects.explode = function(o) {
+$.effects.explode = function( o ) {
- return this.queue(function() {
+ return this.queue( function() {
- var rows = o.pieces ? Math.round(Math.sqrt(o.pieces)) : 3;
- var cells = o.pieces ? Math.round(Math.sqrt(o.pieces)) : 3;
+ var rows = o.pieces ? Math.round(Math.sqrt(o.pieces)) : 3,
+ cells = rows,
+ el = $( this ).show().css( 'visibility', 'hidden' ),
+ mode = $.effects.setMode( el, o.mode || 'hide' ),
+ offset = el.offset(),
+ width = el.outerWidth( true ),
+ height = el.outerHeight( true );
- o.mode = o.mode == 'toggle' ? ($(this).is(':visible') ? 'hide' : 'show') : o.mode;
- var el = $(this).show().css('visibility', 'hidden');
- var offset = el.offset();
+ //Substract the margins - not fixing the problem yet.
+ offset.top -= parseInt( el.css( "marginTop" ), 10 ) || 0;
+ offset.left -= parseInt( el.css( "marginLeft" ), 10 ) || 0;
- //Substract the margins - not fixing the problem yet.
- offset.top -= parseInt(el.css("marginTop"),10) || 0;
- offset.left -= parseInt(el.css("marginLeft"),10) || 0;
-
- var width = el.outerWidth(true);
- var height = el.outerHeight(true);
-
- for(var i=0;i<rows;i++) { // =
- for(var j=0;j<cells;j++) { // ||
- el
- .clone()
- .appendTo('body')
- .wrap('<div></div>')
- .css({
- position: 'absolute',
- visibility: 'visible',
- left: -j*(width/cells),
- top: -i*(height/rows)
- })
- .parent()
- .addClass('ui-effects-explode')
- .css({
- position: 'absolute',
- overflow: 'hidden',
- width: width/cells,
- height: height/rows,
- left: offset.left + j*(width/cells) + (o.mode == 'show' ? (j-Math.floor(cells/2))*(width/cells) : 0),
- top: offset.top + i*(height/rows) + (o.mode == 'show' ? (i-Math.floor(rows/2))*(height/rows) : 0),
- opacity: o.mode == 'show' ? 0 : 1
- }).animate({
- left: offset.left + j*(width/cells) + (o.mode == 'show' ? 0 : (j-Math.floor(cells/2))*(width/cells)),
- top: offset.top + i*(height/rows) + (o.mode == 'show' ? 0 : (i-Math.floor(rows/2))*(height/rows)),
- opacity: o.mode == 'show' ? 1 : 0
- }, o.duration || 500);
+ for( var i = 0; i < rows ; i++ ) { // =
+ for( var j = 0; j < cells ; j++ ) { // ||
+ el
+ .clone()
+ .appendTo('body')
+ .wrap('<div></div>')
+ .css({
+ position: 'absolute',
+ visibility: 'visible',
+ left: -j*(width/cells),
+ top: -i*(height/rows)
+ })
+ .parent()
+ .addClass('ui-effects-explode')
+ .css({
+ position: 'absolute',
+ overflow: 'hidden',
+ width: width/cells,
+ height: height/rows,
+ left: offset.left + j*(width/cells) + (o.mode == 'show' ? (j-Math.floor(cells/2))*(width/cells) : 0),
+ top: offset.top + i*(height/rows) + (o.mode == 'show' ? (i-Math.floor(rows/2))*(height/rows) : 0),
+ opacity: mode == 'show' ? 0 : 1
+ }).animate({
+ left: offset.left + j*(width/cells) + (o.mode == 'show' ? 0 : (j-Math.floor(cells/2))*(width/cells)),
+ top: offset.top + i*(height/rows) + (o.mode == 'show' ? 0 : (i-Math.floor(rows/2))*(height/rows)),
+ opacity: mode == 'show' ? 1 : 0
+ }, o.duration || 500);
+ }
}
- }
-
- // Set a timeout, to call the callback approx. when the other animations have finished
- setTimeout(function() {
- o.mode == 'show' ? el.css({ visibility: 'visible' }) : el.css({ visibility: 'visible' }).hide();
- if(o.complete) o.complete.apply(el[0]); // Callback
- el.dequeue();
+ // Set a timeout, to call the callback approx. when the other animations have finished
+ setTimeout(function() {
- $('div.ui-effects-explode').remove();
+ el.css({ visibility: 'visible' });
+ mode != 'show' && el.hide();
+ $.isFunction( o.complete ) && o.complete.apply( el[ 0 ] );
+ el.dequeue();
- }, o.duration || 500);
+ // Note: This is removing all exploding peices from the dom, rather than the ones for this animation only... Ticket# 6022
+ $('div.ui-effects-explode').remove();
+ }, o.duration || 500);
});
*/
(function( $, undefined ) {
-$.effects.fade = function(o) {
- return this.queue(function() {
- var elem = $(this),
- mode = $.effects.setMode(elem, o.options.mode || 'hide');
+$.effects.fade = function( o ) {
+ return this.queue( function() {
+ var el = $( this ),
+ mode = $.effects.setMode( el, o.mode || 'hide' );
- elem.animate({ opacity: mode }, {
+ el.animate({
+ opacity: mode
+ }, {
queue: false,
duration: o.duration,
- easing: o.options.easing,
+ easing: o.easing,
complete: function() {
- (o.callback && o.callback.apply(this, arguments));
- elem.dequeue();
+ jQuery.isFunction( o.complete ) && o.complete.apply( this, arguments );
+ el.dequeue();
}
});
});