(function($) { 'use strict'; /* Sort us out with the options parameters */ var getAnimOpts = function (a, b, c) { if (!a) { return {duration: 'normal'}; } if (!!c) { return {duration: a, easing: b, complete: c}; } if (!!b) { return {duration: a, complete: b}; } if (typeof a === 'object') { return a; } return { duration: a }; }, getUnqueuedOpts = function (opts) { return { queue: false, duration: opts.duration, easing: opts.easing }; }; /* Declare our new effects */ $.fn.showDown = function (a, b, c) { var slideOpts = getAnimOpts(a, b, c), fadeOpts = getUnqueuedOpts(slideOpts); $(this).hide().css('opacity', 0).slideDown(slideOpts).animate({ opacity: 1 }, fadeOpts); }; $.fn.hideUp = function (a, b, c) { var slideOpts = getAnimOpts(a, b, c), fadeOpts = getUnqueuedOpts(slideOpts); $(this).show().css('opacity', 1).slideUp(slideOpts).animate({ opacity: 0 }, fadeOpts); }; }(jQuery));