add bootstrap and dynatable
[dcaas.git] / js / bootstrap.js
blob:a/js/bootstrap.js -> blob:b/js/bootstrap.js
  /*!
  * Bootstrap v3.0.3 (http://getbootstrap.com)
  * Copyright 2013 Twitter, Inc.
  * Licensed under http://www.apache.org/licenses/LICENSE-2.0
  */
   
  if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery") }
   
  /* ========================================================================
  * Bootstrap: transition.js v3.0.3
  * http://getbootstrap.com/javascript/#transitions
  * ========================================================================
  * Copyright 2013 Twitter, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ======================================================================== */
   
   
  +function ($) { "use strict";
   
  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
  // ============================================================
   
  function transitionEnd() {
  var el = document.createElement('bootstrap')
   
  var transEndEventNames = {
  'WebkitTransition' : 'webkitTransitionEnd'
  , 'MozTransition' : 'transitionend'
  , 'OTransition' : 'oTransitionEnd otransitionend'
  , 'transition' : 'transitionend'
  }
   
  for (var name in transEndEventNames) {
  if (el.style[name] !== undefined) {
  return { end: transEndEventNames[name] }
  }
  }
  }
   
  // http://blog.alexmaccaw.com/css-transitions
  $.fn.emulateTransitionEnd = function (duration) {
  var called = false, $el = this
  $(this).one($.support.transition.end, function () { called = true })
  var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
  setTimeout(callback, duration)
  return this
  }
   
  $(function () {
  $.support.transition = transitionEnd()
  })
   
  }(jQuery);
   
  /* ========================================================================
  * Bootstrap: alert.js v3.0.3
  * http://getbootstrap.com/javascript/#alerts
  * ========================================================================
  * Copyright 2013 Twitter, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ======================================================================== */
   
   
  +function ($) { "use strict";
   
  // ALERT CLASS DEFINITION
  // ======================
   
  var dismiss = '[data-dismiss="alert"]'
  var Alert = function (el) {
  $(el).on('click', dismiss, this.close)
  }
   
  Alert.prototype.close = function (e) {
  var $this = $(this)
  var selector = $this.attr('data-target')
   
  if (!selector) {
  selector = $this.attr('href')
  selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
  }
   
  var $parent = $(selector)
   
  if (e) e.preventDefault()
   
  if (!$parent.length) {
  $parent = $this.hasClass('alert') ? $this : $this.parent()
  }
   
  $parent.trigger(e = $.Event('close.bs.alert'))
   
  if (e.isDefaultPrevented()) return
   
  $parent.removeClass('in')
   
  function removeElement() {
  $parent.trigger('closed.bs.alert').remove()
  }
   
  $.support.transition && $parent.hasClass('fade') ?
  $parent
  .one($.support.transition.end, removeElement)
  .emulateTransitionEnd(150) :
  removeElement()
  }
   
   
  // ALERT PLUGIN DEFINITION
  // =======================
   
  var old = $.fn.alert
   
  $.fn.alert = function (option) {
  return this.each(function () {
  var $this = $(this)
  var data = $this.data('bs.alert')
   
  if (!data) $this.data('bs.alert', (data = new Alert(this)))
  if (typeof option == 'string') data[option].call($this)
  })
  }
   
  $.fn.alert.Constructor = Alert
   
   
  // ALERT NO CONFLICT
  // =================
   
  $.fn.alert.noConflict = function () {
  $.fn.alert = old
  return this
  }
   
   
  // ALERT DATA-API
  // ==============
   
  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
   
  }(jQuery);
   
  /* ========================================================================
  * Bootstrap: button.js v3.0.3
  * http://getbootstrap.com/javascript/#buttons
  * ========================================================================
  * Copyright 2013 Twitter, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ======================================================================== */
   
   
  +function ($) { "use strict";
   
  // BUTTON PUBLIC CLASS DEFINITION
  // ==============================
   
  var Button = function (element, options) {
  this.$element = $(element)
  this.options = $.extend({}, Button.DEFAULTS, options)
  }
   
  Button.DEFAULTS = {
  loadingText: 'loading...'
  }
   
  Button.prototype.setState = function (state) {
  var d = 'disabled'
  var $el = this.$element
  var val = $el.is('input') ? 'val' : 'html'
  var data = $el.data()
   
  state = state + 'Text'
   
  if (!data.resetText) $el.data('resetText', $el[val]())
   
  $el[val](data[state] || this.options[state])
   
  // push to event loop to allow forms to submit
  setTimeout(function () {
  state == 'loadingText' ?
  $el.addClass(d).attr(d, d) :
  $el.removeClass(d).removeAttr(d);
  }, 0)
  }
   
  Button.prototype.toggle = function () {
  var $parent = this.$element.closest('[data-toggle="buttons"]')
  var changed = true
   
  if ($parent.length) {
  var $input = this.$element.find('input')
  if ($input.prop('type') === 'radio') {
  // see if clicking on current one
  if ($input.prop('checked') && this.$element.hasClass('active'))
  changed = false
  else
  $parent.find('.active').removeClass('active')
  }
  if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
  }
   
  if (changed) this.$element.toggleClass('active')
  }
   
   
  // BUTTON PLUGIN DEFINITION
  // ========================
   
  var old = $.fn.button
   
  $.fn.button = function (option) {
  return this.each(function () {
  var $this = $(this)
  var data = $this.data('bs.button')
  var options = typeof option == 'object' && option
   
  if (!data) $this.data('bs.button', (data = new Button(this, options)))
   
  if (option == 'toggle') data.toggle()
  else if (option) data.setState(option)
  })
  }
   
  $.fn.button.Constructor = Button
   
   
  // BUTTON NO CONFLICT
  // ==================
   
  $.fn.button.noConflict = function () {
  $.fn.button = old
  return this
  }
   
   
  // BUTTON DATA-API
  // ===============
   
  $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) {
  var $btn = $(e.target)
  if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
  $btn.button('toggle')
  e.preventDefault()
  })
   
  }(jQuery);
   
  /* ========================================================================
  * Bootstrap: carousel.js v3.0.3
  * http://getbootstrap.com/javascript/#carousel
  * ========================================================================
  * Copyright 2013 Twitter, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ======================================================================== */
   
   
  +function ($) { "use strict";
   
  // CAROUSEL CLASS DEFINITION
  // =========================
   
  var Carousel = function (element, options) {
  this.$element = $(element)
  this.$indicators = this.$element.find('.carousel-indicators')
  this.options = options
  this.paused =
  this.sliding =
  this.interval =
  this.$active =
  this.$items = null
   
  this.options.pause == 'hover' && this.$element
  .on('mouseenter', $.proxy(this.pause, this))
  .on('mouseleave', $.proxy(this.cycle, this))
  }
   
  Carousel.DEFAULTS = {
  interval: 5000
  , pause: 'hover'
  , wrap: true
  }
   
  Carousel.prototype.cycle = function (e) {
  e || (this.paused = false)
   
  this.interval && clearInterval(this.interval)
   
  this.options.interval
  && !this.paused
  && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
   
  return this
  }
   
  Carousel.prototype.getActiveIndex = function () {
  this.$active = this.$element.find('.item.active')
  this.$items = this.$active.parent().children()
   
  return this.$items.index(this.$active)
  }
   
  Carousel.prototype.to = function (pos) {
  var that = this
  var activeIndex = this.getActiveIndex()
   
  if (pos > (this.$items.length - 1) || pos < 0) return
   
  if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) })
  if (activeIndex == pos) return this.pause().cycle()
   
  return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
  }
   
  Carousel.prototype.pause = function (e) {
  e || (this.paused = true)
   
  if (this.$element.find('.next, .prev').length && $.support.transition.end) {
  this.$element.trigger($.support.transition.end)
  this.cycle(true)
  }
   
  this.interval = clearInterval(this.interval)
   
  return this
  }
   
  Carousel.prototype.next = function () {
  if (this.sliding) return
  return this.slide('next')
  }
   
  Carousel.prototype.prev = function () {
  if (this.sliding) return
  return this.slide('prev')
  }
   
  Carousel.prototype.slide = function (type, next) {
  var $active = this.$element.find('.item.active')
  var $next = next || $active[type]()
  var isCycling = this.interval
  var direction = type == 'next' ? 'left' : 'right'