1/*! 2 * Bootstrap.js by @fat & @mdo 3 * Copyright 2012 Twitter, Inc. 4 * http://www.apache.org/licenses/LICENSE-2.0.txt 5 */ 6!(function (e) { 7 "use strict"; 8 e(function () { 9 e.support.transition = (function () { 10 var e = (function () { 11 var e = document.createElement("bootstrap"), 12 t = { WebkitTransition: "webkitTransitionEnd", MozTransition: "transitionend", OTransition: "oTransitionEnd otransitionend", transition: "transitionend" }, 13 n; 14 for (n in t) { 15 if (e.style[n] !== undefined) { 16 return t[n]; 17 } 18 } 19 })(); 20 return e && { end: e }; 21 })(); 22 }); 23})(window.jQuery); 24!(function (e) { 25 "use strict"; 26 var t = '[data-dismiss="alert"]', 27 n = function (n) { 28 e(n).on("click", t, this.close); 29 }; 30 n.prototype.close = function (t) { 31 function s() { 32 i.trigger("closed").remove(); 33 } 34 var n = e(this), 35 r = n.attr("data-target"), 36 i; 37 if (!r) { 38 r = n.attr("href"); 39 r = r && r.replace(/.*(?=#[^\s]*$)/, ""); 40 } 41 i = e(r); 42 t && t.preventDefault(); 43 i.length || (i = n.hasClass("alert") ? n : n.parent()); 44 i.trigger((t = e.Event("close"))); 45 if (t.isDefaultPrevented()) return; 46 i.removeClass("in"); 47 e.support.transition && i.hasClass("fade") ? i.on(e.support.transition.end, s) : s(); 48 }; 49 var r = e.fn.alert; 50 e.fn.alert = function (t) { 51 return this.each(function () { 52 var r = e(this), 53 i = r.data("alert"); 54 if (!i) r.data("alert", (i = new n(this))); 55 if (typeof t == "string") i[t].call(r); 56 }); 57 }; 58 e.fn.alert.Constructor = n; 59 e.fn.alert.noConflict = function () { 60 e.fn.alert = r; 61 return this; 62 }; 63 e(document).on("click.alert.data-api", t, n.prototype.close); 64})(window.jQuery); 65!(function (e) { 66 "use strict"; 67 var t = function (t, n) { 68 this.$element = e(t); 69 this.options = e.extend({}, e.fn.button.defaults, n); 70 }; 71 t.prototype.setState = function (e) { 72 var t = "disabled", 73 n = this.$element, 74 r = n.data(), 75 i = n.is("input") ? "val" : "html"; 76 e = e + "Text"; 77 r.resetText || n.data("resetText", n[i]()); 78 n[i](r[e] || this.options[e]); 79 setTimeout(function () { 80 e == "loadingText" ? n.addClass(t).attr(t, t) : n.removeClass(t).removeAttr(t); 81 }, 0); 82 }; 83 t.prototype.toggle = function () { 84 var e = this.$element.closest('[data-toggle="buttons-radio"]'); 85 e && e.find(".active").removeClass("active"); 86 this.$element.toggleClass("active"); 87 }; 88 var n = e.fn.button; 89 e.fn.button = function (n) { 90 return this.each(function () { 91 var r = e(this), 92 i = r.data("button"), 93 s = typeof n == "object" && n; 94 if (!i) r.data("button", (i = new t(this, s))); 95 if (n == "toggle") i.toggle(); 96 else if (n) i.setState(n); 97 }); 98 }; 99 e.fn.button.defaults = { loadingText: "loading..." }; 100 e.fn.button.Constructor = t; 101 e.fn.button.noConflict = function () { 102 e.fn.button = n; 103 return this; 104 }; 105 e(document).on("click.button.data-api", "[data-toggle^=button]", function (t) { 106 var n = e(t.target); 107 if (!n.hasClass("btn")) n = n.closest(".btn"); 108 n.button("toggle"); 109 }); 110})(window.jQuery); 111!(function (e) { 112 "use strict"; 113 var t = function (t, n) { 114 this.$element = e(t); 115 this.$indicators = this.$element.find(".carousel-indicators"); 116 this.options = n; 117 this.options.pause == "hover" && this.$element.on("mouseenter", e.proxy(this.pause, this)).on("mouseleave", e.proxy(this.cycle, this)); 118 }; 119 t.prototype = { 120 cycle: function (t) { 121 if (!t) this.paused = false; 122 if (this.interval) clearInterval(this.interval); 123 this.options.interval && !this.paused && (this.interval = setInterval(e.proxy(this.next, this), this.options.interval)); 124 return this; 125 }, 126 getActiveIndex: function () {
127 this.$active = this.$element.find(".item.active"); 128 this.$items = this.$active.parent().children(); 129 return this.$items.index(this.$active); 130 }, 131 to: function (t) { 132 var n = this.getActiveIndex(), 133 r = this; 134 if (t > this.$items.length - 1 || t < 0) return; 135 if (this.sliding) { 136 return this.$element.one("slid", function () { 137 r.to(t); 138 }); 139 } 140 if (n == t) { 141 return this.pause().cycle(); 142 } 143 return this.slide(t > n ? "next" : "prev", e(this.$items[t])); 144 }, 145 pause: function (t) { 146 if (!t) this.paused = true; 147 if (this.$element.find(".next, .prev").length && e.support.transition.end) { 148 this.$element.trigger(e.support.transition.end); 149 this.cycle(true); 150 } 151 clearInterval(this.interval); 152 this.interval = null; 153 return this; 154 }, 155 next: function () { 156 if (this.sliding) return; 157 return this.slide("next"); 158 }, 159 prev: function () { 160 if (this.sliding) return; 161 return this.slide("prev"); 162 }, 163 slide: function (t, n) { 164 var r = this.$element.find(".item.active"), 165 i = n || r[t](), 166 s = this.interval, 167 o = t == "next" ? "left" : "right", 168 u = t == "next" ? "first" : "last", 169 a = this, 170 f; 171 this.sliding = true; 172 s && this.pause(); 173 i = i.length ? i : this.$element.find(".item")[u](); 174 f = e.Event("slide", { relatedTarget: i[0], direction: o }); 175 if (i.hasClass("active")) return; 176 if (this.$indicators.length) { 177 this.$indicators.find(".active").removeClass("active"); 178 this.$element.one("slid", function () { 179 var t = e(a.$indicators.children()[a.getActiveIndex()]); 180 t && t.addClass("active"); 181 }); 182 } 183 if (e.support.transition && this.$element.hasClass("slide")) { 184 this.$element.trigger(f); 185 if (f.isDefaultPrevented()) return; 186 i.addClass(t); 187 i[0].offsetWidth; 188 r.addClass(o); 189 i.addClass(o); 190 this.$element.one(e.support.transition.end, function () { 191 i.removeClass([t, o].join(" ")).addClass("active"); 192 r.removeClass(["active", o].join(" ")); 193 a.sliding = false; 194 setTimeout(function () { 195 a.$element.trigger("slid"); 196 }, 0); 197 }); 198 } else { 199 this.$element.trigger(f); 200 if (f.isDefaultPrevented()) return; 201 r.removeClass("active"); 202 i.addClass("active"); 203 this.sliding = false; 204 this.$element.trigger("slid"); 205 } 206 s && this.cycle(); 207 return this; 208 }, 209 }; 210 var n = e.fn.carousel; 211 e.fn.carousel = function (n) { 212 return this.each(function () { 213 var r = e(this), 214 i = r.data("carousel"), 215 s = e.extend({}, e.fn.carousel.defaults, typeof n == "object" && n), 216 o = typeof n == "string" ? n : s.slide; 217 if (!i) r.data("carousel", (i = new t(this, s))); 218 if (typeof n == "number") i.to(n); 219 else if (o) i[o](); 220 else if (s.interval) i.pause().cycle(); 221 }); 222 }; 223 e.fn.carousel.defaults = { interval: 5e3, pause: "hover" }; 224 e.fn.carousel.Constructor = t; 225 e.fn.carousel.noConflict = function () { 226 e.fn.carousel = n; 227 return this; 228 };
229 e(document).on("click.carousel.data-api", "[data-slide], [data-slide-to]", function (t) { 230 var n = e(this), 231 r, 232 i = e(n.attr("data-target") || ((r = n.attr("href")) && r.replace(/.*(?=#[^\s]+$)/, ""))), 233 s = e.extend({}, i.data(), n.data()), 234 o; 235 i.carousel(s); 236 if ((o = n.attr("data-slide-to"))) { 237 i.data("carousel").pause().to(o).cycle(); 238 } 239 t.preventDefault(); 240 }); 241})(window.jQuery); 242!(function (e) { 243 "use strict"; 244 var t = function (t, n) { 245 this.$element = e(t); 246 this.options = e.extend({}, e.fn.collapse.defaults, n); 247 if (this.options.parent) { 248 this.$parent = e(this.options.parent); 249 } 250 this.options.toggle && this.toggle(); 251 }; 252 t.prototype = { 253 constructor: t, 254 dimension: function () { 255 var e = this.$element.hasClass("width"); 256 return e ? "width" : "height"; 257 }, 258 show: function () { 259 var t, n, r, i; 260 if (this.transitioning || this.$element.hasClass("in")) return; 261 t = this.dimension(); 262 n = e.camelCase(["scroll", t].join("-")); 263 r = this.$parent && this.$parent.find("> .accordion-group > .in"); 264 if (r && r.length) { 265 i = r.data("collapse"); 266 if (i && i.transitioning) return; 267 r.collapse("hide"); 268 i || r.data("collapse", null); 269 } 270 this.$element[t](0); 271 this.transition("addClass", e.Event("show"), "shown"); 272 e.support.transition && this.$element[t](this.$element[0][n]); 273 }, 274 hide: function () { 275 var t; 276 if (this.transitioning || !this.$element.hasClass("in")) return; 277 t = this.dimension(); 278 this.reset(this.$element[t]()); 279 this.transition("removeClass", e.Event("hide"), "hidden"); 280 this.$element[t](0); 281 }, 282 reset: function (e) { 283 var t = this.dimension(); 284 this.$element.removeClass("collapse")[t](e || "auto")[0].offsetWidth; 285 this.$element[e !== null ? "addClass" : "removeClass"]("collapse"); 286 return this; 287 }, 288 transition: function (t, n, r) { 289 var i = this, 290 s = function () { 291 if (n.type == "show") i.reset(); 292 i.transitioning = 0; 293 i.$element.trigger(r); 294 }; 295 this.$element.trigger(n); 296 if (n.isDefaultPrevented()) return; 297 this.transitioning = 1; 298 this.$element[t]("in"); 299 e.support.transition && this.$element.hasClass("collapse") ? this.$element.one(e.support.transition.end, s) : s(); 300 }, 301 toggle: function () { 302 this[this.$element.hasClass("in") ? "hide" : "show"](); 303 }, 304 }; 305 var n = e.fn.collapse; 306 e.fn.collapse = function (n) { 307 return this.each(function () { 308 var r = e(this), 309 i = r.data("collapse"), 310 s = e.extend({}, e.fn.collapse.defaults, r.data(), typeof n == "object" && n); 311 if (!i) r.data("collapse", (i = new t(this, s))); 312 if (typeof n == "string") i[n](); 313 }); 314 }; 315 e.fn.collapse.defaults = { toggle: true }; 316 e.fn.collapse.Constructor = t; 317 e.fn.collapse.noConflict = function () { 318 e.fn.collapse = n; 319 return this; 320 }; 321 e(document).on("click.collapse.data-api", "[data-toggle=collapse]", function (t) { 322 var n = e(this), 323 r, 324 i = n.attr("data-target") || t.preventDefault() || ((r = n.attr("href")) && r.replace(/.*(?=#[^\s]+$)/, "")), 325 s = e(i).data("collapse") ? "toggle" : n.data(); 326 n[e(i).hasClass("in") ? "addClass" : "removeClass"]("collapsed"); 327 e(i).collapse(s); 328 }); 329})(window.jQuery); 330!(function (e) { 331 "use strict"; 332 function r() { 333 e(".dropdown-backdrop").remove(); 334 e(t).each(function () { 335 i(e(this)).removeClass("open"); 336 }); 337 } 338 function i(t) { 339 var n = t.attr("data-target"), 340 r; 341 if (!n) { 342 n = t.attr("href"); 343 n = n && /#/.test(n) && n.replace(/.*(?=#[^\s]*$)/, ""); 344 } 345 r = n && e(n); 346 if (!r || !r.length) r = t.parent(); 347 return r; 348 } 349 var t = "[data-toggle=dropdown]", 350 n = function (t) { 351 var n = e(t).on("click.dropdown.data-api", this.toggle); 352 e("html").on("click.dropdown.data-api", function () { 353 n.parent().removeClass("open"); 354 }); 355 }; 356 n.prototype = { 357 constructor: n, 358 toggle: function (t) { 359 var n = e(this), 360 s, 361 o; 362 if (n.is(".disabled, :disabled")) return; 363 s = i(n); 364 o = s.hasClass("open"); 365 r(); 366 if (!o) { 367 if ("ontouchstart" in document.documentElement) { 368 e('<div class="dropdown-backdrop"/>').insertBefore(e(this)).on("click", r); 369 } 370 s.toggleClass("open"); 371 } 372 n.focus(); 373 return false; 374 }, 375 keydown: function (n) { 376 var r, s, o, u, a, f; 377 if (!/(38|40|27)/.test(n.keyCode)) return; 378 r = e(this); 379 n.preventDefault(); 380 n.stopPropagation(); 381 if (r.is(".disabled, :disabled")) return; 382 u = i(r); 383 a = u.hasClass("open"); 384 if (!a || (a && n.keyCode == 27)) { 385 if (n.which == 27) u.find(t).focus(); 386 return r.click(); 387 } 388 s = e("[role=menu] li:not(.divider):visible a", u); 389 if (!s.length) return; 390 f = s.index(s.filter(":focus")); 391 if (n.keyCode == 38 && f > 0) f--; 392 if (n.keyCode == 40 && f < s.length - 1) f++; 393 if (!~f) f = 0; 394 s.eq(f).focus(); 395 }, 396 }; 397 var s = e.fn.dropdown; 398 e.fn.dropdown = function (t) { 399 return this.each(function () { 400 var r = e(this), 401 i = r.data("dropdown"); 402 if (!i) r.data("dropdown", (i = new n(this))); 403 if (typeof t == "string") i[t].call(r); 404 }); 405 }; 406 e.fn.dropdown.Constructor = n; 407 e.fn.dropdown.noConflict = function () { 408 e.fn.dropdown = s; 409 return this; 410 }; 411 e(document) 412 .on("click.dropdown.data-api", r) 413 .on("click.dropdown.data-api", ".dropdown form", function (e) { 414 e.stopPropagation(); 415 }) 416 .on("click.dropdown.data-api", t, n.prototype.toggle)
417 .on("keydown.dropdown.data-api", t + ", [role=menu]", n.prototype.keydown); 418})(window.jQuery); 419!(function (e) { 420 "use strict"; 421 var t = function (t, n) { 422 this.options = n; 423 this.$element = e(t).delegate('[data-dismiss="modal"]', "click.dismiss.modal", e.proxy(this.hide, this)); 424 this.options.remote && this.$element.find(".modal-body").load(this.options.remote); 425 }; 426 t.prototype = { 427 constructor: t, 428 toggle: function () { 429 return this[!this.isShown ? "show" : "hide"](); 430 }, 431 show: function () { 432 var t = this, 433 n = e.Event("show"); 434 this.$element.trigger(n); 435 if (this.isShown || n.isDefaultPrevented()) return; 436 this.isShown = true; 437 this.escape(); 438 this.backdrop(function () { 439 var n = e.support.transition && t.$element.hasClass("fade"); 440 if (!t.$element.parent().length) { 441 t.$element.appendTo(document.body); 442 } 443 t.$element.show(); 444 if (n) { 445 t.$element[0].offsetWidth; 446 } 447 t.$element.addClass("in").attr("aria-hidden", false).attr("isModal", true); 448 t.enforceFocus(); 449 n 450 ? t.$element.one(e.support.transition.end, function () { 451 t.$element.focus().trigger("shown"); 452 }) 453 : t.$element.focus().trigger("shown"); 454 }); 455 }, 456 hide: function (t) { 457 t && t.preventDefault(); 458 var n = this; 459 t = e.Event("hide"); 460 this.$element.trigger(t); 461 if (!this.isShown || t.isDefaultPrevented()) return; 462 this.isShown = false; 463 this.escape(); 464 e(document).off("focusin.modal"); 465 this.$element.removeClass("in").attr("aria-hidden", true); 466 e.support.transition && this.$element.hasClass("fade") ? this.hideWithTransition() : this.hideModal(); 467 }, 468 enforceFocus: function () { 469 var t = this; 470 e(document).on("focusin.modal", function (n) { 471 if (t.$element[0] !== n.target && !t.$element.has(n.target).length && e(n.target).attr("isModal") != "true" && e(n.target).parents("[isModal='true']").length == 0) { 472 t.$element.focus(); 473 } 474 }); 475 }, 476 escape: function () { 477 var e = this; 478 if (this.isShown && this.options.keyboard) { 479 this.$element.on("keyup.dismiss.modal", function (t) { 480 t.which == 27 && e.hide(); 481 }); 482 } else if (!this.isShown) { 483 this.$element.off("keyup.dismiss.modal"); 484 } 485 }, 486 hideWithTransition: function () { 487 var t = this, 488 n = setTimeout(function () { 489 t.$element.off(e.support.transition.end); 490 t.hideModal(); 491 }, 500); 492 this.$element.one(e.support.transition.end, function () { 493 clearTimeout(n); 494 t.hideModal(); 495 }); 496 }, 497 hideModal: function () { 498 var e = this; 499 this.$element.hide(); 500 this.backdrop(function () { 501 e.removeBackdrop(); 502 e.$element.trigger("hidden"); 503 }); 504 }, 505 removeBackdrop: function () { 506 this.$backdrop && this.$backdrop.remove(); 507 this.$backdrop = null; 508 }, 509 backdrop: function (t) { 510 var n = this, 511 r = this.$element.hasClass("fade") ? "fade" : ""; 512 if (this.isShown && this.options.backdrop) { 513 var i = e.support.transition && r; 514 this.$backdrop = e('<div class="modal-backdrop ' + r + '" />').appendTo(document.body); 515 this.$backdrop.click(this.options.backdrop == "static" ? e.proxy(this.$element[0].focus, this.$element[0]) : e.proxy(this.hide, this)); 516 if (i) this.$backdrop[0].offsetWidth; 517 this.$backdrop.addClass("in"); 518 if (!t) return; 519 i ? this.$backdrop.one(e.support.transition.end, t) : t(); 520 } else if (!this.isShown && this.$backdrop) { 521 this.$backdrop.removeClass("in"); 522 e.support.transition && this.$element.hasClass("fade") ? this.$backdrop.one(e.support.transition.end, t) : t(); 523 } else if (t) { 524 t(); 525 } 526 }, 527 }; 528 var n = e.fn.modal; 529 e.fn.modal = function (n) { 530 return this.each(function () { 531 var r = e(this), 532 i = r.data("modal"), 533 s = e.extend({}, e.fn.modal.defaults, r.data(), typeof n == "object" && n); 534 if (!i) r.data("modal", (i = new t(this, s))); 535 if (typeof n == "string") i[n](); 536 else if (s.show) i.show(); 537 }); 538 }; 539 e.fn.modal.defaults = { backdrop: true, keyboard: true, show: true }; 540 e.fn.modal.Constructor = t; 541 e.fn.modal.noConflict = function () { 542 e.fn.modal = n; 543 return this; 544 }; 545 e(document).on("click.modal.data-api", '[data-toggle="modal"]', function (t) { 546 var n = e(this), 547 r = n.attr("href"), 548 i = e(n.attr("data-target") || (r && r.replace(/.*(?=#[^\s]+$)/, ""))), 549 s = i.data("modal") ? "toggle" : e.extend({ remote: !/#/.test(r) && r }, i.data(), n.data()); 550 t.preventDefault(); 551 i.modal(s).one("hide", function () { 552 n.focus(); 553 }); 554 });
555})(window.jQuery); 556!(function (e) { 557 "use strict"; 558 var t = function (e, t) { 559 this.init("tooltip", e, t); 560 }; 561 t.prototype = { 562 constructor: t, 563 init: function (t, n, r) { 564 var i, s, o, u, a; 565 this.type = t; 566 this.$element = e(n); 567 this.options = this.getOptions(r); 568 this.enabled = true; 569 o = this.options.trigger.split(" "); 570 for (a = o.length; a--; ) { 571 u = o[a]; 572 if (u == "click") { 573 this.$element.on("click." + this.type, this.options.selector, e.proxy(this.toggle, this)); 574 } else if (u != "manual") { 575 i = u == "hover" ? "mouseenter" : "focus"; 576 s = u == "hover" ? "mouseleave" : "blur"; 577 this.$element.on(i + "." + this.type, this.options.selector, e.proxy(this.enter, this)); 578 this.$element.on(s + "." + this.type, this.options.selector, e.proxy(this.leave, this)); 579 } 580 } 581 this.options.selector ? (this._options = e.extend({}, this.options, { trigger: "manual", selector: "" })) : this.fixTitle(); 582 }, 583 getOptions: function (t) { 584 t = e.extend({}, e.fn[this.type].defaults, this.$element.data(), t); 585 if (t.delay && typeof t.delay == "number") { 586 t.delay = { show: t.delay, hide: t.delay }; 587 } 588 return t; 589 }, 590 enter: function (t) { 591 var n = e.fn[this.type].defaults, 592 r = {}, 593 i; 594 this._options && 595 e.each( 596 this._options, 597 function (e, t) { 598 if (n[e] != t) r[e] = t; 599 }, 600 this 601 ); 602 i = e(t.currentTarget)[this.type](r).data(this.type); 603 if (!i.options.delay || !i.options.delay.show) return i.show(); 604 clearTimeout(this.timeout); 605 i.hoverState = "in"; 606 this.timeout = setTimeout(function () { 607 if (i.hoverState == "in") i.show(); 608 }, i.options.delay.show); 609 }, 610 leave: function (t) { 611 var n = e(t.currentTarget)[this.type](this._options).data(this.type); 612 if (this.timeout) clearTimeout(this.timeout); 613 if (!n.options.delay || !n.options.delay.hide) return n.hide(); 614 n.hoverState = "out"; 615 this.timeout = setTimeout(function () { 616 if (n.hoverState == "out") n.hide(); 617 }, n.options.delay.hide); 618 }, 619 show: function () { 620 var t, 621 n, 622 r, 623 i, 624 s, 625 o, 626 u = e.Event("show"); 627 if (this.hasContent() && this.enabled) { 628 this.$element.trigger(u); 629 if (u.isDefaultPrevented()) return; 630 t = this.tip(); 631 this.setContent(); 632 if (this.options.animation) { 633 t.addClass("fade"); 634 } 635 s = typeof this.options.placement == "function" ? this.options.placement.call(this, t[0], this.$element[0]) : this.options.placement; 636 t.detach().css({ top: 0, left: 0, display: "block" }); 637 this.options.container ? t.appendTo(this.options.container) : t.insertAfter(this.$element); 638 n = this.getPosition(); 639 r = t[0].offsetWidth; 640 i = t[0].offsetHeight; 641 switch (s) { 642 case "bottom": 643 o = { top: n.top + n.height, left: n.left + n.width / 2 - r / 2 }; 644 break; 645 case "top": 646 o = { top: n.top - i, left: n.left + n.width / 2 - r / 2 }; 647 break; 648 case "left": 649 o = { top: n.top + n.height / 2 - i / 2, left: n.left - r }; 650 break; 651 case "right": 652 o = { top: n.top + n.height / 2 - i / 2, left: n.left + n.width }; 653 break; 654 } 655 this.applyPlacement(o, s); 656 this.$element.trigger("shown"); 657 } 658 }, 659 applyPlacement: function (e, t) { 660 var n = this.tip(), 661 r = n[0].offsetWidth, 662 i = n[0].offsetHeight, 663 s, 664 o, 665 u, 666 a; 667 n.offset(e).addClass(t).addClass("in"); 668 s = n[0].offsetWidth; 669 o = n[0].offsetHeight; 670 if (t == "top" && o != i) { 671 e.top = e.top + i - o; 672 a = true; 673 } 674 if (t == "bottom" || t == "top") { 675 u = 0; 676 if (e.left < 0) { 677 u = e.left * -2; 678 e.left = 0; 679 n.offset(e); 680 s = n[0].offsetWidth; 681 o = n[0].offsetHeight; 682 } 683 this.replaceArrow(u - r + s, s, "left"); 684 } else { 685 this.replaceArrow(o - i, o, "top"); 686 } 687 if (a) n.offset(e); 688 }, 689 replaceArrow: function (e, t, n) { 690 this.arrow().css(n, e ? 50 * (1 - e / t) + "%" : ""); 691 }, 692 setContent: function () { 693 var e = this.tip(), 694 t = this.getTitle(); 695 e.find(".tooltip-inner")[this.options.html ? "html" : "text"](t); 696 e.removeClass("fade in top bottom left right"); 697 }, 698 hide: function () { 699 function i() { 700 var t = setTimeout(function () { 701 n.off(e.support.transition.end).detach(); 702 }, 500); 703 n.one(e.support.transition.end, function () { 704 clearTimeout(t); 705 n.detach(); 706 }); 707 } 708 var t = this, 709 n = this.tip(), 710 r = e.Event("hide"); 711 this.$element.trigger(r); 712 if (r.isDefaultPrevented()) return; 713 n.removeClass("in"); 714 e.support.transition && this.$tip.hasClass("fade") ? i() : n.detach(); 715 this.$element.trigger("hidden"); 716 return this; 717 }, 718 fixTitle: function () { 719 var e = this.$element; 720 if (e.attr("title") || typeof e.attr("data-original-title") != "string") { 721 e.attr("data-original-title", e.attr("title") || "").attr("title", ""); 722 } 723 }, 724 hasContent: function () { 725 return this.getTitle(); 726 }, 727 getPosition: function () { 728 var t = this.$element[0]; 729 return e.extend({}, typeof t.getBoundingClientRect == "function" ? t.getBoundingClientRect() : { width: t.offsetWidth, height: t.offsetHeight }, this.$element.offset()); 730 }, 731 getTitle: function () { 732 var e, 733 t = this.$element, 734 n = this.options; 735 e = t.attr("data-original-title") || (typeof n.title == "function" ? n.title.call(t[0]) : n.title); 736 return e; 737 }, 738 tip: function () { 739 return (this.$tip = this.$tip || e(this.options.template)); 740 }, 741 arrow: function () { 742 return (this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")); 743 }, 744 validate: function () { 745 if (!this.$element[0].parentNode) { 746 this.hide(); 747 this.$element = null; 748 this.options = null; 749 } 750 }, 751 enable: function () { 752 this.enabled = true; 753 }, 754 disable: function () { 755 this.enabled = false; 756 }, 757 toggleEnabled: function () { 758 this.enabled = !this.enabled; 759 }, 760 toggle: function (t) { 761 var n = t ? e(t.currentTarget)[this.type](this._options).data(this.type) : this; 762 n.tip().hasClass("in") ? n.hide() : n.show(); 763 }, 764 destroy: function () { 765 this.hide() 766 .$element.off("." + this.type) 767 .removeData(this.type); 768 }, 769 }; 770 var n = e.fn.tooltip; 771 e.fn.tooltip = function (n) { 772 return this.each(function () { 773 var r = e(this), 774 i = r.data("tooltip"), 775 s = typeof n == "object" && n; 776 if (!i) r.data("tooltip", (i = new t(this, s))); 777 if (typeof n == "string") i[n](); 778 }); 779 }; 780 e.fn.tooltip.Constructor = t; 781 e.fn.tooltip.defaults = { 782 animation: true, 783 placement: "top", 784 selector: false, 785 template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>', 786 trigger: "hover focus", 787 title: "", 788 delay: 0, 789 html: false, 790 container: false, 791 }; 792 e.fn.tooltip.noConflict = function () { 793 e.fn.tooltip = n; 794 return this; 795 }; 796})(window.jQuery); 797!(function (e) { 798 "use strict"; 799 var t = function (e, t) { 800 this.init("popover", e, t); 801 }; 802 t.prototype = e.extend({}, e.fn.tooltip.Constructor.prototype, { 803 constructor: t, 804 setContent: function () { 805 var e = this.tip(), 806 t = this.getTitle(), 807 n = this.getContent(); 808 e.find(".popover-title")[this.options.html ? "html" : "text"](t); 809 e.find(".popover-content")[this.options.html ? "html" : "text"](n); 810 e.removeClass("fade top bottom left right in"); 811 }, 812 hasContent: function () { 813 return this.getTitle() || this.getContent(); 814 }, 815 getContent: function () { 816 var e, 817 t = this.$element, 818 n = this.options; 819 e = (typeof n.content == "function" ? n.content.call(t[0]) : n.content) || t.attr("data-content"); 820 return e; 821 }, 822 tip: function () { 823 if (!this.$tip) { 824 this.$tip = e(this.options.template); 825 } 826 return this.$tip; 827 }, 828 destroy: function () { 829 this.hide() 830 .$element.off("." + this.type) 831 .removeData(this.type); 832 }, 833 });
834 var n = e.fn.popover; 835 e.fn.popover = function (n) { 836 return this.each(function () { 837 var r = e(this), 838 i = r.data("popover"), 839 s = typeof n == "object" && n; 840 if (!i) r.data("popover", (i = new t(this, s))); 841 if (typeof n == "string") i[n](); 842 }); 843 }; 844 e.fn.popover.Constructor = t; 845 e.fn.popover.defaults = e.extend({}, e.fn.tooltip.defaults, { 846 placement: "right", 847 trigger: "click", 848 content: "", 849 template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>', 850 }); 851 e.fn.popover.noConflict = function () { 852 e.fn.popover = n; 853 return this; 854 }; 855})(window.jQuery); 856!(function (e) { 857 "use strict"; 858 function t(t, n) { 859 var r = e.proxy(this.process, this), 860 i = e(t).is("body") ? e(window) : e(t), 861 s; 862 this.options = e.extend({}, e.fn.scrollspy.defaults, n); 863 this.$scrollElement = i.on("scroll.scroll-spy.data-api", r); 864 this.selector = (this.options.target || ((s = e(t).attr("href")) && s.replace(/.*(?=#[^\s]+$)/, "")) || "") + " .nav li > a"; 865 this.$body = e("body"); 866 this.refresh(); 867 this.process(); 868 } 869 t.prototype = { 870 constructor: t, 871 refresh: function () { 872 var t = this, 873 n; 874 this.offsets = e([]); 875 this.targets = e([]); 876 n = this.$body 877 .find(this.selector) 878 .map(function () { 879 var n = e(this), 880 r = n.data("target") || n.attr("href"), 881 i = /^#\w/.test(r) && e(r); 882 return (i && i.length && [[i.position().top + (!e.isWindow(t.$scrollElement.get(0)) && t.$scrollElement.scrollTop()), r]]) || null; 883 }) 884 .sort(function (e, t) { 885 return e[0] - t[0]; 886 }) 887 .each(function () { 888 t.offsets.push(this[0]); 889 t.targets.push(this[1]); 890 }); 891 }, 892 process: function () { 893 var e = this.$scrollElement.scrollTop() + this.options.offset, 894 t = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight, 895 n = t - this.$scrollElement.height(), 896 r = this.offsets, 897 i = this.targets, 898 s = this.activeTarget, 899 o; 900 if (e >= n) { 901 return s != (o = i.last()[0]) && this.activate(o); 902 } 903 for (o = r.length; o--; ) { 904 s != i[o] && e >= r[o] && (!r[o + 1] || e <= r[o + 1]) && this.activate(i[o]); 905 } 906 }, 907 activate: function (t) { 908 var n, r; 909 this.activeTarget = t; 910 e(this.selector).parent(".active").removeClass("active"); 911 r = this.selector + '[data-target="' + t + '"],' + this.selector + '[href="' + t + '"]'; 912 n = e(r).parent("li").addClass("active"); 913 if (n.parent(".dropdown-menu").length) { 914 n = n.closest("li.dropdown").addClass("active"); 915 } 916 n.trigger("activate"); 917 }, 918 }; 919 var n = e.fn.scrollspy; 920 e.fn.scrollspy = function (n) { 921 return this.each(function () { 922 var r = e(this), 923 i = r.data("scrollspy"), 924 s = typeof n == "object" && n; 925 if (!i) r.data("scrollspy", (i = new t(this, s))); 926 if (typeof n == "string") i[n](); 927 }); 928 }; 929 e.fn.scrollspy.Constructor = t; 930 e.fn.scrollspy.defaults = { offset: 10 }; 931 e.fn.scrollspy.noConflict = function () { 932 e.fn.scrollspy = n; 933 return this; 934 }; 935 e(window).on("load", function () { 936 e('[data-spy="scroll"]').each(function () { 937 var t = e(this); 938 t.scrollspy(t.data()); 939 }); 940 });
941})(window.jQuery); 942!(function (e) { 943 "use strict"; 944 var t = function (t) { 945 this.element = e(t); 946 }; 947 t.prototype = { 948 constructor: t, 949 show: function () { 950 var t = this.element, 951 n = t.closest("ul:not(.dropdown-menu)"), 952 r = t.attr("data-target"), 953 i, 954 s, 955 o; 956 if (!r) { 957 r = t.attr("href"); 958 r = r && r.replace(/.*(?=#[^\s]*$)/, ""); 959 } 960 if (t.parent("li").hasClass("active")) return; 961 i = n.find(".active:last a")[0]; 962 o = e.Event("show", { relatedTarget: i }); 963 t.trigger(o); 964 if (o.isDefaultPrevented()) return; 965 s = e(r); 966 this.activate(t.parent("li"), n); 967 this.activate(s, s.parent(), function () { 968 t.trigger({ type: "shown", relatedTarget: i }); 969 }); 970 }, 971 activate: function (t, n, r) { 972 function o() { 973 i.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"); 974 t.addClass("active"); 975 if (s) { 976 t[0].offsetWidth; 977 t.addClass("in"); 978 } else { 979 t.removeClass("fade"); 980 } 981 if (t.parent(".dropdown-menu")) { 982 t.closest("li.dropdown").addClass("active"); 983 } 984 r && r(); 985 } 986 var i = n.find("> .active"), 987 s = r && e.support.transition && i.hasClass("fade"); 988 s ? i.one(e.support.transition.end, o) : o(); 989 i.removeClass("in"); 990 }, 991 }; 992 var n = e.fn.tab; 993 e.fn.tab = function (n) { 994 return this.each(function () { 995 var r = e(this), 996 i = r.data("tab"); 997 if (!i) r.data("tab", (i = new t(this))); 998 if (typeof n == "string") i[n](); 999 }); 1000 }; 1001 e.fn.tab.Constructor = t; 1002 e.fn.tab.noConflict = function () { 1003 e.fn.tab = n; 1004 return this; 1005 }; 1006 e(document).on("click.tab.data-api", '[data-toggle="tab"], [data-toggle="pill"]', function (t) { 1007 t.preventDefault(); 1008 e(this).tab("show"); 1009 }); 1010})(window.jQuery); 1011!(function (e) { 1012 "use strict"; 1013 var t = function (t, n) { 1014 this.$element = e(t); 1015 this.options = e.extend({}, e.fn.typeahead.defaults, n); 1016 this.matcher = this.options.matcher || this.matcher; 1017 this.sorter = this.options.sorter || this.sorter; 1018 this.highlighter = this.options.highlighter || this.highlighter; 1019 this.updater = this.options.updater || this.updater; 1020 this.source = this.options.source; 1021 this.$menu = e(this.options.menu); 1022 this.shown = false; 1023 this.listen(); 1024 }; 1025 t.prototype = { 1026 constructor: t, 1027 select: function () { 1028 var e = this.$menu.find(".active").attr("data-value"); 1029 this.$element.val(this.updater(e)).change(); 1030 return this.hide(); 1031 }, 1032 updater: function (e) { 1033 return e; 1034 }, 1035 show: function () { 1036 var t = e.extend({}, this.$element.position(), { height: this.$element[0].offsetHeight }); 1037 this.$menu 1038 .insertAfter(this.$element) 1039 .css({ top: t.top + t.height, left: t.left }) 1040 .show(); 1041 this.shown = true; 1042 return this; 1043 }, 1044 hide: function () { 1045 this.$menu.hide(); 1046 this.shown = false; 1047 return this; 1048 }, 1049 lookup: function (t) { 1050 var n; 1051 this.query = this.$element.val(); 1052 if (!this.query || this.query.length < this.options.minLength) { 1053 return this.shown ? this.hide() : this; 1054 } 1055 n = e.isFunction(this.source) ? this.source(this.query, e.proxy(this.process, this)) : this.source; 1056 return n ? this.process(n) : this; 1057 }, 1058 process: function (t) { 1059 var n = this; 1060 t = e.grep(t, function (e) { 1061 return n.matcher(e); 1062 }); 1063 t = this.sorter(t); 1064 if (!t.length) { 1065 return this.shown ? this.hide() : this; 1066 } 1067 return this.render(t.slice(0, this.options.items)).show(); 1068 }, 1069 matcher: function (e) { 1070 return ~e.toLowerCase().indexOf(this.query.toLowerCase()); 1071 }, 1072 sorter: function (e) { 1073 var t = [], 1074 n = [], 1075 r = [], 1076 i; 1077 while ((i = e.shift())) { 1078 if (!i.toLowerCase().indexOf(this.query.toLowerCase())) t.push(i); 1079 else if (~i.indexOf(this.query)) n.push(i); 1080 else r.push(i); 1081 } 1082 return t.concat(n, r); 1083 }, 1084 highlighter: function (e) { 1085 var t = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&"); 1086 return e.replace(new RegExp("(" + t + ")", "ig"), function (e, t) { 1087 return "<strong>" + t + "</strong>"; 1088 }); 1089 }, 1090 render: function (t) { 1091 var n = this; 1092 t = e(t).map(function (t, r) { 1093 t = e(n.options.item).attr("data-value", r); 1094 t.find("a").html(n.highlighter(r)); 1095 return t[0]; 1096 }); 1097 t.first().addClass("active"); 1098 this.$menu.html(t); 1099 return this; 1100 }, 1101 next: function (t) { 1102 var n = this.$menu.find(".active").removeClass("active"), 1103 r = n.next(); 1104 if (!r.length) { 1105 r = e(this.$menu.find("li")[0]); 1106 } 1107 r.addClass("active"); 1108 }, 1109 prev: function (e) { 1110 var t = this.$menu.find(".active").removeClass("active"), 1111 n = t.prev(); 1112 if (!n.length) { 1113 n = this.$menu.find("li").last(); 1114 } 1115 n.addClass("active"); 1116 }, 1117 listen: function () { 1118 this.$element.on("focus", e.proxy(this.focus, this)).on("blur", e.proxy(this.blur, this)).on("keypress", e.proxy(this.keypress, this)).on("keyup", e.proxy(this.keyup, this)); 1119 if (this.eventSupported("keydown")) {
1120 this.$element.on("keydown", e.proxy(this.keydown, this)); 1121 } 1122 this.$menu.on("click", e.proxy(this.click, this)).on("mouseenter", "li", e.proxy(this.mouseenter, this)).on("mouseleave", "li", e.proxy(this.mouseleave, this)); 1123 }, 1124 eventSupported: function (e) { 1125 var t = e in this.$element; 1126 if (!t) { 1127 this.$element.setAttribute(e, "return;"); 1128 t = typeof this.$element[e] === "function"; 1129 } 1130 return t; 1131 }, 1132 move: function (e) { 1133 if (!this.shown) return; 1134 switch (e.keyCode) { 1135 case 9: 1136 case 13: 1137 case 27: 1138 e.preventDefault(); 1139 break; 1140 case 38: 1141 e.preventDefault(); 1142 this.prev(); 1143 break; 1144 case 40: 1145 e.preventDefault(); 1146 this.next(); 1147 break; 1148 } 1149 e.stopPropagation(); 1150 }, 1151 keydown: function (t) { 1152 this.suppressKeyPressRepeat = ~e.inArray(t.keyCode, [40, 38, 9, 13, 27]); 1153 this.move(t); 1154 }, 1155 keypress: function (e) { 1156 if (this.suppressKeyPressRepeat) return; 1157 this.move(e); 1158 }, 1159 keyup: function (e) { 1160 switch (e.keyCode) { 1161 case 40: 1162 case 38: 1163 case 16: 1164 case 17: 1165 case 18: 1166 break; 1167 case 9: 1168 case 13: 1169 if (!this.shown) return; 1170 this.select(); 1171 break; 1172 case 27: 1173 if (!this.shown) return; 1174 this.hide(); 1175 break; 1176 default: 1177 this.lookup(); 1178 } 1179 e.stopPropagation(); 1180 e.preventDefault(); 1181 }, 1182 focus: function (e) { 1183 this.focused = true; 1184 }, 1185 blur: function (e) { 1186 this.focused = false; 1187 if (!this.mousedover && this.shown) this.hide(); 1188 }, 1189 click: function (e) { 1190 e.stopPropagation(); 1191 e.preventDefault(); 1192 this.select(); 1193 this.$element.focus(); 1194 }, 1195 mouseenter: function (t) { 1196 this.mousedover = true; 1197 this.$menu.find(".active").removeClass("active"); 1198 e(t.currentTarget).addClass("active"); 1199 }, 1200 mouseleave: function (e) { 1201 this.mousedover = false; 1202 if (!this.focused && this.shown) this.hide(); 1203 }, 1204 }; 1205 var n = e.fn.typeahead; 1206 e.fn.typeahead = function (n) { 1207 return this.each(function () { 1208 var r = e(this), 1209 i = r.data("typeahead"), 1210 s = typeof n == "object" && n; 1211 if (!i) r.data("typeahead", (i = new t(this, s))); 1212 if (typeof n == "string") i[n](); 1213 }); 1214 }; 1215 e.fn.typeahead.defaults = { source: [], items: 8, menu: '<ul class="typeahead dropdown-menu"></ul>', item: '<li><a href="#"></a></li>', minLength: 1 }; 1216 e.fn.typeahead.Constructor = t; 1217 e.fn.typeahead.noConflict = function () { 1218 e.fn.typeahead = n; 1219 return this; 1220 }; 1221 e(document).on("focus.typeahead.data-api", '[data-provide="typeahead"]', function (t) { 1222 var n = e(this); 1223 if (n.data("typeahead")) return; 1224 n.typeahead(n.data()); 1225 }); 1226})(window.jQuery); 1227!(function (e) { 1228 "use strict"; 1229 var t = function (t, n) { 1230 this.options = e.extend({}, e.fn.affix.defaults, n); 1231 this.$window = e(window) 1232 .on("scroll.affix.data-api", e.proxy(this.checkPosition, this)) 1233 .on( 1234 "click.affix.data-api", 1235 e.proxy(function () { 1236 setTimeout(e.proxy(this.checkPosition, this), 1); 1237 }, this) 1238 ); 1239 this.$element = e(t); 1240 this.checkPosition(); 1241 }; 1242 t.prototype.checkPosition = function () { 1243 if (!this.$element.is(":visible")) return; 1244 var t = e(document).height(), 1245 n = this.$window.scrollTop(), 1246 r = this.$element.offset(), 1247 i = this.options.offset, 1248 s = i.bottom, 1249 o = i.top, 1250 u = "affix affix-top affix-bottom", 1251 a; 1252 if (typeof i != "object") s = o = i; 1253 if (typeof o == "function") o = i.top(); 1254 if (typeof s == "function") s = i.bottom(); 1255 a = this.unpin != null && n + this.unpin <= r.top ? false : s != null && r.top + this.$element.height() >= t - s ? "bottom" : o != null && n <= o ? "top" : false; 1256 if (this.affixed === a) return; 1257 this.affixed = a; 1258 this.unpin = a == "bottom" ? r.top - n : null; 1259 this.$element.removeClass(u).addClass("affix" + (a ? "-" + a : "")); 1260 }; 1261 var n = e.fn.affix; 1262 e.fn.affix = function (n) { 1263 return this.each(function () { 1264 var r = e(this), 1265 i = r.data("affix"), 1266 s = typeof n == "object" && n; 1267 if (!i) r.data("affix", (i = new t(this, s))); 1268 if (typeof n == "string") i[n](); 1269 }); 1270 }; 1271 e.fn.affix.Constructor = t; 1272 e.fn.affix.defaults = { offset: 0 }; 1273 e.fn.affix.noConflict = function () { 1274 e.fn.affix = n; 1275 return this; 1276 }; 1277 e(window).on("load", function () { 1278 e('[data-spy="affix"]').each(function () { 1279 var t = e(this), 1280 n = t.data(); 1281 n.offset = n.offset || {}; 1282 n.offsetBottom && (n.offset.bottom = n.offsetBottom); 1283 n.offsetTop && (n.offset.top = n.offsetTop); 1284 t.affix(n); 1285 }); 1286 });
1287})(window.jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.