File: /var/www/vhost/disk-apps/magento.bikenow.co/lib/web/jquery/ui-modules/effect-bounce.js
/*!
* jQuery UI Effects Bounce - v1.10.4
* http://jqueryui.com
*
* Copyright 2014 jQuery Foundation and other contributors
* Released under the MIT license.
* http://jquery.org/license
*
* http://api.jqueryui.com/bounce-effect/
*
* Depends:
* jquery.ui.effect.js
*/
define([
'jquery',
'jquery-ui-modules/effect'
], function ($, undefined) {
$.effects.effect.bounce = function (o, done) {
var el = $(this),
props = ["position", "top", "bottom", "left", "right", "height", "width"],
// defaults:
mode = $.effects.setMode(el, o.mode || "effect"),
hide = mode === "hide",
show = mode === "show",
direction = o.direction || "up",
distance = o.distance,
times = o.times || 5,
// number of internal animations
anims = times * 2 + (show || hide ? 1 : 0),
speed = o.duration / anims,
easing = o.easing,
// utility:
ref = (direction === "up" || direction === "down") ? "top" : "left",
motion = (direction === "up" || direction === "left"),
i,
upAnim,
downAnim,
// we will need to re-assemble the queue to stack our animations in place
queue = el.queue(),
queuelen = queue.length;
// Avoid touching opacity to prevent clearType and PNG issues in IE
if (show || hide) {
props.push("opacity");
}
$.effects.save(el, props);
el.show();
$.effects.createWrapper(el); // Create Wrapper
// default distance for the BIGGEST bounce is the outer Distance / 3
if (!distance) {
distance = el[ref === "top" ? "outerHeight" : "outerWidth"]() / 3;
}
if (show) {
downAnim = {opacity: 1};
downAnim[ref] = 0;
// if we are showing, force opacity 0 and set the initial position
// then do the "first" animation
el.css("opacity", 0)
.css(ref, motion ? -distance * 2 : distance * 2)
.animate(downAnim, speed, easing);
}
// start at the smallest distance if we are hiding
if (hide) {
distance = distance / Math.pow(2, times - 1);
}
downAnim = {};
downAnim[ref] = 0;
// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here
for (i = 0; i < times; i++) {
upAnim = {};
upAnim[ref] = (motion ? "-=" : "+=") + distance;
el.animate(upAnim, speed, easing)
.animate(downAnim, speed, easing);
distance = hide ? distance * 2 : distance / 2;
}
// Last Bounce when Hiding
if (hide) {
upAnim = {opacity: 0};
upAnim[ref] = (motion ? "-=" : "+=") + distance;
el.animate(upAnim, speed, easing);
}
el.queue(function () {
if (hide) {
el.hide();
}
$.effects.restore(el, props);
$.effects.removeWrapper(el);
done();
});
// inject all the animations we just queued to be first in line (after "inprogress")
if (queuelen > 1) {
queue.splice.apply(queue,
[1, 0].concat(queue.splice(queuelen, anims + 1)));
}
el.dequeue();
};
});