Template:Nankai/plugins/jquery.parallaxJS

/*

Plugin: jQuery Parallax
Version 1.1.3
Author: Ian Lunn
Twitter: @IanLunn
Author URL: http://www.ianlunn.co.uk/
Plugin URL: http://www.ianlunn.co.uk/plugins/jquery-parallax/
Dual licensed under the MIT and GPL licenses:
http://www.opensource.org/licenses/mit-license.php
http://www.gnu.org/licenses/gpl.html
*/

(function( $ ){

   var $window = $(window);
   var windowHeight = $window.height();
   $window.resize(function () {
       windowHeight = $window.height();
   });
   $.fn.parallax = function(xpos, speedFactor, outerHeight) {
       var $this = $(this);
       var getHeight;
       var firstTop;
       var paddingTop = 0;
       //get the starting position of each element to have parallax applied to it
       $this.each(function(){
           firstTop = $this.offset().top;
       });
       if (outerHeight) {
           getHeight = function(jqo) {
               return jqo.outerHeight(true);
           };
       } else {
           getHeight = function(jqo) {
               return jqo.height();
           };
       }
       // setup defaults if arguments aren't specified
       if (arguments.length < 1 || xpos === null) xpos = "50%";
       if (arguments.length < 2 || speedFactor === null) speedFactor = 0.1;
       if (arguments.length < 3 || outerHeight === null) outerHeight = true;
       // function to be called whenever the window is scrolled or resized
       function update(){
           var pos = $window.scrollTop();
           $this.each(function(){
               var $element = $(this);
               var top = $element.offset().top;
               var height = getHeight($element);
               // Check if totally above or totally below viewport
               if (top + height < pos || top > pos + windowHeight) {
                   return;
               }
               $this.css('backgroundPosition', xpos + " " + Math.round((firstTop - pos) * speedFactor) + "px");
           });
       }
       $window.bind('scroll', update).resize(update);
       update();
   };

})(jQuery);