File: //home/bristolfilton.co.uk/public_html/wp-content/themes/sg-window/js/parallax.js
(function( $ ){
var $window = $(window);
var windowHeight = $window.height();
$window.resize(function () {
windowHeight = $window.height();
});
$.fn.parallax = function() {
var $this = $(this);
var getHeight;
var firstTop = new Array;
var speedFactor = new Array;
var parentHeight = new Array;
var paddingTop = new Array;
//get the starting position of each element to have parallax applied to it
function init() {
$this.each(function( index ){
var arrName = $(this).attr('class').split( ' ' );
parentHeight[ index ] = $(this).parent().height() + ( $(this).parent().width() * arrName[2]/ 100 ) + ( $(this).parent().width() * arrName[3]/ 100 ) + 20;
paddingTop[ index ] = ( $(this).parent().width()/100 * arrName[2] ) / $(this).parent().height() * 100;
firstTop[ index ] = $(this).parent().offset().top;
speedFactor[ index ] = arrName[1];
$(this).css('height', parentHeight[ index ] * ( ( windowHeight + parentHeight[ index ] ) / windowHeight * speedFactor[ index ] /100 + 1 ) );
});
}
init();
getHeight = function( el ) {
return el.outerHeight(true);
};
// function to be called whenever the window is scrolled or resized
function update(){
var pos = $window.scrollTop();
var pos2 = $window.scrollTop() + windowHeight;
$this.each(function( index ){
if ( 'fixed' == $( this ).css( 'position' ) )
return;
var $element = $(this);
var top = $element.parent().offset().top;
var height = getHeight($element);
// Check if totally above or totally below viewport
if ( top + height < pos || top > pos + windowHeight || speedFactor[ index ] <= 0 ) {
return;
}
$element.css('top', Math.round( ( (firstTop[ index ] - pos2) / windowHeight * speedFactor[ index ] )) + '%' );
});
}
$window.resize(init);
$window.bind('scroll', update).resize(update);
update();
};
})(jQuery);
//Parallax
jQuery(function($) {
$(".parallax-image").parallax();
});