1/* =================================================== 2 * bootstrap-transition.js v2.3.2 3 * http://getbootstrap.com/2.3.2/javascript.html#transitions 4 * =================================================== 5 * Copyright 2013 Twitter, Inc. 6 * 7 * Licensed under the Apache License, Version 2.0 (the "License"); 8 * you may not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 * ========================================================== */ 19 20 21!function ($) { 22 23 "use strict"; // jshint ;_; 24 25 26 /* CSS TRANSITION SUPPORT (http://www.modernizr.com/) 27 * ======================================================= */ 28 29 $(function () { 30 31 $.support.transition = (function () { 32 33 var transitionEnd = (function () { 34 35 var el = document.createElement('bootstrap') 36 , transEndEventNames = { 37 'WebkitTransition' : 'webkitTransitionEnd' 38 , 'MozTransition' : 'transitionend' 39 , 'OTransition' : 'oTransitionEnd otransitionend' 40 , 'transition' : 'transitionend' 41 } 42 , name 43 44 for (name in transEndEventNames){ 45 if (el.style[name] !== undefined) { 46 return transEndEventNames[name] 47 } 48 } 49 50 }()) 51 52 return transitionEnd && { 53 end: transitionEnd 54 } 55 56 })() 57 58 }) 59 60}(window.jQuery); 61/* =========================================================== 62 * bootstrap-tooltip.js v2.3.2 63 * http://getbootstrap.com/2.3.2/javascript.html#tooltips 64 * Inspired by the original jQuery.tipsy by Jason Frame 65 * =========================================================== 66 * Copyright 2013 Twitter, Inc. 67 * 68 * Licensed under the Apache License, Version 2.0 (the "License"); 69 * you may not use this file except in compliance with the License. 70 * You may obtain a copy of the License at 71 * 72 * http://www.apache.org/licenses/LICENSE-2.0 73 * 74 * Unless required by applicable law or agreed to in writing, software 75 * distributed under the License is distributed on an "AS IS" BASIS, 76 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 77 * See the License for the specific language governing permissions and 78 * limitations under the License. 79 * ========================================================== */ 80 81 82!function ($) { 83 84 "use strict"; // jshint ;_; 85 86 87 /* TOOLTIP PUBLIC CLASS DEFINITION 88 * =============================== */ 89 90 var Tooltip = function (element, options) { 91 this.init('tooltip', element, options) 92 } 93 94 Tooltip.prototype = { 95 96 constructor: Tooltip 97 98 , init: function (type, element, options) { 99 var eventIn 100 , eventOut 101 , triggers 102 , trigger 103 , i 104 105 this.type = type 106 this.$element = $(element) 107 this.options = this.getOptions(options) 108 this.enabled = true 109 110 triggers = this.options.trigger.split(' ') 111 112 for (i = triggers.length; i--;) { 113 trigger = triggers[i] 114 if (trigger == 'click') { 115 this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) 116 } else if (trigger != 'manual') { 117 eventIn = trigger == 'hover' ? 'mouseenter' : 'focus' 118 eventOut = trigger == 'hover' ? 'mouseleave' : 'blur' 119 this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) 120 this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) 121 } 122 } 123 124 this.options.selector ? 125 (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : 126 this.fixTitle() 127 } 128 129 , getOptions: function (options) { 130 options = $.extend({}, $.fn[this.type].defaults, this.$element.data(), options) 131 132 if (options.delay && typeof options.delay == 'number') { 133 options.delay = { 134 show: options.delay 135 , hide: options.delay 136 } 137 } 138 139 return options 140 } 141 142 , enter: function (e) { 143 var defaults = $.fn[this.type].defaults 144 , options = {} 145 , self 146 147 this._options && $.each(this._options, function (key, value) { 148 if (defaults[key] != value) options[key] = value 149 }, this) 150 151 self = $(e.currentTarget)[this.type](options).data(this.type) 152 153 if (!self.options.delay || !self.options.delay.show) return self.show() 154 155 clearTimeout(this.timeout) 156 self.hoverState = 'in' 157 this.timeout = setTimeout(function() { 158 if (self.hoverState == 'in') self.show() 159 }, self.options.delay.show) 160 } 161 162 , leave: function (e) { 163 var self = $(e.currentTarget)[this.type](this._options).data(this.type) 164 165 if (this.timeout) clearTimeout(this.timeout) 166 if (!self.options.delay || !self.options.delay.hide) return self.hide() 167 168 self.hoverState = 'out' 169 this.timeout = setTimeout(function() { 170 if (self.hoverState == 'out') self.hide() 171 }, self.options.delay.hide) 172 } 173 174 , show: function () { 175 var $tip 176 , pos 177 , actualWidth 178 , actualHeight 179 , placement 180 , tp 181 , e = $.Event('show') 182 183 if (this.hasContent() && this.enabled) { 184 this.$element.trigger(e) 185 if (e.isDefaultPrevented()) return 186 $tip = this.tip() 187 this.setContent() 188 189 if (this.options.animation) { 190 $tip.addClass('fade') 191 } 192 193 placement = typeof this.options.placement == 'function' ? 194 this.options.placement.call(this, $tip[0], this.$element[0]) : 195 this.options.placement 196 197 $tip 198 .detach() 199 .css({ top: 0, left: 0, display: 'block' }) 200 201 this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) 202 203 pos = this.getPosition() 204 205 actualWidth = $tip[0].offsetWidth 206 actualHeight = $tip[0].offsetHeight 207 208 switch (placement) { 209 case 'bottom': 210 tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2} 211 break 212 case 'top': 213 tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2} 214 break 215 case 'left': 216 tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth} 217 break 218 case 'right': 219 tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width} 220 break 221 } 222 223 this.applyPlacement(tp, placement) 224 this.$element.trigger('shown') 225 } 226 } 227 228 , applyPlacement: function(offset, placement){ 229 var $tip = this.tip() 230 , width = $tip[0].offsetWidth 231 , height = $tip[0].offsetHeight 232 , actualWidth 233 , actualHeight 234 , delta 235 , replace 236 237 $tip 238 .offset(offset) 239 .addClass(placement) 240 .addClass('in') 241 242 actualWidth = $tip[0].offsetWidth 243 actualHeight = $tip[0].offsetHeight 244 245 if (placement == 'top' && actualHeight != height) { 246 offset.top = offset.top + height - actualHeight 247 replace = true 248 } 249 250 if (placement == 'bottom' || placement == 'top') { 251 delta = 0 252 253 if (offset.left < 0){ 254 delta = offset.left * -2 255 offset.left = 0 256 $tip.offset(offset) 257 actualWidth = $tip[0].offsetWidth 258 actualHeight = $tip[0].offsetHeight 259 } 260 261 this.replaceArrow(delta - width + actualWidth, actualWidth, 'left') 262 } else { 263 this.replaceArrow(actualHeight - height, actualHeight, 'top') 264 } 265 266 if (replace) $tip.offset(offset) 267 } 268 269 , replaceArrow: function(delta, dimension, position){ 270 this 271 .arrow() 272 .css(position, delta ? (50 * (1 - delta / dimension) + "%") : '') 273 } 274 275 , setContent: function () { 276 var $tip = this.tip() 277 , title = this.getTitle() 278 279 $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) 280 $tip.removeClass('fade in top bottom left right') 281 } 282 283 , hide: function () { 284 var that = this 285 , $tip = this.tip() 286 , e = $.Event('hide') 287 288 this.$element.trigger(e) 289 if (e.isDefaultPrevented()) return 290 291 $tip.removeClass('in') 292 293 function removeWithAnimation() { 294 var timeout = setTimeout(function () {
295 $tip.off($.support.transition.end).detach() 296 }, 500) 297 298 $tip.one($.support.transition.end, function () { 299 clearTimeout(timeout) 300 $tip.detach() 301 }) 302 } 303 304 $.support.transition && this.$tip.hasClass('fade') ? 305 removeWithAnimation() : 306 $tip.detach() 307 308 this.$element.trigger('hidden') 309 310 return this 311 } 312 313 , fixTitle: function () { 314 var $e = this.$element 315 if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') { 316 $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') 317 } 318 } 319 320 , hasContent: function () { 321 return this.getTitle() 322 } 323 324 , getPosition: function () { 325 var el = this.$element[0] 326 return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : { 327 width: el.offsetWidth 328 , height: el.offsetHeight 329 }, this.$element.offset()) 330 } 331 332 , getTitle: function () { 333 var title 334 , $e = this.$element 335 , o = this.options 336 337 title = $e.attr('data-original-title') 338 || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) 339 340 return title 341 } 342 343 , tip: function () { 344 return this.$tip = this.$tip || $(this.options.template) 345 } 346 347 , arrow: function(){ 348 return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow") 349 } 350 351 , validate: function () { 352 if (!this.$element[0].parentNode) { 353 this.hide() 354 this.$element = null 355 this.options = null 356 } 357 } 358 359 , enable: function () { 360 this.enabled = true 361 } 362 363 , disable: function () { 364 this.enabled = false 365 } 366 367 , toggleEnabled: function () { 368 this.enabled = !this.enabled 369 } 370 371 , toggle: function (e) { 372 var self = e ? $(e.currentTarget)[this.type](this._options).data(this.type) : this 373 self.tip().hasClass('in') ? self.hide() : self.show() 374 } 375 376 , destroy: function () { 377 this.hide().$element.off('.' + this.type).removeData(this.type) 378 } 379 380 } 381 382 383 /* TOOLTIP PLUGIN DEFINITION 384 * ========================= */ 385 386 var old = $.fn.tooltip 387 388 $.fn.tooltip = function ( option ) { 389 return this.each(function () { 390 var $this = $(this) 391 , data = $this.data('tooltip') 392 , options = typeof option == 'object' && option 393 if (!data) $this.data('tooltip', (data = new Tooltip(this, options))) 394 if (typeof option == 'string') data[option]() 395 }) 396 } 397 398 $.fn.tooltip.Constructor = Tooltip 399 400 $.fn.tooltip.defaults = { 401 animation: true 402 , placement: 'top' 403 , selector: false 404 , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' 405 , trigger: 'hover focus' 406 , title: '' 407 , delay: 0 408 , html: false 409 , container: false 410 } 411 412 413 /* TOOLTIP NO CONFLICT 414 * =================== */ 415 416 $.fn.tooltip.noConflict = function () { 417 $.fn.tooltip = old 418 return this 419 } 420 421}(window.jQuery); 422 423/* ======================================================== 424 * bootstrap-tab.js v2.3.2 425 * http://getbootstrap.com/2.3.2/javascript.html#tabs 426 * ======================================================== 427 * Copyright 2013 Twitter, Inc. 428 * 429 * Licensed under the Apache License, Version 2.0 (the "License"); 430 * you may not use this file except in compliance with the License. 431 * You may obtain a copy of the License at 432 * 433 * http://www.apache.org/licenses/LICENSE-2.0 434 * 435 * Unless required by applicable law or agreed to in writing, software 436 * distributed under the License is distributed on an "AS IS" BASIS, 437 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 438 * See the License for the specific language governing permissions and 439 * limitations under the License. 440 * ======================================================== */ 441 442 443!function ($) { 444 445 "use strict"; // jshint ;_; 446 447 448 /* TAB CLASS DEFINITION 449 * ==================== */ 450 451 var Tab = function (element) { 452 this.element = $(element) 453 } 454 455 Tab.prototype = { 456 457 constructor: Tab 458 459 , show: function () { 460 var $this = this.element 461 , $ul = $this.closest('ul:not(.dropdown-menu)') 462 , selector = $this.attr('data-target') 463 , previous 464 , $target 465 , e 466 467 if (!selector) { 468 selector = $this.attr('href') 469 selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 470 } 471 472 if ( $this.parent('li').hasClass('active') ) return 473 474 previous = $ul.find('.active:last a')[0] 475 476 e = $.Event('show', { 477 relatedTarget: previous 478 }) 479 480 $this.trigger(e) 481 482 if (e.isDefaultPrevented()) return 483 484 $target = $(selector) 485 486 this.activate($this.parent('li'), $ul) 487 this.activate($target, $target.parent(), function () { 488 $this.trigger({ 489 type: 'shown' 490 , relatedTarget: previous 491 }) 492 }) 493 } 494 495 , activate: function ( element, container, callback) { 496 var $active = container.find('> .active') 497 , transition = callback 498 && $.support.transition 499 && $active.hasClass('fade') 500 501 function next() { 502 $active 503 .removeClass('active') 504 .find('> .dropdown-menu > .active') 505 .removeClass('active') 506 507 element.addClass('active') 508 509 if (transition) { 510 element[0].offsetWidth // reflow for transition 511 element.addClass('in') 512 } else { 513 element.removeClass('fade') 514 } 515 516 if ( element.parent('.dropdown-menu') ) { 517 element.closest('li.dropdown').addClass('active') 518 } 519 520 callback && callback() 521 } 522 523 transition ? 524 $active.one($.support.transition.end, next) : 525 next() 526 527 $active.removeClass('in') 528 } 529 } 530 531 532 /* TAB PLUGIN DEFINITION 533 * ===================== */ 534 535 var old = $.fn.tab 536 537 $.fn.tab = function ( option ) { 538 return this.each(function () { 539 var $this = $(this) 540 , data = $this.data('tab') 541 if (!data) $this.data('tab', (data = new Tab(this))) 542 if (typeof option == 'string') data[option]() 543 }) 544 } 545 546 $.fn.tab.Constructor = Tab 547 548 549 /* TAB NO CONFLICT 550 * =============== */ 551 552 $.fn.tab.noConflict = function () { 553 $.fn.tab = old 554 return this 555 } 556 557 558 /* TAB DATA-API 559 * ============ */ 560 561 $(document).on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) { 562 e.preventDefault() 563 $(this).tab('show') 564 }) 565 566}(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.