File: D:/HostingSpaces/yoda-ict/yoda-ict.nl/wwwroot/public/js/scroll_delay.js
(function($) {
/**
* Delays elements on scroll.
* Used for creating a parallax effect.
*
* @param element
* @param options
*/
$.scrollDelay = function(element, options) {
var defaults = {
delay :.5,
trigger : 0,
anchor : 'top'
};
// Reference to this
var t = this;
// Create settings object
t.settings = {};
// jQuery reference to element
var $element = $(element);
var position;
var startY;
var topOffsetY;
// Constructor
t.init = function ()
{
if( $(window).width() >= 600)
{
// Extend the defaults with options, save in settings
t.settings = $.extend({}, defaults, options);
position = $element.css('position');
topOffsetY = $element.offset().top;
// Prepare fixed elements
if(position == 'fixed')
{
// Get offset relative to window
startY = topOffsetY;
// Convert startY to "relative to website-top"
var scrollTop = $(document).scrollTop();
startY = startY - scrollTop;
}
else
{
// Get offset relative to parent
startY = $element.position().top;
}
t.delay();
}
else
{
//$element.css({ top: 0, bottom: 0 });
}
};
t.delay = function()
{
if( $(window).width() >= 600)
{
var scrollTop = $(document).scrollTop();;
var top, bottom;
// Calculate top for fixed elements
if(position == 'fixed')
{
top = -scrollTop * t.settings.delay + startY;
}
else
{
var wh = $(window).height();
var triggerLine = wh + scrollTop;
if(triggerLine > topOffsetY + t.settings.trigger)
{
// Trigger animation
top = -(triggerLine - topOffsetY - t.settings.trigger) * t.settings.delay + startY;
bottom = -(triggerLine - topOffsetY - t.settings.trigger) * t.settings.delay * -1;
}
}
// Css
if(t.settings.anchor == 'top')
{
$element.css({ top: top+'px' });
}
else if(t.settings.anchor == 'bottom')
{
$element.css({ bottom: bottom+'px' });
}
}
else
{
//$element.css({ top: 0, bottom: 0 });
}
};
t.init();
}
// Extend Jquery with function
$.fn.scrollDelay = function(options)
{
return this.each(function()
{
// if plugin has not already been attached to the element
if ($(this).data('sd') == undefined)
{
// create a new instance of the plugin
var scrollDelay = new $.scrollDelay(this, options);
$(this).data('sd', scrollDelay);
}
});
}
})(jQuery);