| 
									
										
										
										
											2011-11-28 09:04:55 +08:00
										 |  |  | /* ======================================================== | 
					
						
							| 
									
										
										
										
											2012-01-25 03:08:03 +08:00
										 |  |  |  * bootstrap-tab.js v2.0.0 | 
					
						
							| 
									
										
										
										
											2011-11-28 09:04:55 +08:00
										 |  |  |  * http://twitter.github.com/bootstrap/javascript.html#tabs
 | 
					
						
							|  |  |  |  * ======================================================== | 
					
						
							| 
									
										
										
										
											2012-01-15 15:28:48 +08:00
										 |  |  |  * Copyright 2012 Twitter, Inc. | 
					
						
							| 
									
										
										
										
											2011-11-28 09:04:55 +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. | 
					
						
							|  |  |  |  * ======================================================== */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | !function( $ ){ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   "use strict" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  /* TAB CLASS DEFINITION | 
					
						
							|  |  |  |   * ==================== */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   var Tab = function ( element ) { | 
					
						
							|  |  |  |     this.element = $(element) | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   Tab.prototype = { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-01 14:42:22 +08:00
										 |  |  |     constructor: Tab | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   , show: function () { | 
					
						
							| 
									
										
										
										
											2011-11-28 09:04:55 +08:00
										 |  |  |       var $this = this.element | 
					
						
							|  |  |  |         , $ul = $this.closest('ul:not(.dropdown-menu)') | 
					
						
							|  |  |  |         , href = $this.attr('data-target') || $this.attr('href') | 
					
						
							|  |  |  |         , previous | 
					
						
							|  |  |  |         , $href | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       if ( $this.parent('li').hasClass('active') ) return | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       previous = $ul.find('.active a').last()[0] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       $this.trigger({ | 
					
						
							|  |  |  |         type: 'show' | 
					
						
							|  |  |  |       , relatedTarget: previous | 
					
						
							|  |  |  |       }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       $href = $(href) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       this.activate($this.parent('li'), $ul) | 
					
						
							| 
									
										
										
										
											2011-12-21 11:37:41 +08:00
										 |  |  |       this.activate($href, $href.parent(), function () { | 
					
						
							|  |  |  |         $this.trigger({ | 
					
						
							|  |  |  |           type: 'shown' | 
					
						
							|  |  |  |         , relatedTarget: previous | 
					
						
							|  |  |  |         }) | 
					
						
							| 
									
										
										
										
											2011-11-28 09:04:55 +08:00
										 |  |  |       }) | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-21 11:37:41 +08:00
										 |  |  |   , activate: function ( element, container, callback) { | 
					
						
							|  |  |  |       var $active = container.find('> .active') | 
					
						
							|  |  |  |         , transition = callback | 
					
						
							|  |  |  |             && $.support.transition | 
					
						
							|  |  |  |             && $active.hasClass('fade') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       function next() { | 
					
						
							|  |  |  |         $active | 
					
						
							|  |  |  |           .removeClass('active') | 
					
						
							|  |  |  |           .find('> .dropdown-menu > .active') | 
					
						
							|  |  |  |           .removeClass('active') | 
					
						
							| 
									
										
										
										
											2011-11-28 09:04:55 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-21 11:37:41 +08:00
										 |  |  |         element.addClass('active') | 
					
						
							| 
									
										
										
										
											2011-11-28 09:04:55 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-21 11:37:41 +08:00
										 |  |  |         if (transition) { | 
					
						
							|  |  |  |           element[0].offsetWidth // reflow for transition
 | 
					
						
							|  |  |  |           element.addClass('in') | 
					
						
							| 
									
										
										
										
											2012-01-09 04:08:00 +08:00
										 |  |  |         } else { | 
					
						
							|  |  |  |           element.removeClass('fade') | 
					
						
							| 
									
										
										
										
											2011-12-21 11:37:41 +08:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if ( element.parent('.dropdown-menu') ) { | 
					
						
							|  |  |  |           element.closest('li.dropdown').addClass('active') | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         callback && callback() | 
					
						
							| 
									
										
										
										
											2011-11-28 09:04:55 +08:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2011-12-21 11:37:41 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |       transition ? | 
					
						
							|  |  |  |         $active.one($.support.transition.end, next) : | 
					
						
							|  |  |  |         next() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       $active.removeClass('in') | 
					
						
							| 
									
										
										
										
											2011-11-28 09:04:55 +08:00
										 |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  /* TAB PLUGIN DEFINITION | 
					
						
							|  |  |  |   * ===================== */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-21 10:02:47 +08:00
										 |  |  |   $.fn.tab = function ( option ) { | 
					
						
							| 
									
										
										
										
											2011-11-28 09:04:55 +08:00
										 |  |  |     return this.each(function () { | 
					
						
							|  |  |  |       var $this = $(this) | 
					
						
							|  |  |  |         , data = $this.data('tab') | 
					
						
							|  |  |  |       if (!data) $this.data('tab', (data = new Tab(this))) | 
					
						
							|  |  |  |       if (typeof option == 'string') data[option]() | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-21 15:28:48 +08:00
										 |  |  |   $.fn.tab.Constructor = Tab | 
					
						
							| 
									
										
										
										
											2011-11-28 09:04:55 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  /* TAB DATA-API | 
					
						
							|  |  |  |   * ============ */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-21 10:02:47 +08:00
										 |  |  |   $(function () { | 
					
						
							|  |  |  |     $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) { | 
					
						
							| 
									
										
										
										
											2011-11-28 09:04:55 +08:00
										 |  |  |       e.preventDefault() | 
					
						
							|  |  |  |       $(this).tab('show') | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-21 10:02:47 +08:00
										 |  |  | }( window.jQuery ) |