$(document).ready(function() {
//------------------------------------------//
$.fn.inViewport = function() {
var elementTop = $(this).offset().top;
var elementBottom = elementTop + $(this).outerHeight();
var viewportTop = $(window).scrollTop();
var viewportBottom = viewportTop + $(window).height();
return elementBottom > viewportTop && elementTop < viewportBottom;
}
//------------------------------------------//
// Blog search
function blogSearch(input)
{
var url = input.data("url");
var search = input.val();
window.location.href = url + '?search=' + search;
}
$("#js-blog-search").keydown(function(e) {
if (e.key == 'Enter') {
e.preventDefault();
blogSearch($(this));
}
});
$("#js-blog-search-button").click(function() {
blogSearch($("#js-blog-search"));
});
$("#js-blog-search").on("input", function() {
var url = $(this).data("url");
var search = $(this).val();
if (search.length == 0 || search.length >= 3) {
fetch(url + '/search?query=' + search)
.then(response => response.text())
.then(data => {
$("#blog-posts").empty().append(data);
});
}
});
//------------------------------------------//
// Image hover mouseenter
$(".js-img-hover").mouseenter(function(event) {
var width = $(window).width() - event.clientX - 1 + "px";
if (!$("#isMobile").is(":hidden")) {
width = "100%";
}
var url = $(this).data("img-hover");
var divImg = $("
" +
"
");
divImg.appendTo("body");
});
// Image hover mouseleave
$(".js-img-hover").mouseleave(function() {
$("#img-hover").remove();
});
// Image hover on click
$(".js-img-hover").click(function() {
var url = $(this).data("img-hover");
window.open(url, '_blank');
});
// Lazy load video's
$(window).on('resize scroll', function() {
$('.js-video').each(function(index) {
if (!$(this).inViewport()) {
return true;
}
$(this).find('source').each(function() {
var source = $(this).attr('data-src');
if (source === undefined) {
return true;
}
$(this).attr("src", source);
var video = this.parentElement;
video.load();
video.play();
$(this).removeAttr('data-src');
});
});
});
$(window).trigger('scroll');
// Only 1 field is required
var $inputs = $('input[name=reset-password-username],input[name=reset-password-email]');
$inputs.on('input', function() {
// Set the required property of the other input to false if this input is not empty.
$inputs.not(this).prop('required', !$(this).val().length);
});
// List toggle
$('.js-toggle').click(function() {
$(this).next("ul").toggle(400);
});
// Admin panel toggle
$('.js-admin-toggle').click(function() {
$.get('/admin/toggle').done(function(data) {
if (data == '1') {
$('.js-admin-menu').removeClass('d-none').addClass('d-block');
$('.js-main-content').removeClass('col-12').addClass('col-9');
}
else if (data == '0') {
$('.js-admin-menu').removeClass('d-block').addClass('d-none');
$('.js-main-content').removeClass('col-9').addClass('col-12');
}
});
});
});