| 
									
										
										
										
											2011-09-11 13:14:57 +08:00
										 |  |  | /* ============================================================= | 
					
						
							| 
									
										
										
										
											2012-03-13 05:09:38 +08:00
										 |  |  |  * bootstrap-scrollspy.js v2.0.2 | 
					
						
							| 
									
										
										
										
											2011-09-11 13:14:57 +08:00
										 |  |  |  * http://twitter.github.com/bootstrap/javascript.html#scrollspy
 | 
					
						
							|  |  |  |  * ============================================================= | 
					
						
							| 
									
										
										
										
											2012-01-15 15:28:48 +08:00
										 |  |  |  * Copyright 2012 Twitter, Inc. | 
					
						
							| 
									
										
										
										
											2011-09-11 13:14:57 +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. | 
					
						
							| 
									
										
										
										
											2011-09-11 13:24:31 +08:00
										 |  |  |  * ============================================================== */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-11 13:14:57 +08:00
										 |  |  | !function ( $ ) { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-25 12:27:18 +08:00
										 |  |  |   "use strict" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* SCROLLSPY CLASS DEFINITION | 
					
						
							|  |  |  |    * ========================== */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-22 13:35:20 +08:00
										 |  |  |   function ScrollSpy( element, options) { | 
					
						
							| 
									
										
										
										
											2011-10-20 14:12:50 +08:00
										 |  |  |     var process = $.proxy(this.process, this) | 
					
						
							| 
									
										
										
										
											2012-01-25 14:33:33 +08:00
										 |  |  |       , $element = $(element).is('body') ? $(window) : $(element) | 
					
						
							| 
									
										
										
										
											2012-01-28 17:35:13 +08:00
										 |  |  |       , href | 
					
						
							| 
									
										
										
										
											2012-01-22 13:35:20 +08:00
										 |  |  |     this.options = $.extend({}, $.fn.scrollspy.defaults, options) | 
					
						
							| 
									
										
										
										
											2012-01-25 14:33:33 +08:00
										 |  |  |     this.$scrollElement = $element.on('scroll.scroll.data-api', process) | 
					
						
							|  |  |  |     this.selector = (this.options.target | 
					
						
							| 
									
										
										
										
											2012-01-28 17:35:13 +08:00
										 |  |  |       || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
 | 
					
						
							| 
									
										
										
										
											2011-11-28 09:04:55 +08:00
										 |  |  |       || '') + ' .nav li > a' | 
					
						
							| 
									
										
										
										
											2011-12-21 10:02:47 +08:00
										 |  |  |     this.$body = $('body').on('click.scroll.data-api', this.selector, process) | 
					
						
							| 
									
										
										
										
											2011-09-12 11:08:43 +08:00
										 |  |  |     this.refresh() | 
					
						
							| 
									
										
										
										
											2011-10-20 14:12:50 +08:00
										 |  |  |     this.process() | 
					
						
							| 
									
										
										
										
											2011-09-11 13:14:57 +08:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ScrollSpy.prototype = { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-01 14:42:22 +08:00
										 |  |  |       constructor: ScrollSpy | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     , refresh: function () { | 
					
						
							| 
									
										
										
										
											2011-11-21 12:58:04 +08:00
										 |  |  |         this.targets = this.$body | 
					
						
							|  |  |  |           .find(this.selector) | 
					
						
							|  |  |  |           .map(function () { | 
					
						
							|  |  |  |             var href = $(this).attr('href') | 
					
						
							|  |  |  |             return /^#\w/.test(href) && $(href).length ? href : null | 
					
						
							|  |  |  |           }) | 
					
						
							| 
									
										
										
										
											2011-09-11 13:14:57 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         this.offsets = $.map(this.targets, function (id) { | 
					
						
							| 
									
										
										
										
											2011-11-21 12:58:04 +08:00
										 |  |  |           return $(id).position().top | 
					
						
							| 
									
										
										
										
											2011-09-11 13:14:57 +08:00
										 |  |  |         }) | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-20 14:12:50 +08:00
										 |  |  |     , process: function () { | 
					
						
							| 
									
										
										
										
											2012-01-22 13:35:20 +08:00
										 |  |  |         var scrollTop = this.$scrollElement.scrollTop() + this.options.offset | 
					
						
							| 
									
										
										
										
											2011-09-11 13:14:57 +08:00
										 |  |  |           , offsets = this.offsets | 
					
						
							|  |  |  |           , targets = this.targets | 
					
						
							|  |  |  |           , activeTarget = this.activeTarget | 
					
						
							|  |  |  |           , i | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         for (i = offsets.length; i--;) { | 
					
						
							|  |  |  |           activeTarget != targets[i] | 
					
						
							|  |  |  |             && scrollTop >= offsets[i] | 
					
						
							|  |  |  |             && (!offsets[i + 1] || scrollTop <= offsets[i + 1]) | 
					
						
							| 
									
										
										
										
											2011-10-20 14:12:50 +08:00
										 |  |  |             && this.activate( targets[i] ) | 
					
						
							| 
									
										
										
										
											2011-09-11 13:14:57 +08:00
										 |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-20 14:12:50 +08:00
										 |  |  |     , activate: function (target) { | 
					
						
							|  |  |  |         var active | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-11 13:14:57 +08:00
										 |  |  |         this.activeTarget = target | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-21 12:58:04 +08:00
										 |  |  |         this.$body | 
					
						
							| 
									
										
										
										
											2011-09-12 11:08:43 +08:00
										 |  |  |           .find(this.selector).parent('.active') | 
					
						
							| 
									
										
										
										
											2011-09-11 13:14:57 +08:00
										 |  |  |           .removeClass('active') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-21 12:58:04 +08:00
										 |  |  |         active = this.$body | 
					
						
							| 
									
										
										
										
											2011-09-12 11:08:43 +08:00
										 |  |  |           .find(this.selector + '[href="' + target + '"]') | 
					
						
							| 
									
										
										
										
											2011-09-11 13:14:57 +08:00
										 |  |  |           .parent('li') | 
					
						
							|  |  |  |           .addClass('active') | 
					
						
							| 
									
										
										
										
											2011-10-20 14:12:50 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if ( active.parent('.dropdown-menu') )  { | 
					
						
							|  |  |  |           active.closest('li.dropdown').addClass('active') | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-09-11 13:14:57 +08:00
										 |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-25 12:27:18 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |  /* SCROLLSPY PLUGIN DEFINITION | 
					
						
							|  |  |  |   * =========================== */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   $.fn.scrollspy = function ( option ) { | 
					
						
							|  |  |  |     return this.each(function () { | 
					
						
							|  |  |  |       var $this = $(this) | 
					
						
							|  |  |  |         , data = $this.data('scrollspy') | 
					
						
							| 
									
										
										
										
											2012-01-22 13:35:20 +08:00
										 |  |  |         , options = typeof option == 'object' && option | 
					
						
							|  |  |  |       if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options))) | 
					
						
							| 
									
										
										
										
											2011-11-25 12:27:18 +08:00
										 |  |  |       if (typeof option == 'string') data[option]() | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-21 15:28:48 +08:00
										 |  |  |   $.fn.scrollspy.Constructor = ScrollSpy | 
					
						
							| 
									
										
										
										
											2011-11-25 12:27:18 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-22 13:35:20 +08:00
										 |  |  |   $.fn.scrollspy.defaults = { | 
					
						
							|  |  |  |     offset: 10 | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-25 12:27:18 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |  /* SCROLLSPY DATA-API | 
					
						
							| 
									
										
										
										
											2012-01-25 14:33:33 +08:00
										 |  |  |   * ================== */ | 
					
						
							| 
									
										
										
										
											2011-11-25 12:27:18 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-22 13:35:20 +08:00
										 |  |  |   $(function () { | 
					
						
							| 
									
										
										
										
											2012-01-25 14:33:33 +08:00
										 |  |  |     $('[data-spy="scroll"]').each(function () { | 
					
						
							|  |  |  |       var $spy = $(this) | 
					
						
							|  |  |  |       $spy.scrollspy($spy.data()) | 
					
						
							|  |  |  |     }) | 
					
						
							| 
									
										
										
										
											2012-01-22 13:35:20 +08:00
										 |  |  |   }) | 
					
						
							| 
									
										
										
										
											2011-09-12 11:08:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-14 10:41:02 +08:00
										 |  |  | }( window.jQuery ); |