File: /home/muoapartman/www/wp-content/themes/hotel-pagoda-lite/assets/js/sticky-header.js
/*
* jQuery Sticky Header v1.0.1
* Author: Danish Iqbal
* Website: http://plugins.imdanishiqbal.com/sticky-header
*
* Licensed under MIT
*
*/
(function($) {
"use strict";
$.fn.stickMe = function(options) {
// Assigning variables
var $window = $(window),
$document = $(document),
$elemTopOffset,
$body = $('body'),
position = 0,
$elem = this,
$elemHeight = $elem.innerHeight(),
$win_center = $window.height() / 2,
$pos,
settings = $.extend({
transitionDuration: 300,
shadow: false,
shadowOpacity: 0.3,
animate: true,
triggerAtCenter: true,
topOffset: $elemHeight,
transitionStyle: 'fade',
stickyAlready: false
}, options);
// Initial state
$elem
.addClass('stick-me')
.addClass('not-sticking');
switch (settings.triggerAtCenter) {
case (settings.triggerAtCenter && settings.topOffset < $elemHeight) || (settings.triggerAtCenter && settings.topOffset > $elemHeight):
settings.triggerAtCenter = false;
break;
}
if (settings.stickyAlready) {
settings.triggerAtCenter = false;
settings.topOffset = 0;
stick();
}
$elemTopOffset = $elem.offset().top;
function $elem_slide() {
if (settings.animate === true && settings.transitionStyle === 'slide' && settings.stickyAlready !== true) {
$elem.slideDown(settings.transitionDuration);
}
if (settings.animate === true && settings.transitionStyle === 'fade' && settings.stickyAlready !== true) {
$elem.fadeIn(settings.transitionDuration);
} else {
$elem.show();
}
$elem.removeClass('not-sticking');
}
function stick() {
if ($elem.hasClass('sticking')) {
$elem.trigger('sticking');
}
if (position === 0) {
position = 1;
if(settings.stickyAlready === false) {
$elem.trigger('sticky-begin');
}
}
if ($elem.hasClass('not-sticking')) {
$elem.hide();
$elem_slide();
}
if (settings.shadow === true) {
$elem.css('box-shadow', '0px 1px 2px rgba(0,0,0,' + settings.shadowOpacity + ')');
}
$elem
.addClass('sticking')
.css('position', 'fixed')
.css('top', '0');
$body.css('padding-top', $elemHeight);
}
function unstick() {
if (settings.shadow === true) {
$elem.css('box-shadow', 'none');
}
$elem.addClass('not-sticking')
.removeClass('sticking')
.show()
.css('position', 'relative');
$body.css('padding-top', '0');
}
$window.scroll(function() {
$pos = $window.scrollTop();
if ($pos === 0) {
position = 0;
$elem.trigger('top-reached');
}
if (settings.triggerAtCenter === true) {
if ($pos > $win_center + $elemHeight) {
stick();
}
}
if (settings.triggerAtCenter === false) {
if ($pos > settings.topOffset) {
stick();
}
}
if ($pos + $window.height() > $document.height() - 1) {
$elem.trigger('bottom-reached');
}
if (settings.triggerAtCenter === true) {
if ($pos < (1 + $elemTopOffset)) {
unstick();
}
}
if (settings.triggerAtCenter === false) {
if ($pos < 1) {
if (settings.stickyAlready !== true) {
unstick();
}
}
}
});
return this;
};
}(jQuery));