diff --git a/js/jquery.inline-confirmation.js b/js/jquery.inline-confirmation.js index 680a04e..ee4e59a 100644 --- a/js/jquery.inline-confirmation.js +++ b/js/jquery.inline-confirmation.js @@ -41,81 +41,88 @@ * cancelCallback function the callback function to execute after the cancel action, accepts the original action object as an argument */ -(function($){ - - $.fn.inlineConfirmation = function(options) { - var defaults = { - confirm: "Confirm", - cancel: "Cancel", - separator: " ", - reverse: false, - hideOriginalAction: true, - bindsOnEvent: "click", - expiresIn: 0, - confirmCallback: function() { return true; }, - cancelCallback: function() { return true; } +(function ($) { + + $.fn.inlineConfirmation = function (options) { + var defaults = { + confirm: "Confirm", + cancel: "Cancel", + separator: " ", + reverse: false, + hideOriginalAction: true, + bindsOnEvent: "click", + expiresIn: 0, + clickCallback: function () { return true; }, + confirmCallback: function () { return true; }, + cancelCallback: function () { return true; }, + expireCallback: function () { return true; } + }; + + var original_action; + var timeout_id; + var all_actions = $(this); + var options = $.extend(defaults, options); + var block_class = "inline-confirmation-block"; + var confirm_class = "inline-confirmation-confirm"; + var cancel_class = "inline-confirmation-cancel"; + var action_class = "inline-confirmation-action"; + + options.confirm = "" + options.confirm + ""; + options.cancel = "" + options.cancel + ""; + + var action_set = options.reverse === false + ? options.confirm + options.separator + options.cancel + : options.cancel + options.separator + options.confirm; + + $(this).on(options.bindsOnEvent, function (e) { + original_action = $(this); + var args = new Array(); + args[0] = original_action; + + all_actions.show(); + options.clickCallback.apply(this, args); + $("span." + block_class).hide(); + + if (options.hideOriginalAction === true) { + $(this).trigger("update").hide(); + } + + var active_action_set = $("span." + block_class, $(this).parent()); + + if (active_action_set.length > 0) { + active_action_set.show(); + } else { + $(this).after("" + action_set + ""); + } + + if (options.expiresIn > 0) { + timeout_id = setTimeout(function () { + $("span." + block_class, original_action.parent()).hide(); + original_action.show(); + + options.expireCallback.apply(this, args); + }, options.expiresIn * 1000); + } + + e.preventDefault(); + return false; + }); + + $(this).parent().delegate("span." + action_class, "click", function () { + clearTimeout(timeout_id); + $(this).parent().hide(); + original_action.show(); + + var args = new Array(); + args[0] = original_action; + + if ($(this).hasClass(confirm_class)) { + options.confirmCallback.apply(this, args); + } else { + options.cancelCallback.apply(this, args); + } + return false; + }); }; - var original_action; - var timeout_id; - var all_actions = $(this); - var options = $.extend(defaults, options); - var block_class = "inline-confirmation-block"; - var confirm_class = "inline-confirmation-confirm"; - var cancel_class = "inline-confirmation-cancel"; - var action_class = "inline-confirmation-action"; - - options.confirm = "" + options.confirm + ""; - options.cancel = "" + options.cancel + ""; - - var action_set = options.reverse === false - ? options.confirm + options.separator + options.cancel - : options.cancel + options.separator + options.confirm; - - $(this).on(options.bindsOnEvent, function(e) { - original_action = $(this); - - all_actions.show(); - $("span." + block_class).hide(); - - if (options.hideOriginalAction === true) { - $(this).trigger("update").hide(); - } - - var active_action_set = $("span." + block_class, $(this).parent()); - - if (active_action_set.length > 0) { - active_action_set.show(); - } else { - $(this).after("" + action_set + ""); - } - - if (options.expiresIn > 0) { - timeout_id = setTimeout(function() { - $("span." + block_class, original_action.parent()).hide(); - original_action.show(); - }, options.expiresIn * 1000); - } - - e.preventDefault(); - return false; - }); - - $(this).parent().delegate("span." + action_class, "click", function() { - clearTimeout(timeout_id); - $(this).parent().hide(); - original_action.show(); - - var args = new Array(); - args[0] = original_action; - - if ($(this).hasClass(confirm_class)) { - options.confirmCallback.apply(this, args); - } else { - options.cancelCallback.apply(this, args); - } - return false; - }); - }; - })(jQuery);