wp/wp-content/themes/IN-MOTION-package-u1/in-motion/js/jquery.nav.js
author ymh <ymh.work@gmail.com>
Wed, 06 Nov 2013 03:21:17 +0000
changeset 0 d970ebf37754
permissions -rwxr-xr-x
first import
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
/*
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
 * jQuery One Page Nav Plugin
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
 * http://github.com/davist11/jQuery-One-Page-Nav
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
 * Copyright (c) 2010 Trevor Davis (http://trevordavis.net)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
 * Dual licensed under the MIT and GPL licenses.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
 * Uses the same license as jQuery, see:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
 * http://jquery.org/license
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
 * @version 0.7
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
 * Example usage:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
 * $('#nav').onePageNav({
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
 *   currentClass: 'current',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
 *   changeHash: false,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
 *   scrollSpeed: 750
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
 * });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
;(function($) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
  $.fn.onePageNav = function(options) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
    var opts = $.extend({}, $.fn.onePageNav.defaults, options),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
        onePageNav = {};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
    onePageNav.sections = {};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
    onePageNav.bindNav = function($el, $this, o) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
      var $par = $el.parent(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
          newLoc = $el.attr('href'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
          $win = $(window);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
      if(!$par.hasClass(o.currentClass)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
        if(o.begin) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
          o.begin();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
        onePageNav.adjustNav($this, $par, o.currentClass);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
        $win.unbind('.onePageNav');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
        $.scrollTo(newLoc, o.scrollSpeed, {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
          offset: {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
            top: -o.scrollOffset
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
          },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
          onAfter: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
            if(o.changeHash) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
              window.location.hash = newLoc;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
            $win.bind('scroll.onePageNav', function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
              onePageNav.scrollChange($this, o);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
            });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
            if(o.end) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
              o.end();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
          }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
        });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
    };
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
    onePageNav.adjustNav = function($this, $el, curClass) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
      $this.find('.'+curClass).removeClass(curClass);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
      $el.addClass(curClass);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
    };
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
    onePageNav.getPositions = function($this, o) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
      $this.find('a').each(function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
        var linkHref = $(this).attr('href'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
            divPos = $(linkHref).offset(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
            topPos = divPos.top;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
            
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
        onePageNav.sections[linkHref.substr(1)] = Math.round(topPos) - o.scrollOffset;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
    };
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
    onePageNav.getSection = function(windowPos) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
      var returnValue = '',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
          windowHeight = Math.round($(window).height() / 2);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
      
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
      for(var section in onePageNav.sections) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
        if((onePageNav.sections[section] - windowHeight) < windowPos) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
          returnValue = section;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
      return returnValue;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
    };
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
    onePageNav.scrollChange = function($this, o) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
      onePageNav.getPositions($this, o);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
      
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
      var windowTop = $(window).scrollTop(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
          position = onePageNav.getSection(windowTop);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
          
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
      if(position !== '') {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
        onePageNav.adjustNav($this,$this.find('a[href=#'+position+']').parent(), o.currentClass);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
    };
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
    onePageNav.init = function($this, o) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
      var didScroll = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
      
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
      $this.find('a').bind('click', function(e) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
        onePageNav.bindNav($(this), $this, o);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
        e.preventDefault();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
      onePageNav.getPositions($this, o);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
      $(window).bind('scroll.onePageNav', function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
        didScroll = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
      setInterval(function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
        if(didScroll) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
          didScroll = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
          onePageNav.scrollChange($this, o);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
      }, 250);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
    };
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
    return this.each(function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
      var $this = $(this),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
          o = $.meta ? $.extend({}, opts, $this.data()) : opts;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
      
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
      onePageNav.init($this, o);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
    });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
  };
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
  // default options
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
  $.fn.onePageNav.defaults = {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
    currentClass: 'current',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
    changeHash: false,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
    scrollSpeed: 0,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
    scrollOffset: 0,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
    begin: false,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
    end: false
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
  };
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
})(jQuery);