assets/javascripts/bootstrap.js
author ymh <ymh.work@gmail.com>
Thu, 15 Jun 2017 12:17:09 +0200
changeset 114 af15590802a4
permissions -rw-r--r--
add a lot of files
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
114
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
/*!
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
 * Bootstrap v3.3.5 (http://getbootstrap.com)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
 * Copyright 2011-2015 Twitter, Inc.
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
 * Licensed under the MIT license
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
 */
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
if (typeof jQuery === 'undefined') {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
  throw new Error('Bootstrap\'s JavaScript requires jQuery')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
}
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
+function ($) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
  'use strict';
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
  var version = $.fn.jquery.split(' ')[0].split('.')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
    throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
}(jQuery);
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
/* ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
 * Bootstrap: transition.js v3.3.5
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
 * http://getbootstrap.com/javascript/#transitions
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
 * ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
 * Copyright 2011-2015 Twitter, Inc.
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
 * ======================================================================== */
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
+function ($) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
  'use strict';
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
  // ============================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
  function transitionEnd() {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
    var el = document.createElement('bootstrap')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
    var transEndEventNames = {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
      WebkitTransition : 'webkitTransitionEnd',
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
      MozTransition    : 'transitionend',
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
      OTransition      : 'oTransitionEnd otransitionend',
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
      transition       : 'transitionend'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
    for (var name in transEndEventNames) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
      if (el.style[name] !== undefined) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
        return { end: transEndEventNames[name] }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
      }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
    return false // explicit for ie8 (  ._.)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
  // http://blog.alexmaccaw.com/css-transitions
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
  $.fn.emulateTransitionEnd = function (duration) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
    var called = false
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
    var $el = this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
    $(this).one('bsTransitionEnd', function () { called = true })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
    setTimeout(callback, duration)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
    return this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
  $(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
    $.support.transition = transitionEnd()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
    if (!$.support.transition) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
    $.event.special.bsTransitionEnd = {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
      bindType: $.support.transition.end,
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
      delegateType: $.support.transition.end,
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
      handle: function (e) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
      }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
  })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
}(jQuery);
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
/* ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
 * Bootstrap: alert.js v3.3.5
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
 * http://getbootstrap.com/javascript/#alerts
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
 * ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
 * Copyright 2011-2015 Twitter, Inc.
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
 * ======================================================================== */
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
+function ($) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
  'use strict';
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
  // ALERT CLASS DEFINITION
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
  // ======================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
  var dismiss = '[data-dismiss="alert"]'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
  var Alert   = function (el) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
    $(el).on('click', dismiss, this.close)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
  Alert.VERSION = '3.3.5'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
  Alert.TRANSITION_DURATION = 150
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
  Alert.prototype.close = function (e) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
    var $this    = $(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
    var selector = $this.attr('data-target')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
    if (!selector) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
      selector = $this.attr('href')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
    var $parent = $(selector)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
    if (e) e.preventDefault()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
    if (!$parent.length) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
      $parent = $this.closest('.alert')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
    $parent.trigger(e = $.Event('close.bs.alert'))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
    if (e.isDefaultPrevented()) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
    $parent.removeClass('in')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
    function removeElement() {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
      // detach from parent, fire event then clean up data
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
      $parent.detach().trigger('closed.bs.alert').remove()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
    $.support.transition && $parent.hasClass('fade') ?
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
      $parent
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
        .one('bsTransitionEnd', removeElement)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
      removeElement()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
  // ALERT PLUGIN DEFINITION
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
  // =======================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
  function Plugin(option) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
    return this.each(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
      var $this = $(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
      var data  = $this.data('bs.alert')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
      if (!data) $this.data('bs.alert', (data = new Alert(this)))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
      if (typeof option == 'string') data[option].call($this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
  var old = $.fn.alert
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
  $.fn.alert             = Plugin
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
  $.fn.alert.Constructor = Alert
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
  // ALERT NO CONFLICT
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
  // =================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
  $.fn.alert.noConflict = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
    $.fn.alert = old
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
    return this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
  // ALERT DATA-API
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
  // ==============
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
}(jQuery);
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
/* ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
 * Bootstrap: button.js v3.3.5
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
 * http://getbootstrap.com/javascript/#buttons
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
 * ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
 * Copyright 2011-2015 Twitter, Inc.
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
 * ======================================================================== */
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
+function ($) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
  'use strict';
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
  // BUTTON PUBLIC CLASS DEFINITION
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
  // ==============================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
  var Button = function (element, options) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
    this.$element  = $(element)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
    this.options   = $.extend({}, Button.DEFAULTS, options)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
    this.isLoading = false
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
  Button.VERSION  = '3.3.5'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
  Button.DEFAULTS = {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
    loadingText: 'loading...'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
  Button.prototype.setState = function (state) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
    var d    = 'disabled'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
    var $el  = this.$element
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
    var val  = $el.is('input') ? 'val' : 'html'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
    var data = $el.data()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
    state += 'Text'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
    if (data.resetText == null) $el.data('resetText', $el[val]())
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
    // push to event loop to allow forms to submit
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
    setTimeout($.proxy(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
      $el[val](data[state] == null ? this.options[state] : data[state])
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
      if (state == 'loadingText') {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
        this.isLoading = true
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
        $el.addClass(d).attr(d, d)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
      } else if (this.isLoading) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
        this.isLoading = false
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   220
        $el.removeClass(d).removeAttr(d)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
      }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
    }, this), 0)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
  Button.prototype.toggle = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
    var changed = true
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
    var $parent = this.$element.closest('[data-toggle="buttons"]')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
    if ($parent.length) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
      var $input = this.$element.find('input')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
      if ($input.prop('type') == 'radio') {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
        if ($input.prop('checked')) changed = false
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
        $parent.find('.active').removeClass('active')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
        this.$element.addClass('active')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
      } else if ($input.prop('type') == 'checkbox') {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
        if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
        this.$element.toggleClass('active')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
      }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
      $input.prop('checked', this.$element.hasClass('active'))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
      if (changed) $input.trigger('change')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
    } else {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
      this.$element.toggleClass('active')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
  // BUTTON PLUGIN DEFINITION
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
  // ========================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
  function Plugin(option) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
    return this.each(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
      var $this   = $(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
      var data    = $this.data('bs.button')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
      var options = typeof option == 'object' && option
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
      if (!data) $this.data('bs.button', (data = new Button(this, options)))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
      if (option == 'toggle') data.toggle()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
      else if (option) data.setState(option)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
  var old = $.fn.button
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
  $.fn.button             = Plugin
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
  $.fn.button.Constructor = Button
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
  // BUTTON NO CONFLICT
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
  // ==================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
  $.fn.button.noConflict = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
    $.fn.button = old
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
    return this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
  // BUTTON DATA-API
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   280
  // ===============
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
  $(document)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   283
    .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   284
      var $btn = $(e.target)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   285
      if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   286
      Plugin.call($btn, 'toggle')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   287
      if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   289
    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   290
      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   291
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   292
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   293
}(jQuery);
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   294
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   295
/* ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   296
 * Bootstrap: carousel.js v3.3.5
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   297
 * http://getbootstrap.com/javascript/#carousel
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   298
 * ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   299
 * Copyright 2011-2015 Twitter, Inc.
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   300
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   301
 * ======================================================================== */
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   302
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   303
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   304
+function ($) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   305
  'use strict';
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   306
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   307
  // CAROUSEL CLASS DEFINITION
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   308
  // =========================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   309
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   310
  var Carousel = function (element, options) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   311
    this.$element    = $(element)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   312
    this.$indicators = this.$element.find('.carousel-indicators')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   313
    this.options     = options
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   314
    this.paused      = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   315
    this.sliding     = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   316
    this.interval    = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   317
    this.$active     = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   318
    this.$items      = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   319
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   320
    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   321
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   322
    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   323
      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   324
      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   325
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   326
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   327
  Carousel.VERSION  = '3.3.5'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   328
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   329
  Carousel.TRANSITION_DURATION = 600
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   330
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   331
  Carousel.DEFAULTS = {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   332
    interval: 5000,
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   333
    pause: 'hover',
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   334
    wrap: true,
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   335
    keyboard: true
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   336
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   337
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   338
  Carousel.prototype.keydown = function (e) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   339
    if (/input|textarea/i.test(e.target.tagName)) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   340
    switch (e.which) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   341
      case 37: this.prev(); break
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   342
      case 39: this.next(); break
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   343
      default: return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   344
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   345
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   346
    e.preventDefault()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   347
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   348
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   349
  Carousel.prototype.cycle = function (e) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   350
    e || (this.paused = false)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   351
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   352
    this.interval && clearInterval(this.interval)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   353
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   354
    this.options.interval
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   355
      && !this.paused
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   356
      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   357
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   358
    return this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   359
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   360
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   361
  Carousel.prototype.getItemIndex = function (item) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   362
    this.$items = item.parent().children('.item')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   363
    return this.$items.index(item || this.$active)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   364
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   365
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   366
  Carousel.prototype.getItemForDirection = function (direction, active) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   367
    var activeIndex = this.getItemIndex(active)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   368
    var willWrap = (direction == 'prev' && activeIndex === 0)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   369
                || (direction == 'next' && activeIndex == (this.$items.length - 1))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   370
    if (willWrap && !this.options.wrap) return active
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   371
    var delta = direction == 'prev' ? -1 : 1
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   372
    var itemIndex = (activeIndex + delta) % this.$items.length
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   373
    return this.$items.eq(itemIndex)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   374
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   375
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   376
  Carousel.prototype.to = function (pos) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   377
    var that        = this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   378
    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   379
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   380
    if (pos > (this.$items.length - 1) || pos < 0) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   381
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   382
    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   383
    if (activeIndex == pos) return this.pause().cycle()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   384
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   385
    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   386
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   387
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   388
  Carousel.prototype.pause = function (e) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   389
    e || (this.paused = true)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   390
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   391
    if (this.$element.find('.next, .prev').length && $.support.transition) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   392
      this.$element.trigger($.support.transition.end)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   393
      this.cycle(true)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   394
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   395
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   396
    this.interval = clearInterval(this.interval)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   397
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   398
    return this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   399
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   400
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   401
  Carousel.prototype.next = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   402
    if (this.sliding) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   403
    return this.slide('next')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   404
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   405
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   406
  Carousel.prototype.prev = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   407
    if (this.sliding) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   408
    return this.slide('prev')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   409
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   410
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   411
  Carousel.prototype.slide = function (type, next) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   412
    var $active   = this.$element.find('.item.active')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   413
    var $next     = next || this.getItemForDirection(type, $active)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   414
    var isCycling = this.interval
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   415
    var direction = type == 'next' ? 'left' : 'right'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   416
    var that      = this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   417
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   418
    if ($next.hasClass('active')) return (this.sliding = false)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   419
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   420
    var relatedTarget = $next[0]
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   421
    var slideEvent = $.Event('slide.bs.carousel', {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   422
      relatedTarget: relatedTarget,
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   423
      direction: direction
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   424
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   425
    this.$element.trigger(slideEvent)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   426
    if (slideEvent.isDefaultPrevented()) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   427
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   428
    this.sliding = true
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   429
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   430
    isCycling && this.pause()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   431
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   432
    if (this.$indicators.length) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   433
      this.$indicators.find('.active').removeClass('active')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   434
      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   435
      $nextIndicator && $nextIndicator.addClass('active')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   436
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   437
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   438
    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   439
    if ($.support.transition && this.$element.hasClass('slide')) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   440
      $next.addClass(type)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   441
      $next[0].offsetWidth // force reflow
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   442
      $active.addClass(direction)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   443
      $next.addClass(direction)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   444
      $active
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   445
        .one('bsTransitionEnd', function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   446
          $next.removeClass([type, direction].join(' ')).addClass('active')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   447
          $active.removeClass(['active', direction].join(' '))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   448
          that.sliding = false
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   449
          setTimeout(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   450
            that.$element.trigger(slidEvent)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   451
          }, 0)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   452
        })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   453
        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   454
    } else {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   455
      $active.removeClass('active')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   456
      $next.addClass('active')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   457
      this.sliding = false
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   458
      this.$element.trigger(slidEvent)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   459
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   460
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   461
    isCycling && this.cycle()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   462
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   463
    return this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   464
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   465
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   466
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   467
  // CAROUSEL PLUGIN DEFINITION
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   468
  // ==========================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   469
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   470
  function Plugin(option) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   471
    return this.each(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   472
      var $this   = $(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   473
      var data    = $this.data('bs.carousel')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   474
      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   475
      var action  = typeof option == 'string' ? option : options.slide
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   476
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   477
      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   478
      if (typeof option == 'number') data.to(option)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   479
      else if (action) data[action]()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   480
      else if (options.interval) data.pause().cycle()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   481
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   482
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   483
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   484
  var old = $.fn.carousel
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   485
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   486
  $.fn.carousel             = Plugin
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   487
  $.fn.carousel.Constructor = Carousel
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   488
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   489
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   490
  // CAROUSEL NO CONFLICT
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   491
  // ====================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   492
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   493
  $.fn.carousel.noConflict = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   494
    $.fn.carousel = old
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   495
    return this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   496
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   497
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   498
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   499
  // CAROUSEL DATA-API
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   500
  // =================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   501
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   502
  var clickHandler = function (e) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   503
    var href
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   504
    var $this   = $(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   505
    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   506
    if (!$target.hasClass('carousel')) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   507
    var options = $.extend({}, $target.data(), $this.data())
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   508
    var slideIndex = $this.attr('data-slide-to')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   509
    if (slideIndex) options.interval = false
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   510
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   511
    Plugin.call($target, options)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   512
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   513
    if (slideIndex) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   514
      $target.data('bs.carousel').to(slideIndex)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   515
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   516
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   517
    e.preventDefault()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   518
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   519
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   520
  $(document)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   521
    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   522
    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   523
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   524
  $(window).on('load', function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   525
    $('[data-ride="carousel"]').each(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   526
      var $carousel = $(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   527
      Plugin.call($carousel, $carousel.data())
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   528
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   529
  })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   530
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   531
}(jQuery);
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   532
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   533
/* ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   534
 * Bootstrap: collapse.js v3.3.5
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   535
 * http://getbootstrap.com/javascript/#collapse
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   536
 * ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   537
 * Copyright 2011-2015 Twitter, Inc.
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   538
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   539
 * ======================================================================== */
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   540
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   541
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   542
+function ($) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   543
  'use strict';
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   544
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   545
  // COLLAPSE PUBLIC CLASS DEFINITION
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   546
  // ================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   547
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   548
  var Collapse = function (element, options) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   549
    this.$element      = $(element)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   550
    this.options       = $.extend({}, Collapse.DEFAULTS, options)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   551
    this.$trigger      = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   552
                           '[data-toggle="collapse"][data-target="#' + element.id + '"]')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   553
    this.transitioning = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   554
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   555
    if (this.options.parent) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   556
      this.$parent = this.getParent()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   557
    } else {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   558
      this.addAriaAndCollapsedClass(this.$element, this.$trigger)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   559
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   560
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   561
    if (this.options.toggle) this.toggle()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   562
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   563
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   564
  Collapse.VERSION  = '3.3.5'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   565
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   566
  Collapse.TRANSITION_DURATION = 350
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   567
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   568
  Collapse.DEFAULTS = {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   569
    toggle: true
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   570
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   571
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   572
  Collapse.prototype.dimension = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   573
    var hasWidth = this.$element.hasClass('width')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   574
    return hasWidth ? 'width' : 'height'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   575
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   576
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   577
  Collapse.prototype.show = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   578
    if (this.transitioning || this.$element.hasClass('in')) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   579
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   580
    var activesData
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   581
    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   582
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   583
    if (actives && actives.length) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   584
      activesData = actives.data('bs.collapse')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   585
      if (activesData && activesData.transitioning) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   586
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   587
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   588
    var startEvent = $.Event('show.bs.collapse')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   589
    this.$element.trigger(startEvent)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   590
    if (startEvent.isDefaultPrevented()) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   591
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   592
    if (actives && actives.length) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   593
      Plugin.call(actives, 'hide')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   594
      activesData || actives.data('bs.collapse', null)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   595
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   596
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   597
    var dimension = this.dimension()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   598
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   599
    this.$element
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   600
      .removeClass('collapse')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   601
      .addClass('collapsing')[dimension](0)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   602
      .attr('aria-expanded', true)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   603
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   604
    this.$trigger
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   605
      .removeClass('collapsed')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   606
      .attr('aria-expanded', true)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   607
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   608
    this.transitioning = 1
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   609
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   610
    var complete = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   611
      this.$element
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   612
        .removeClass('collapsing')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   613
        .addClass('collapse in')[dimension]('')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   614
      this.transitioning = 0
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   615
      this.$element
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   616
        .trigger('shown.bs.collapse')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   617
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   618
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   619
    if (!$.support.transition) return complete.call(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   620
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   621
    var scrollSize = $.camelCase(['scroll', dimension].join('-'))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   622
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   623
    this.$element
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   624
      .one('bsTransitionEnd', $.proxy(complete, this))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   625
      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   626
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   627
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   628
  Collapse.prototype.hide = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   629
    if (this.transitioning || !this.$element.hasClass('in')) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   630
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   631
    var startEvent = $.Event('hide.bs.collapse')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   632
    this.$element.trigger(startEvent)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   633
    if (startEvent.isDefaultPrevented()) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   634
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   635
    var dimension = this.dimension()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   636
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   637
    this.$element[dimension](this.$element[dimension]())[0].offsetHeight
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   638
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   639
    this.$element
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   640
      .addClass('collapsing')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   641
      .removeClass('collapse in')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   642
      .attr('aria-expanded', false)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   643
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   644
    this.$trigger
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   645
      .addClass('collapsed')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   646
      .attr('aria-expanded', false)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   647
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   648
    this.transitioning = 1
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   649
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   650
    var complete = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   651
      this.transitioning = 0
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   652
      this.$element
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   653
        .removeClass('collapsing')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   654
        .addClass('collapse')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   655
        .trigger('hidden.bs.collapse')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   656
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   657
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   658
    if (!$.support.transition) return complete.call(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   659
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   660
    this.$element
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   661
      [dimension](0)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   662
      .one('bsTransitionEnd', $.proxy(complete, this))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   663
      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   664
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   665
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   666
  Collapse.prototype.toggle = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   667
    this[this.$element.hasClass('in') ? 'hide' : 'show']()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   668
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   669
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   670
  Collapse.prototype.getParent = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   671
    return $(this.options.parent)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   672
      .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   673
      .each($.proxy(function (i, element) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   674
        var $element = $(element)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   675
        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   676
      }, this))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   677
      .end()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   678
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   679
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   680
  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   681
    var isOpen = $element.hasClass('in')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   682
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   683
    $element.attr('aria-expanded', isOpen)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   684
    $trigger
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   685
      .toggleClass('collapsed', !isOpen)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   686
      .attr('aria-expanded', isOpen)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   687
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   688
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   689
  function getTargetFromTrigger($trigger) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   690
    var href
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   691
    var target = $trigger.attr('data-target')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   692
      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   693
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   694
    return $(target)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   695
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   696
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   697
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   698
  // COLLAPSE PLUGIN DEFINITION
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   699
  // ==========================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   700
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   701
  function Plugin(option) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   702
    return this.each(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   703
      var $this   = $(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   704
      var data    = $this.data('bs.collapse')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   705
      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   706
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   707
      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   708
      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   709
      if (typeof option == 'string') data[option]()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   710
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   711
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   712
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   713
  var old = $.fn.collapse
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   714
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   715
  $.fn.collapse             = Plugin
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   716
  $.fn.collapse.Constructor = Collapse
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   717
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   718
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   719
  // COLLAPSE NO CONFLICT
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   720
  // ====================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   721
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   722
  $.fn.collapse.noConflict = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   723
    $.fn.collapse = old
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   724
    return this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   725
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   726
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   727
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   728
  // COLLAPSE DATA-API
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   729
  // =================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   730
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   731
  $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   732
    var $this   = $(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   733
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   734
    if (!$this.attr('data-target')) e.preventDefault()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   735
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   736
    var $target = getTargetFromTrigger($this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   737
    var data    = $target.data('bs.collapse')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   738
    var option  = data ? 'toggle' : $this.data()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   739
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   740
    Plugin.call($target, option)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   741
  })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   742
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   743
}(jQuery);
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   744
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   745
/* ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   746
 * Bootstrap: dropdown.js v3.3.5
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   747
 * http://getbootstrap.com/javascript/#dropdowns
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   748
 * ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   749
 * Copyright 2011-2015 Twitter, Inc.
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   750
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   751
 * ======================================================================== */
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   752
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   753
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   754
+function ($) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   755
  'use strict';
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   756
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   757
  // DROPDOWN CLASS DEFINITION
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   758
  // =========================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   759
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   760
  var backdrop = '.dropdown-backdrop'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   761
  var toggle   = '[data-toggle="dropdown"]'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   762
  var Dropdown = function (element) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   763
    $(element).on('click.bs.dropdown', this.toggle)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   764
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   765
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   766
  Dropdown.VERSION = '3.3.5'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   767
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   768
  function getParent($this) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   769
    var selector = $this.attr('data-target')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   770
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   771
    if (!selector) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   772
      selector = $this.attr('href')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   773
      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   774
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   775
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   776
    var $parent = selector && $(selector)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   777
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   778
    return $parent && $parent.length ? $parent : $this.parent()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   779
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   780
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   781
  function clearMenus(e) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   782
    if (e && e.which === 3) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   783
    $(backdrop).remove()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   784
    $(toggle).each(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   785
      var $this         = $(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   786
      var $parent       = getParent($this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   787
      var relatedTarget = { relatedTarget: this }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   788
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   789
      if (!$parent.hasClass('open')) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   790
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   791
      if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   792
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   793
      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   794
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   795
      if (e.isDefaultPrevented()) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   796
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   797
      $this.attr('aria-expanded', 'false')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   798
      $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   799
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   800
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   801
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   802
  Dropdown.prototype.toggle = function (e) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   803
    var $this = $(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   804
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   805
    if ($this.is('.disabled, :disabled')) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   806
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   807
    var $parent  = getParent($this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   808
    var isActive = $parent.hasClass('open')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   809
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   810
    clearMenus()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   811
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   812
    if (!isActive) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   813
      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   814
        // if mobile we use a backdrop because click events don't delegate
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   815
        $(document.createElement('div'))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   816
          .addClass('dropdown-backdrop')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   817
          .insertAfter($(this))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   818
          .on('click', clearMenus)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   819
      }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   820
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   821
      var relatedTarget = { relatedTarget: this }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   822
      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   823
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   824
      if (e.isDefaultPrevented()) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   825
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   826
      $this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   827
        .trigger('focus')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   828
        .attr('aria-expanded', 'true')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   829
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   830
      $parent
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   831
        .toggleClass('open')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   832
        .trigger('shown.bs.dropdown', relatedTarget)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   833
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   834
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   835
    return false
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   836
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   837
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   838
  Dropdown.prototype.keydown = function (e) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   839
    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   840
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   841
    var $this = $(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   842
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   843
    e.preventDefault()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   844
    e.stopPropagation()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   845
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   846
    if ($this.is('.disabled, :disabled')) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   847
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   848
    var $parent  = getParent($this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   849
    var isActive = $parent.hasClass('open')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   850
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   851
    if (!isActive && e.which != 27 || isActive && e.which == 27) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   852
      if (e.which == 27) $parent.find(toggle).trigger('focus')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   853
      return $this.trigger('click')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   854
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   855
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   856
    var desc = ' li:not(.disabled):visible a'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   857
    var $items = $parent.find('.dropdown-menu' + desc)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   858
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   859
    if (!$items.length) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   860
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   861
    var index = $items.index(e.target)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   862
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   863
    if (e.which == 38 && index > 0)                 index--         // up
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   864
    if (e.which == 40 && index < $items.length - 1) index++         // down
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   865
    if (!~index)                                    index = 0
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   866
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   867
    $items.eq(index).trigger('focus')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   868
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   869
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   870
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   871
  // DROPDOWN PLUGIN DEFINITION
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   872
  // ==========================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   873
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   874
  function Plugin(option) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   875
    return this.each(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   876
      var $this = $(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   877
      var data  = $this.data('bs.dropdown')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   878
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   879
      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   880
      if (typeof option == 'string') data[option].call($this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   881
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   882
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   883
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   884
  var old = $.fn.dropdown
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   885
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   886
  $.fn.dropdown             = Plugin
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   887
  $.fn.dropdown.Constructor = Dropdown
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   888
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   889
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   890
  // DROPDOWN NO CONFLICT
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   891
  // ====================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   892
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   893
  $.fn.dropdown.noConflict = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   894
    $.fn.dropdown = old
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   895
    return this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   896
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   897
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   898
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   899
  // APPLY TO STANDARD DROPDOWN ELEMENTS
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   900
  // ===================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   901
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   902
  $(document)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   903
    .on('click.bs.dropdown.data-api', clearMenus)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   904
    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   905
    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   906
    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   907
    .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   908
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   909
}(jQuery);
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   910
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   911
/* ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   912
 * Bootstrap: modal.js v3.3.5
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   913
 * http://getbootstrap.com/javascript/#modals
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   914
 * ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   915
 * Copyright 2011-2015 Twitter, Inc.
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   916
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   917
 * ======================================================================== */
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   918
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   919
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   920
+function ($) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   921
  'use strict';
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   922
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   923
  // MODAL CLASS DEFINITION
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   924
  // ======================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   925
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   926
  var Modal = function (element, options) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   927
    this.options             = options
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   928
    this.$body               = $(document.body)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   929
    this.$element            = $(element)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   930
    this.$dialog             = this.$element.find('.modal-dialog')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   931
    this.$backdrop           = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   932
    this.isShown             = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   933
    this.originalBodyPad     = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   934
    this.scrollbarWidth      = 0
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   935
    this.ignoreBackdropClick = false
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   936
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   937
    if (this.options.remote) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   938
      this.$element
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   939
        .find('.modal-content')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   940
        .load(this.options.remote, $.proxy(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   941
          this.$element.trigger('loaded.bs.modal')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   942
        }, this))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   943
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   944
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   945
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   946
  Modal.VERSION  = '3.3.5'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   947
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   948
  Modal.TRANSITION_DURATION = 300
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   949
  Modal.BACKDROP_TRANSITION_DURATION = 150
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   950
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   951
  Modal.DEFAULTS = {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   952
    backdrop: true,
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   953
    keyboard: true,
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   954
    show: true
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   955
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   956
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   957
  Modal.prototype.toggle = function (_relatedTarget) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   958
    return this.isShown ? this.hide() : this.show(_relatedTarget)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   959
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   960
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   961
  Modal.prototype.show = function (_relatedTarget) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   962
    var that = this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   963
    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   964
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   965
    this.$element.trigger(e)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   966
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   967
    if (this.isShown || e.isDefaultPrevented()) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   968
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   969
    this.isShown = true
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   970
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   971
    this.checkScrollbar()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   972
    this.setScrollbar()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   973
    this.$body.addClass('modal-open')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   974
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   975
    this.escape()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   976
    this.resize()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   977
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   978
    this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   979
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   980
    this.$dialog.on('mousedown.dismiss.bs.modal', function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   981
      that.$element.one('mouseup.dismiss.bs.modal', function (e) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   982
        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   983
      })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   984
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   985
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   986
    this.backdrop(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   987
      var transition = $.support.transition && that.$element.hasClass('fade')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   988
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   989
      if (!that.$element.parent().length) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   990
        that.$element.appendTo(that.$body) // don't move modals dom position
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   991
      }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   992
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   993
      that.$element
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   994
        .show()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   995
        .scrollTop(0)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   996
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   997
      that.adjustDialog()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   998
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
   999
      if (transition) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1000
        that.$element[0].offsetWidth // force reflow
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1001
      }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1002
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1003
      that.$element.addClass('in')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1004
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1005
      that.enforceFocus()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1006
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1007
      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1008
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1009
      transition ?
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1010
        that.$dialog // wait for modal to slide in
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1011
          .one('bsTransitionEnd', function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1012
            that.$element.trigger('focus').trigger(e)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1013
          })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1014
          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1015
        that.$element.trigger('focus').trigger(e)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1016
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1017
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1018
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1019
  Modal.prototype.hide = function (e) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1020
    if (e) e.preventDefault()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1021
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1022
    e = $.Event('hide.bs.modal')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1023
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1024
    this.$element.trigger(e)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1025
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1026
    if (!this.isShown || e.isDefaultPrevented()) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1027
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1028
    this.isShown = false
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1029
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1030
    this.escape()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1031
    this.resize()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1032
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1033
    $(document).off('focusin.bs.modal')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1034
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1035
    this.$element
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1036
      .removeClass('in')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1037
      .off('click.dismiss.bs.modal')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1038
      .off('mouseup.dismiss.bs.modal')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1039
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1040
    this.$dialog.off('mousedown.dismiss.bs.modal')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1041
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1042
    $.support.transition && this.$element.hasClass('fade') ?
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1043
      this.$element
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1044
        .one('bsTransitionEnd', $.proxy(this.hideModal, this))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1045
        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1046
      this.hideModal()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1047
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1048
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1049
  Modal.prototype.enforceFocus = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1050
    $(document)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1051
      .off('focusin.bs.modal') // guard against infinite focus loop
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1052
      .on('focusin.bs.modal', $.proxy(function (e) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1053
        if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1054
          this.$element.trigger('focus')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1055
        }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1056
      }, this))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1057
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1058
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1059
  Modal.prototype.escape = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1060
    if (this.isShown && this.options.keyboard) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1061
      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1062
        e.which == 27 && this.hide()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1063
      }, this))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1064
    } else if (!this.isShown) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1065
      this.$element.off('keydown.dismiss.bs.modal')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1066
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1067
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1068
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1069
  Modal.prototype.resize = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1070
    if (this.isShown) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1071
      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1072
    } else {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1073
      $(window).off('resize.bs.modal')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1074
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1075
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1076
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1077
  Modal.prototype.hideModal = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1078
    var that = this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1079
    this.$element.hide()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1080
    this.backdrop(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1081
      that.$body.removeClass('modal-open')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1082
      that.resetAdjustments()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1083
      that.resetScrollbar()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1084
      that.$element.trigger('hidden.bs.modal')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1085
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1086
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1087
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1088
  Modal.prototype.removeBackdrop = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1089
    this.$backdrop && this.$backdrop.remove()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1090
    this.$backdrop = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1091
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1092
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1093
  Modal.prototype.backdrop = function (callback) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1094
    var that = this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1095
    var animate = this.$element.hasClass('fade') ? 'fade' : ''
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1096
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1097
    if (this.isShown && this.options.backdrop) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1098
      var doAnimate = $.support.transition && animate
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1099
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1100
      this.$backdrop = $(document.createElement('div'))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1101
        .addClass('modal-backdrop ' + animate)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1102
        .appendTo(this.$body)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1103
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1104
      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1105
        if (this.ignoreBackdropClick) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1106
          this.ignoreBackdropClick = false
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1107
          return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1108
        }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1109
        if (e.target !== e.currentTarget) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1110
        this.options.backdrop == 'static'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1111
          ? this.$element[0].focus()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1112
          : this.hide()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1113
      }, this))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1114
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1115
      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1116
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1117
      this.$backdrop.addClass('in')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1118
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1119
      if (!callback) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1120
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1121
      doAnimate ?
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1122
        this.$backdrop
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1123
          .one('bsTransitionEnd', callback)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1124
          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1125
        callback()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1126
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1127
    } else if (!this.isShown && this.$backdrop) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1128
      this.$backdrop.removeClass('in')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1129
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1130
      var callbackRemove = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1131
        that.removeBackdrop()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1132
        callback && callback()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1133
      }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1134
      $.support.transition && this.$element.hasClass('fade') ?
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1135
        this.$backdrop
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1136
          .one('bsTransitionEnd', callbackRemove)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1137
          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1138
        callbackRemove()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1139
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1140
    } else if (callback) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1141
      callback()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1142
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1143
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1144
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1145
  // these following methods are used to handle overflowing modals
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1146
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1147
  Modal.prototype.handleUpdate = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1148
    this.adjustDialog()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1149
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1150
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1151
  Modal.prototype.adjustDialog = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1152
    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1153
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1154
    this.$element.css({
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1155
      paddingLeft:  !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1156
      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1157
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1158
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1159
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1160
  Modal.prototype.resetAdjustments = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1161
    this.$element.css({
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1162
      paddingLeft: '',
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1163
      paddingRight: ''
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1164
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1165
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1166
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1167
  Modal.prototype.checkScrollbar = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1168
    var fullWindowWidth = window.innerWidth
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1169
    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1170
      var documentElementRect = document.documentElement.getBoundingClientRect()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1171
      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1172
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1173
    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1174
    this.scrollbarWidth = this.measureScrollbar()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1175
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1176
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1177
  Modal.prototype.setScrollbar = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1178
    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1179
    this.originalBodyPad = document.body.style.paddingRight || ''
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1180
    if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1181
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1182
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1183
  Modal.prototype.resetScrollbar = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1184
    this.$body.css('padding-right', this.originalBodyPad)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1185
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1186
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1187
  Modal.prototype.measureScrollbar = function () { // thx walsh
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1188
    var scrollDiv = document.createElement('div')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1189
    scrollDiv.className = 'modal-scrollbar-measure'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1190
    this.$body.append(scrollDiv)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1191
    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1192
    this.$body[0].removeChild(scrollDiv)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1193
    return scrollbarWidth
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1194
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1195
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1196
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1197
  // MODAL PLUGIN DEFINITION
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1198
  // =======================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1199
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1200
  function Plugin(option, _relatedTarget) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1201
    return this.each(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1202
      var $this   = $(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1203
      var data    = $this.data('bs.modal')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1204
      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1205
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1206
      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1207
      if (typeof option == 'string') data[option](_relatedTarget)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1208
      else if (options.show) data.show(_relatedTarget)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1209
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1210
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1211
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1212
  var old = $.fn.modal
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1213
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1214
  $.fn.modal             = Plugin
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1215
  $.fn.modal.Constructor = Modal
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1216
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1217
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1218
  // MODAL NO CONFLICT
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1219
  // =================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1220
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1221
  $.fn.modal.noConflict = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1222
    $.fn.modal = old
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1223
    return this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1224
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1225
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1226
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1227
  // MODAL DATA-API
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1228
  // ==============
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1229
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1230
  $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1231
    var $this   = $(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1232
    var href    = $this.attr('href')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1233
    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1234
    var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1235
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1236
    if ($this.is('a')) e.preventDefault()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1237
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1238
    $target.one('show.bs.modal', function (showEvent) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1239
      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1240
      $target.one('hidden.bs.modal', function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1241
        $this.is(':visible') && $this.trigger('focus')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1242
      })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1243
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1244
    Plugin.call($target, option, this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1245
  })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1246
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1247
}(jQuery);
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1248
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1249
/* ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1250
 * Bootstrap: tooltip.js v3.3.5
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1251
 * http://getbootstrap.com/javascript/#tooltip
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1252
 * Inspired by the original jQuery.tipsy by Jason Frame
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1253
 * ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1254
 * Copyright 2011-2015 Twitter, Inc.
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1255
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1256
 * ======================================================================== */
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1257
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1258
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1259
+function ($) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1260
  'use strict';
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1261
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1262
  // TOOLTIP PUBLIC CLASS DEFINITION
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1263
  // ===============================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1264
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1265
  var Tooltip = function (element, options) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1266
    this.type       = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1267
    this.options    = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1268
    this.enabled    = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1269
    this.timeout    = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1270
    this.hoverState = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1271
    this.$element   = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1272
    this.inState    = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1273
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1274
    this.init('tooltip', element, options)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1275
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1276
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1277
  Tooltip.VERSION  = '3.3.5'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1278
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1279
  Tooltip.TRANSITION_DURATION = 150
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1280
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1281
  Tooltip.DEFAULTS = {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1282
    animation: true,
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1283
    placement: 'top',
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1284
    selector: false,
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1285
    template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1286
    trigger: 'hover focus',
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1287
    title: '',
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1288
    delay: 0,
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1289
    html: false,
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1290
    container: false,
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1291
    viewport: {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1292
      selector: 'body',
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1293
      padding: 0
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1294
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1295
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1296
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1297
  Tooltip.prototype.init = function (type, element, options) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1298
    this.enabled   = true
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1299
    this.type      = type
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1300
    this.$element  = $(element)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1301
    this.options   = this.getOptions(options)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1302
    this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1303
    this.inState   = { click: false, hover: false, focus: false }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1304
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1305
    if (this.$element[0] instanceof document.constructor && !this.options.selector) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1306
      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1307
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1308
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1309
    var triggers = this.options.trigger.split(' ')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1310
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1311
    for (var i = triggers.length; i--;) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1312
      var trigger = triggers[i]
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1313
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1314
      if (trigger == 'click') {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1315
        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1316
      } else if (trigger != 'manual') {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1317
        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1318
        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1319
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1320
        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1321
        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1322
      }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1323
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1324
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1325
    this.options.selector ?
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1326
      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1327
      this.fixTitle()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1328
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1329
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1330
  Tooltip.prototype.getDefaults = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1331
    return Tooltip.DEFAULTS
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1332
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1333
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1334
  Tooltip.prototype.getOptions = function (options) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1335
    options = $.extend({}, this.getDefaults(), this.$element.data(), options)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1336
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1337
    if (options.delay && typeof options.delay == 'number') {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1338
      options.delay = {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1339
        show: options.delay,
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1340
        hide: options.delay
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1341
      }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1342
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1343
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1344
    return options
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1345
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1346
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1347
  Tooltip.prototype.getDelegateOptions = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1348
    var options  = {}
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1349
    var defaults = this.getDefaults()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1350
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1351
    this._options && $.each(this._options, function (key, value) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1352
      if (defaults[key] != value) options[key] = value
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1353
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1354
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1355
    return options
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1356
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1357
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1358
  Tooltip.prototype.enter = function (obj) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1359
    var self = obj instanceof this.constructor ?
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1360
      obj : $(obj.currentTarget).data('bs.' + this.type)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1361
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1362
    if (!self) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1363
      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1364
      $(obj.currentTarget).data('bs.' + this.type, self)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1365
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1366
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1367
    if (obj instanceof $.Event) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1368
      self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1369
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1370
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1371
    if (self.tip().hasClass('in') || self.hoverState == 'in') {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1372
      self.hoverState = 'in'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1373
      return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1374
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1375
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1376
    clearTimeout(self.timeout)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1377
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1378
    self.hoverState = 'in'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1379
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1380
    if (!self.options.delay || !self.options.delay.show) return self.show()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1381
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1382
    self.timeout = setTimeout(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1383
      if (self.hoverState == 'in') self.show()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1384
    }, self.options.delay.show)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1385
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1386
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1387
  Tooltip.prototype.isInStateTrue = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1388
    for (var key in this.inState) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1389
      if (this.inState[key]) return true
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1390
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1391
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1392
    return false
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1393
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1394
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1395
  Tooltip.prototype.leave = function (obj) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1396
    var self = obj instanceof this.constructor ?
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1397
      obj : $(obj.currentTarget).data('bs.' + this.type)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1398
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1399
    if (!self) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1400
      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1401
      $(obj.currentTarget).data('bs.' + this.type, self)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1402
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1403
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1404
    if (obj instanceof $.Event) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1405
      self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1406
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1407
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1408
    if (self.isInStateTrue()) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1409
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1410
    clearTimeout(self.timeout)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1411
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1412
    self.hoverState = 'out'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1413
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1414
    if (!self.options.delay || !self.options.delay.hide) return self.hide()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1415
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1416
    self.timeout = setTimeout(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1417
      if (self.hoverState == 'out') self.hide()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1418
    }, self.options.delay.hide)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1419
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1420
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1421
  Tooltip.prototype.show = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1422
    var e = $.Event('show.bs.' + this.type)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1423
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1424
    if (this.hasContent() && this.enabled) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1425
      this.$element.trigger(e)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1426
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1427
      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1428
      if (e.isDefaultPrevented() || !inDom) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1429
      var that = this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1430
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1431
      var $tip = this.tip()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1432
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1433
      var tipId = this.getUID(this.type)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1434
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1435
      this.setContent()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1436
      $tip.attr('id', tipId)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1437
      this.$element.attr('aria-describedby', tipId)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1438
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1439
      if (this.options.animation) $tip.addClass('fade')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1440
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1441
      var placement = typeof this.options.placement == 'function' ?
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1442
        this.options.placement.call(this, $tip[0], this.$element[0]) :
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1443
        this.options.placement
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1444
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1445
      var autoToken = /\s?auto?\s?/i
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1446
      var autoPlace = autoToken.test(placement)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1447
      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1448
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1449
      $tip
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1450
        .detach()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1451
        .css({ top: 0, left: 0, display: 'block' })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1452
        .addClass(placement)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1453
        .data('bs.' + this.type, this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1454
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1455
      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1456
      this.$element.trigger('inserted.bs.' + this.type)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1457
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1458
      var pos          = this.getPosition()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1459
      var actualWidth  = $tip[0].offsetWidth
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1460
      var actualHeight = $tip[0].offsetHeight
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1461
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1462
      if (autoPlace) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1463
        var orgPlacement = placement
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1464
        var viewportDim = this.getPosition(this.$viewport)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1465
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1466
        placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top'    :
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1467
                    placement == 'top'    && pos.top    - actualHeight < viewportDim.top    ? 'bottom' :
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1468
                    placement == 'right'  && pos.right  + actualWidth  > viewportDim.width  ? 'left'   :
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1469
                    placement == 'left'   && pos.left   - actualWidth  < viewportDim.left   ? 'right'  :
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1470
                    placement
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1471
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1472
        $tip
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1473
          .removeClass(orgPlacement)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1474
          .addClass(placement)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1475
      }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1476
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1477
      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1478
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1479
      this.applyPlacement(calculatedOffset, placement)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1480
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1481
      var complete = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1482
        var prevHoverState = that.hoverState
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1483
        that.$element.trigger('shown.bs.' + that.type)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1484
        that.hoverState = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1485
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1486
        if (prevHoverState == 'out') that.leave(that)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1487
      }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1488
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1489
      $.support.transition && this.$tip.hasClass('fade') ?
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1490
        $tip
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1491
          .one('bsTransitionEnd', complete)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1492
          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1493
        complete()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1494
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1495
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1496
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1497
  Tooltip.prototype.applyPlacement = function (offset, placement) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1498
    var $tip   = this.tip()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1499
    var width  = $tip[0].offsetWidth
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1500
    var height = $tip[0].offsetHeight
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1501
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1502
    // manually read margins because getBoundingClientRect includes difference
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1503
    var marginTop = parseInt($tip.css('margin-top'), 10)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1504
    var marginLeft = parseInt($tip.css('margin-left'), 10)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1505
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1506
    // we must check for NaN for ie 8/9
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1507
    if (isNaN(marginTop))  marginTop  = 0
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1508
    if (isNaN(marginLeft)) marginLeft = 0
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1509
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1510
    offset.top  += marginTop
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1511
    offset.left += marginLeft
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1512
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1513
    // $.fn.offset doesn't round pixel values
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1514
    // so we use setOffset directly with our own function B-0
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1515
    $.offset.setOffset($tip[0], $.extend({
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1516
      using: function (props) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1517
        $tip.css({
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1518
          top: Math.round(props.top),
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1519
          left: Math.round(props.left)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1520
        })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1521
      }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1522
    }, offset), 0)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1523
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1524
    $tip.addClass('in')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1525
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1526
    // check to see if placing tip in new offset caused the tip to resize itself
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1527
    var actualWidth  = $tip[0].offsetWidth
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1528
    var actualHeight = $tip[0].offsetHeight
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1529
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1530
    if (placement == 'top' && actualHeight != height) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1531
      offset.top = offset.top + height - actualHeight
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1532
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1533
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1534
    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1535
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1536
    if (delta.left) offset.left += delta.left
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1537
    else offset.top += delta.top
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1538
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1539
    var isVertical          = /top|bottom/.test(placement)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1540
    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1541
    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1542
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1543
    $tip.offset(offset)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1544
    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1545
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1546
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1547
  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1548
    this.arrow()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1549
      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1550
      .css(isVertical ? 'top' : 'left', '')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1551
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1552
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1553
  Tooltip.prototype.setContent = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1554
    var $tip  = this.tip()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1555
    var title = this.getTitle()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1556
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1557
    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1558
    $tip.removeClass('fade in top bottom left right')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1559
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1560
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1561
  Tooltip.prototype.hide = function (callback) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1562
    var that = this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1563
    var $tip = $(this.$tip)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1564
    var e    = $.Event('hide.bs.' + this.type)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1565
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1566
    function complete() {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1567
      if (that.hoverState != 'in') $tip.detach()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1568
      that.$element
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1569
        .removeAttr('aria-describedby')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1570
        .trigger('hidden.bs.' + that.type)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1571
      callback && callback()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1572
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1573
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1574
    this.$element.trigger(e)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1575
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1576
    if (e.isDefaultPrevented()) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1577
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1578
    $tip.removeClass('in')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1579
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1580
    $.support.transition && $tip.hasClass('fade') ?
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1581
      $tip
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1582
        .one('bsTransitionEnd', complete)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1583
        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1584
      complete()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1585
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1586
    this.hoverState = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1587
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1588
    return this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1589
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1590
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1591
  Tooltip.prototype.fixTitle = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1592
    var $e = this.$element
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1593
    if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1594
      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1595
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1596
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1597
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1598
  Tooltip.prototype.hasContent = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1599
    return this.getTitle()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1600
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1601
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1602
  Tooltip.prototype.getPosition = function ($element) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1603
    $element   = $element || this.$element
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1604
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1605
    var el     = $element[0]
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1606
    var isBody = el.tagName == 'BODY'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1607
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1608
    var elRect    = el.getBoundingClientRect()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1609
    if (elRect.width == null) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1610
      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1611
      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1612
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1613
    var elOffset  = isBody ? { top: 0, left: 0 } : $element.offset()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1614
    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1615
    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1616
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1617
    return $.extend({}, elRect, scroll, outerDims, elOffset)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1618
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1619
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1620
  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1621
    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1622
           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1623
           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1624
        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1625
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1626
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1627
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1628
  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1629
    var delta = { top: 0, left: 0 }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1630
    if (!this.$viewport) return delta
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1631
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1632
    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1633
    var viewportDimensions = this.getPosition(this.$viewport)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1634
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1635
    if (/right|left/.test(placement)) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1636
      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1637
      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1638
      if (topEdgeOffset < viewportDimensions.top) { // top overflow
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1639
        delta.top = viewportDimensions.top - topEdgeOffset
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1640
      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1641
        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1642
      }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1643
    } else {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1644
      var leftEdgeOffset  = pos.left - viewportPadding
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1645
      var rightEdgeOffset = pos.left + viewportPadding + actualWidth
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1646
      if (leftEdgeOffset < viewportDimensions.left) { // left overflow
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1647
        delta.left = viewportDimensions.left - leftEdgeOffset
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1648
      } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1649
        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1650
      }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1651
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1652
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1653
    return delta
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1654
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1655
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1656
  Tooltip.prototype.getTitle = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1657
    var title
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1658
    var $e = this.$element
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1659
    var o  = this.options
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1660
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1661
    title = $e.attr('data-original-title')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1662
      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1663
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1664
    return title
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1665
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1666
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1667
  Tooltip.prototype.getUID = function (prefix) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1668
    do prefix += ~~(Math.random() * 1000000)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1669
    while (document.getElementById(prefix))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1670
    return prefix
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1671
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1672
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1673
  Tooltip.prototype.tip = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1674
    if (!this.$tip) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1675
      this.$tip = $(this.options.template)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1676
      if (this.$tip.length != 1) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1677
        throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1678
      }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1679
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1680
    return this.$tip
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1681
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1682
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1683
  Tooltip.prototype.arrow = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1684
    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1685
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1686
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1687
  Tooltip.prototype.enable = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1688
    this.enabled = true
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1689
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1690
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1691
  Tooltip.prototype.disable = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1692
    this.enabled = false
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1693
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1694
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1695
  Tooltip.prototype.toggleEnabled = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1696
    this.enabled = !this.enabled
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1697
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1698
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1699
  Tooltip.prototype.toggle = function (e) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1700
    var self = this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1701
    if (e) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1702
      self = $(e.currentTarget).data('bs.' + this.type)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1703
      if (!self) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1704
        self = new this.constructor(e.currentTarget, this.getDelegateOptions())
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1705
        $(e.currentTarget).data('bs.' + this.type, self)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1706
      }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1707
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1708
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1709
    if (e) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1710
      self.inState.click = !self.inState.click
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1711
      if (self.isInStateTrue()) self.enter(self)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1712
      else self.leave(self)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1713
    } else {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1714
      self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1715
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1716
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1717
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1718
  Tooltip.prototype.destroy = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1719
    var that = this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1720
    clearTimeout(this.timeout)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1721
    this.hide(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1722
      that.$element.off('.' + that.type).removeData('bs.' + that.type)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1723
      if (that.$tip) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1724
        that.$tip.detach()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1725
      }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1726
      that.$tip = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1727
      that.$arrow = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1728
      that.$viewport = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1729
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1730
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1731
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1732
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1733
  // TOOLTIP PLUGIN DEFINITION
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1734
  // =========================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1735
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1736
  function Plugin(option) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1737
    return this.each(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1738
      var $this   = $(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1739
      var data    = $this.data('bs.tooltip')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1740
      var options = typeof option == 'object' && option
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1741
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1742
      if (!data && /destroy|hide/.test(option)) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1743
      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1744
      if (typeof option == 'string') data[option]()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1745
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1746
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1747
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1748
  var old = $.fn.tooltip
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1749
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1750
  $.fn.tooltip             = Plugin
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1751
  $.fn.tooltip.Constructor = Tooltip
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1752
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1753
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1754
  // TOOLTIP NO CONFLICT
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1755
  // ===================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1756
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1757
  $.fn.tooltip.noConflict = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1758
    $.fn.tooltip = old
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1759
    return this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1760
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1761
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1762
}(jQuery);
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1763
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1764
/* ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1765
 * Bootstrap: popover.js v3.3.5
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1766
 * http://getbootstrap.com/javascript/#popovers
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1767
 * ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1768
 * Copyright 2011-2015 Twitter, Inc.
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1769
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1770
 * ======================================================================== */
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1771
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1772
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1773
+function ($) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1774
  'use strict';
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1775
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1776
  // POPOVER PUBLIC CLASS DEFINITION
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1777
  // ===============================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1778
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1779
  var Popover = function (element, options) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1780
    this.init('popover', element, options)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1781
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1782
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1783
  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1784
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1785
  Popover.VERSION  = '3.3.5'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1786
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1787
  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1788
    placement: 'right',
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1789
    trigger: 'click',
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1790
    content: '',
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1791
    template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1792
  })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1793
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1794
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1795
  // NOTE: POPOVER EXTENDS tooltip.js
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1796
  // ================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1797
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1798
  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1799
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1800
  Popover.prototype.constructor = Popover
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1801
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1802
  Popover.prototype.getDefaults = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1803
    return Popover.DEFAULTS
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1804
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1805
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1806
  Popover.prototype.setContent = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1807
    var $tip    = this.tip()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1808
    var title   = this.getTitle()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1809
    var content = this.getContent()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1810
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1811
    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1812
    $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1813
      this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1814
    ](content)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1815
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1816
    $tip.removeClass('fade top bottom left right in')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1817
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1818
    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1819
    // this manually by checking the contents.
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1820
    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1821
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1822
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1823
  Popover.prototype.hasContent = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1824
    return this.getTitle() || this.getContent()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1825
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1826
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1827
  Popover.prototype.getContent = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1828
    var $e = this.$element
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1829
    var o  = this.options
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1830
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1831
    return $e.attr('data-content')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1832
      || (typeof o.content == 'function' ?
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1833
            o.content.call($e[0]) :
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1834
            o.content)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1835
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1836
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1837
  Popover.prototype.arrow = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1838
    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1839
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1840
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1841
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1842
  // POPOVER PLUGIN DEFINITION
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1843
  // =========================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1844
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1845
  function Plugin(option) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1846
    return this.each(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1847
      var $this   = $(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1848
      var data    = $this.data('bs.popover')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1849
      var options = typeof option == 'object' && option
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1850
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1851
      if (!data && /destroy|hide/.test(option)) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1852
      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1853
      if (typeof option == 'string') data[option]()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1854
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1855
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1856
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1857
  var old = $.fn.popover
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1858
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1859
  $.fn.popover             = Plugin
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1860
  $.fn.popover.Constructor = Popover
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1861
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1862
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1863
  // POPOVER NO CONFLICT
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1864
  // ===================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1865
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1866
  $.fn.popover.noConflict = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1867
    $.fn.popover = old
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1868
    return this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1869
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1870
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1871
}(jQuery);
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1872
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1873
/* ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1874
 * Bootstrap: scrollspy.js v3.3.5
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1875
 * http://getbootstrap.com/javascript/#scrollspy
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1876
 * ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1877
 * Copyright 2011-2015 Twitter, Inc.
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1878
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1879
 * ======================================================================== */
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1880
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1881
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1882
+function ($) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1883
  'use strict';
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1884
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1885
  // SCROLLSPY CLASS DEFINITION
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1886
  // ==========================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1887
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1888
  function ScrollSpy(element, options) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1889
    this.$body          = $(document.body)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1890
    this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1891
    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1892
    this.selector       = (this.options.target || '') + ' .nav li > a'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1893
    this.offsets        = []
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1894
    this.targets        = []
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1895
    this.activeTarget   = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1896
    this.scrollHeight   = 0
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1897
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1898
    this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1899
    this.refresh()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1900
    this.process()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1901
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1902
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1903
  ScrollSpy.VERSION  = '3.3.5'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1904
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1905
  ScrollSpy.DEFAULTS = {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1906
    offset: 10
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1907
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1908
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1909
  ScrollSpy.prototype.getScrollHeight = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1910
    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1911
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1912
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1913
  ScrollSpy.prototype.refresh = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1914
    var that          = this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1915
    var offsetMethod  = 'offset'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1916
    var offsetBase    = 0
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1917
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1918
    this.offsets      = []
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1919
    this.targets      = []
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1920
    this.scrollHeight = this.getScrollHeight()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1921
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1922
    if (!$.isWindow(this.$scrollElement[0])) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1923
      offsetMethod = 'position'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1924
      offsetBase   = this.$scrollElement.scrollTop()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1925
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1926
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1927
    this.$body
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1928
      .find(this.selector)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1929
      .map(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1930
        var $el   = $(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1931
        var href  = $el.data('target') || $el.attr('href')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1932
        var $href = /^#./.test(href) && $(href)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1933
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1934
        return ($href
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1935
          && $href.length
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1936
          && $href.is(':visible')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1937
          && [[$href[offsetMethod]().top + offsetBase, href]]) || null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1938
      })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1939
      .sort(function (a, b) { return a[0] - b[0] })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1940
      .each(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1941
        that.offsets.push(this[0])
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1942
        that.targets.push(this[1])
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1943
      })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1944
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1945
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1946
  ScrollSpy.prototype.process = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1947
    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1948
    var scrollHeight = this.getScrollHeight()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1949
    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1950
    var offsets      = this.offsets
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1951
    var targets      = this.targets
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1952
    var activeTarget = this.activeTarget
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1953
    var i
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1954
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1955
    if (this.scrollHeight != scrollHeight) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1956
      this.refresh()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1957
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1958
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1959
    if (scrollTop >= maxScroll) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1960
      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1961
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1962
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1963
    if (activeTarget && scrollTop < offsets[0]) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1964
      this.activeTarget = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1965
      return this.clear()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1966
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1967
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1968
    for (i = offsets.length; i--;) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1969
      activeTarget != targets[i]
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1970
        && scrollTop >= offsets[i]
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1971
        && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1972
        && this.activate(targets[i])
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1973
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1974
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1975
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1976
  ScrollSpy.prototype.activate = function (target) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1977
    this.activeTarget = target
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1978
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1979
    this.clear()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1980
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1981
    var selector = this.selector +
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1982
      '[data-target="' + target + '"],' +
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1983
      this.selector + '[href="' + target + '"]'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1984
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1985
    var active = $(selector)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1986
      .parents('li')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1987
      .addClass('active')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1988
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1989
    if (active.parent('.dropdown-menu').length) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1990
      active = active
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1991
        .closest('li.dropdown')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1992
        .addClass('active')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1993
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1994
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1995
    active.trigger('activate.bs.scrollspy')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1996
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1997
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1998
  ScrollSpy.prototype.clear = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1999
    $(this.selector)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2000
      .parentsUntil(this.options.target, '.active')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2001
      .removeClass('active')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2002
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2003
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2004
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2005
  // SCROLLSPY PLUGIN DEFINITION
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2006
  // ===========================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2007
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2008
  function Plugin(option) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2009
    return this.each(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2010
      var $this   = $(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2011
      var data    = $this.data('bs.scrollspy')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2012
      var options = typeof option == 'object' && option
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2013
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2014
      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2015
      if (typeof option == 'string') data[option]()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2016
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2017
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2018
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2019
  var old = $.fn.scrollspy
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2020
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2021
  $.fn.scrollspy             = Plugin
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2022
  $.fn.scrollspy.Constructor = ScrollSpy
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2023
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2024
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2025
  // SCROLLSPY NO CONFLICT
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2026
  // =====================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2027
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2028
  $.fn.scrollspy.noConflict = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2029
    $.fn.scrollspy = old
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2030
    return this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2031
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2032
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2033
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2034
  // SCROLLSPY DATA-API
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2035
  // ==================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2036
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2037
  $(window).on('load.bs.scrollspy.data-api', function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2038
    $('[data-spy="scroll"]').each(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2039
      var $spy = $(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2040
      Plugin.call($spy, $spy.data())
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2041
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2042
  })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2043
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2044
}(jQuery);
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2045
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2046
/* ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2047
 * Bootstrap: tab.js v3.3.5
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2048
 * http://getbootstrap.com/javascript/#tabs
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2049
 * ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2050
 * Copyright 2011-2015 Twitter, Inc.
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2051
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2052
 * ======================================================================== */
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2053
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2054
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2055
+function ($) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2056
  'use strict';
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2057
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2058
  // TAB CLASS DEFINITION
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2059
  // ====================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2060
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2061
  var Tab = function (element) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2062
    // jscs:disable requireDollarBeforejQueryAssignment
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2063
    this.element = $(element)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2064
    // jscs:enable requireDollarBeforejQueryAssignment
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2065
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2066
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2067
  Tab.VERSION = '3.3.5'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2068
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2069
  Tab.TRANSITION_DURATION = 150
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2070
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2071
  Tab.prototype.show = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2072
    var $this    = this.element
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2073
    var $ul      = $this.closest('ul:not(.dropdown-menu)')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2074
    var selector = $this.data('target')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2075
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2076
    if (!selector) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2077
      selector = $this.attr('href')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2078
      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2079
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2080
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2081
    if ($this.parent('li').hasClass('active')) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2082
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2083
    var $previous = $ul.find('.active:last a')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2084
    var hideEvent = $.Event('hide.bs.tab', {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2085
      relatedTarget: $this[0]
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2086
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2087
    var showEvent = $.Event('show.bs.tab', {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2088
      relatedTarget: $previous[0]
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2089
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2090
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2091
    $previous.trigger(hideEvent)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2092
    $this.trigger(showEvent)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2093
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2094
    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2095
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2096
    var $target = $(selector)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2097
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2098
    this.activate($this.closest('li'), $ul)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2099
    this.activate($target, $target.parent(), function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2100
      $previous.trigger({
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2101
        type: 'hidden.bs.tab',
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2102
        relatedTarget: $this[0]
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2103
      })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2104
      $this.trigger({
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2105
        type: 'shown.bs.tab',
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2106
        relatedTarget: $previous[0]
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2107
      })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2108
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2109
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2110
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2111
  Tab.prototype.activate = function (element, container, callback) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2112
    var $active    = container.find('> .active')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2113
    var transition = callback
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2114
      && $.support.transition
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2115
      && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2116
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2117
    function next() {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2118
      $active
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2119
        .removeClass('active')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2120
        .find('> .dropdown-menu > .active')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2121
          .removeClass('active')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2122
        .end()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2123
        .find('[data-toggle="tab"]')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2124
          .attr('aria-expanded', false)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2125
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2126
      element
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2127
        .addClass('active')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2128
        .find('[data-toggle="tab"]')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2129
          .attr('aria-expanded', true)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2130
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2131
      if (transition) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2132
        element[0].offsetWidth // reflow for transition
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2133
        element.addClass('in')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2134
      } else {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2135
        element.removeClass('fade')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2136
      }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2137
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2138
      if (element.parent('.dropdown-menu').length) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2139
        element
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2140
          .closest('li.dropdown')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2141
            .addClass('active')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2142
          .end()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2143
          .find('[data-toggle="tab"]')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2144
            .attr('aria-expanded', true)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2145
      }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2146
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2147
      callback && callback()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2148
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2149
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2150
    $active.length && transition ?
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2151
      $active
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2152
        .one('bsTransitionEnd', next)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2153
        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2154
      next()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2155
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2156
    $active.removeClass('in')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2157
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2158
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2159
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2160
  // TAB PLUGIN DEFINITION
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2161
  // =====================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2162
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2163
  function Plugin(option) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2164
    return this.each(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2165
      var $this = $(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2166
      var data  = $this.data('bs.tab')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2167
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2168
      if (!data) $this.data('bs.tab', (data = new Tab(this)))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2169
      if (typeof option == 'string') data[option]()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2170
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2171
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2172
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2173
  var old = $.fn.tab
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2174
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2175
  $.fn.tab             = Plugin
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2176
  $.fn.tab.Constructor = Tab
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2177
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2178
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2179
  // TAB NO CONFLICT
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2180
  // ===============
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2181
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2182
  $.fn.tab.noConflict = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2183
    $.fn.tab = old
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2184
    return this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2185
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2186
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2187
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2188
  // TAB DATA-API
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2189
  // ============
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2190
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2191
  var clickHandler = function (e) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2192
    e.preventDefault()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2193
    Plugin.call($(this), 'show')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2194
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2195
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2196
  $(document)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2197
    .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2198
    .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2199
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2200
}(jQuery);
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2201
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2202
/* ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2203
 * Bootstrap: affix.js v3.3.5
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2204
 * http://getbootstrap.com/javascript/#affix
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2205
 * ========================================================================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2206
 * Copyright 2011-2015 Twitter, Inc.
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2207
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2208
 * ======================================================================== */
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2209
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2210
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2211
+function ($) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2212
  'use strict';
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2213
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2214
  // AFFIX CLASS DEFINITION
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2215
  // ======================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2216
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2217
  var Affix = function (element, options) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2218
    this.options = $.extend({}, Affix.DEFAULTS, options)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2219
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2220
    this.$target = $(this.options.target)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2221
      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2222
      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2223
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2224
    this.$element     = $(element)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2225
    this.affixed      = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2226
    this.unpin        = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2227
    this.pinnedOffset = null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2228
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2229
    this.checkPosition()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2230
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2231
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2232
  Affix.VERSION  = '3.3.5'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2233
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2234
  Affix.RESET    = 'affix affix-top affix-bottom'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2235
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2236
  Affix.DEFAULTS = {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2237
    offset: 0,
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2238
    target: window
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2239
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2240
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2241
  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2242
    var scrollTop    = this.$target.scrollTop()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2243
    var position     = this.$element.offset()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2244
    var targetHeight = this.$target.height()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2245
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2246
    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2247
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2248
    if (this.affixed == 'bottom') {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2249
      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2250
      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2251
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2252
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2253
    var initializing   = this.affixed == null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2254
    var colliderTop    = initializing ? scrollTop : position.top
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2255
    var colliderHeight = initializing ? targetHeight : height
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2256
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2257
    if (offsetTop != null && scrollTop <= offsetTop) return 'top'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2258
    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2259
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2260
    return false
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2261
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2262
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2263
  Affix.prototype.getPinnedOffset = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2264
    if (this.pinnedOffset) return this.pinnedOffset
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2265
    this.$element.removeClass(Affix.RESET).addClass('affix')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2266
    var scrollTop = this.$target.scrollTop()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2267
    var position  = this.$element.offset()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2268
    return (this.pinnedOffset = position.top - scrollTop)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2269
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2270
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2271
  Affix.prototype.checkPositionWithEventLoop = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2272
    setTimeout($.proxy(this.checkPosition, this), 1)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2273
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2274
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2275
  Affix.prototype.checkPosition = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2276
    if (!this.$element.is(':visible')) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2277
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2278
    var height       = this.$element.height()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2279
    var offset       = this.options.offset
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2280
    var offsetTop    = offset.top
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2281
    var offsetBottom = offset.bottom
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2282
    var scrollHeight = Math.max($(document).height(), $(document.body).height())
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2283
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2284
    if (typeof offset != 'object')         offsetBottom = offsetTop = offset
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2285
    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2286
    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2287
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2288
    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2289
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2290
    if (this.affixed != affix) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2291
      if (this.unpin != null) this.$element.css('top', '')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2292
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2293
      var affixType = 'affix' + (affix ? '-' + affix : '')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2294
      var e         = $.Event(affixType + '.bs.affix')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2295
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2296
      this.$element.trigger(e)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2297
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2298
      if (e.isDefaultPrevented()) return
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2299
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2300
      this.affixed = affix
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2301
      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2302
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2303
      this.$element
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2304
        .removeClass(Affix.RESET)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2305
        .addClass(affixType)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2306
        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2307
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2308
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2309
    if (affix == 'bottom') {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2310
      this.$element.offset({
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2311
        top: scrollHeight - height - offsetBottom
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2312
      })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2313
    }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2314
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2315
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2316
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2317
  // AFFIX PLUGIN DEFINITION
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2318
  // =======================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2319
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2320
  function Plugin(option) {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2321
    return this.each(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2322
      var $this   = $(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2323
      var data    = $this.data('bs.affix')
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2324
      var options = typeof option == 'object' && option
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2325
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2326
      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2327
      if (typeof option == 'string') data[option]()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2328
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2329
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2330
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2331
  var old = $.fn.affix
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2332
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2333
  $.fn.affix             = Plugin
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2334
  $.fn.affix.Constructor = Affix
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2335
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2336
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2337
  // AFFIX NO CONFLICT
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2338
  // =================
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2339
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2340
  $.fn.affix.noConflict = function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2341
    $.fn.affix = old
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2342
    return this
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2343
  }
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2344
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2345
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2346
  // AFFIX DATA-API
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2347
  // ==============
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2348
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2349
  $(window).on('load', function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2350
    $('[data-spy="affix"]').each(function () {
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2351
      var $spy = $(this)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2352
      var data = $spy.data()
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2353
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2354
      data.offset = data.offset || {}
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2355
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2356
      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2357
      if (data.offsetTop    != null) data.offset.top    = data.offsetTop
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2358
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2359
      Plugin.call($spy, data)
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2360
    })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2361
  })
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2362
af15590802a4 add a lot of files
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2363
}(jQuery);