/*! * jQuery twitter bootstrap wizard plugin * Examples and documentation at: http://github.com/VinceG/twitter-bootstrap-wizard * version 1.0 * Requires jQuery v1.3.2 or later * Supports Bootstrap 2.2.x, 2.3.x, 3.0 * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html * Authors: Vadim Vincent Gabriel (http://vadimg.com), Jason Gill (www.gilluminate.com) */ (function (e) { var k = function (d, g) { d = e(d); var a = this, b = e.extend({}, e.fn.bootstrapWizard.defaults, g), f = null, c = null; this.rebindClick = function (b, a) { b.unbind("click", a).bind("click", a) }; this.fixNavigationButtons = function () { f.length || (c.find("a:first").tab("show"), f = c.find('li:has([data-toggle="tab"]):first')); e(b.previousSelector, d).toggleClass("disabled", a.firstIndex() >= a.currentIndex()); e(b.nextSelector, d).toggleClass("disabled", a.currentIndex() >= a.navigationLength()); a.rebindClick(e(b.nextSelector, d), a.next); a.rebindClick(e(b.previousSelector, d), a.previous); a.rebindClick(e(b.lastSelector, d), a.last); a.rebindClick(e(b.firstSelector, d), a.first); if (b.onTabShow && "function" === typeof b.onTabShow && !1 === b.onTabShow(f, c, a.currentIndex()))return !1 }; this.next = function (h) { if (d.hasClass("last") || b.onNext && "function" === typeof b.onNext && !1 === b.onNext(f, c, a.nextIndex()))return !1; $index = a.nextIndex(); $index > a.navigationLength() || c.find('li:has([data-toggle="tab"]):eq(' + $index + ") a").tab("show") }; this.previous = function (h) { if (d.hasClass("first") || b.onPrevious && "function" === typeof b.onPrevious && !1 === b.onPrevious(f, c, a.previousIndex()))return !1; $index = a.previousIndex(); 0 > $index || c.find('li:has([data-toggle="tab"]):eq(' + $index + ") a").tab("show") }; this.first = function (h) { if (b.onFirst && "function" === typeof b.onFirst && !1 === b.onFirst(f, c, a.firstIndex()) || d.hasClass("disabled"))return !1; c.find('li:has([data-toggle="tab"]):eq(0) a').tab("show") }; this.last = function (h) { if (b.onLast && "function" === typeof b.onLast && !1 === b.onLast(f, c, a.lastIndex()) || d.hasClass("disabled"))return !1; c.find('li:has([data-toggle="tab"]):eq(' + a.navigationLength() + ") a").tab("show") }; this.currentIndex = function () { return c.find('li:has([data-toggle="tab"])').index(f) }; this.firstIndex = function () { return 0 }; this.lastIndex = function () { return a.navigationLength() }; this.getIndex = function (a) { return c.find('li:has([data-toggle="tab"])').index(a) }; this.nextIndex = function () { return c.find('li:has([data-toggle="tab"])').index(f) + 1 }; this.previousIndex = function () { return c.find('li:has([data-toggle="tab"])').index(f) - 1 }; this.navigationLength = function () { return c.find('li:has([data-toggle="tab"])').length - 1 }; this.activeTab = function () { return f }; this.nextTab = function () { return c.find('li:has([data-toggle="tab"]):eq(' + (a.currentIndex() + 1) + ")").length ? c.find('li:has([data-toggle="tab"]):eq(' + (a.currentIndex() + 1) + ")") : null }; this.previousTab = function () { return 0 >= a.currentIndex() ? null : c.find('li:has([data-toggle="tab"]):eq(' + parseInt(a.currentIndex() - 1) + ")") }; this.show = function (a) { return d.find('li:has([data-toggle="tab"]):eq(' + a + ") a").tab("show") }; this.disable = function (a) { c.find('li:has([data-toggle="tab"]):eq(' + a + ")").addClass("disabled") }; this.enable = function (a) { c.find('li:has([data-toggle="tab"]):eq(' + a + ")").removeClass("disabled") }; this.hide = function (a) { c.find('li:has([data-toggle="tab"]):eq(' + a + ")").hide() }; this.display = function (a) { c.find('li:has([data-toggle="tab"]):eq(' + a + ")").show() }; this.remove = function (a) { var b = "undefined" != typeof a[1] ? a[1] : !1; a = c.find('li:has([data-toggle="tab"]):eq(' + a[0] + ")"); b && (b = a.find("a").attr("href"), e(b).remove()); a.remove() }; c = d.find("ul:first", d); f = c.find('li:has([data-toggle="tab"]).active', d); c.hasClass(b.tabClass) || c.addClass(b.tabClass); if (b.onInit && "function" === typeof b.onInit)b.onInit(f, c, 0); if (b.onShow && "function" === typeof b.onShow)b.onShow(f, c, a.nextIndex()); a.fixNavigationButtons(); e('a[data-toggle="tab"]', c).on("click", function (d) { d = c.find('li:has([data-toggle="tab"])').index(e(d.currentTarget).parent('li:has([data-toggle="tab"])')); if (b.onTabClick && "function" === typeof b.onTabClick && !1 === b.onTabClick(f, c, a.currentIndex(), d))return !1 }); e('a[data-toggle="tab"]', c).on("shown shown.bs.tab", function (d) { $element = e(d.target).parent(); d = c.find('li:has([data-toggle="tab"])').index($element); if ($element.hasClass("disabled") || b.onTabChange && "function" === typeof b.onTabChange && !1 === b.onTabChange(f, c, a.currentIndex(), d))return !1; f = $element; a.fixNavigationButtons() }) }; e.fn.bootstrapWizard = function (d) { if ("string" == typeof d) { var g = Array.prototype.slice.call(arguments, 1); 1 === g.length && g.toString(); return this.data("bootstrapWizard")[d](g) } return this.each(function (a) { a = e(this); if (!a.data("bootstrapWizard")) { var b = new k(a, d); a.data("bootstrapWizard", b) } }) }; e.fn.bootstrapWizard.defaults = { tabClass: "nav nav-pills", nextSelector: ".wizard li.next", previousSelector: ".wizard li.previous", firstSelector: ".wizard li.first", lastSelector: ".wizard li.last", onShow: null, onInit: null, onNext: null, onPrevious: null, onLast: null, onFirst: null, onTabChange: null, onTabClick: null, onTabShow: null } })(jQuery);