diff -r 000000000000 -r d970ebf37754 wp/wp-content/themes/IN-MOTION-package-u1/in-motion/js/jquery.nav.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wp/wp-content/themes/IN-MOTION-package-u1/in-motion/js/jquery.nav.js Wed Nov 06 03:21:17 2013 +0000 @@ -0,0 +1,135 @@ +/* + * jQuery One Page Nav Plugin + * http://github.com/davist11/jQuery-One-Page-Nav + * + * Copyright (c) 2010 Trevor Davis (http://trevordavis.net) + * Dual licensed under the MIT and GPL licenses. + * Uses the same license as jQuery, see: + * http://jquery.org/license + * + * @version 0.7 + * + * Example usage: + * $('#nav').onePageNav({ + * currentClass: 'current', + * changeHash: false, + * scrollSpeed: 750 + * }); + */ +;(function($) { + $.fn.onePageNav = function(options) { + var opts = $.extend({}, $.fn.onePageNav.defaults, options), + onePageNav = {}; + + onePageNav.sections = {}; + + onePageNav.bindNav = function($el, $this, o) { + var $par = $el.parent(), + newLoc = $el.attr('href'), + $win = $(window); + + if(!$par.hasClass(o.currentClass)) { + if(o.begin) { + o.begin(); + } + onePageNav.adjustNav($this, $par, o.currentClass); + $win.unbind('.onePageNav'); + $.scrollTo(newLoc, o.scrollSpeed, { + offset: { + top: -o.scrollOffset + }, + onAfter: function() { + if(o.changeHash) { + window.location.hash = newLoc; + } + $win.bind('scroll.onePageNav', function() { + onePageNav.scrollChange($this, o); + }); + if(o.end) { + o.end(); + } + } + }); + } + }; + + onePageNav.adjustNav = function($this, $el, curClass) { + $this.find('.'+curClass).removeClass(curClass); + $el.addClass(curClass); + }; + + onePageNav.getPositions = function($this, o) { + $this.find('a').each(function() { + var linkHref = $(this).attr('href'), + divPos = $(linkHref).offset(), + topPos = divPos.top; + + onePageNav.sections[linkHref.substr(1)] = Math.round(topPos) - o.scrollOffset; + }); + }; + + onePageNav.getSection = function(windowPos) { + var returnValue = '', + windowHeight = Math.round($(window).height() / 2); + + for(var section in onePageNav.sections) { + if((onePageNav.sections[section] - windowHeight) < windowPos) { + returnValue = section; + } + } + return returnValue; + }; + + onePageNav.scrollChange = function($this, o) { + onePageNav.getPositions($this, o); + + var windowTop = $(window).scrollTop(), + position = onePageNav.getSection(windowTop); + + if(position !== '') { + onePageNav.adjustNav($this,$this.find('a[href=#'+position+']').parent(), o.currentClass); + } + }; + + onePageNav.init = function($this, o) { + var didScroll = false; + + $this.find('a').bind('click', function(e) { + onePageNav.bindNav($(this), $this, o); + e.preventDefault(); + }); + + onePageNav.getPositions($this, o); + + $(window).bind('scroll.onePageNav', function() { + didScroll = true; + }); + + setInterval(function() { + if(didScroll) { + didScroll = false; + onePageNav.scrollChange($this, o); + } + }, 250); + }; + + return this.each(function() { + var $this = $(this), + o = $.meta ? $.extend({}, opts, $this.data()) : opts; + + onePageNav.init($this, o); + + }); + }; + + // default options + $.fn.onePageNav.defaults = { + currentClass: 'current', + changeHash: false, + scrollSpeed: 0, + scrollOffset: 0, + begin: false, + end: false + }; + +})(jQuery); \ No newline at end of file