/* ========================================================= * bootstrap-modal.js v1.4.0 * http://twitter.github.com/bootstrap/javascript.html#modal * ========================================================= * Copyright 2011 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 (https://gist.github.com/373874) * ======================================================= */ var transitionEnd $(document).ready(function () { $.support.transition = (function () { var thisBody = document.body || document.documentElement , thisStyle = thisBody.style , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined return support })() // set CSS transition event type if ( $.support.transition ) { transitionEnd = "TransitionEnd" if ( $.browser.webkit ) { transitionEnd = "webkitTransitionEnd" } else if ( $.browser.mozilla ) { transitionEnd = "transitionend" } else if ( $.browser.opera ) { transitionEnd = "oTransitionEnd" } } }) /* MODAL PUBLIC CLASS DEFINITION * ============================= */ var Modal = function ( content, options ) { this.settings = $.extend({}, $.fn.modal.defaults, options) this.$element = $(content) .delegate('.close', 'click.modal', $.proxy(this.hide, this)) if ( this.settings.show ) { this.show() } return this } Modal.prototype = { toggle: function () { return this[!this.isShown ? 'show' : 'hide']() } , show: function () { var that = this this.isShown = true this.$element.trigger('show') escape.call(this) backdrop.call(this, function () { var transition = $.support.transition && that.$element.hasClass('fade') that.$element .appendTo(document.body) .show() if (transition) { that.$element[0].offsetWidth // force reflow } that.$element.addClass('in') transition ? that.$element.one(transitionEnd, function () { that.$element.trigger('shown') }) : that.$element.trigger('shown') }) return this } , hide: function (e) { e && e.preventDefault() if ( !this.isShown ) { return this } var that = this this.isShown = false escape.call(this) this.$element .trigger('hide') .removeClass('in') $.support.transition && this.$element.hasClass('fade') ? hideWithTransition.call(this) : hideModal.call(this) return this } } /* MODAL PRIVATE METHODS * ===================== */ function hideWithTransition() { // firefox drops transitionEnd events :{o var that = this , timeout = setTimeout(function () { that.$element.unbind(transitionEnd) hideModal.call(that) }, 500) this.$element.one(transitionEnd, function () { clearTimeout(timeout) hideModal.call(that) }) } function hideModal (that) { this.$element .hide() .trigger('hidden') backdrop.call(this) } function backdrop ( callback ) { var that = this , animate = this.$element.hasClass('fade') ? 'fade' : '' if ( this.isShown && this.settings.backdrop ) { var doAnimate = $.support.transition && animate this.$backdrop = $('