').appendTo("body");
if ( Onepress_Bully.disable_mobile ) {
$bully.addClass( 'c-bully-hide-on-mobile' );
}
$current = $(
'
'
).appendTo($bully);
(function update() {
if (frameRendered !== true) {
var count = 0;
var lastItemId = false;
// Ty to to find item that bully over
var _bt = $bully.offset().top;
var _bh = $bully.height();
var _bb = _bh + _bt;
if ($("#masthead").hasClass("is-sticky")) {
_bb -= $("#masthead").height();
}
if ($("#wpadminbar").length) {
_bb -= $("#wpadminbar").height();
}
$.each(Onepress_Bully.sections, function(id, arg) {
var element = $("#" + id);
if (element.length) {
var _et = element.offset().top;
var _eh = element.height();
var _eb = _eh + _et;
if (_et <= _bt || _bb >= _eb || (_bb >= _et && _eb > _bb)) {
lastItemId = id;
if (arg.enable) {
count = count + 1;
}
}
}
});
// New insverse
if (
lastItemId &&
typeof Onepress_Bully.sections[lastItemId] !== "undefined"
) {
if (Onepress_Bully.sections[lastItemId].inverse) {
$bully.addClass("c-bully--inversed");
} else {
$bully.removeClass("c-bully--inversed");
}
}
if (count !== current) {
var activeBullet = $bully.find("#bully__" + lastItemId);
var bullyOffset = $bully.offset();
var offset = 0;
if (activeBullet.length > 0) {
offset = activeBullet.offset().top - bullyOffset.top;
}
var offset = $bully.children( '.c-bully__bullet' ).not( '.c-bully__bullet--active' ).first().outerHeight( true ) * ( count - 1 );
$current.removeClass("c-bully__bullet--squash");
setTimeout(function() {
$current.addClass("c-bully__bullet--squash");
});
$current.css("top", offset);
current = count;
$bully
.find(".c-bully__bullet--pop")
.removeClass("c-bully__current");
activeBullet.addClass("c-bully__current");
}
}
window.requestAnimationFrame(update);
frameRendered = true;
})();
function reloadAll() {
$.each(elements, function(i, element) {
element._reloadElement();
});
}
function staggerClass($elements, classname, timeout) {
$.each($elements, function(i, obj) {
obj.$bullet.addClass(classname);
/*
var stagger = i * timeout;
setTimeout( function() {
obj.$bullet.addClass( classname );
}, stagger );
*/
});
}
$window.on("load", function(e) {
staggerClass(elements, "c-bully__bullet--pop", 400);
frameRendered = false;
});
$window.on("scroll", function(e) {
if (frameRendered === true) {
lastScrollY =
(window.pageYOffset || document.documentElement.scrollTop) -
(document.documentElement.clientTop || 0);
}
frameRendered = false;
});
$window.on("load resize", function() {
reloadAll();
});
function Bully(element, options) {
this.element = element;
this.options = $.extend({}, $.fn.bully.defaults, options);
var label = "";
var id = element.id;
var self = this,
$bullet = $('
');
if (Onepress_Bully.enable_label) {
if (id && typeof Onepress_Bully.sections[id] !== "undefined") {
label = Onepress_Bully.sections[id].title;
}
if (label) {
$bullet.append(
'
' + label + "
"
);
}
}
$bullet.data("bully-data", self).appendTo($bully);
$bullet.on("click", function(event) {
event.preventDefault();
event.stopPropagation();
self.onClick();
});
this.$bullet = $bullet;
self._reloadElement();
elements.push(self);
current = 0;
}
Bully.prototype = {
constructor: Bully,
_reloadElement: function() {
this.offset = $(this.element).offset();
this.height = $(this.element).outerHeight();
},
_calcTop: function(top) {
// check if has sticky
if ($("#masthead").hasClass("is-sticky")) {
top -= $("#masthead").height();
}
if ($("#wpadminbar").length) {
top -= $("#wpadminbar").height();
}
return top;
},
onClick: function() {
var self = this,
$target = $("html, body");
if (self.options.scrollDuration == 0) {
$target.scrollTop(this._calcTop(self.offset.top));
return;
}
if (self.options.scrollDuration === "auto") {
var duration =
Math.abs(lastScrollY - self.offset.top) /
(self.options.scrollPerSecond / 1000);
$target.animate(
{ scrollTop: this._calcTop(self.offset.top) },
duration
);
return;
}
$target.animate(
{ scrollTop: this._calcTop(self.offset.top) },
self.options.scrollDuration
);
}
};
$.fn.bully = function(options) {
return this.each(function() {
if (!$.data(this, "plugin_" + Bully)) {
$.data(this, "plugin_" + Bully, new Bully(this, options));
}
});
};
$.fn.bully.defaults = {
scrollDuration: "auto",
scrollPerSecond: 4000,
sections: {}
};
$window.on("rellax load", reloadAll);
$.each(Onepress_Bully.sections, function(id, args) {
if (args.enable) {
$("#" + id).bully({
scrollPerSecond: 3000
});
}
});
})(jQuery, window, document);