Current directory: /home/klas4s23/domains/585455.klas4s23.mid-ica.nl/public_html/Gastenboek/uploads
/**
* Custom Mouse Cursor and Scroll Effects
* Initializes after components are loaded
*/
function initMouseEffects() {
var cursor = document.querySelector('.cursor');
var cursorinner = document.querySelector('.cursor2');
var a = document.querySelectorAll('a');
// Check if cursor elements exist
if (!cursor || !cursorinner) {
console.warn('Cursor elements not found');
return;
}
document.addEventListener('mousemove', function(e){
var x = e.clientX;
var y = e.clientY;
cursor.style.transform = `translate3d(calc(${e.clientX}px - 50%), calc(${e.clientY}px - 50%), 0)`
});
document.addEventListener('mousemove', function(e){
var x = e.clientX;
var y = e.clientY;
cursorinner.style.left = x + 'px';
cursorinner.style.top = y + 'px';
});
document.addEventListener('mousedown', function(){
cursor.classList.add('click');
cursorinner.classList.add('cursorinnerhover')
});
document.addEventListener('mouseup', function(){
cursor.classList.remove('click')
cursorinner.classList.remove('cursorinnerhover')
});
a.forEach(item => {
item.addEventListener('mouseover', () => {
cursor.classList.add('hover');
});
item.addEventListener('mouseleave', () => {
cursor.classList.remove('hover');
});
});
// Container scroll functionality
const container = document.querySelector('.container');
const scrollLeftBtn = document.querySelector('.scroll-left');
const scrollRightBtn = document.querySelector('.scroll-right');
if (container && scrollLeftBtn && scrollRightBtn) {
let isDown = false;
let startX;
let scrollLeft;
container.addEventListener('mousedown', (e) => {
isDown = true;
container.classList.add('active');
startX = e.pageX - container.offsetLeft;
scrollLeft = container.scrollLeft;
document.body.style.cursor = 'grabbing';
});
container.addEventListener('mouseleave', () => {
isDown = false;
container.classList.remove('active');
document.body.style.cursor = 'default';
});
container.addEventListener('mouseup', () => {
isDown = false;
container.classList.remove('active');
document.body.style.cursor = 'default';
});
container.addEventListener('mousemove', (e) => {
if (!isDown) return;
e.preventDefault();
const x = e.pageX - container.offsetLeft;
const walk = (x - startX) * 3;
container.scrollLeft = scrollLeft - walk;
});
scrollLeftBtn.addEventListener('click', () => {
container.scrollBy({ left: -350, behavior: 'smooth' });
});
scrollRightBtn.addEventListener('click', () => {
container.scrollBy({ left: 350, behavior: 'smooth' });
});
}
// Show more projects functionality
const projects = document.querySelectorAll('.project');
const showMoreBtn = document.getElementById('show-more-btn');
if (projects.length > 0 && showMoreBtn) {
let visibleProjects = 3;
// Initially hide all projects except the first 3
projects.forEach((project, index) => {
if (index >= visibleProjects) {
project.style.display = 'none';
}
});
// Add event listener to the "Show More" button
showMoreBtn.addEventListener('click', function() {
const hiddenProjects = Array.from(projects).filter(project => project.style.display === 'none');
for (let i = 0; i < 3 && i < hiddenProjects.length; i++) {
hiddenProjects[i].style.display = 'block';
}
// Hide the button if there are no more projects to show
if (hiddenProjects.length <= 3) {
showMoreBtn.style.display = 'none';
}
});
}
}
// Wait for components to load
window.addEventListener('componentsLoaded', initMouseEffects);
// Fallback for DOMContentLoaded
document.addEventListener('DOMContentLoaded', function() {
setTimeout(initMouseEffects, 100);
});