vendor: 6,723 bytes, lines 1-227
1/******/ (function(modules) { // webpackBootstrap 2/******/ // The module cache 3/******/ var installedModules = {}; 4 5/******/ // The require function 6/******/ function __webpack_require__(moduleId) { 7 8/******/ // Check if module is in cache 9/******/ if(installedModules[moduleId]) 10/******/ return installedModules[moduleId].exports; 11 12/******/ // Create a new module (and put it into the cache) 13/******/ var module = installedModules[moduleId] = { 14/******/ exports: {}, 15/******/ id: moduleId, 16/******/ loaded: false 17/******/ }; 18 19/******/ // Execute the module function 20/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 22/******/ // Flag the module as loaded 23/******/ module.loaded = true; 24 25/******/ // Return the exports of the module 26/******/ return module.exports; 27/******/ } 28 29 30/******/ // expose the modules object (__webpack_modules__) 31/******/ __webpack_require__.m = modules; 32 33/******/ // expose the module cache 34/******/ __webpack_require__.c = installedModules; 35 36/******/ // __webpack_public_path__ 37/******/ __webpack_require__.p = ""; 38 39/******/ // Load entry module and return exports 40/******/ return __webpack_require__(0); 41/******/ }) 42/************************************************************************/ 43/******/ ({ 44 45/***/ 0: 46/***/ (function(module, exports, __webpack_require__) { 47 48 /* global $ */ 49 __webpack_require__(121) 50 jQuery(function () { 51 __webpack_require__(122).init(); 52 __webpack_require__(123).initializeSpotlight(); 53 __webpack_require__(124).init(); 54 __webpack_require__(125).initializeHeader(); 55 __webpack_require__(126).initializePropertySearchSelect(); 56 __webpack_require__(127).initializeNewsSearchSelect(); 57 __webpack_require__(128).initializeBusinessSegSelect(); 58 __webpack_require__(129).loadGallery(); 59 __webpack_require__(130).init(); 60 __webpack_require__(131).loadMore(); 61 __webpack_require__(132).init(); 62 __webpack_require__(133).init(); 63 __webpack_require__(134).loadFilter(); 64 const delegations = __webpack_require__(135); 65 delegations.dateTimePicker(); 66 delegations.scrollTo(); 67 delegations.validateForm(); 68 delegations.intlTelInput(); 69 __webpack_require__(136)(); 70 __webpack_require__(137)(); 71 }) 72 jQuery(window).on("load", function() { 73 jQuery('.loading-screen').fadeOut('fast'); 74 }); 75 76 77/***/ }), 78 79/***/ 121: 80/***/ (function(module, exports) { 81 82 /*! 83 * Bootstrap v3.3.7 (http://getbootstrap.com) 84 * Copyright 2011-2016 Twitter, Inc. 85 * Licensed under the MIT license 86 */ 87 88 if (typeof jQuery === 'undefined') { 89 throw new Error('Bootstrap\'s JavaScript requires jQuery') 90 } 91 92 +function ($) { 93 'use strict'; 94 var version = $.fn.jquery.split(' ')[0].split('.') 95 if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) { 96 throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4') 97 } 98 }(jQuery); 99 100 /* ======================================================================== 101 * Bootstrap: transition.js v3.3.7 102 * http://getbootstrap.com/javascript/#transitions 103 * ======================================================================== 104 * Copyright 2011-2016 Twitter, Inc. 105 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 106 * ======================================================================== */ 107 108 109 +function ($) { 110 'use strict'; 111 112 // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) 113 // ============================================================ 114 115 function transitionEnd() { 116 var el = document.createElement('bootstrap') 117 118 var transEndEventNames = { 119 WebkitTransition : 'webkitTransitionEnd', 120 MozTransition : 'transitionend', 121 OTransition : 'oTransitionEnd otransitionend', 122 transition : 'transitionend' 123 } 124 125 for (var name in transEndEventNames) { 126 if (el.style[name] !== undefined) { 127 return { end: transEndEventNames[name] } 128 } 129 } 130 131 return false // explicit for ie8 ( ._.) 132 } 133 134 // http://blog.alexmaccaw.com/css-transitions 135 $.fn.emulateTransitionEnd = function (duration) { 136 var called = false 137 var $el = this 138 $(this).one('bsTransitionEnd', function () { called = true }) 139 var callback = function () { if (!called) $($el).trigger($.support.transition.end) } 140 setTimeout(callback, duration) 141 return this 142 } 143 144 $(function () { 145 $.support.transition = transitionEnd() 146 147 if (!$.support.transition) return 148 149 $.event.special.bsTransitionEnd = { 150 bindType: $.support.transition.end, 151 delegateType: $.support.transition.end, 152 handle: function (e) { 153 if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) 154 } 155 } 156 }) 157 158 }(jQuery); 159 160 /* ======================================================================== 161 * Bootstrap: alert.js v3.3.7 162 * http://getbootstrap.com/javascript/#alerts 163 * ======================================================================== 164 * Copyright 2011-2016 Twitter, Inc. 165 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 166 * ======================================================================== */ 167 168 169 +function ($) { 170 'use strict'; 171 172 // ALERT CLASS DEFINITION 173 // ====================== 174 175 var dismiss = '[data-dismiss="alert"]' 176 var Alert = function (el) { 177 $(el).on('click', dismiss, this.close) 178 } 179 180 Alert.VERSION = '3.3.7' 181 182 Alert.TRANSITION_DURATION = 150 183 184 Alert.prototype.close = function (e) { 185 var $this = $(this) 186 var selector = $this.attr('data-target') 187 188 if (!selector) { 189 selector = $this.attr('href') 190 selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 191 } 192 193 var $parent = $(selector === '#' ? [] : selector) 194 195 if (e) e.preventDefault() 196 197 if (!$parent.length) { 198 $parent = $this.closest('.alert') 199 } 200 201 $parent.trigger(e = $.Event('close.bs.alert')) 202 203 if (e.isDefaultPrevented()) return 204 205 $parent.removeClass('in') 206 207 function removeElement() { 208 // detach from parent, fire event then clean up data 209 $parent.detach().trigger('closed.bs.alert').remove() 210 } 211 212 $.support.transition && $parent.hasClass('fade') ? 213 $parent 214 .one('bsTransitionEnd', removeElement) 215 .emulateTransitionEnd(Alert.TRANSITION_DURATION) : 216 removeElement() 217 } 218 219 220 // ALERT PLUGIN DEFINITION 221 // ======================= 222 223 function Plugin(option) { 224 return this.each(function () { 225 var $this = $(this) 226 var data = $this.data('bs.alert') 227
vendor: 4,125 bytes, lines 228-371
228 if (!data) $this.data('bs.alert', (data = new Alert(this))) 229 if (typeof option == 'string') data[option].call($this) 230 }) 231 } 232 233 var old = $.fn.alert 234 235 $.fn.alert = Plugin 236 $.fn.alert.Constructor = Alert 237 238 239 // ALERT NO CONFLICT 240 // ================= 241 242 $.fn.alert.noConflict = function () { 243 $.fn.alert = old 244 return this 245 } 246 247 248 // ALERT DATA-API 249 // ============== 250 251 $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) 252 253 }(jQuery); 254 255 /* ======================================================================== 256 * Bootstrap: button.js v3.3.7 257 * http://getbootstrap.com/javascript/#buttons 258 * ======================================================================== 259 * Copyright 2011-2016 Twitter, Inc. 260 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 261 * ======================================================================== */ 262 263 264 +function ($) { 265 'use strict'; 266 267 // BUTTON PUBLIC CLASS DEFINITION 268 // ============================== 269 270 var Button = function (element, options) { 271 this.$element = $(element) 272 this.options = $.extend({}, Button.DEFAULTS, options) 273 this.isLoading = false 274 } 275 276 Button.VERSION = '3.3.7' 277 278 Button.DEFAULTS = { 279 loadingText: 'loading...' 280 } 281 282 Button.prototype.setState = function (state) { 283 var d = 'disabled' 284 var $el = this.$element 285 var val = $el.is('input') ? 'val' : 'html' 286 var data = $el.data() 287 288 state += 'Text' 289 290 if (data.resetText == null) $el.data('resetText', $el[val]()) 291 292 // push to event loop to allow forms to submit 293 setTimeout($.proxy(function () { 294 $el[val](data[state] == null ? this.options[state] : data[state]) 295 296 if (state == 'loadingText') { 297 this.isLoading = true 298 $el.addClass(d).attr(d, d).prop(d, true) 299 } else if (this.isLoading) { 300 this.isLoading = false 301 $el.removeClass(d).removeAttr(d).prop(d, false) 302 } 303 }, this), 0) 304 } 305 306 Button.prototype.toggle = function () { 307 var changed = true 308 var $parent = this.$element.closest('[data-toggle="buttons"]') 309 310 if ($parent.length) { 311 var $input = this.$element.find('input') 312 if ($input.prop('type') == 'radio') { 313 if ($input.prop('checked')) changed = false 314 $parent.find('.active').removeClass('active') 315 this.$element.addClass('active') 316 } else if ($input.prop('type') == 'checkbox') { 317 if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false 318 this.$element.toggleClass('active') 319 } 320 $input.prop('checked', this.$element.hasClass('active')) 321 if (changed) $input.trigger('change') 322 } else { 323 this.$element.attr('aria-pressed', !this.$element.hasClass('active')) 324 this.$element.toggleClass('active') 325 } 326 } 327 328 329 // BUTTON PLUGIN DEFINITION 330 // ======================== 331 332 function Plugin(option) { 333 return this.each(function () { 334 var $this = $(this) 335 var data = $this.data('bs.button') 336 var options = typeof option == 'object' && option 337 338 if (!data) $this.data('bs.button', (data = new Button(this, options))) 339 340 if (option == 'toggle') data.toggle() 341 else if (option) data.setState(option) 342 }) 343 } 344 345 var old = $.fn.button 346 347 $.fn.button = Plugin 348 $.fn.button.Constructor = Button 349 350 351 // BUTTON NO CONFLICT 352 // ================== 353 354 $.fn.button.noConflict = function () { 355 $.fn.button = old 356 return this 357 } 358 359 360 // BUTTON DATA-API 361 // =============== 362 363 $(document) 364 .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { 365 var $btn = $(e.target).closest('.btn') 366 Plugin.call($btn, 'toggle') 367 if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) { 368 // Prevent double click on radios, and the double selections (so cancellation) on checkboxes 369 e.preventDefault() 370 // The target component still receive the focus 371 if ($btn.is('input,button')) $btn.trigger('focus')
vendor: 4,950 bytes, lines 372-524
372 else $btn.find('input:visible,button:visible').first().trigger('focus') 373 } 374 }) 375 .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { 376 $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) 377 }) 378 379 }(jQuery); 380 381 /* ======================================================================== 382 * Bootstrap: carousel.js v3.3.7 383 * http://getbootstrap.com/javascript/#carousel 384 * ======================================================================== 385 * Copyright 2011-2016 Twitter, Inc. 386 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 387 * ======================================================================== */ 388 389 390 +function ($) { 391 'use strict'; 392 393 // CAROUSEL CLASS DEFINITION 394 // ========================= 395 396 var Carousel = function (element, options) { 397 this.$element = $(element) 398 this.$indicators = this.$element.find('.carousel-indicators') 399 this.options = options 400 this.paused = null 401 this.sliding = null 402 this.interval = null 403 this.$active = null 404 this.$items = null 405 406 this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) 407 408 this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element 409 .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) 410 .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) 411 } 412 413 Carousel.VERSION = '3.3.7' 414 415 Carousel.TRANSITION_DURATION = 600 416 417 Carousel.DEFAULTS = { 418 interval: 5000, 419 pause: 'hover', 420 wrap: true, 421 keyboard: true 422 } 423 424 Carousel.prototype.keydown = function (e) { 425 if (/input|textarea/i.test(e.target.tagName)) return 426 switch (e.which) { 427 case 37: this.prev(); break 428 case 39: this.next(); break 429 default: return 430 } 431 432 e.preventDefault() 433 } 434 435 Carousel.prototype.cycle = function (e) { 436 e || (this.paused = false) 437 438 this.interval && clearInterval(this.interval) 439 440 this.options.interval 441 && !this.paused 442 && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) 443 444 return this 445 } 446 447 Carousel.prototype.getItemIndex = function (item) { 448 this.$items = item.parent().children('.item') 449 return this.$items.index(item || this.$active) 450 } 451 452 Carousel.prototype.getItemForDirection = function (direction, active) { 453 var activeIndex = this.getItemIndex(active) 454 var willWrap = (direction == 'prev' && activeIndex === 0) 455 || (direction == 'next' && activeIndex == (this.$items.length - 1)) 456 if (willWrap && !this.options.wrap) return active 457 var delta = direction == 'prev' ? -1 : 1 458 var itemIndex = (activeIndex + delta) % this.$items.length 459 return this.$items.eq(itemIndex) 460 } 461 462 Carousel.prototype.to = function (pos) { 463 var that = this 464 var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) 465 466 if (pos > (this.$items.length - 1) || pos < 0) return 467 468 if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" 469 if (activeIndex == pos) return this.pause().cycle() 470 471 return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) 472 } 473 474 Carousel.prototype.pause = function (e) { 475 e || (this.paused = true) 476 477 if (this.$element.find('.next, .prev').length && $.support.transition) { 478 this.$element.trigger($.support.transition.end) 479 this.cycle(true) 480 } 481 482 this.interval = clearInterval(this.interval) 483 484 return this 485 } 486 487 Carousel.prototype.next = function () { 488 if (this.sliding) return 489 return this.slide('next') 490 } 491 492 Carousel.prototype.prev = function () { 493 if (this.sliding) return 494 return this.slide('prev') 495 } 496 497 Carousel.prototype.slide = function (type, next) { 498 var $active = this.$element.find('.item.active') 499 var $next = next || this.getItemForDirection(type, $active) 500 var isCycling = this.interval 501 var direction = type == 'next' ? 'left' : 'right' 502 var that = this 503 504 if ($next.hasClass('active')) return (this.sliding = false) 505 506 var relatedTarget = $next[0] 507 var slideEvent = $.Event('slide.bs.carousel', { 508 relatedTarget: relatedTarget, 509 direction: direction 510 }) 511 this.$element.trigger(slideEvent) 512 if (slideEvent.isDefaultPrevented()) return 513 514 this.sliding = true 515 516 isCycling && this.pause() 517 518 if (this.$indicators.length) { 519 this.$indicators.find('.active').removeClass('active') 520 var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) 521 $nextIndicator && $nextIndicator.addClass('active') 522 } 523 524 var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
vendor: 1,525 bytes, lines 525-572
525 if ($.support.transition && this.$element.hasClass('slide')) { 526 $next.addClass(type) 527 $next[0].offsetWidth // force reflow 528 $active.addClass(direction) 529 $next.addClass(direction) 530 $active 531 .one('bsTransitionEnd', function () { 532 $next.removeClass([type, direction].join(' ')).addClass('active') 533 $active.removeClass(['active', direction].join(' ')) 534 that.sliding = false 535 setTimeout(function () { 536 that.$element.trigger(slidEvent) 537 }, 0) 538 }) 539 .emulateTransitionEnd(Carousel.TRANSITION_DURATION) 540 } else { 541 $active.removeClass('active') 542 $next.addClass('active') 543 this.sliding = false 544 this.$element.trigger(slidEvent) 545 } 546 547 isCycling && this.cycle() 548 549 return this 550 } 551 552 553 // CAROUSEL PLUGIN DEFINITION 554 // ========================== 555 556 function Plugin(option) { 557 return this.each(function () { 558 var $this = $(this) 559 var data = $this.data('bs.carousel') 560 var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) 561 var action = typeof option == 'string' ? option : options.slide 562 563 if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) 564 if (typeof option == 'number') data.to(option) 565 else if (action) data[action]() 566 else if (options.interval) data.pause().cycle() 567 }) 568 } 569 570 var old = $.fn.carousel 571 572 $.fn.carousel = Plugin
vendor: 26,739 bytes, lines 573-1462
573 $.fn.carousel.Constructor = Carousel 574 575 576 // CAROUSEL NO CONFLICT 577 // ==================== 578 579 $.fn.carousel.noConflict = function () { 580 $.fn.carousel = old 581 return this 582 } 583 584 585 // CAROUSEL DATA-API 586 // ================= 587 588 var clickHandler = function (e) { 589 var href 590 var $this = $(this) 591 var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 592 if (!$target.hasClass('carousel')) return 593 var options = $.extend({}, $target.data(), $this.data()) 594 var slideIndex = $this.attr('data-slide-to') 595 if (slideIndex) options.interval = false 596 597 Plugin.call($target, options) 598 599 if (slideIndex) { 600 $target.data('bs.carousel').to(slideIndex) 601 } 602 603 e.preventDefault() 604 } 605 606 $(document) 607 .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) 608 .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) 609 610 $(window).on('load', function () { 611 $('[data-ride="carousel"]').each(function () { 612 var $carousel = $(this) 613 Plugin.call($carousel, $carousel.data()) 614 }) 615 }) 616 617 }(jQuery); 618 619 /* ======================================================================== 620 * Bootstrap: collapse.js v3.3.7 621 * http://getbootstrap.com/javascript/#collapse 622 * ======================================================================== 623 * Copyright 2011-2016 Twitter, Inc. 624 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 625 * ======================================================================== */ 626 627 /* jshint latedef: false */ 628 629 +function ($) { 630 'use strict'; 631 632 // COLLAPSE PUBLIC CLASS DEFINITION 633 // ================================ 634 635 var Collapse = function (element, options) { 636 this.$element = $(element) 637 this.options = $.extend({}, Collapse.DEFAULTS, options) 638 this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + 639 '[data-toggle="collapse"][data-target="#' + element.id + '"]') 640 this.transitioning = null 641 642 if (this.options.parent) { 643 this.$parent = this.getParent() 644 } else { 645 this.addAriaAndCollapsedClass(this.$element, this.$trigger) 646 } 647 648 if (this.options.toggle) this.toggle() 649 } 650 651 Collapse.VERSION = '3.3.7' 652 653 Collapse.TRANSITION_DURATION = 350 654 655 Collapse.DEFAULTS = { 656 toggle: true 657 } 658 659 Collapse.prototype.dimension = function () { 660 var hasWidth = this.$element.hasClass('width') 661 return hasWidth ? 'width' : 'height' 662 } 663 664 Collapse.prototype.show = function () { 665 if (this.transitioning || this.$element.hasClass('in')) return 666 667 var activesData 668 var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') 669 670 if (actives && actives.length) { 671 activesData = actives.data('bs.collapse') 672 if (activesData && activesData.transitioning) return 673 } 674 675 var startEvent = $.Event('show.bs.collapse') 676 this.$element.trigger(startEvent) 677 if (startEvent.isDefaultPrevented()) return 678 679 if (actives && actives.length) { 680 Plugin.call(actives, 'hide') 681 activesData || actives.data('bs.collapse', null) 682 } 683 684 var dimension = this.dimension() 685 686 this.$element 687 .removeClass('collapse') 688 .addClass('collapsing')[dimension](0) 689 .attr('aria-expanded', true) 690 691 this.$trigger 692 .removeClass('collapsed') 693 .attr('aria-expanded', true) 694 695 this.transitioning = 1 696 697 var complete = function () { 698 this.$element 699 .removeClass('collapsing') 700 .addClass('collapse in')[dimension]('') 701 this.transitioning = 0 702 this.$element 703 .trigger('shown.bs.collapse') 704 } 705 706 if (!$.support.transition) return complete.call(this) 707 708 var scrollSize = $.camelCase(['scroll', dimension].join('-')) 709 710 this.$element 711 .one('bsTransitionEnd', $.proxy(complete, this)) 712 .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) 713 } 714 715 Collapse.prototype.hide = function () { 716 if (this.transitioning || !this.$element.hasClass('in')) return 717 718 var startEvent = $.Event('hide.bs.collapse') 719 this.$element.trigger(startEvent) 720 if (startEvent.isDefaultPrevented()) return 721 722 var dimension = this.dimension() 723 724 this.$element[dimension](this.$element[dimension]())[0].offsetHeight 725 726 this.$element 727 .addClass('collapsing') 728 .removeClass('collapse in') 729 .attr('aria-expanded', false) 730 731 this.$trigger 732 .addClass('collapsed') 733 .attr('aria-expanded', false) 734 735 this.transitioning = 1 736 737 var complete = function () { 738 this.transitioning = 0 739 this.$element 740 .removeClass('collapsing') 741 .addClass('collapse') 742 .trigger('hidden.bs.collapse') 743 } 744 745 if (!$.support.transition) return complete.call(this) 746 747 this.$element 748 [dimension](0) 749 .one('bsTransitionEnd', $.proxy(complete, this)) 750 .emulateTransitionEnd(Collapse.TRANSITION_DURATION) 751 } 752 753 Collapse.prototype.toggle = function () { 754 this[this.$element.hasClass('in') ? 'hide' : 'show']() 755 } 756 757 Collapse.prototype.getParent = function () { 758 return $(this.options.parent) 759 .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') 760 .each($.proxy(function (i, element) { 761 var $element = $(element) 762 this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) 763 }, this)) 764 .end() 765 } 766 767 Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { 768 var isOpen = $element.hasClass('in') 769 770 $element.attr('aria-expanded', isOpen) 771 $trigger 772 .toggleClass('collapsed', !isOpen) 773 .attr('aria-expanded', isOpen) 774 } 775 776 function getTargetFromTrigger($trigger) { 777 var href 778 var target = $trigger.attr('data-target') 779 || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 780 781 return $(target) 782 } 783 784 785 // COLLAPSE PLUGIN DEFINITION 786 // ========================== 787 788 function Plugin(option) { 789 return this.each(function () { 790 var $this = $(this) 791 var data = $this.data('bs.collapse') 792 var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) 793 794 if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false 795 if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) 796 if (typeof option == 'string') data[option]() 797 }) 798 } 799 800 var old = $.fn.collapse 801 802 $.fn.collapse = Plugin 803 $.fn.collapse.Constructor = Collapse 804 805 806 // COLLAPSE NO CONFLICT 807 // ==================== 808 809 $.fn.collapse.noConflict = function () { 810 $.fn.collapse = old 811 return this 812 } 813 814 815 // COLLAPSE DATA-API 816 // ================= 817 818 $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { 819 var $this = $(this) 820 821 if (!$this.attr('data-target')) e.preventDefault() 822 823 var $target = getTargetFromTrigger($this) 824 var data = $target.data('bs.collapse') 825 var option = data ? 'toggle' : $this.data() 826 827 Plugin.call($target, option) 828 }) 829 830 }(jQuery); 831 832 /* ======================================================================== 833 * Bootstrap: dropdown.js v3.3.7 834 * http://getbootstrap.com/javascript/#dropdowns 835 * ======================================================================== 836 * Copyright 2011-2016 Twitter, Inc. 837 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 838 * ======================================================================== */ 839 840 841 +function ($) { 842 'use strict'; 843 844 // DROPDOWN CLASS DEFINITION 845 // ========================= 846 847 var backdrop = '.dropdown-backdrop' 848 var toggle = '[data-toggle="dropdown"]' 849 var Dropdown = function (element) { 850 $(element).on('click.bs.dropdown', this.toggle) 851 } 852 853 Dropdown.VERSION = '3.3.7' 854 855 function getParent($this) { 856 var selector = $this.attr('data-target') 857 858 if (!selector) { 859 selector = $this.attr('href') 860 selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 861 } 862 863 var $parent = selector && $(selector) 864 865 return $parent && $parent.length ? $parent : $this.parent() 866 } 867 868 function clearMenus(e) { 869 if (e && e.which === 3) return 870 $(backdrop).remove() 871 $(toggle).each(function () { 872 var $this = $(this) 873 var $parent = getParent($this) 874 var relatedTarget = { relatedTarget: this } 875 876 if (!$parent.hasClass('open')) return 877 878 if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return 879 880 $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) 881 882 if (e.isDefaultPrevented()) return 883 884 $this.attr('aria-expanded', 'false') 885 $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)) 886 }) 887 } 888 889 Dropdown.prototype.toggle = function (e) { 890 var $this = $(this) 891 892 if ($this.is('.disabled, :disabled')) return 893 894 // remove handler for pagination dropdownlist 895 if ($this[0] && $this[0].children[0] && 896 ($this[0].children[0].className === 'page-size' || $this[0].children[0].className === "glyphicon glyphicon-export icon-share" || $this[0].children[0].className ==="glyphicon glyphicon-th icon-th") 897 ) return 898 899 var $parent = getParent($this) 900 var isActive = $parent.hasClass('open') 901 902 clearMenus() 903 904 if (!isActive) { 905 if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { 906 // if mobile we use a backdrop because click events don't delegate 907 $(document.createElement('div')) 908 .addClass('dropdown-backdrop') 909 .insertAfter($(this)) 910 .on('click', clearMenus) 911 } 912 913 var relatedTarget = { relatedTarget: this } 914 $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) 915 916 if (e.isDefaultPrevented()) return 917 918 $this 919 .trigger('focus') 920 .attr('aria-expanded', 'true') 921 922 $parent 923 .toggleClass('open') 924 .trigger($.Event('shown.bs.dropdown', relatedTarget)) 925 } 926 927 return false 928 } 929 930 Dropdown.prototype.keydown = function (e) { 931 if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return 932 933 var $this = $(this) 934 935 e.preventDefault() 936 e.stopPropagation() 937 938 if ($this.is('.disabled, :disabled')) return 939 940 var $parent = getParent($this) 941 var isActive = $parent.hasClass('open') 942 943 if (!isActive && e.which != 27 || isActive && e.which == 27) { 944 if (e.which == 27) $parent.find(toggle).trigger('focus') 945 return $this.trigger('click') 946 } 947 948 var desc = ' li:not(.disabled):visible a' 949 var $items = $parent.find('.dropdown-menu' + desc) 950 951 if (!$items.length) return 952 953 var index = $items.index(e.target) 954 955 if (e.which == 38 && index > 0) index-- // up 956 if (e.which == 40 && index < $items.length - 1) index++ // down 957 if (!~index) index = 0 958 959 $items.eq(index).trigger('focus') 960 } 961 962 963 // DROPDOWN PLUGIN DEFINITION 964 // ========================== 965 966 function Plugin(option) { 967 return this.each(function () { 968 var $this = $(this) 969 var data = $this.data('bs.dropdown') 970 971 if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) 972 if (typeof option == 'string') data[option].call($this) 973 }) 974 } 975 976 var old = $.fn.dropdown 977 978 $.fn.dropdown = Plugin 979 $.fn.dropdown.Constructor = Dropdown 980 981 982 // DROPDOWN NO CONFLICT 983 // ==================== 984 985 $.fn.dropdown.noConflict = function () { 986 $.fn.dropdown = old 987 return this 988 } 989 990 991 // APPLY TO STANDARD DROPDOWN ELEMENTS 992 // =================================== 993 994 $(document) 995 .on('click.bs.dropdown.data-api', clearMenus) 996 .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) 997 .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) 998 .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) 999 .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) 1000 1001 }(jQuery); 1002 1003 /* ======================================================================== 1004 * Bootstrap: modal.js v3.3.7 1005 * http://getbootstrap.com/javascript/#modals 1006 * ======================================================================== 1007 * Copyright 2011-2016 Twitter, Inc. 1008 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 1009 * ======================================================================== */ 1010 1011 1012 +function ($) { 1013 'use strict'; 1014 1015 // MODAL CLASS DEFINITION 1016 // ====================== 1017 1018 var Modal = function (element, options) { 1019 this.options = options 1020 this.$body = $(document.body) 1021 this.$element = $(element) 1022 this.$dialog = this.$element.find('.modal-dialog') 1023 this.$backdrop = null 1024 this.isShown = null 1025 this.originalBodyPad = null 1026 this.scrollbarWidth = 0 1027 this.ignoreBackdropClick = false 1028 1029 if (this.options.remote) { 1030 this.$element 1031 .find('.modal-content') 1032 .load(this.options.remote, $.proxy(function () { 1033 this.$element.trigger('loaded.bs.modal') 1034 }, this)) 1035 } 1036 } 1037 1038 Modal.VERSION = '3.3.7' 1039 1040 Modal.TRANSITION_DURATION = 300 1041 Modal.BACKDROP_TRANSITION_DURATION = 150 1042 1043 Modal.DEFAULTS = { 1044 backdrop: true, 1045 keyboard: true, 1046 show: true 1047 } 1048 1049 Modal.prototype.toggle = function (_relatedTarget) { 1050 return this.isShown ? this.hide() : this.show(_relatedTarget) 1051 } 1052 1053 Modal.prototype.show = function (_relatedTarget) { 1054 var that = this 1055 var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) 1056 1057 this.$element.trigger(e) 1058 1059 if (this.isShown || e.isDefaultPrevented()) return 1060 1061 this.isShown = true 1062 1063 this.checkScrollbar() 1064 this.setScrollbar() 1065 this.$body.addClass('modal-open') 1066 1067 this.escape() 1068 this.resize() 1069 1070 this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) 1071 1072 this.$dialog.on('mousedown.dismiss.bs.modal', function () { 1073 that.$element.one('mouseup.dismiss.bs.modal', function (e) { 1074 if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true 1075 }) 1076 }) 1077 1078 this.backdrop(function () { 1079 var transition = $.support.transition && that.$element.hasClass('fade') 1080 1081 if (!that.$element.parent().length) { 1082 that.$element.appendTo(that.$body) // don't move modals dom position 1083 } 1084 1085 that.$element 1086 .show() 1087 .scrollTop(0) 1088 1089 that.adjustDialog() 1090 1091 if (transition) { 1092 that.$element[0].offsetWidth // force reflow 1093 } 1094 1095 that.$element.addClass('in') 1096 1097 that.enforceFocus() 1098 1099 var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) 1100 1101 transition ? 1102 that.$dialog // wait for modal to slide in 1103 .one('bsTransitionEnd', function () { 1104 that.$element.trigger('focus').trigger(e) 1105 }) 1106 .emulateTransitionEnd(Modal.TRANSITION_DURATION) : 1107 that.$element.trigger('focus').trigger(e) 1108 }) 1109 } 1110 1111 Modal.prototype.hide = function (e) { 1112 if (e) e.preventDefault() 1113 1114 e = $.Event('hide.bs.modal') 1115 1116 this.$element.trigger(e) 1117 1118 if (!this.isShown || e.isDefaultPrevented()) return 1119 1120 this.isShown = false 1121 1122 this.escape() 1123 this.resize() 1124 1125 $(document).off('focusin.bs.modal') 1126 1127 this.$element 1128 .removeClass('in') 1129 .off('click.dismiss.bs.modal') 1130 .off('mouseup.dismiss.bs.modal') 1131 1132 this.$dialog.off('mousedown.dismiss.bs.modal') 1133 1134 $.support.transition && this.$element.hasClass('fade') ? 1135 this.$element 1136 .one('bsTransitionEnd', $.proxy(this.hideModal, this)) 1137 .emulateTransitionEnd(Modal.TRANSITION_DURATION) : 1138 this.hideModal() 1139 } 1140 1141 Modal.prototype.enforceFocus = function () { 1142 $(document) 1143 .off('focusin.bs.modal') // guard against infinite focus loop 1144 .on('focusin.bs.modal', $.proxy(function (e) { 1145 if (document !== e.target && 1146 this.$element[0] !== e.target && 1147 !this.$element.has(e.target).length) { 1148 this.$element.trigger('focus') 1149 } 1150 }, this)) 1151 } 1152 1153 Modal.prototype.escape = function () { 1154 if (this.isShown && this.options.keyboard) { 1155 this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { 1156 e.which == 27 && this.hide() 1157 }, this)) 1158 } else if (!this.isShown) { 1159 this.$element.off('keydown.dismiss.bs.modal') 1160 } 1161 } 1162 1163 Modal.prototype.resize = function () { 1164 if (this.isShown) { 1165 $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) 1166 } else { 1167 $(window).off('resize.bs.modal') 1168 } 1169 } 1170 1171 Modal.prototype.hideModal = function () { 1172 var that = this 1173 this.$element.hide() 1174 this.backdrop(function () { 1175 that.$body.removeClass('modal-open') 1176 that.resetAdjustments() 1177 that.resetScrollbar() 1178 that.$element.trigger('hidden.bs.modal') 1179 }) 1180 } 1181 1182 Modal.prototype.removeBackdrop = function () { 1183 this.$backdrop && this.$backdrop.remove() 1184 this.$backdrop = null 1185 } 1186 1187 Modal.prototype.backdrop = function (callback) { 1188 var that = this 1189 var animate = this.$element.hasClass('fade') ? 'fade' : '' 1190 1191 if (this.isShown && this.options.backdrop) { 1192 var doAnimate = $.support.transition && animate 1193 1194 this.$backdrop = $(document.createElement('div')) 1195 .addClass('modal-backdrop ' + animate) 1196 .appendTo(this.$body) 1197 1198 this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { 1199 if (this.ignoreBackdropClick) { 1200 this.ignoreBackdropClick = false 1201 return 1202 } 1203 if (e.target !== e.currentTarget) return 1204 this.options.backdrop == 'static' 1205 ? this.$element[0].focus() 1206 : this.hide() 1207 }, this)) 1208 1209 if (doAnimate) this.$backdrop[0].offsetWidth // force reflow 1210 1211 this.$backdrop.addClass('in') 1212 1213 if (!callback) return 1214 1215 doAnimate ? 1216 this.$backdrop 1217 .one('bsTransitionEnd', callback) 1218 .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : 1219 callback() 1220 1221 } else if (!this.isShown && this.$backdrop) { 1222 this.$backdrop.removeClass('in') 1223 1224 var callbackRemove = function () { 1225 that.removeBackdrop() 1226 callback && callback() 1227 } 1228 $.support.transition && this.$element.hasClass('fade') ? 1229 this.$backdrop 1230 .one('bsTransitionEnd', callbackRemove) 1231 .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : 1232 callbackRemove() 1233 1234 } else if (callback) { 1235 callback() 1236 } 1237 } 1238 1239 // these following methods are used to handle overflowing modals 1240 1241 Modal.prototype.handleUpdate = function () { 1242 this.adjustDialog() 1243 } 1244 1245 Modal.prototype.adjustDialog = function () { 1246 var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight 1247 1248 this.$element.css({ 1249 paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', 1250 paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' 1251 }) 1252 } 1253 1254 Modal.prototype.resetAdjustments = function () { 1255 this.$element.css({ 1256 paddingLeft: '', 1257 paddingRight: '' 1258 }) 1259 } 1260 1261 Modal.prototype.checkScrollbar = function () { 1262 var fullWindowWidth = window.innerWidth 1263 if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 1264 var documentElementRect = document.documentElement.getBoundingClientRect() 1265 fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) 1266 } 1267 this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth 1268 this.scrollbarWidth = this.measureScrollbar() 1269 } 1270 1271 Modal.prototype.setScrollbar = function () { 1272 var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) 1273 this.originalBodyPad = document.body.style.paddingRight || '' 1274 if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) 1275 } 1276 1277 Modal.prototype.resetScrollbar = function () { 1278 this.$body.css('padding-right', this.originalBodyPad) 1279 } 1280 1281 Modal.prototype.measureScrollbar = function () { // thx walsh 1282 var scrollDiv = document.createElement('div') 1283 scrollDiv.className = 'modal-scrollbar-measure' 1284 this.$body.append(scrollDiv) 1285 var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth 1286 this.$body[0].removeChild(scrollDiv) 1287 return scrollbarWidth 1288 } 1289 1290 1291 // MODAL PLUGIN DEFINITION 1292 // ======================= 1293 1294 function Plugin(option, _relatedTarget) { 1295 return this.each(function () { 1296 var $this = $(this) 1297 var data = $this.data('bs.modal') 1298 var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) 1299 1300 if (!data) $this.data('bs.modal', (data = new Modal(this, options))) 1301 if (typeof option == 'string') data[option](_relatedTarget) 1302 else if (options.show) data.show(_relatedTarget) 1303 }) 1304 } 1305 1306 var old = $.fn.modal 1307 1308 $.fn.modal = Plugin 1309 $.fn.modal.Constructor = Modal 1310 1311 1312 // MODAL NO CONFLICT 1313 // ================= 1314 1315 $.fn.modal.noConflict = function () { 1316 $.fn.modal = old 1317 return this 1318 } 1319 1320 1321 // MODAL DATA-API 1322 // ============== 1323 //Chnage For NOS 1324 // $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { 1325 1326 // var $this = $(this) 1327 // var href = $this.attr('href') 1328 // var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 1329 // var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) 1330 1331 // if ($this.is('a')) e.preventDefault() 1332 1333 // $target.one('show.bs.modal', function (showEvent) { 1334 // if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown 1335 // $target.one('hidden.bs.modal', function () { 1336 // $this.is(':visible') && $this.trigger('focus') 1337 // }) 1338 // }) 1339 // Plugin.call($target, option, this) 1340 //}) 1341 1342 }(jQuery); 1343 1344 /* ======================================================================== 1345 * Bootstrap: tooltip.js v3.3.7 1346 * http://getbootstrap.com/javascript/#tooltip 1347 * Inspired by the original jQuery.tipsy by Jason Frame 1348 * ======================================================================== 1349 * Copyright 2011-2016 Twitter, Inc. 1350 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 1351 * ======================================================================== */ 1352 1353 1354 +function ($) { 1355 'use strict'; 1356 1357 // TOOLTIP PUBLIC CLASS DEFINITION 1358 // =============================== 1359 1360 var Tooltip = function (element, options) { 1361 this.type = null 1362 this.options = null 1363 this.enabled = null 1364 this.timeout = null 1365 this.hoverState = null 1366 this.$element = null 1367 this.inState = null 1368 1369 this.init('tooltip', element, options) 1370 } 1371 1372 Tooltip.VERSION = '3.3.7' 1373 1374 Tooltip.TRANSITION_DURATION = 150 1375 1376 Tooltip.DEFAULTS = { 1377 animation: true, 1378 placement: 'top', 1379 selector: false, 1380 template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>', 1381 trigger: 'hover focus', 1382 title: '', 1383 delay: 0, 1384 html: false, 1385 container: false, 1386 viewport: { 1387 selector: 'body', 1388 padding: 0 1389 } 1390 } 1391 1392 Tooltip.prototype.init = function (type, element, options) { 1393 this.enabled = true 1394 this.type = type 1395 this.$element = $(element) 1396 this.options = this.getOptions(options) 1397 this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) 1398 this.inState = { click: false, hover: false, focus: false } 1399 1400 if (this.$element[0] instanceof document.constructor && !this.options.selector) { 1401 throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') 1402 } 1403 1404 var triggers = this.options.trigger.split(' ') 1405 1406 for (var i = triggers.length; i--;) { 1407 var trigger = triggers[i] 1408 1409 if (trigger == 'click') { 1410 this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) 1411 } else if (trigger != 'manual') { 1412 var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' 1413 var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' 1414 1415 this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) 1416 this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) 1417 } 1418 } 1419 1420 this.options.selector ? 1421 (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : 1422 this.fixTitle() 1423 } 1424 1425 Tooltip.prototype.getDefaults = function () { 1426 return Tooltip.DEFAULTS 1427 } 1428 1429 Tooltip.prototype.getOptions = function (options) { 1430 options = $.extend({}, this.getDefaults(), this.$element.data(), options) 1431 1432 if (options.delay && typeof options.delay == 'number') { 1433 options.delay = { 1434 show: options.delay, 1435 hide: options.delay 1436 } 1437 } 1438 1439 return options 1440 } 1441 1442 Tooltip.prototype.getDelegateOptions = function () { 1443 var options = {} 1444 var defaults = this.getDefaults() 1445 1446 this._options && $.each(this._options, function (key, value) { 1447 if (defaults[key] != value) options[key] = value 1448 }) 1449 1450 return options 1451 } 1452 1453 Tooltip.prototype.enter = function (obj) { 1454 var self = obj instanceof this.constructor ? 1455 obj : $(obj.currentTarget).data('bs.' + this.type) 1456 1457 if (!self) { 1458 self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) 1459 $(obj.currentTarget).data('bs.' + this.type, self) 1460 } 1461 1462 if (obj instanceof $.Event) {
vendor: 9,963 bytes, lines 1463-1741
1463 self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true 1464 } 1465 1466 if (self.tip().hasClass('in') || self.hoverState == 'in') { 1467 self.hoverState = 'in' 1468 return 1469 } 1470 1471 clearTimeout(self.timeout) 1472 1473 self.hoverState = 'in' 1474 1475 if (!self.options.delay || !self.options.delay.show) return self.show() 1476 1477 self.timeout = setTimeout(function () { 1478 if (self.hoverState == 'in') self.show() 1479 }, self.options.delay.show) 1480 } 1481 1482 Tooltip.prototype.isInStateTrue = function () { 1483 for (var key in this.inState) { 1484 if (this.inState[key]) return true 1485 } 1486 1487 return false 1488 } 1489 1490 Tooltip.prototype.leave = function (obj) { 1491 var self = obj instanceof this.constructor ? 1492 obj : $(obj.currentTarget).data('bs.' + this.type) 1493 1494 if (!self) { 1495 self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) 1496 $(obj.currentTarget).data('bs.' + this.type, self) 1497 } 1498 1499 if (obj instanceof $.Event) { 1500 self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false 1501 } 1502 1503 if (self.isInStateTrue()) return 1504 1505 clearTimeout(self.timeout) 1506 1507 self.hoverState = 'out' 1508 1509 if (!self.options.delay || !self.options.delay.hide) return self.hide() 1510 1511 self.timeout = setTimeout(function () { 1512 if (self.hoverState == 'out') self.hide() 1513 }, self.options.delay.hide) 1514 } 1515 1516 Tooltip.prototype.show = function () { 1517 var e = $.Event('show.bs.' + this.type) 1518 1519 if (this.hasContent() && this.enabled) { 1520 this.$element.trigger(e) 1521 1522 var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) 1523 if (e.isDefaultPrevented() || !inDom) return 1524 var that = this 1525 1526 var $tip = this.tip() 1527 1528 var tipId = this.getUID(this.type) 1529 1530 this.setContent() 1531 $tip.attr('id', tipId) 1532 this.$element.attr('aria-describedby', tipId) 1533 1534 if (this.options.animation) $tip.addClass('fade') 1535 1536 var placement = typeof this.options.placement == 'function' ? 1537 this.options.placement.call(this, $tip[0], this.$element[0]) : 1538 this.options.placement 1539 1540 var autoToken = /\s?auto?\s?/i 1541 var autoPlace = autoToken.test(placement) 1542 if (autoPlace) placement = placement.replace(autoToken, '') || 'top' 1543 1544 $tip 1545 .detach() 1546 .css({ top: 0, left: 0, display: 'block' }) 1547 .addClass(placement) 1548 .data('bs.' + this.type, this) 1549 1550 this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) 1551 this.$element.trigger('inserted.bs.' + this.type) 1552 1553 var pos = this.getPosition() 1554 var actualWidth = $tip[0].offsetWidth 1555 var actualHeight = $tip[0].offsetHeight 1556 1557 if (autoPlace) { 1558 var orgPlacement = placement 1559 var viewportDim = this.getPosition(this.$viewport) 1560 1561 placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : 1562 placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : 1563 placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : 1564 placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : 1565 placement 1566 1567 $tip 1568 .removeClass(orgPlacement) 1569 .addClass(placement) 1570 } 1571 1572 var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) 1573 1574 this.applyPlacement(calculatedOffset, placement) 1575 1576 var complete = function () { 1577 var prevHoverState = that.hoverState 1578 that.$element.trigger('shown.bs.' + that.type) 1579 that.hoverState = null 1580 1581 if (prevHoverState == 'out') that.leave(that) 1582 } 1583 1584 $.support.transition && this.$tip.hasClass('fade') ? 1585 $tip 1586 .one('bsTransitionEnd', complete) 1587 .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : 1588 complete() 1589 } 1590 } 1591 1592 Tooltip.prototype.applyPlacement = function (offset, placement) { 1593 var $tip = this.tip() 1594 var width = $tip[0].offsetWidth 1595 var height = $tip[0].offsetHeight 1596 1597 // manually read margins because getBoundingClientRect includes difference 1598 var marginTop = parseInt($tip.css('margin-top'), 10) 1599 var marginLeft = parseInt($tip.css('margin-left'), 10) 1600 1601 // we must check for NaN for ie 8/9 1602 if (isNaN(marginTop)) marginTop = 0 1603 if (isNaN(marginLeft)) marginLeft = 0 1604 1605 offset.top += marginTop 1606 offset.left += marginLeft 1607 1608 // $.fn.offset doesn't round pixel values 1609 // so we use setOffset directly with our own function B-0 1610 $.offset.setOffset($tip[0], $.extend({ 1611 using: function (props) { 1612 $tip.css({ 1613 top: Math.round(props.top), 1614 left: Math.round(props.left) 1615 }) 1616 } 1617 }, offset), 0) 1618 1619 $tip.addClass('in') 1620 1621 // check to see if placing tip in new offset caused the tip to resize itself 1622 var actualWidth = $tip[0].offsetWidth 1623 var actualHeight = $tip[0].offsetHeight 1624 1625 if (placement == 'top' && actualHeight != height) { 1626 offset.top = offset.top + height - actualHeight 1627 } 1628 1629 var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) 1630 1631 if (delta.left) offset.left += delta.left 1632 else offset.top += delta.top 1633 1634 var isVertical = /top|bottom/.test(placement) 1635 var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight 1636 var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' 1637 1638 $tip.offset(offset) 1639 this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) 1640 } 1641 1642 Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { 1643 this.arrow() 1644 .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') 1645 .css(isVertical ? 'top' : 'left', '') 1646 } 1647 1648 Tooltip.prototype.setContent = function () { 1649 var $tip = this.tip() 1650 var title = this.getTitle() 1651 1652 $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) 1653 $tip.removeClass('fade in top bottom left right') 1654 } 1655 1656 Tooltip.prototype.hide = function (callback) { 1657 var that = this 1658 var $tip = $(this.$tip) 1659 var e = $.Event('hide.bs.' + this.type) 1660 1661 function complete() { 1662 if (that.hoverState != 'in') $tip.detach() 1663 if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary. 1664 that.$element 1665 .removeAttr('aria-describedby') 1666 .trigger('hidden.bs.' + that.type) 1667 } 1668 callback && callback() 1669 } 1670 1671 this.$element.trigger(e) 1672 1673 if (e.isDefaultPrevented()) return 1674 1675 $tip.removeClass('in') 1676 1677 $.support.transition && $tip.hasClass('fade') ? 1678 $tip 1679 .one('bsTransitionEnd', complete) 1680 .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : 1681 complete() 1682 1683 this.hoverState = null 1684 1685 return this 1686 } 1687 1688 Tooltip.prototype.fixTitle = function () { 1689 var $e = this.$element 1690 if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { 1691 $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') 1692 } 1693 } 1694 1695 Tooltip.prototype.hasContent = function () { 1696 return this.getTitle() 1697 } 1698 1699 Tooltip.prototype.getPosition = function ($element) { 1700 $element = $element || this.$element 1701 1702 var el = $element[0] 1703 var isBody = el.tagName == 'BODY' 1704 1705 var elRect = el.getBoundingClientRect() 1706 if (elRect.width == null) { 1707 // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 1708 elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) 1709 } 1710 var isSvg = window.SVGElement && el instanceof window.SVGElement 1711 // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3. 1712 // See https://github.com/twbs/bootstrap/issues/20280 1713 var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset()) 1714 var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } 1715 var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null 1716 1717 return $.extend({}, elRect, scroll, outerDims, elOffset) 1718 } 1719 1720 Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { 1721 return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : 1722 placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : 1723 placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : 1724 /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } 1725 1726 } 1727 1728 Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { 1729 var delta = { top: 0, left: 0 } 1730 if (!this.$viewport) return delta 1731 1732 var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 1733 var viewportDimensions = this.getPosition(this.$viewport) 1734 1735 if (/right|left/.test(placement)) { 1736 var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll 1737 var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight 1738 if (topEdgeOffset < viewportDimensions.top) { // top overflow 1739 delta.top = viewportDimensions.top - topEdgeOffset 1740 } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow 1741 delta.top = viewportDimensions.top + viewportDimensions.height - bottom
vendor: 8,058 bytes, lines 1741-2020
1741EdgeOffset 1742 } 1743 } else { 1744 var leftEdgeOffset = pos.left - viewportPadding 1745 var rightEdgeOffset = pos.left + viewportPadding + actualWidth 1746 if (leftEdgeOffset < viewportDimensions.left) { // left overflow 1747 delta.left = viewportDimensions.left - leftEdgeOffset 1748 } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow 1749 delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset 1750 } 1751 } 1752 1753 return delta 1754 } 1755 1756 Tooltip.prototype.getTitle = function () { 1757 var title 1758 var $e = this.$element 1759 var o = this.options 1760 1761 title = $e.attr('data-original-title') 1762 || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) 1763 1764 return title 1765 } 1766 1767 Tooltip.prototype.getUID = function (prefix) { 1768 do prefix += ~~(Math.random() * 1000000) 1769 while (document.getElementById(prefix)) 1770 return prefix 1771 } 1772 1773 Tooltip.prototype.tip = function () { 1774 if (!this.$tip) { 1775 this.$tip = $(this.options.template) 1776 if (this.$tip.length != 1) { 1777 throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') 1778 } 1779 } 1780 return this.$tip 1781 } 1782 1783 Tooltip.prototype.arrow = function () { 1784 return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) 1785 } 1786 1787 Tooltip.prototype.enable = function () { 1788 this.enabled = true 1789 } 1790 1791 Tooltip.prototype.disable = function () { 1792 this.enabled = false 1793 } 1794 1795 Tooltip.prototype.toggleEnabled = function () { 1796 this.enabled = !this.enabled 1797 } 1798 1799 Tooltip.prototype.toggle = function (e) { 1800 var self = this 1801 if (e) { 1802 self = $(e.currentTarget).data('bs.' + this.type) 1803 if (!self) { 1804 self = new this.constructor(e.currentTarget, this.getDelegateOptions()) 1805 $(e.currentTarget).data('bs.' + this.type, self) 1806 } 1807 } 1808 1809 if (e) { 1810 self.inState.click = !self.inState.click 1811 if (self.isInStateTrue()) self.enter(self) 1812 else self.leave(self) 1813 } else { 1814 self.tip().hasClass('in') ? self.leave(self) : self.enter(self) 1815 } 1816 } 1817 1818 Tooltip.prototype.destroy = function () { 1819 var that = this 1820 clearTimeout(this.timeout) 1821 this.hide(function () { 1822 that.$element.off('.' + that.type).removeData('bs.' + that.type) 1823 if (that.$tip) { 1824 that.$tip.detach() 1825 } 1826 that.$tip = null 1827 that.$arrow = null 1828 that.$viewport = null 1829 that.$element = null 1830 }) 1831 } 1832 1833 1834 // TOOLTIP PLUGIN DEFINITION 1835 // ========================= 1836 1837 function Plugin(option) { 1838 return this.each(function () { 1839 var $this = $(this) 1840 var data = $this.data('bs.tooltip') 1841 var options = typeof option == 'object' && option 1842 1843 if (!data && /destroy|hide/.test(option)) return 1844 if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) 1845 if (typeof option == 'string') data[option]() 1846 }) 1847 } 1848 1849 var old = $.fn.tooltip 1850 1851 $.fn.tooltip = Plugin 1852 $.fn.tooltip.Constructor = Tooltip 1853 1854 1855 // TOOLTIP NO CONFLICT 1856 // =================== 1857 1858 $.fn.tooltip.noConflict = function () { 1859 $.fn.tooltip = old 1860 return this 1861 } 1862 1863 }(jQuery); 1864 1865 /* ======================================================================== 1866 * Bootstrap: popover.js v3.3.7 1867 * http://getbootstrap.com/javascript/#popovers 1868 * ======================================================================== 1869 * Copyright 2011-2016 Twitter, Inc. 1870 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 1871 * ======================================================================== */ 1872 1873 1874 +function ($) { 1875 'use strict'; 1876 1877 // POPOVER PUBLIC CLASS DEFINITION 1878 // =============================== 1879 1880 var Popover = function (element, options) { 1881 this.init('popover', element, options) 1882 } 1883 1884 if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') 1885 1886 Popover.VERSION = '3.3.7' 1887 1888 Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { 1889 placement: 'right', 1890 trigger: 'click', 1891 content: '', 1892 template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>' 1893 }) 1894 1895 1896 // NOTE: POPOVER EXTENDS tooltip.js 1897 // ================================ 1898 1899 Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) 1900 1901 Popover.prototype.constructor = Popover 1902 1903 Popover.prototype.getDefaults = function () { 1904 return Popover.DEFAULTS 1905 } 1906 1907 Popover.prototype.setContent = function () { 1908 var $tip = this.tip() 1909 var title = this.getTitle() 1910 var content = this.getContent() 1911 1912 $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) 1913 $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events 1914 this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' 1915 ](content) 1916 1917 $tip.removeClass('fade top bottom left right in') 1918 1919 // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do 1920 // this manually by checking the contents. 1921 if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() 1922 } 1923 1924 Popover.prototype.hasContent = function () { 1925 return this.getTitle() || this.getContent() 1926 } 1927 1928 Popover.prototype.getContent = function () { 1929 var $e = this.$element 1930 var o = this.options 1931 1932 return $e.attr('data-content') 1933 || (typeof o.content == 'function' ? 1934 o.content.call($e[0]) : 1935 o.content) 1936 } 1937 1938 Popover.prototype.arrow = function () { 1939 return (this.$arrow = this.$arrow || this.tip().find('.arrow')) 1940 } 1941 1942 1943 // POPOVER PLUGIN DEFINITION 1944 // ========================= 1945 1946 function Plugin(option) { 1947 return this.each(function () { 1948 var $this = $(this) 1949 var data = $this.data('bs.popover') 1950 var options = typeof option == 'object' && option 1951 1952 if (!data && /destroy|hide/.test(option)) return 1953 if (!data) $this.data('bs.popover', (data = new Popover(this, options))) 1954 if (typeof option == 'string') data[option]() 1955 }) 1956 } 1957 1958 var old = $.fn.popover 1959 1960 $.fn.popover = Plugin 1961 $.fn.popover.Constructor = Popover 1962 1963 1964 // POPOVER NO CONFLICT 1965 // =================== 1966 1967 $.fn.popover.noConflict = function () { 1968 $.fn.popover = old 1969 return this 1970 } 1971 1972 }(jQuery); 1973 1974 /* ======================================================================== 1975 * Bootstrap: scrollspy.js v3.3.7 1976 * http://getbootstrap.com/javascript/#scrollspy 1977 * ======================================================================== 1978 * Copyright 2011-2016 Twitter, Inc. 1979 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 1980 * ======================================================================== */ 1981 1982 1983 +function ($) { 1984 'use strict'; 1985 1986 // SCROLLSPY CLASS DEFINITION 1987 // ========================== 1988 1989 function ScrollSpy(element, options) { 1990 this.$body = $(document.body) 1991 this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) 1992 this.options = $.extend({}, ScrollSpy.DEFAULTS, options) 1993 this.selector = (this.options.target || '') + ' .nav li > a' 1994 this.offsets = [] 1995 this.targets = [] 1996 this.activeTarget = null 1997 this.scrollHeight = 0 1998 1999 this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) 2000 this.refresh() 2001 this.process() 2002 } 2003 2004 ScrollSpy.VERSION = '3.3.7' 2005 2006 ScrollSpy.DEFAULTS = { 2007 offset: 10 2008 } 2009 2010 ScrollSpy.prototype.getScrollHeight = function () { 2011 return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) 2012 } 2013 2014 ScrollSpy.prototype.refresh = function () { 2015 var that = this 2016 var offsetMethod = 'offset' 2017 var offsetBase = 0 2018 2019 this.offsets = [] 2020 this.targets = []
vendor: 10,433 bytes, lines 2021-2388
2021 this.scrollHeight = this.getScrollHeight() 2022 2023 if (!$.isWindow(this.$scrollElement[0])) { 2024 offsetMethod = 'position' 2025 offsetBase = this.$scrollElement.scrollTop() 2026 } 2027 2028 this.$body 2029 .find(this.selector) 2030 .map(function () { 2031 var $el = $(this) 2032 var href = $el.data('target') || $el.attr('href') 2033 var $href = /^#./.test(href) && $(href) 2034 2035 return ($href 2036 && $href.length 2037 && $href.is(':visible') 2038 && [[$href[offsetMethod]().top + offsetBase, href]]) || null 2039 }) 2040 .sort(function (a, b) { return a[0] - b[0] }) 2041 .each(function () { 2042 that.offsets.push(this[0]) 2043 that.targets.push(this[1]) 2044 }) 2045 } 2046 2047 ScrollSpy.prototype.process = function () { 2048 var scrollTop = this.$scrollElement.scrollTop() + this.options.offset 2049 var scrollHeight = this.getScrollHeight() 2050 var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() 2051 var offsets = this.offsets 2052 var targets = this.targets 2053 var activeTarget = this.activeTarget 2054 var i 2055 2056 if (this.scrollHeight != scrollHeight) { 2057 this.refresh() 2058 } 2059 2060 if (scrollTop >= maxScroll) { 2061 return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) 2062 } 2063 2064 if (activeTarget && scrollTop < offsets[0]) { 2065 this.activeTarget = null 2066 return this.clear() 2067 } 2068 2069 for (i = offsets.length; i--;) { 2070 activeTarget != targets[i] 2071 && scrollTop >= offsets[i] 2072 && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) 2073 && this.activate(targets[i]) 2074 } 2075 } 2076 2077 ScrollSpy.prototype.activate = function (target) { 2078 this.activeTarget = target 2079 2080 this.clear() 2081 2082 var selector = this.selector + 2083 '[data-target="' + target + '"],' + 2084 this.selector + '[href="' + target + '"]' 2085 2086 var active = $(selector) 2087 .parents('li') 2088 .addClass('active') 2089 2090 if (active.parent('.dropdown-menu').length) { 2091 active = active 2092 .closest('li.dropdown') 2093 .addClass('active') 2094 } 2095 2096 active.trigger('activate.bs.scrollspy') 2097 } 2098 2099 ScrollSpy.prototype.clear = function () { 2100 $(this.selector) 2101 .parentsUntil(this.options.target, '.active') 2102 .removeClass('active') 2103 } 2104 2105 2106 // SCROLLSPY PLUGIN DEFINITION 2107 // =========================== 2108 2109 function Plugin(option) { 2110 return this.each(function () { 2111 var $this = $(this) 2112 var data = $this.data('bs.scrollspy') 2113 var options = typeof option == 'object' && option 2114 2115 if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) 2116 if (typeof option == 'string') data[option]() 2117 }) 2118 } 2119 2120 var old = $.fn.scrollspy 2121 2122 $.fn.scrollspy = Plugin 2123 $.fn.scrollspy.Constructor = ScrollSpy 2124 2125 2126 // SCROLLSPY NO CONFLICT 2127 // ===================== 2128 2129 $.fn.scrollspy.noConflict = function () { 2130 $.fn.scrollspy = old 2131 return this 2132 } 2133 2134 2135 // SCROLLSPY DATA-API 2136 // ================== 2137 2138 $(window).on('load.bs.scrollspy.data-api', function () { 2139 $('[data-spy="scroll"]').each(function () { 2140 var $spy = $(this) 2141 Plugin.call($spy, $spy.data()) 2142 }) 2143 }) 2144 2145 }(jQuery); 2146 2147 /* ======================================================================== 2148 * Bootstrap: tab.js v3.3.7 2149 * http://getbootstrap.com/javascript/#tabs 2150 * ======================================================================== 2151 * Copyright 2011-2016 Twitter, Inc. 2152 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 2153 * ======================================================================== */ 2154 2155 2156 +function ($) { 2157 'use strict'; 2158 2159 // TAB CLASS DEFINITION 2160 // ==================== 2161 2162 var Tab = function (element) { 2163 // jscs:disable requireDollarBeforejQueryAssignment 2164 this.element = $(element) 2165 // jscs:enable requireDollarBeforejQueryAssignment 2166 } 2167 2168 Tab.VERSION = '3.3.7' 2169 2170 Tab.TRANSITION_DURATION = 150 2171 2172 Tab.prototype.show = function () { 2173 var $this = this.element 2174 var $ul = $this.closest('ul:not(.dropdown-menu)') 2175 var selector = $this.data('target') 2176 2177 if (!selector) { 2178 selector = $this.attr('href') 2179 selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 2180 } 2181 2182 if ($this.parent('li').hasClass('active')) return 2183 2184 var $previous = $ul.find('.active:last a') 2185 var hideEvent = $.Event('hide.bs.tab', { 2186 relatedTarget: $this[0] 2187 }) 2188 var showEvent = $.Event('show.bs.tab', { 2189 relatedTarget: $previous[0] 2190 }) 2191 2192 $previous.trigger(hideEvent) 2193 $this.trigger(showEvent) 2194 2195 if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return 2196 2197 var $target = $(selector) 2198 2199 this.activate($this.closest('li'), $ul) 2200 this.activate($target, $target.parent(), function () { 2201 $previous.trigger({ 2202 type: 'hidden.bs.tab', 2203 relatedTarget: $this[0] 2204 }) 2205 $this.trigger({ 2206 type: 'shown.bs.tab', 2207 relatedTarget: $previous[0] 2208 }) 2209 }) 2210 } 2211 2212 Tab.prototype.activate = function (element, container, callback) { 2213 var $active = container.find('> .active') 2214 var transition = callback 2215 && $.support.transition 2216 && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) 2217 2218 function next() { 2219 $active 2220 .removeClass('active') 2221 .find('> .dropdown-menu > .active') 2222 .removeClass('active') 2223 .end() 2224 .find('[data-toggle="tab"]') 2225 .attr('aria-expanded', false) 2226 2227 element 2228 .addClass('active') 2229 .find('[data-toggle="tab"]') 2230 .attr('aria-expanded', true) 2231 2232 if (transition) { 2233 element[0].offsetWidth // reflow for transition 2234 element.addClass('in') 2235 } else { 2236 element.removeClass('fade') 2237 } 2238 2239 if (element.parent('.dropdown-menu').length) { 2240 element 2241 .closest('li.dropdown') 2242 .addClass('active') 2243 .end() 2244 .find('[data-toggle="tab"]') 2245 .attr('aria-expanded', true) 2246 } 2247 2248 callback && callback() 2249 } 2250 2251 $active.length && transition ? 2252 $active 2253 .one('bsTransitionEnd', next) 2254 .emulateTransitionEnd(Tab.TRANSITION_DURATION) : 2255 next() 2256 2257 $active.removeClass('in') 2258 } 2259 2260 2261 // TAB PLUGIN DEFINITION 2262 // ===================== 2263 2264 function Plugin(option) { 2265 return this.each(function () { 2266 var $this = $(this) 2267 var data = $this.data('bs.tab') 2268 2269 if (!data) $this.data('bs.tab', (data = new Tab(this))) 2270 if (typeof option == 'string') data[option]() 2271 }) 2272 } 2273 2274 var old = $.fn.tab 2275 2276 $.fn.tab = Plugin 2277 $.fn.tab.Constructor = Tab 2278 2279 2280 // TAB NO CONFLICT 2281 // =============== 2282 2283 $.fn.tab.noConflict = function () { 2284 $.fn.tab = old 2285 return this 2286 } 2287 2288 2289 // TAB DATA-API 2290 // ============ 2291 2292 var clickHandler = function (e) { 2293 e.preventDefault() 2294 Plugin.call($(this), 'show') 2295 } 2296 2297 $(document) 2298 .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) 2299 .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) 2300 2301 }(jQuery); 2302 2303 /* ======================================================================== 2304 * Bootstrap: affix.js v3.3.7 2305 * http://getbootstrap.com/javascript/#affix 2306 * ======================================================================== 2307 * Copyright 2011-2016 Twitter, Inc. 2308 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 2309 * ======================================================================== */ 2310 2311 2312 +function ($) { 2313 'use strict'; 2314 2315 // AFFIX CLASS DEFINITION 2316 // ====================== 2317 2318 var Affix = function (element, options) { 2319 this.options = $.extend({}, Affix.DEFAULTS, options) 2320 2321 this.$target = $(this.options.target) 2322 .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) 2323 .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) 2324 2325 this.$element = $(element) 2326 this.affixed = null 2327 this.unpin = null 2328 this.pinnedOffset = null 2329 2330 this.checkPosition() 2331 } 2332 2333 Affix.VERSION = '3.3.7' 2334 2335 Affix.RESET = 'affix affix-top affix-bottom' 2336 2337 Affix.DEFAULTS = { 2338 offset: 0, 2339 target: window 2340 } 2341 2342 Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { 2343 var scrollTop = this.$target.scrollTop() 2344 var position = this.$element.offset() 2345 var targetHeight = this.$target.height() 2346 2347 if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false 2348 2349 if (this.affixed == 'bottom') { 2350 if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' 2351 return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' 2352 } 2353 2354 var initializing = this.affixed == null 2355 var colliderTop = initializing ? scrollTop : position.top 2356 var colliderHeight = initializing ? targetHeight : height 2357 2358 if (offsetTop != null && scrollTop <= offsetTop) return 'top' 2359 if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' 2360 2361 return false 2362 } 2363 2364 Affix.prototype.getPinnedOffset = function () { 2365 if (this.pinnedOffset) return this.pinnedOffset 2366 this.$element.removeClass(Affix.RESET).addClass('affix') 2367 var scrollTop = this.$target.scrollTop() 2368 var position = this.$element.offset() 2369 return (this.pinnedOffset = position.top - scrollTop) 2370 } 2371 2372 Affix.prototype.checkPositionWithEventLoop = function () { 2373 setTimeout($.proxy(this.checkPosition, this), 1) 2374 } 2375 2376 Affix.prototype.checkPosition = function () { 2377 if (!this.$element.is(':visible')) return 2378 2379 var height = this.$element.height() 2380 var offset = this.options.offset 2381 var offsetTop = offset.top 2382 var offsetBottom = offset.bottom 2383 var scrollHeight = Math.max($(document).height(), $(document.body).height()) 2384 2385 if (typeof offset != 'object') offsetBottom = offsetTop = offset 2386 if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) 2387 if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) 2388
2389 var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) 2390 2391 if (this.affixed != affix) { 2392 if (this.unpin != null) this.$element.css('top', '') 2393 2394 var affixType = 'affix' + (affix ? '-' + affix : '') 2395 var e = $.Event(affixType + '.bs.affix') 2396 2397 this.$element.trigger(e) 2398 2399 if (e.isDefaultPrevented()) return 2400 2401 this.affixed = affix 2402 this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null 2403 2404 this.$element 2405 .removeClass(Affix.RESET) 2406 .addClass(affixType) 2407 .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') 2408 } 2409 2410 if (affix == 'bottom') { 2411 this.$element.offset({ 2412 top: scrollHeight - height - offsetBottom 2413 }) 2414 } 2415 } 2416 2417 2418 // AFFIX PLUGIN DEFINITION 2419 // ======================= 2420 2421 function Plugin(option) { 2422 return this.each(function () { 2423 var $this = $(this) 2424 var data = $this.data('bs.affix') 2425 var options = typeof option == 'object' && option 2426 2427 if (!data) $this.data('bs.affix', (data = new Affix(this, options))) 2428 if (typeof option == 'string') data[option]() 2429 }) 2430 } 2431 2432 var old = $.fn.affix 2433 2434 $.fn.affix = Plugin 2435 $.fn.affix.Constructor = Affix 2436 2437 2438 // AFFIX NO CONFLICT 2439 // ================= 2440 2441 $.fn.affix.noConflict = function () { 2442 $.fn.affix = old 2443 return this 2444 } 2445 2446 2447 // AFFIX DATA-API 2448 // ============== 2449 2450 $(window).on('load', function () { 2451 $('[data-spy="affix"]').each(function () { 2452 var $spy = $(this) 2453 var data = $spy.data() 2454 2455 data.offset = data.offset || {} 2456 2457 if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom 2458 if (data.offsetTop != null) data.offset.top = data.offsetTop 2459 2460 Plugin.call($spy, data) 2461 }) 2462 }) 2463 2464 }(jQuery); 2465 2466 2467/***/ }), 2468 2469/***/ 122: 2470/***/ (function(module, exports) { 2471 2472 module.exports = { 2473 matchHeight:function() { 2474 $(".highlights-listing .highlights-listing__listitem").matchHeight({ 2475 byrow:true, 2476 property: 'min-height' 2477 }); 2478 $(".leasing-listing .listing__item").matchHeight({ 2479 byrow:true, 2480 property: 'min-height' 2481 }); 2482 $( window ).on( "orientationchange resize", function( event ) { 2483 if($(window).innerWidth() < 992) { 2484 $(".highlights-listing .highlights-listing__listitem").matchHeight({ 2485 remove:true 2486 }); 2487 } else { 2488 setTimeout(function(){ 2489 jQuery.fn.matchHeight._update() 2490 },400) 2491 } 2492 }); 2493 }, 2494 scrollPos:function() { 2495 var pageUrl = window.location.href.indexOf("#intro-tab-nav"); 2496 if(pageUrl >= 0) { 2497 $("body,html").animate({ 2498 scrollTop:$(".community-intro").offset().top - $(".header-container").outerHeight() 2499 },0) 2500 } 2501 }, 2502 loadingScreen:function() { 2503 $(window).on("load", function() { 2504 console.log("test"); 2505 $('.loading-screen').fadeOut('fast'); 2506 }) 2507 }, 2508 init:function() { 2509 this.scrollPos(); 2510 this.matchHeight(); 2511 //this.loadingScreen(); 2512 // (function(){ 2513 // $(".latest-news__list .highlights-listing .highlights-listing__listitem_inner h2").each(function() { 2514 // console.log($(this).text().length) 2515 // }) 2516 // })(); 2517 // $("#loadMore").click(function() { 2518 // $(this).parents('.communities-details').addClass('communities-details__show'); 2519 // $(this).hide(100); 2520 // $this = $(this); 2521 // setTimeout(function(){ 2522 // $('.communities-details .communities-details__more').css('opacity', '1') 2523 // },100); 2524 // }); 2525 $(".latest-news .load-more a").on("click", function(e) { 2526 e.preventDefault(); 2527 var clonedAmentities = $(this).parent().siblings(".highlights-listing").find("div.highlights-listing__listitem:lt(3)").clone(); 2528 clonedAmentities.appendTo($(this).parent().siblings(".highlights-listing")); 2529 $(this).hide(); 2530 }); 2531 $(".media-gallery__list .load-more a").on("click", function(e) { 2532 e.preventDefault(); 2533 var clonedAmentities = $(this).parent().siblings(".communities-listing").find("li:lt(3)").clone(); 2534 clonedAmentities.appendTo($(this).parent().siblings(".communities-listing")); 2535 $(this).hide(); 2536 }); 2537 $(".nakheel-developments_current .load-more-residents a").on("click", function(e) { 2538 e.preventDefault(); 2539 var clonedAmentities = $(this).parent().siblings(".leasing-listing").find(".col-md-6:lt(4)").clone(); 2540 clonedAmentities.appendTo($(this).parent().siblings(".leasing-listing")); 2541 $(this).hide(); 2542 }) 2543 $(".nakheel-developments_upcoming .load-more-properties a").on("click", function(e) { 2544 e.preventDefault(); 2545 var clonedAmentities = $(this).parent().siblings(".leasing-listing").find(".col-md-12:lt(4)").clone(); 2546 clonedAmentities.appendTo($(this).parent().siblings(".leasing-listing")); 2547 $(this).hide(); 2548 }) 2549 $(".communities .load-more a").on("click", function(e) { 2550 e.preventDefault(); 2551 var clonedAmentities = $(this).parent().siblings(".communities-listing").find("li:lt(3)").clone(); 2552 clonedAmentities.appendTo($(this).parent().siblings(".communities-listing")); 2553 $(this).hide(); 2554 }) 2555 $('#search-submit').click(function(){ 2556 window.location.href='https://www.google.com'; 2557 }); 2558 } 2559 } 2560 2561 2562/***/ }), 2563 2564/***/ 123:
2565/***/ (function(module, exports) { 2566 2567 module.exports = { 2568 initializeSpotlight: function() { 2569 var isAr = $("body[dir='rtl']").length; 2570 $('.spotlight__carousel').slick({ 2571 infinite: true, 2572 slidesToShow: 1, 2573 slidesToScroll: 1, 2574 rtl:isAr ? true : false, 2575 appendArrows:$('.spotlight__arrows'), 2576 "responsive":[ 2577 { 2578 "breakpoint": 991, 2579 "settings":{ 2580 arrows:false, 2581 dots:true 2582 } 2583 }] 2584 }); 2585 } 2586 } 2587 2588 2589/***/ }), 2590 2591/***/ 124: 2592/***/ (function(module, exports) { 2593 2594 module.exports = { 2595 initializeCommunityGallery: function() { 2596 var isAr = $("body[dir='rtl']").length; 2597 $('.community-facilities__gallery__main_carousel').slick({ 2598 slidesToShow: 1, 2599 slidesToScroll: 1, 2600 arrows: false, 2601 autoplay: true, 2602 autoplaySpeed: 4000, 2603 fade: true, 2604 rtl:isAr ? true : false, 2605 asNavFor: '.community-facilities__gallery__thumbnail_carousel' 2606 }); 2607 $('.community-facilities__gallery__thumbnail_carousel').slick({ 2608 slidesToShow: $('.community-facilities__gallery__thumbnail_carousel > div').length, 2609 slidesToScroll: 1, 2610 asNavFor: '.community-facilities__gallery__main_carousel', 2611 dots: false, 2612 focusOnSelect: true, 2613 vertical:true, 2614 arrow:false, 2615 rtl:isAr ? true : false, 2616 responsive: [ 2617 { 2618 breakpoint: 1199, 2619 settings: { 2620 vertical:false 2621 } 2622 } 2623 ] 2624 }); 2625 }, 2626 initailizeCarousel: function() { 2627 $(".carousel").slick(); 2628 }, 2629 initailizeContentCarousel: function() { 2630 var isAr = $("body[dir='rtl']").length; 2631 $(".content-carousel").slick(); 2632 // $(".content-carousel").slick({ 2633 // rtl:isAr ? true : false, 2634 // slidesToScroll:1, 2635 // slidesToShow:1 2636 // }) 2637 function setArrowPos() { 2638 function arrowsPos(el) { 2639 //console.log(el.find(".slick-arrow").length > 0); 2640 if(el.find(".slick-arrow").length > 0) { 2641 2642 el.find(".slick-arrow").each(function(i,el){ 2643 var arrows = $(el); 2644 var sliderImg = arrows.closest(".slick-slider").find(".slick-active img"); 2645 if($(window).innerWidth() < 992) { 2646 arrows.css("top",(sliderImg.height()/2)); 2647 } else { 2648 arrows.css("top","50%"); 2649 } 2650 }); 2651 } 2652 } 2653 setTimeout(function(){ 2654 arrowsPos($(".content-carousel")); 2655 arrowsPos($(".carousel")); 2656 },100); 2657 } 2658 setArrowPos(); 2659 $(window).on("resize orientationchange", function(){ 2660 setArrowPos(); 2661 }); 2662 }, 2663 lightbox:function() { 2664 $('.gallery-carousel_desktop, .gallery-carousel_mobile').magnificPopup({ 2665 delegate: 'a', 2666 type: 'image', 2667 tLoading: 'Loading image #%curr%...', 2668 mainClass: 'mfp-img-mobile', 2669 gallery: { 2670 enabled: true, 2671 navigateByImgClick: true, 2672 preload: [0,1] // Will preload 0 - before current, and 1 after the current image 2673 }, 2674 image: { 2675 tError: '<a href="%url%">The image #%curr%</a> could not be loaded.' 2676 } 2677 }); 2678 }, 2679 init:function() { 2680 this.initializeCommunityGallery(); 2681 this.initailizeCarousel(); 2682 this.initailizeContentCarousel(); 2683 this.lightbox(); 2684 } 2685 } 2686 2687 2688/***/ }), 2689 2690/***/ 125: 2691/***/ (function(module, exports) { 2692 2693 module.exports = { 2694 initializeHeader: function () { 2695 2696 if($('#search-btn').length > 0) { 2697 $('#search-btn').click(function() { 2698 if($(".header__search_overlay").is(":hidden")) { 2699 $(".header__search_overlay, .header__search_box").addClass("open"); 2700 $("#search-input").focus(); 2701 $("html, body").addClass("overflow-hidden"); 2702 } else { 2703 $(".header__search_overlay, .header__search_box").removeClass("open"); 2704 $("#search-input").blur(); 2705 $("html, body").removeClass("overflow-hidden"); 2706 } 2707 }); 2708 } 2709 $(".header__search_close a").click(function(e){ 2710 e.preventDefault(); 2711 $(".header__search_overlay, .header__search_box").removeClass("open"); 2712 $("html, body").removeClass("overflow-hidden"); 2713 }); 2714 // jQuery('body').on('click', '.navbar-toggle', function(evnt){ 2715 // evnt.preventDefault() 2716 // jQuery('body').toggleClass('nav-open') 2717 //}) 2718 2719 2720 $('.navbar-close').click(function(){ 2721 $('#mainNav').collapse('hide'); 2722 $("html, body").removeClass("overflow-hidden"); 2723 }) 2724 $('.navbar-toggle').click(function(){ 2725 if($('#mainNav').hasClass('in')){ 2726 $("html, body").removeClass('overflow-hidden'); 2727 } 2728 else { 2729 $("html, body").addClass('overflow-hidden'); 2730 } 2731 }); 2732 // Hide Header on on scroll down 2733 var didScroll; 2734 var lastScrollTop = 0; 2735 var delta = 5; 2736 var navbarHeight = $('header').outerHeight(); 2737 2738 $(window).scroll(function(event){ 2739 didScroll = true; 2740 }); 2741 2742 setInterval(function() { 2743 if (didScroll) { 2744 hasScrolled(); 2745 didScroll = false;
2746 } 2747 }, 250); 2748 2749 function hasScrolled() { 2750 var st = $(this).scrollTop(); 2751 if(Math.abs(lastScrollTop - st) <= delta) 2752 return; 2753 if (st > lastScrollTop && st > navbarHeight){ 2754 if($(window).innerWidth() > 767) { 2755 $('header').removeClass('nav-down').addClass('nav-up'); 2756 } 2757 if($(window).innerWidth() < 767) { 2758 $('header').removeClass('nav-up').addClass('nav-down'); 2759 } 2760 } else { 2761 if(st + $(window).height() < $(document).height()) { 2762 $('header').removeClass('nav-up').addClass('nav-down'); 2763 } 2764 if($(window).innerWidth() < 767 && st > navbarHeight) { 2765 $('header').removeClass('nav-down').addClass('nav-up'); 2766 } 2767 } 2768 lastScrollTop = st; 2769 } 2770 2771 } 2772 } 2773 2774 2775 2776/***/ }), 2777 2778/***/ 126: 2779/***/ (function(module, exports) { 2780 2781 module.exports = { 2782 initializePropertySearchSelect: function() { 2783 var isAr = $("body[dir='rtl']").length; 2784 var options = { 2785 dir:isAr ? "rtl" : "ltr", 2786 minimumResultsForSearch: Infinity, 2787 width: '100%' 2788 } 2789 $("#property-want-to").select2( 2790 $.extend({},options,{placeholder: $("#property-want-to").data('placeholder'),dropdownParent:$("#property-want-to").next(".select-dropdown__menu")}) 2791 ); 2792 $("#property-status").select2( 2793 $.extend({},options,{placeholder: $("#property-status").data('placeholder'),dropdownParent:$("#property-status").next(".select-dropdown__menu")}) 2794 ); 2795 $("#property-type").select2( 2796 $.extend({},options,{placeholder: $("#property-type").data('placeholder'),dropdownParent:$("#property-type").next(".select-dropdown__menu")}) 2797 ); 2798 $("#property-bedrooms").select2( 2799 $.extend({},options,{placeholder: $("#property-bedrooms").data('placeholder'),dropdownParent:$("#property-bedrooms").next(".select-dropdown__menu")}) 2800 ); 2801 $("#property-locations").select2( 2802 $.extend({},options,{placeholder: $("#property-locations").data('placeholder'),dropdownParent:$("#property-locations").next(".select-dropdown__menu")}) 2803 ); 2804 } 2805 } 2806 2807 2808 2809/***/ }), 2810 2811/***/ 127: 2812/***/ (function(module, exports) { 2813 2814 module.exports = { 2815 initializeNewsSearchSelect: function() { 2816 var isAr = $("body[dir='rtl']").length; 2817 var options = { 2818 dir:isAr ? "rtl" : "ltr", 2819 minimumResultsForSearch: Infinity, 2820 width: '100%', 2821 placeholder: $("#date-released").data('placeholder'), 2822 dropdownParent:$("#date-released").next(".select-dropdown__menu") 2823 } 2824 $("#date-released").select2(options); 2825 $("#date-released").on("change",function(e){ 2826 $(".load-more").hide(); 2827 e.preventDefault(); 2828 2829 var getTarget = $(this).val(); 2830 if(getTarget == "all"){ 2831 $(".highlights-listing__listitem").fadeIn(300); 2832 } 2833 else{ 2834 $(".highlights-listing__listitem[data-type="+getTarget+"]").siblings().fadeOut(300); 2835 $(".highlights-listing__listitem[data-type="+getTarget+"]").fadeIn(400); 2836 } 2837 }); 2838 } 2839 } 2840 2841 2842/***/ }), 2843 2844/***/ 128: 2845/***/ (function(module, exports) { 2846 2847 module.exports = { 2848 initializeBusinessSegSelect: function() { 2849 var isAr = $("body[dir='rtl']").length; 2850 var options = { 2851 dir:isAr ? "rtl" : "ltr", 2852 minimumResultsForSearch: Infinity, 2853 width: '100%', 2854 placeholder: $("#business-segments").data('placeholder'), 2855 dropdownParent:$("#business-segments").next(".select-dropdown__menu") 2856 } 2857 $("#business-segments").select2(options); 2858 $("#business-segments").on('select2:open', function (e) { 2859 $(this).closest(".select-dropdown").addClass("open"); 2860 }); 2861 $("#business-segments").on('select2:close', function (e) { 2862 $(this).closest(".select-dropdown").removeClass("open"); 2863 }); 2864 $("#business-segments").on("change",function(e){ 2865 $(".load-more").hide(); 2866 e.preventDefault(); 2867 2868 var getTarget = $(this).val(); 2869 if(getTarget == "all"){ 2870 $(".communities-listing li").fadeIn(300); 2871 } 2872 else{ 2873 $(".communities-listing li[data-type="+getTarget+"]").siblings().fadeOut(300); 2874 $(".communities-listing li[data-type="+getTarget+"]").fadeIn(400); 2875 } 2876 2877 }); 2878 } 2879 2880 } 2881 2882 2883/***/ }), 2884 2885/***/ 129:
2886/***/ (function(module, exports) { 2887 2888 2889 2890 module.exports = { 2891 loadGallery : function(){ 2892 $('.popup-gallery').magnificPopup({ 2893 delegate: 'a', 2894 type: 'image', 2895 tLoading: 'Loading image #%curr%...', 2896 mainClass: 'mfp-img-mobile', 2897 gallery: { 2898 enabled: true, 2899 navigateByImgClick: true, 2900 preload: [0,1] // Will preload 0 - before current, and 1 after the current image 2901 } 2902 }); 2903 } 2904 } 2905 2906 2907/***/ }), 2908 2909/***/ 130: 2910/***/ (function(module, exports) { 2911 2912 module.exports = { 2913 createAccordion: function() { 2914 if($(window).innerWidth() < 992) { 2915 if($(".accordion-table").hasClass("accordion-mobile")) { 2916 return; 2917 } 2918 $(".accordion-table").each(function(index,element) { 2919 $(element).addClass("accordion-mobile"); 2920 $(".accordion-mobile > tbody > tr").each(function(i,el) { 2921 var innerTd = $(el).find(".parent > tbody > tr > td"); 2922 if(!$(el).hasClass("sub-row")) { 2923 $(el).find(".parent").wrap('<div class="accordion-wrapper"></div>'); 2924 } 2925 innerTd.each(function(idx,elem) { 2926 $(elem).find("tr").prepend("<td class='headers' rowspan="+$(el).find(".xs-title").attr("rowspan")+">"+$(".accordion-mobile > thead .inner_table th").eq(idx).text()+"</td>") 2927 if($(el).next("tr").hasClass("sub-row")) { 2928 var nextTr = $(el).next(".sub-row"); 2929 var innerChildTd = nextTr.find(".cols-2 > td").eq(idx); 2930 var innerChildTr = innerChildTd.find("tr"); 2931 var newInnerChildTr = innerChildTr.clone().addClass("cloned-tr"); 2932 newInnerChildTr.insertAfter($(elem).find("tr")); 2933 } 2934 }) 2935 }) 2936 }) 2937 } 2938 if($(window).innerWidth() > 992) { 2939 $(".accordion-table").each(function(index,element) { 2940 $(element).removeClass("accordion-mobile"); 2941 $(".accordion-table > tbody > tr").each(function(i,el) { 2942 var innerTd = $(el).find(".parent > tbody > tr > td"); 2943 if($(".accordion-wrapper").length) { 2944 $(".accordion-wrapper > .inner_table").unwrap(); 2945 } 2946 innerTd.each(function(idx,elem) { 2947 if($(elem).find("tr td.headers").length) { 2948 $(elem).find("tr td.headers").remove() 2949 } 2950 if($(elem).find("tr.cloned-tr").length) { 2951 $(elem).find("tr.cloned-tr").remove() 2952 } 2953 $(el).next("tr").not(".even, .odd").show(); 2954 }) 2955 }) 2956 }) 2957 } 2958 }, 2959 tableAccordion:function() { 2960 $(document).on("click", ".accordion-mobile > tbody > tr > .xs-title", function() { 2961 if($(this).next(".xs-accordion").find(".accordion-wrapper").is(":visible")) { 2962 $(this).next(".xs-accordion").find(".accordion-wrapper").slideUp('normal'); 2963 return; 2964 } 2965 $(".accordion-mobile > tbody > tr").find(".accordion-wrapper").slideUp('normal'); 2966 $(this).next(".xs-accordion").find(".accordion-wrapper").slideDown('normal'); 2967 }) 2968 }, 2969 init:function() { 2970 this.tableAccordion(); 2971 this.createAccordion(); 2972 $(window).resize(this.createAccordion) 2973 } 2974 } 2975 2976 // function createAccordion() { 2977 // if($(window).innerWidth() < 992) { 2978 // if($(".accordion-table").hasClass("accordion-mobile")) { 2979 // return; 2980 // } 2981 // $(".accordion-table").each(function(index,element) { 2982 // $(element).addClass("accordion-mobile"); 2983 // $(".accordion-mobile > tbody > tr").each(function(i,el) { 2984 // var innerTd = $(el).find(".parent > tbody > tr > td"); 2985 // if(!$(el).hasClass("sub-row")) { 2986 // $(el).find(".parent").wrap('<div class="accordion-wrapper"></div>'); 2987 // } 2988 // innerTd.each(function(idx,elem) { 2989 // $(elem).find("tr").prepend("<td class='headers' rowspan="+$(el).find(".xs-title").attr("rowspan")+">"+$(".accordion-mobile > thead .inner_table th").eq(idx).text()+"</td>") 2990 // if($(el).next("tr").hasClass("sub-row")) { 2991 // var nextTr = $(el).next(".sub-row"); 2992 // var innerChildTd = nextTr.find(".cols-2 > td").eq(idx); 2993 // var innerChildTr = innerChildTd.find("tr"); 2994 // var newInnerChildTr = innerChildTr.clone().addClass("cloned-tr"); 2995 // newInnerChildTr.insertAfter($(elem).find("tr")); 2996 // } 2997 // }) 2998 // }) 2999 // }) 3000 // } 3001 // if($(window).innerWidth() > 992) { 3002 // $(".accordion-table").each(function(index,element) { 3003 // $(element).removeClass("accordion-mobile"); 3004 // $(".accordion-table > tbody > tr").each(function(i,el) { 3005 // var innerTd = $(el).find(".parent > tbody > tr > td"); 3006 // if($(".accordion-wrapper").length) { 3007 // $(".accordion-wrapper > .inner_table").unwrap(); 3008 // } 3009 // innerTd.each(function(idx,elem) { 3010 // if($(elem).find("tr td.headers").length) { 3011 // $(elem).find("tr td.headers").remove() 3012 // } 3013 // if($(elem).find("tr.cloned-tr").length) { 3014 // $(elem).find("tr.cloned-tr").remove() 3015 // } 3016 // $(el).next("tr").not(".even, .odd").show(); 3017 // }) 3018 // }) 3019 // }) 3020 // } 3021 // } 3022 // createAccordion(); 3023 // $(window).resize(createAccordion); 3024 3025 // function tableAccordion() { 3026 // $(document).on("click", ".accordion-mobile > tbody > tr > .xs-title", function() { 3027 // if($(this).next(".xs-accordion").find(".accordion-wrapper").is(":visible")) { 3028 // $(this).next(".xs-accordion").find(".accordion-wrapper").slideUp('normal'); 3029 // return; 3030 // } 3031 // $(".accordion-mobile > tbody > tr").find(".accordion-wrapper").slideUp('normal'); 3032 // $(this).next(".xs-accordion").find(".accordion-wrapper").slideDown('normal'); 3033 // }) 3034 // } 3035 // tableAccordion(); 3036 3037 3038 3039 3040 3041/***/ }), 3042 3043/***/ 131:
3044/***/ (function(module, exports) { 3045 3046 module.exports = { 3047 loadMore: function() { 3048 $(".load-more-amenities").on("click", function() { 3049 var clonedAmentities = $(this).closest(".community-facilities__amenities").find("div:lt(4)").clone(); 3050 clonedAmentities.insertBefore($(this)); 3051 $(this).hide(); 3052 }) 3053 } 3054 } 3055 3056 3057/***/ }), 3058 3059/***/ 132: 3060/***/ (function(module, exports) { 3061 3062 //contact-form 3063 module.exports = { 3064 validateForm: function () { 3065 $('#contactForm').on('submit', function (e) { 3066 e.preventDefault(); 3067 var emailReg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; 3068 var formValid = false; 3069 $('#contactForm input').each(function (index, elem) { 3070 if ($(this).val() == '') { 3071 $(this).addClass('error'); 3072 formValid = false; 3073 } else { 3074 $(this).removeClass('error'); 3075 formValid = true; 3076 } 3077 }); 3078 if (emailReg.test($('#email').val()) == false){ 3079 $('#email').addClass('error'); 3080 formValid = false; 3081 }else{ 3082 $('#email').removeClass('error'); 3083 formValid = true; 3084 } 3085 if($('#contactForm textarea').val() === ''){ 3086 $('#contactForm textarea').addClass('error'); 3087 formValid = false; 3088 }else{ 3089 $('#contactForm textarea').removeClass('error'); 3090 formValid = true; 3091 } 3092 if ($('#phone').intlTelInput("isValidNumber")){ 3093 $('#phone').removeClass('error'); 3094 formValid = true; 3095 }else{ 3096 $('#phone').addClass('error'); 3097 formValid = false; 3098 } 3099 if(formValid){ 3100 $('.contact-form__success').addClass('show'); 3101 $('.contact-form__success .btn').focus(); 3102 $('.contact-form form')[0].reset(); 3103 } 3104 }); 3105 $('.contact-form__success a.btn').on('click',function(e){ 3106 $('.contact-form__success').removeClass('show'); 3107 }); 3108 }, 3109 intlTelInput: function () { 3110 $('#phone').intlTelInput({ 3111 initialCountry: "ae", 3112 utilsScript: "./scripts/utils.js" 3113 }); 3114 }, 3115 setEnquiry: function() { 3116 var enquiryType = localStorage.getItem('enquiry-type'); 3117 if(enquiryType) { 3118 $(".checkbox-wrapper input[value='"+enquiryType+"']").prop("checked",true); 3119 } 3120 }, 3121 init: function() { 3122 this.validateForm(); 3123 this.intlTelInput(); 3124 this.setEnquiry(); 3125 } 3126 } 3127 3128 3129/***/ }), 3130 3131/***/ 133: 3132/***/ (function(module, exports) { 3133 3134 module.exports = { 3135 enquirenow: function() { 3136 $("#enquire-now").on("click", function(e) { 3137 localStorage.setItem("enquiry-type",$(this).data("enquire")); 3138 }) 3139 }, 3140 init: function() { 3141 this.enquirenow(); 3142 } 3143 } 3144 3145 3146/***/ }), 3147 3148/***/ 134: 3149/***/ (function(module, exports) { 3150 3151 3152 module.exports = { 3153 loadFilter: function() { 3154 $(".community-filter__buttons a").off().on("click",function(e){ 3155 $(".load-more").hide(); 3156 e.preventDefault(); 3157 var getTarget = $(this).data("rel"); 3158 if(getTarget == "all"){ 3159 $(".communities-listing li").fadeIn(300); 3160 } 3161 else{ 3162 $(".communities-listing li[data-type="+getTarget+"]").siblings().fadeOut(300); 3163 $(".communities-listing li[data-type="+getTarget+"]").fadeIn(400); 3164 } 3165 }); 3166 3167 $('.community-filter__buttons').on('click', 'a', function() { 3168 $('.community-filter__buttons a.active').removeClass('active'); 3169 $(this).addClass('active'); 3170 }); 3171 } 3172 } 3173 3174 3175/***/ }), 3176 3177/***/ 135: 3178/***/ (function(module, exports) { 3179 3180 module.exports = { 3181 3182 validateForm: function () { 3183 $('#delegationForm').on('submit', function (e) { 3184 e.preventDefault(); 3185 var emailReg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; 3186 var formValid = false; 3187 $('#delegationForm input[type="text"]').each(function (index, elem) { 3188 if ($(this).val() == '') { 3189 $(this).addClass('error'); 3190 formValid = false; 3191 } else { 3192 $(this).removeClass('error'); 3193 formValid = true; 3194 } 3195 }); 3196 if (emailReg.test($('#delemail').val()) == false){ 3197 $('#delemail').addClass('error'); 3198 formValid = false;
3199 }else{ 3200 $('#delemail').removeClass('error'); 3201 formValid = true; 3202 } 3203 if($('#delspecialarr').val() === ''){ 3204 $('#delspecialarr').addClass('error'); 3205 formValid = false; 3206 }else{ 3207 $('#delspecialarr').removeClass('error'); 3208 formValid = true; 3209 } 3210 if($('#noOfPersons').val() === '' || isNaN($('#noOfPersons').val()) || parseInt($('#noOfPersons').val()) < 0 || parseInt($('#noOfPersons').val()) > 1000) { 3211 $('#noOfPersons').addClass('error'); 3212 formValid = false; 3213 }else{ 3214 $('#noOfPersons').removeClass('error'); 3215 formValid = true; 3216 } 3217 if ($('#delphone').intlTelInput("isValidNumber")){ 3218 $('#delphone').removeClass('error'); 3219 formValid = true; 3220 }else{ 3221 $('#delphone').addClass('error'); 3222 formValid = false; 3223 } 3224 if($('#noOfDelegations').val() === '') { 3225 $('#noOfDelegations').parent(".l-input").addClass('error'); 3226 formValid = false; 3227 }else{ 3228 $('#noOfDelegations').parent(".l-input").removeClass('error'); 3229 formValid = true; 3230 } 3231 }); 3232 }, 3233 dateTimePicker: function () { 3234 $('#dateTime').datetimepicker({ 3235 format:'Do MMMM YYYY | h:mm a', 3236 minDate : 'now' 3237 }); 3238 var isAr = $("body[dir='rtl']").length; 3239 var options = { 3240 dir:isAr ? "rtl" : "ltr", 3241 minimumResultsForSearch: Infinity, 3242 width: '100%' 3243 } 3244 $("#noOfDelegations").select2( 3245 $.extend({},options,{placeholder: $("#noOfDelegations").data('placeholder'),dropdownParent:$("#noOfDelegations").next(".select-dropdown__menu")}) 3246 ); 3247 }, 3248 scrollTo:function() { 3249 $("#book-tour").click(function(e){ 3250 e.preventDefault(); 3251 $("html,body").animate({ 3252 scrollTop:$(".delegation-form").offset().top - $("header").outerHeight() 3253 }) 3254 }) 3255 }, 3256 intlTelInput: function () { 3257 $('#delphone').intlTelInput({ 3258 initialCountry: "ae", 3259 utilsScript: "./scripts/utils.js" 3260 }); 3261 } 3262 } 3263 3264 3265/***/ }), 3266 3267/***/ 136: 3268/***/ (function(module, exports) { 3269 3270 module.exports = function(){ 3271 //$(".nakheel-developments .nakheel-developments__logocarousel .slick-slide img").gray(); 3272 $(".nakheel-developments_current .load-more a").on("click", function(e) { 3273 e.preventDefault(); 3274 var clonedAmentities = $(this).parent().siblings(".leasing-listing").find("div.col-md-8:lt(3)").clone(); 3275 clonedAmentities.appendTo($(this).parent().siblings(".leasing-listing")); 3276 $(this).hide(); 3277 }); 3278 $(".nakheel-developments_upcoming .load-more a").on("click", function(e) { 3279 e.preventDefault(); 3280 var clonedAmentities = $(this).parent().siblings(".leasing-listing").find("div.col-md-8:lt(3)").clone(); 3281 clonedAmentities.appendTo($(this).parent().siblings(".leasing-listing")); 3282 $(this).hide(); 3283 }); 3284 } 3285 3286 3287/***/ }), 3288 3289/***/ 137: 3290/***/ (function(module, exports) { 3291 3292 module.exports = function() { 3293 function isValidEmailAddress(emailAddress) { 3294 var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i); 3295 return pattern.test(emailAddress); 3296 } 3297 $(".btn-subscribe").on("click", function(e) { 3298 e.preventDefault(); 3299 if(!isValidEmailAddress($(this).prev("[name='subscription-email']").val())) { 3300 $(this).prev("[name='subscription-email']").addClass("error") 3301 } else { 3302 $(".footer__newsletter_subs").addClass("show"); 3303 $("html, body").addClass("overflow-hidden"); 3304 } 3305 }) 3306 $("[name='subscription-email']").on("keyup",function(e){ 3307 if(isValidEmailAddress($(this).val())) { 3308 $(this).removeClass('error'); 3309 } 3310 }); 3311 $(".footer").on("click", ".footer__newsletter_subs__content .btn", function(e) { 3312 e.preventDefault(); 3313 $(".footer__newsletter_subs").removeClass("show"); 3314 $("html, body").removeClass("overflow-hidden"); 3315 $("[name='subscription-email']").val(''); 3316 }) 3317 } 3318 3319 3320/***/ }) 3321 3322/******/ });
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.