← Kapat
packages.js
// Packages page functionality - optimized for performance
(function() {
'use strict';
// Cache frequently used elements
let packageCards, packageData;
// Optimized package data
const PACKAGE_CONFIGS = {
0: { // Antreman Programı
durations: [
{
price: '600 TL',
oldPrice: '750 TL',
addonPrice: '+450 TL (4 Haftalık)',
features: [
'Kişiye özel antrenman programı',
'24 saat içinde program teslimi',
'Hedeflerinize uygun egzersiz planı',
'4 haftalık sürdürülebilir planlama'
]
},
{
price: '1000 TL',
oldPrice: '1200 TL',
addonPrice: '+900 TL (8 Haftalık)',
features: [
'Kişiye özel antrenman programı',
'24 saat içinde program teslimi',
'Hedeflerinize uygun egzersiz planı',
'8 haftalık sürdürülebilir planlama',
'Daha uzun vadeli ilerleme takibi',
'4 haftalık programa göre ekonomik avantaj'
]
},
{
price: '1350 TL',
oldPrice: '1800 TL',
addonPrice: '+1350 TL (12 Haftalık)',
features: [
'Kişiye özel antrenman programı',
'24 saat içinde program teslimi',
'Hedeflerinize uygun egzersiz planı',
'12 haftalık sürdürülebilir planlama',
'Uzun vadeli ilerleme takibi',
'En ekonomik seçenek',
'Maksimum sonuç için ideal süre'
]
}
],
popularIndex: 1
},
1: { // Antreman + Ölçüm + WhatsApp
durations: [
{
price: '2490 TL',
oldPrice: '3000 TL',
addonPrice: '+900 TL (8 Haftalık)',
features: [
'Kişiye özel antrenman programı',
'24 saat içinde program teslimi',
'WhatsApp üzerinden düzenli takip ve iletişim',
'Haftalık ölçüm takibi ve rapor analizi',
'Motivasyonunuzu artırmaya yönelik rehberlik',
'8 haftalık sürdürülebilir planlama'
]
},
{
price: '3350 TL',
oldPrice: '4000 TL',
addonPrice: '+1350 TL (12 Haftalık)',
features: [
'Kişiye özel antrenman programı',
'24 saat içinde program teslimi',
'WhatsApp üzerinden düzenli takip ve iletişim',
'Haftalık ölçüm takibi ve rapor analizi',
'Motivasyonunuzu artırmaya yönelik rehberlik',
'12 haftalık sürdürülebilir planlama',
'Uzun vadeli ilerleme takibi',
'Maksimum sonuç için ideal süre'
]
}
],
popularIndex: 1
},
2: { // Online Ders
durations: [
{
price: '8000 TL',
oldPrice: '9000 TL',
addonPrice: '',
features: [
'8 adet 1 saatlik birebir ders',
'Online platform üzerinden canlı dersler',
'Hareket ve form geliştirme üzerine rehberlik',
'Kişisel hedeflerinize uygun egzersiz planlaması',
'WhatsApp üzerinden iletişim desteği'
]
},
{
price: '11500 TL',
oldPrice: '13000 TL',
addonPrice: '',
features: [
'12 adet 1 saatlik birebir ders',
'Online platform üzerinden canlı dersler',
'Hareket ve form geliştirme üzerine rehberlik',
'Kişisel hedeflerinize uygun egzersiz planlaması',
'WhatsApp üzerinden iletişim desteği',
'Daha uzun süreli destek ve motivasyon',
'Ekonomik avantaj'
]
}
],
popularIndex: 1
}
};
// SVG icons (cached)
const ICONS = {
check: '<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"></path></svg>',
checkSmall: '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"></path></svg>',
star: '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"></path><path d="M20 3v4"></path><path d="M22 5h-4"></path><path d="M4 17v2"></path><path d="M5 18H3"></path></svg>'
};
// Optimized duration selection - no animations
function selectDuration(button, packageData) {
const tabContainer = button.parentElement;
const card = button.closest('.package-card');
// Update tabs immediately
tabContainer.querySelectorAll('.duration-tab').forEach(tab =>
tab.classList.remove('active'));
button.classList.add('active');
// Update content immediately
updatePackageContent(card, packageData);
}
// Batch DOM updates for better performance
function updatePackageContent(card, data) {
const elements = {
price: card.querySelector('[id^="price-"]'),
oldPrice: card.querySelector('[id^="old-price-"]'),
addonPrice: card.querySelector('.addon-price'),
features: card.querySelector('.package-features ul'),
badge: card.querySelector('.package-badge')
};
// Update prices
if (elements.price) elements.price.textContent = data.price;
if (elements.oldPrice) elements.oldPrice.textContent = data.oldPrice;
if (elements.addonPrice) elements.addonPrice.textContent = data.addonPrice;
// Update features efficiently
if (data.features && elements.features) {
elements.features.innerHTML = data.features.map(feature =>
`<li>${ICONS.check}<span>${feature}</span></li>`
).join('');
}
// Handle badge visibility
updateBadge(card, elements.badge);
}
// Optimized badge update
function updateBadge(card, badgeElement) {
if (!badgeElement) return;
const activeTab = card.querySelector('.duration-tab.active');
const title = card.querySelector('.package-image-title')?.textContent;
const shouldShow =
(title?.includes('Antreman Programı') && !title?.includes('Whatsapp') && activeTab?.textContent.trim() === '8 Hafta') ||
(title?.includes('Whatsapp') && activeTab?.textContent.trim() === '12 Hafta') ||
(title?.includes('Online Ders') && activeTab?.textContent.trim() === '12 Ders');
badgeElement.style.display = shouldShow ? '' : 'none';
if (shouldShow) {
badgeElement.innerHTML = `${ICONS.star} En Popüler Seçim`;
}
}
// Optimized addon toggle
function toggleAddon(element) {
const checkbox = element.querySelector('.addon-checkbox');
const card = element.closest('.package-card');
const isChecked = checkbox.innerHTML.includes('svg');
if (isChecked) {
checkbox.style.backgroundColor = 'transparent';
checkbox.innerHTML = '';
} else {
const colors = {
popular: '#8b5cf6',
premium: '#ec4899',
default: '#4f46e5'
};
const bgColor = card.classList.contains('popular') ? colors.popular :
card.classList.contains('premium') ? colors.premium :
colors.default;
checkbox.style.backgroundColor = bgColor;
checkbox.innerHTML = ICONS.checkSmall;
}
}
// Purchase handler
function purchasePackage(packageName, price) {
if (confirm(`${packageName} paketini seçtiniz. Fiyat: ${price}\n\nSatın alma işlemi için iletişim sayfasına yönlendirileceksiniz. Devam etmek istiyor musunuz?`)) {
window.location.href = 'contact.php';
}
}
// No animations - removed for performance
// Initialize package defaults efficiently
function initializeDefaults() {
packageCards.forEach((card, index) => {
const config = PACKAGE_CONFIGS[index];
if (config) {
const activeTabIndex = config.popularIndex;
const tabs = card.querySelectorAll('.duration-tab');
if (tabs[activeTabIndex]) {
selectDuration(tabs[activeTabIndex], config.durations[activeTabIndex]);
}
}
});
}
// Initialize when DOM is ready
function init() {
packageCards = document.querySelectorAll('.package-card');
if (!packageCards.length) return;
// Initialize defaults immediately
initializeDefaults();
}
// Expose functions globally for inline handlers (temporary)
window.selectDuration = selectDuration;
window.toggleAddon = toggleAddon;
window.purchasePackage = purchasePackage;
// Initialize
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
})();