| 
									
										
										
										
											2011-09-11 13:24:31 +08:00
										 |  |  | /* ========================================================= | 
					
						
							| 
									
										
										
										
											2013-03-01 12:55:14 +08:00
										 |  |  |  * bootstrap-modal.js v2.3.1 | 
					
						
							| 
									
										
										
										
											2012-01-25 03:08:03 +08:00
										 |  |  |  * http://twitter.github.com/bootstrap/javascript.html#modals
 | 
					
						
							| 
									
										
										
										
											2011-09-11 13:24:31 +08:00
										 |  |  |  * ========================================================= | 
					
						
							| 
									
										
										
										
											2012-01-15 15:28:48 +08:00
										 |  |  |  * Copyright 2012 Twitter, Inc. | 
					
						
							| 
									
										
										
										
											2011-09-11 13:24:31 +08:00
										 |  |  |  * | 
					
						
							|  |  |  |  * 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. | 
					
						
							|  |  |  |  * ========================================================= */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-04-15 07:29:53 +08:00
										 |  |  | !function ($) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   "use strict"; // jshint ;_;
 | 
					
						
							| 
									
										
										
										
											2011-08-27 14:57:35 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-21 10:19:50 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-25 12:04:07 +08:00
										 |  |  |  /* MODAL CLASS DEFINITION | 
					
						
							|  |  |  |   * ====================== */ | 
					
						
							| 
									
										
										
										
											2011-08-27 14:57:35 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-07-23 09:28:39 +08:00
										 |  |  |   var Modal = function (element, options) { | 
					
						
							| 
									
										
										
										
											2012-02-06 16:17:31 +08:00
										 |  |  |     this.options = options | 
					
						
							| 
									
										
										
										
											2012-07-23 09:28:39 +08:00
										 |  |  |     this.$element = $(element) | 
					
						
							| 
									
										
										
										
											2011-11-25 12:04:07 +08:00
										 |  |  |       .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)) | 
					
						
							| 
									
										
										
										
											2012-06-04 12:26:54 +08:00
										 |  |  |     this.options.remote && this.$element.find('.modal-body').load(this.options.remote) | 
					
						
							| 
									
										
										
										
											2011-08-27 14:57:35 +08:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   Modal.prototype = { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-01 14:42:22 +08:00
										 |  |  |       constructor: Modal | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     , toggle: function () { | 
					
						
							| 
									
										
										
										
											2011-09-12 11:08:43 +08:00
										 |  |  |         return this[!this.isShown ? 'show' : 'hide']() | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2011-09-11 13:14:57 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-12 11:08:43 +08:00
										 |  |  |     , show: function () { | 
					
						
							|  |  |  |         var that = this | 
					
						
							| 
									
										
										
										
											2012-03-25 08:50:21 +08:00
										 |  |  |           , e = $.Event('show') | 
					
						
							| 
									
										
										
										
											2011-11-25 12:04:07 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-03-25 08:50:21 +08:00
										 |  |  |         this.$element.trigger(e) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (this.isShown || e.isDefaultPrevented()) return | 
					
						
							| 
									
										
										
										
											2011-11-25 12:04:07 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-12 11:08:43 +08:00
										 |  |  |         this.isShown = true | 
					
						
							| 
									
										
										
										
											2011-09-11 09:13:37 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-17 10:09:57 +08:00
										 |  |  |         this.escape() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         this.backdrop(function () { | 
					
						
							| 
									
										
										
										
											2011-11-21 10:19:50 +08:00
										 |  |  |           var transition = $.support.transition && that.$element.hasClass('fade') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-04-15 07:29:53 +08:00
										 |  |  |           if (!that.$element.parent().length) { | 
					
						
							|  |  |  |             that.$element.appendTo(document.body) //don't move modals dom position
 | 
					
						
							|  |  |  |           } | 
					
						
							| 
									
										
										
										
											2012-01-09 06:36:41 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-20 15:25:25 +08:00
										 |  |  |           that.$element.show() | 
					
						
							| 
									
										
										
										
											2011-11-21 10:19:50 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |           if (transition) { | 
					
						
							|  |  |  |             that.$element[0].offsetWidth // force reflow
 | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-08-02 11:11:16 +08:00
										 |  |  |           that.$element | 
					
						
							|  |  |  |             .addClass('in') | 
					
						
							|  |  |  |             .attr('aria-hidden', false) | 
					
						
							| 
									
										
										
										
											2011-11-21 10:19:50 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-17 10:09:57 +08:00
										 |  |  |           that.enforceFocus() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-21 10:19:50 +08:00
										 |  |  |           transition ? | 
					
						
							| 
									
										
										
										
											2012-10-17 00:27:43 +08:00
										 |  |  |             that.$element.one($.support.transition.end, function () { that.$element.focus().trigger('shown') }) : | 
					
						
							|  |  |  |             that.$element.focus().trigger('shown') | 
					
						
							| 
									
										
										
										
											2011-11-21 10:19:50 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         }) | 
					
						
							| 
									
										
										
										
											2011-09-12 11:08:43 +08:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2011-09-10 13:47:49 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-04-15 07:29:53 +08:00
										 |  |  |     , hide: function (e) { | 
					
						
							| 
									
										
										
										
											2011-09-12 11:08:43 +08:00
										 |  |  |         e && e.preventDefault() | 
					
						
							| 
									
										
										
										
											2011-08-27 14:57:35 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-12 11:08:43 +08:00
										 |  |  |         var that = this | 
					
						
							| 
									
										
										
										
											2012-03-25 08:50:21 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         e = $.Event('hide') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         this.$element.trigger(e) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (!this.isShown || e.isDefaultPrevented()) return | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-12 11:08:43 +08:00
										 |  |  |         this.isShown = false | 
					
						
							| 
									
										
										
										
											2011-08-27 14:57:35 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-17 10:09:57 +08:00
										 |  |  |         this.escape() | 
					
						
							| 
									
										
										
										
											2012-05-17 10:43:22 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $(document).off('focusin.modal') | 
					
						
							| 
									
										
										
										
											2011-08-27 14:57:35 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-08-02 11:11:16 +08:00
										 |  |  |         this.$element | 
					
						
							|  |  |  |           .removeClass('in') | 
					
						
							|  |  |  |           .attr('aria-hidden', true) | 
					
						
							| 
									
										
										
										
											2011-08-27 14:57:35 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-12 11:08:43 +08:00
										 |  |  |         $.support.transition && this.$element.hasClass('fade') ? | 
					
						
							| 
									
										
										
										
											2012-05-17 10:09:57 +08:00
										 |  |  |           this.hideWithTransition() : | 
					
						
							|  |  |  |           this.hideModal() | 
					
						
							| 
									
										
										
										
											2011-09-12 11:08:43 +08:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2011-08-27 14:57:35 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-17 10:09:57 +08:00
										 |  |  |     , enforceFocus: function () { | 
					
						
							|  |  |  |         var that = this | 
					
						
							|  |  |  |         $(document).on('focusin.modal', function (e) { | 
					
						
							|  |  |  |           if (that.$element[0] !== e.target && !that.$element.has(e.target).length) { | 
					
						
							|  |  |  |             that.$element.focus() | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2011-11-21 10:19:50 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-17 10:09:57 +08:00
										 |  |  |     , escape: function () { | 
					
						
							|  |  |  |         var that = this | 
					
						
							|  |  |  |         if (this.isShown && this.options.keyboard) { | 
					
						
							| 
									
										
										
										
											2012-08-02 11:11:16 +08:00
										 |  |  |           this.$element.on('keyup.dismiss.modal', function ( e ) { | 
					
						
							| 
									
										
										
										
											2012-05-17 10:09:57 +08:00
										 |  |  |             e.which == 27 && that.hide() | 
					
						
							|  |  |  |           }) | 
					
						
							|  |  |  |         } else if (!this.isShown) { | 
					
						
							| 
									
										
										
										
											2012-08-02 11:11:16 +08:00
										 |  |  |           this.$element.off('keyup.dismiss.modal') | 
					
						
							| 
									
										
										
										
											2012-05-17 10:09:57 +08:00
										 |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2011-11-21 10:19:50 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-17 10:09:57 +08:00
										 |  |  |     , hideWithTransition: function () { | 
					
						
							|  |  |  |         var that = this | 
					
						
							|  |  |  |           , timeout = setTimeout(function () { | 
					
						
							|  |  |  |               that.$element.off($.support.transition.end) | 
					
						
							|  |  |  |               that.hideModal() | 
					
						
							|  |  |  |             }, 500) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         this.$element.one($.support.transition.end, function () { | 
					
						
							|  |  |  |           clearTimeout(timeout) | 
					
						
							|  |  |  |           that.hideModal() | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2011-11-21 10:19:50 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-08 12:13:40 +08:00
										 |  |  |     , hideModal: function () { | 
					
						
							|  |  |  |         var that = this | 
					
						
							|  |  |  |         this.$element.hide() | 
					
						
							|  |  |  |         this.backdrop(function () { | 
					
						
							|  |  |  |           that.removeBackdrop() | 
					
						
							|  |  |  |           that.$element.trigger('hidden') | 
					
						
							|  |  |  |         }) | 
					
						
							| 
									
										
										
										
											2012-05-17 10:09:57 +08:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2011-11-25 12:04:07 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-17 10:09:57 +08:00
										 |  |  |     , removeBackdrop: function () { | 
					
						
							| 
									
										
										
										
											2013-03-01 13:15:33 +08:00
										 |  |  |         this.$backdrop && this.$backdrop.remove() | 
					
						
							| 
									
										
										
										
											2012-05-17 10:09:57 +08:00
										 |  |  |         this.$backdrop = null | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2011-10-05 12:48:53 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-17 10:09:57 +08:00
										 |  |  |     , backdrop: function (callback) { | 
					
						
							|  |  |  |         var that = this | 
					
						
							|  |  |  |           , animate = this.$element.hasClass('fade') ? 'fade' : '' | 
					
						
							| 
									
										
										
										
											2011-09-12 11:08:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-17 10:09:57 +08:00
										 |  |  |         if (this.isShown && this.options.backdrop) { | 
					
						
							|  |  |  |           var doAnimate = $.support.transition && animate | 
					
						
							| 
									
										
										
										
											2011-10-05 12:48:53 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-17 10:09:57 +08:00
										 |  |  |           this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />') | 
					
						
							|  |  |  |             .appendTo(document.body) | 
					
						
							| 
									
										
										
										
											2011-10-05 12:48:53 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-18 14:36:22 +08:00
										 |  |  |           this.$backdrop.click( | 
					
						
							|  |  |  |             this.options.backdrop == 'static' ? | 
					
						
							|  |  |  |               $.proxy(this.$element[0].focus, this.$element[0]) | 
					
						
							|  |  |  |             : $.proxy(this.hide, this) | 
					
						
							|  |  |  |           ) | 
					
						
							| 
									
										
										
										
											2011-10-05 12:48:53 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-17 10:09:57 +08:00
										 |  |  |           if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
 | 
					
						
							| 
									
										
										
										
											2011-10-05 12:48:53 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-17 10:09:57 +08:00
										 |  |  |           this.$backdrop.addClass('in') | 
					
						
							| 
									
										
										
										
											2011-08-27 14:57:35 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-08 11:45:42 +08:00
										 |  |  |           if (!callback) return | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-17 10:09:57 +08:00
										 |  |  |           doAnimate ? | 
					
						
							|  |  |  |             this.$backdrop.one($.support.transition.end, callback) : | 
					
						
							|  |  |  |             callback() | 
					
						
							| 
									
										
										
										
											2011-11-21 10:19:50 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-17 10:09:57 +08:00
										 |  |  |         } else if (!this.isShown && this.$backdrop) { | 
					
						
							|  |  |  |           this.$backdrop.removeClass('in') | 
					
						
							| 
									
										
										
										
											2011-08-27 14:57:35 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-17 10:09:57 +08:00
										 |  |  |           $.support.transition && this.$element.hasClass('fade')? | 
					
						
							| 
									
										
										
										
											2013-02-08 12:13:40 +08:00
										 |  |  |             this.$backdrop.one($.support.transition.end, callback) : | 
					
						
							|  |  |  |             callback() | 
					
						
							| 
									
										
										
										
											2011-10-20 12:56:06 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-17 10:09:57 +08:00
										 |  |  |         } else if (callback) { | 
					
						
							|  |  |  |           callback() | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2011-08-27 14:57:35 +08:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  /* MODAL PLUGIN DEFINITION | 
					
						
							|  |  |  |   * ======================= */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-08 06:06:01 +08:00
										 |  |  |   var old = $.fn.modal | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-04-15 07:29:53 +08:00
										 |  |  |   $.fn.modal = function (option) { | 
					
						
							| 
									
										
										
										
											2011-11-25 12:04:07 +08:00
										 |  |  |     return this.each(function () { | 
					
						
							|  |  |  |       var $this = $(this) | 
					
						
							|  |  |  |         , data = $this.data('modal') | 
					
						
							| 
									
										
										
										
											2012-02-13 03:15:12 +08:00
										 |  |  |         , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option) | 
					
						
							| 
									
										
										
										
											2011-11-25 12:04:07 +08:00
										 |  |  |       if (!data) $this.data('modal', (data = new Modal(this, options))) | 
					
						
							|  |  |  |       if (typeof option == 'string') data[option]() | 
					
						
							| 
									
										
										
										
											2012-02-06 16:17:31 +08:00
										 |  |  |       else if (options.show) data.show() | 
					
						
							| 
									
										
										
										
											2011-11-25 12:04:07 +08:00
										 |  |  |     }) | 
					
						
							| 
									
										
										
										
											2011-08-27 14:57:35 +08:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-28 04:03:06 +08:00
										 |  |  |   $.fn.modal.defaults = { | 
					
						
							| 
									
										
										
										
											2011-11-25 12:04:07 +08:00
										 |  |  |       backdrop: true | 
					
						
							|  |  |  |     , keyboard: true | 
					
						
							| 
									
										
										
										
											2012-02-06 16:17:31 +08:00
										 |  |  |     , show: true | 
					
						
							| 
									
										
										
										
											2011-08-28 04:03:06 +08:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-21 15:28:48 +08:00
										 |  |  |   $.fn.modal.Constructor = Modal | 
					
						
							| 
									
										
										
										
											2011-11-25 12:04:07 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-12 11:08:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-08 06:06:01 +08:00
										 |  |  |  /* MODAL NO CONFLICT | 
					
						
							|  |  |  |   * ================= */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   $.fn.modal.noConflict = function () { | 
					
						
							|  |  |  |     $.fn.modal = old | 
					
						
							|  |  |  |     return this | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-25 12:04:07 +08:00
										 |  |  |  /* MODAL DATA-API | 
					
						
							|  |  |  |   * ============== */ | 
					
						
							| 
									
										
										
										
											2011-09-12 11:08:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-09-28 06:00:02 +08:00
										 |  |  |   $(document).on('click.modal.data-api', '[data-toggle="modal"]', function (e) { | 
					
						
							|  |  |  |     var $this = $(this) | 
					
						
							|  |  |  |       , href = $this.attr('href') | 
					
						
							|  |  |  |       , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
 | 
					
						
							|  |  |  |       , option = $target.data('modal') ? 'toggle' : $.extend({ remote:!/#/.test(href) && href }, $target.data(), $this.data()) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     e.preventDefault() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $target | 
					
						
							|  |  |  |       .modal(option) | 
					
						
							|  |  |  |       .one('hide', function () { | 
					
						
							|  |  |  |         $this.focus() | 
					
						
							|  |  |  |       }) | 
					
						
							| 
									
										
										
										
											2011-09-12 11:08:43 +08:00
										 |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-17 00:27:43 +08:00
										 |  |  | }(window.jQuery); |