Corporate Gifts

Our Customizable Stationery Gifts

Customizable Pen

Customizable Pen

High-quality pen with your company logo or a personalized name engraving. Ideal for corporate branding.

Customizable Notebook

Customizable Notebook

Premium notebook with custom cover design, logo, or even a photo. Perfect for corporate giveaways.

Customizable Diary

Customizable Diary

Elegant diary with custom branding. A thoughtful gift for employees and clients alike.

// Header scroll effect window.addEventListener('scroll', function() { const header = document.getElementById('header'); if (window.scrollY > 100) { header.classList.add('header-scroll-effect'); } else { header.classList.remove('header-scroll-effect'); } }); // Mobile Navigation Toggle const navToggle = document.getElementById('navToggle'); const nav = document.getElementById('nav'); navToggle.addEventListener('click', () => { nav.classList.toggle('active'); navToggle.classList.toggle('active'); }); // Close mobile menu when clicking outside document.addEventListener('click', function(event) { const isClickInsideNav = nav.contains(event.target); const isClickOnToggle = navToggle.contains(event.target); if (!isClickInsideNav && !isClickOnToggle && nav.classList.contains('active')) { nav.classList.remove('active'); navToggle.classList.remove('active'); } }); // Dropdown functionality document.querySelectorAll('.dropdown').forEach(dropdown => { dropdown.addEventListener('click', (e) => { if (e.target.classList.contains('dropdown-toggle')) { e.preventDefault(); dropdown.classList.toggle('active'); } }); }); // Close dropdowns when clicking outside document.addEventListener('click', (e) => { document.querySelectorAll('.dropdown').forEach(dropdown => { if (!dropdown.contains(e.target) && !navToggle.contains(e.target)) { dropdown.classList.remove('active'); } }); }); // Close mobile menu when clicking on nav links document.querySelectorAll('.nav-link').forEach(link => { link.addEventListener('click', () => { nav.classList.remove('active'); navToggle.classList.remove('active'); }); }); // Smooth scrolling for anchor links document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function (e) { e.preventDefault(); const target = document.querySelector(this.getAttribute('href')); if (target) { target.scrollIntoView({ behavior: 'smooth', block: 'start' }); } }); }); // Add ripple effect to buttons document.querySelectorAll('.btn-login, .btn-customize-order, .modal-actions button').forEach(button => { button.addEventListener('click', function(e) { const ripple = document.createElement('span'); const rect = this.getBoundingClientRect(); const size = Math.max(rect.width, rect.height); const x = e.clientX - rect.left - size / 2; const y = e.clientY - rect.top - size / 2; ripple.style.width = ripple.style.height = size + 'px'; ripple.style.left = x + 'px'; ripple.style.top = y + 'px'; ripple.classList.add('ripple'); this.appendChild(ripple); setTimeout(() => { ripple.remove(); }, 600); }); }); // Add ripple effect styles const rippleStyle = document.createElement('style'); rippleStyle.textContent = ` .ripple { position: absolute; border-radius: 50%; background: rgba(255, 255, 255, 0.6); transform: scale(0); animation: ripple-animation 0.6s linear; pointer-events: none; } @keyframes ripple-animation { to { transform: scale(4); opacity: 0; } } `; document.head.appendChild(rippleStyle); // --- Customization Modal Logic --- const customizeModal = document.getElementById('customizeModal'); const closeButton = customizeModal.querySelector('.close-button'); const modalProductName = document.getElementById('modal-product-name'); const previewImage = document.getElementById('preview-image'); const previewText = document.getElementById('preview-text'); const previewLogo = document.getElementById('preview-logo'); const previewPhoto = document.getElementById('preview-photo'); const customizeNameInput = document.getElementById('customize-name'); const customizeLogoInput = document.getElementById('customize-logo'); const customizePhotoInput = document.getElementById('customize-photo'); const customizeQuantityInput = document.getElementById('customize-quantity'); const modalTotalPrice = document.getElementById('modal-total-price'); const modalAddToCartBtn = customizeModal.querySelector('.btn-add-to-cart'); const modalCancelBtn = customizeModal.querySelector('.btn-cancel'); let currentProduct = null; // To store the product data being customized document.querySelectorAll('.btn-customize-order').forEach(button => { button.addEventListener('click', function() { const productCard = this.closest('.product-card'); const productId = productCard.dataset.productId; const productName = productCard.dataset.name; const basePrice = parseFloat(productCard.dataset.basePrice); const productImage = productCard.dataset.image; const customOptions = JSON.parse(productCard.dataset.customOptions); currentProduct = { id: productId, name: productName, basePrice: basePrice, image: productImage, customOptions: customOptions }; // Populate modal modalProductName.textContent = `Customize ${productName}`; previewImage.src = productImage; previewImage.alt = productName; customizeQuantityInput.value = 1; // Reset quantity // Show/hide customization fields based on product options toggleCustomizationFields(customOptions); // Clear previous inputs and previews customizeNameInput.value = ''; customizeLogoInput.value = ''; customizePhotoInput.value = ''; previewText.textContent = ''; previewLogo.style.display = 'none'; previewPhoto.style.display = 'none'; previewLogo.src = ''; previewPhoto.src = ''; updateModalTotalPrice(); // Calculate initial price customizeModal.style.display = 'flex'; // Show the modal }); }); closeButton.addEventListener('click', () => { customizeModal.style.display = 'none'; }); modalCancelBtn.addEventListener('click', () => { customizeModal.style.display = 'none'; }); // Close modal when clicking outside of it window.addEventListener('click', function(event) { if (event.target == customizeModal) { customizeModal.style.display = "none"; } }); // Update preview and price on input change customizeNameInput.addEventListener('input', () => { previewText.textContent = customizeNameInput.value; }); customizeLogoInput.addEventListener('change', function() { if (this.files && this.files[0]) { const reader = new FileReader(); reader.onload = function(e) { previewLogo.src = e.target.result; previewLogo.style.display = 'block'; }; reader.readAsDataURL(this.files[0]); } else { previewLogo.style.display = 'none'; previewLogo.src = ''; } }); customizePhotoInput.addEventListener('change', function() { if (this.files && this.files[0]) { const reader = new FileReader(); reader.onload = function(e) { previewPhoto.src = e.target.result; previewPhoto.style.display = 'block'; }; reader.readAsDataURL(this.files[0]); } else { previewPhoto.style.display = 'none'; previewPhoto.src = ''; } }); customizeQuantityInput.addEventListener('input', updateModalTotalPrice); function updateModalTotalPrice() { if (!currentProduct) return; const quantity = parseInt(customizeQuantityInput.value) || 1; const price = currentProduct.basePrice * quantity; modalTotalPrice.textContent = price.toFixed(0); } function toggleCustomizationFields(options) { document.getElementById('label-customize-name').style.display = options.name ? 'block' : 'none'; customizeNameInput.style.display = options.name ? 'block' : 'none'; document.getElementById('label-customize-logo').style.display = options.logo ? 'block' : 'none'; customizeLogoInput.style.display = options.logo ? 'block' : 'none'; document.getElementById('label-customize-photo').style.display = options.photo ? 'block' : 'none'; customizePhotoInput.style.display = options.photo ? 'block' : 'none'; } modalAddToCartBtn.addEventListener('click', function() { if (!currentProduct) return; const quantity = parseInt(customizeQuantityInput.value) || 1; const customizedName = customizeNameInput.value.trim(); const customizedLogo = customizeLogoInput.files.length > 0 ? ' (with logo)' : ''; const customizedPhoto = customizePhotoInput.files.length > 0 ? ' (with photo)' : ''; let itemDisplayName = currentProduct.name; if (customizedName) { itemDisplayName += ` - "${customizedName}"`; } itemDisplayName += `${customizedLogo}${customizedPhoto}`; const itemPrice = parseFloat(modalTotalPrice.textContent); addToCart(itemDisplayName, itemPrice, quantity); showMessageBox(`${quantity} x ${itemDisplayName} added to cart!`); customizeModal.style.display = 'none'; // Close modal after adding to cart }); // Function to add item to local storage cart (reused from other pages) function addToCart(name, price, quantity) { let cart = JSON.parse(localStorage.getItem('cart')) || []; // Check if an identical customized item already exists const existingItemIndex = cart.findIndex(item => item.name === name); if (existingItemIndex > -1) { cart[existingItemIndex].quantity += quantity; // Increment quantity } else { cart.push({ name, price, quantity }); // Add as new item } localStorage.setItem('cart', JSON.stringify(cart)); console.log('Cart updated:', cart); // For debugging } // Message Box (reused from other pages) function showMessageBox(message) { const messageBox = document.createElement('div'); messageBox.id = 'messageBox'; messageBox.classList.add('message-box'); messageBox.textContent = message; document.body.appendChild(messageBox); void messageBox.offsetWidth; // Trigger reflow messageBox.classList.add('show'); setTimeout(() => { messageBox.classList.remove('show'); messageBox.addEventListener('transitionend', () => messageBox.remove(), { once: true }); }, 3000); }