/*!

* jQuery UI Effects Pulsate 1.11.4
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
* Released under the MIT license.
* http://jquery.org/license
*
* http://api.jqueryui.com/pulsate-effect/
*/

(function( factory ) {

if ( typeof define === "function" && define.amd ) {

        // AMD. Register as an anonymous module.
        define([
                "jquery",
                "./effect"
        ], factory );
} else {

        // Browser globals
        factory( jQuery );
}

}(function( $ ) {

return $.effects.effect.pulsate = function( o, done ) {

var elem = $( this ),
        mode = $.effects.setMode( elem, o.mode || "show" ),
        show = mode === "show",
        hide = mode === "hide",
        showhide = ( show || mode === "hide" ),

        // showing or hiding leaves of the "last" animation
        anims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),
        duration = o.duration / anims,
        animateTo = 0,
        queue = elem.queue(),
        queuelen = queue.length,
        i;

if ( show || !elem.is(":visible")) {
        elem.css( "opacity", 0 ).show();
        animateTo = 1;
}

// anims - 1 opacity "toggles"
for ( i = 1; i < anims; i++ ) {
        elem.animate({
                opacity: animateTo
        }, duration, o.easing );
        animateTo = 1 - animateTo;
}

elem.animate({
        opacity: animateTo
}, duration, o.easing);

elem.queue(function() {
        if ( hide ) {
                elem.hide();
        }
        done();
});

// We just queued up "anims" animations, we need to put them next in the queue
if ( queuelen > 1 ) {
        queue.splice.apply( queue,
                [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );
}
elem.dequeue();

};

}));