T.ME/BIBIL_0DAY
CasperSecurity


Server : Apache/2
System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64
User : gositeme ( 1004)
PHP Version : 8.2.29
Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Directory :  /home/gositeme/domains/soundstudiopro.com/public_html/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/domains/soundstudiopro.com/public_html/credits.php
<?php
session_start();

// Include translation system
require_once 'includes/translations.php';

// Check if user is logged in
if (!isset($_SESSION['user_id'])) {
    header('Location: /auth/login.php');
    exit;
}

// Handle AJAX requests
$is_ajax = isset($_GET['ajax']) && $_GET['ajax'] == '1';

require_once 'config/database.php';

$user = getUserById($_SESSION['user_id']);
$user_name = $user['name'] ?? 'User';
$credits = $_SESSION['credits'] ?? 0;

// Get subscription info if user has subscription
$subscription_info = null;
$subscription_usage = null;
$has_active_subscription = false;
$current_plan = 'free';
try {
    require_once __DIR__ . '/utils/subscription_helpers.php';
    $has_active_subscription = hasActiveSubscription($_SESSION['user_id']);
    $current_plan = getEffectivePlan($_SESSION['user_id']);
    $subscription_info = getSubscriptionInfo($_SESSION['user_id']);
    if ($subscription_info) {
        $subscription_usage = getMonthlyTrackUsage($_SESSION['user_id'], $subscription_info['plan_name'] ?? null);
    }
} catch (Exception $e) {
    error_log("Error getting subscription info in credits.php: " . $e->getMessage());
    $subscription_info = null;
    $subscription_usage = null;
    $has_active_subscription = false;
    $current_plan = 'free';
}

// Initialize cart if not exists
if (!isset($_SESSION['credit_cart'])) {
    $_SESSION['credit_cart'] = [];
}

// Set page variables for header
$page_title = t('credits.page_title');
$page_description = t('credits.page_description');
$current_page = 'credits';

// Include header only for full page loads
if (!$is_ajax) {
    include 'includes/header.php';
} else {
    // For AJAX requests, wrap content in the proper container structure
    echo '<div class="container" id="pageContainer">';
}
?>

<style>
    /* Credits page specific styles */
    .credits-hero {
        padding: 8rem 0 6rem;
        text-align: center;
        color: white;
        background: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 50%, #0a0a0a 100%);
        position: relative;
        overflow: hidden;
        margin-bottom: 4rem;
        margin-top: 0;
    }
    
    .credits-hero::before {
        content: '';
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><pattern id="grid" width="10" height="10" patternUnits="userSpaceOnUse"><path d="M 10 0 L 0 0 0 10" fill="none" stroke="rgba(102,126,234,0.1)" stroke-width="0.5"/></pattern></defs><rect width="100" height="100" fill="url(%23grid)"/></svg>');
        opacity: 0.3;
    }
    
    .credits-hero-content {
        max-width: 90rem;
        margin: 0 auto;
        position: relative;
        z-index: 2;
    }
    
    .credits-badge {
        display: inline-block;
        background: linear-gradient(135deg, rgba(102, 126, 234, 0.2), rgba(118, 75, 162, 0.2));
        color: #667eea;
        padding: 1.2rem 2.4rem;
        border-radius: 50px;
        font-size: 1.4rem;
        font-weight: 600;
        margin-bottom: 3rem;
        backdrop-filter: blur(10px);
        border: 1px solid rgba(102, 126, 234, 0.3);
    }
    
    .credits-title {
        font-size: 4rem;
        font-weight: 800;
        line-height: 1.2;
        margin-bottom: 1.5rem;
        background: linear-gradient(135deg, #ffffff, #667eea);
        -webkit-background-clip: text;
        -webkit-text-fill-color: transparent;
        background-clip: text;
    }
    
    .credits-subtitle {
        font-size: 1.6rem;
        color: #a0aec0;
        margin-bottom: 3rem;
        max-width: 50rem;
        margin-left: auto;
        margin-right: auto;
        line-height: 1.5;
    }
    
    .credits-packages {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
        gap: 3rem;
        max-width: 120rem;
        margin: 0 auto;
        padding: 0 2rem;
    }
    
    .credit-package {
        background: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 50%, #0a0a0a 100%);
        border: 2px solid;
        border-image: linear-gradient(135deg, #667eea, #764ba2) 1;
        border-radius: 20px;
        padding: 3rem 2.5rem;
        text-align: center;
        backdrop-filter: blur(25px);
        transition: all 0.3s ease;
        position: relative;
        overflow: hidden;
    }
    
    .credit-package::before {
        content: '';
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><pattern id="grid" width="10" height="10" patternUnits="userSpaceOnUse"><path d="M 10 0 L 0 0 0 10" fill="none" stroke="rgba(102,126,234,0.1)" stroke-width="0.5"/></pattern></defs><rect width="100" height="100" fill="url(%23grid)"/></svg>');
        opacity: 0.3;
        pointer-events: none;
    }
    
    .credit-package:hover {
        transform: translateY(-8px);
        box-shadow: 0 20px 60px rgba(102, 126, 234, 0.3);
    }
    
    .credit-package.featured {
        border-image: linear-gradient(135deg, #667eea, #764ba2, #667eea) 1;
        transform: scale(1.05);
    }
    
    .credit-package.featured::after {
        content: '<?= t('home.most_popular') ?>';
        position: absolute;
        top: -10px;
        left: 50%;
        transform: translateX(-50%);
        background: linear-gradient(135deg, #667eea, #764ba2);
        color: white;
        padding: 0.5rem 1.5rem;
        border-radius: 20px;
        font-size: 1.2rem;
        font-weight: 600;
    }
    
    .package-icon {
        font-size: 4rem;
        color: #667eea;
        margin-bottom: 2rem;
        background: linear-gradient(135deg, #667eea, #764ba2);
        -webkit-background-clip: text;
        -webkit-text-fill-color: transparent;
        background-clip: text;
    }
    
    .package-name {
        font-size: 2.2rem;
        font-weight: 700;
        color: white;
        margin-bottom: 0.8rem;
    }
    
    .package-credits {
        font-size: 2.6rem;
        font-weight: 800;
        color: #667eea;
        margin-bottom: 0.8rem;
    }
    
    .package-price {
        font-size: 2.8rem;
        font-weight: 700;
        color: white;
        margin-bottom: 1rem;
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 0.5rem;
    }
    
    .original-price {
        font-size: 1.8rem;
        color: #ff6b6b;
        text-decoration: line-through;
        font-weight: 400;
        opacity: 0.8;
    }
    
    .current-price {
        font-size: 2.8rem;
        font-weight: 800;
        color: #667eea;
    }
    
    .per-credit {
        font-size: 1.4rem;
        color: #a0aec0;
        font-weight: 500;
    }
    
    .special-badge {
        background: linear-gradient(135deg, #ff6b6b, #ee5a52);
        color: white;
        padding: 0.5rem 1rem;
        border-radius: 8px;
        font-size: 0.9rem;
        font-weight: 500;
        margin-bottom: 1.2rem;
        display: inline-block;
        box-shadow: 0 3px 10px rgba(255, 107, 107, 0.2);
        animation: pulse 3s infinite;
        letter-spacing: 0.2px;
    }
    
    @keyframes pulse {
        0% { transform: scale(1); }
        50% { transform: scale(1.05); }
        100% { transform: scale(1); }
    }
    
    .package-badge {
        position: absolute;
        top: -10px;
        right: 15px;
        background: linear-gradient(135deg, #667eea, #764ba2);
        color: white;
        padding: 0.4rem 0.8rem;
        border-radius: 8px;
        font-size: 0.8rem;
        font-weight: 500;
        z-index: 3;
        box-shadow: 0 3px 10px rgba(102, 126, 234, 0.3);
        letter-spacing: 0.2px;
    }
    
    .package-features {
        list-style: none;
        padding: 0;
        margin-bottom: 3rem;
    }
    
    .package-features li {
        color: #a0aec0;
        font-size: 1.4rem;
        margin-bottom: 0.8rem;
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 0.5rem;
        text-align: center;
    }
    
    .package-features li.crossed-out {
        text-decoration: line-through;
        color: #718096;
        opacity: 0.6;
    }
    
    .purchase-btn {
        background: linear-gradient(135deg, #667eea, #764ba2);
        border: none;
        color: white;
        padding: 18px 35px;
        border-radius: 14px;
        font-size: 1.7rem;
        font-weight: 700;
        cursor: pointer;
        transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
        width: 100%;
        position: relative;
        z-index: 2;
        margin-bottom: 12px;
        box-shadow: 0 8px 25px rgba(102, 126, 234, 0.4), 0 0 0 0 rgba(102, 126, 234, 0.5);
        letter-spacing: 0.5px;
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        overflow: hidden;
    }
    
    .purchase-btn::before {
        content: '';
        position: absolute;
        top: 0;
        left: -100%;
        width: 100%;
        height: 100%;
        background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
        transition: left 0.5s;
    }
    
    .purchase-btn:hover::before {
        left: 100%;
    }
    
    .purchase-btn:hover {
        transform: translateY(-3px);
        box-shadow: 0 12px 35px rgba(102, 126, 234, 0.5), 0 0 0 4px rgba(102, 126, 234, 0.2);
        background: linear-gradient(135deg, #5a67d8, #6b46c1);
    }
    
    .purchase-btn:active {
        transform: translateY(-1px);
        box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4);
    }
    
    .purchase-btn i {
        font-size: 1.6rem;
    }
    
    .add-to-cart-btn {
        background: rgba(102, 126, 234, 0.08);
        border: 2px solid rgba(102, 126, 234, 0.4);
        color: #667eea;
        padding: 16px 30px;
        border-radius: 14px;
        font-size: 1.5rem;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
        width: 100%;
        position: relative;
        z-index: 2;
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        box-shadow: 0 4px 15px rgba(102, 126, 234, 0.15);
        backdrop-filter: blur(10px);
    }
    
    .add-to-cart-btn:hover {
        background: rgba(102, 126, 234, 0.15);
        border-color: rgba(102, 126, 234, 0.7);
        color: #764ba2;
        transform: translateY(-3px);
        box-shadow: 0 8px 25px rgba(102, 126, 234, 0.3), 0 0 0 2px rgba(102, 126, 234, 0.2);
    }
    
    .add-to-cart-btn:active {
        transform: translateY(-1px);
        box-shadow: 0 4px 15px rgba(102, 126, 234, 0.2);
    }
    
    .add-to-cart-btn i {
        font-size: 1.4rem;
        transition: transform 0.3s ease;
    }
    
    .add-to-cart-btn:hover i {
        transform: rotate(90deg) scale(1.1);
    }
    
    .current-credits {
        background: linear-gradient(135deg, rgba(102, 126, 234, 0.1), rgba(118, 75, 162, 0.1));
        border: 1px solid rgba(102, 126, 234, 0.3);
        border-radius: 16px;
        padding: 2rem;
        text-align: center;
        margin-bottom: 4rem;
        max-width: 60rem;
        margin-left: auto;
        margin-right: auto;
    }
    
    .current-credits h3 {
        color: white;
        font-size: 2.4rem;
        margin-bottom: 1rem;
    }
    
    .current-credits .credits-display {
        font-size: 3.2rem;
        font-weight: 900;
        color: #667eea;
        margin-bottom: 1rem;
    }
    
    .current-credits p {
        color: #a0aec0;
        font-size: 1.6rem;
    }
    

    
    .cart-modal {
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        background: rgba(0, 0, 0, 0.8);
        z-index: 10000;
        display: none;
        align-items: center;
        justify-content: center;
        padding: 2rem;
    }
    
    .cart-content {
        background: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 50%, #0a0a0a 100%);
        border: 2px solid;
        border-image: linear-gradient(135deg, #667eea, #764ba2) 1;
        border-radius: 20px;
        padding: 3rem;
        max-width: 600px;
        width: 100%;
        max-height: 80vh;
        overflow-y: auto;
        backdrop-filter: blur(25px);
    }
    
    .cart-header {
        display: flex;
        justify-content: space-between;
        align-items: center;
        margin-bottom: 2rem;
        padding-bottom: 1rem;
        border-bottom: 1px solid rgba(255, 255, 255, 0.1);
    }
    
    .cart-title {
        color: white;
        font-size: 2.4rem;
        font-weight: 700;
    }
    
    .close-cart {
        background: none;
        border: none;
        color: #a0aec0;
        font-size: 2rem;
        cursor: pointer;
        padding: 0.5rem;
    }
    
    .cart-items {
        margin-bottom: 2rem;
    }
    
    .cart-item {
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding: 1rem;
        background: rgba(255, 255, 255, 0.05);
        border-radius: 12px;
        margin-bottom: 1rem;
    }
    
    .cart-item-info {
        color: white;
    }
    
    .cart-item-name {
        font-weight: 600;
        font-size: 1.6rem;
    }
    
    .cart-item-details {
        color: #a0aec0;
        font-size: 1.2rem;
    }
    
    .cart-item-price {
        color: #667eea;
        font-weight: 700;
        font-size: 1.6rem;
    }
    
    .cart-total {
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding: 2rem;
        background: rgba(102, 126, 234, 0.1);
        border-radius: 12px;
        margin-bottom: 2rem;
    }
    
    .cart-total-label {
        color: white;
        font-size: 1.8rem;
        font-weight: 600;
    }
    
    .cart-total-amount {
        color: #667eea;
        font-size: 2.4rem;
        font-weight: 700;
    }
    
    .cart-actions {
        display: flex;
        gap: 1rem;
    }
    
    .btn-clear-cart {
        background: rgba(255, 107, 107, 0.1);
        border: 2px solid #ff6b6b;
        color: #ff6b6b;
        padding: 14px 25px;
        border-radius: 12px;
        font-size: 1.5rem;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        box-shadow: 0 4px 15px rgba(255, 107, 107, 0.2);
    }
    
    .btn-clear-cart:hover {
        background: linear-gradient(135deg, #ff6b6b, #ff5252);
        color: white;
        transform: translateY(-2px);
        box-shadow: 0 8px 25px rgba(255, 107, 107, 0.4);
        border-color: #ff5252;
    }
    
    .btn-clear-cart:active {
        transform: translateY(0);
    }
    
    .btn-clear-cart i {
        font-size: 1.4rem;
    }
    
    .btn-checkout {
        background: linear-gradient(135deg, #667eea, #764ba2);
        border: none;
        color: white;
        padding: 14px 25px;
        border-radius: 12px;
        font-size: 1.5rem;
        font-weight: 700;
        cursor: pointer;
        transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
        flex: 1;
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        box-shadow: 0 8px 25px rgba(102, 126, 234, 0.4);
        letter-spacing: 0.5px;
        position: relative;
        overflow: hidden;
    }
    
    .btn-checkout::before {
        content: '';
        position: absolute;
        top: 0;
        left: -100%;
        width: 100%;
        height: 100%;
        background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
        transition: left 0.5s;
    }
    
    .btn-checkout:hover::before {
        left: 100%;
    }
    
    .btn-checkout:hover {
        transform: translateY(-3px);
        box-shadow: 0 12px 35px rgba(102, 126, 234, 0.5), 0 0 0 3px rgba(102, 126, 234, 0.2);
        background: linear-gradient(135deg, #5a67d8, #6b46c1);
    }
    
    .btn-checkout:active {
        transform: translateY(-1px);
        box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4);
    }
    
    .btn-checkout i {
        font-size: 1.6rem;
    }
    
    @media (max-width: 768px) {
        .credits-title {
            font-size: 4rem;
        }
        
        .credits-subtitle {
            font-size: 1.6rem;
        }
        
        .credits-packages {
            grid-template-columns: 1fr;
            gap: 2rem;
        }
        
        .credit-package {
            padding: 2rem 1.5rem;
        }
        
        .credit-package.featured {
            transform: none;
        }
        
        .cart-content {
            padding: 2rem;
            margin: 1rem;
        }
    }
    
    @media (max-width: 480px) {
        .credits-title {
            font-size: 3rem;
        }
        
        .credits-subtitle {
            font-size: 1.4rem;
        }
        
        .credits-packages {
            gap: 1.5rem;
        }
        
        .credit-package {
            padding: 1.5rem 1.2rem;
        }
        
        .package-title {
            font-size: 1.4rem;
        }
        
        .package-price {
            font-size: 2.5rem;
        }
        
        .package-credits {
            font-size: 1.1rem;
        }
        
        .btn-checkout {
            padding: 12px 20px;
            font-size: 1.1rem;
            min-height: 44px;
        }
        
        .cart-content {
            padding: 1.5rem;
            margin: 0.5rem;
        }
    }
</style>

<!-- Hero Section -->
<section class="credits-hero">
    <div class="credits-hero-content">
        <div class="credits-badge">
            <i class="fas fa-coins"></i>
            <?= t('credits.hero_badge') ?>
        </div>
        <h1 class="credits-title"><?= t('credits.hero_title') ?></h1>
        <p class="credits-subtitle">
            <?= t('credits.hero_subtitle') ?>
        </p>
    </div>
</section>

<!-- Current Credits Display -->
    <div class="current-credits">
        <h3><?= t('credits.current_credits') ?></h3>
        <div class="credits-display">
            <i class="fas fa-coins"></i>
            <?php echo $credits; ?> <?= t('user.credits') ?>
            <?php if ($subscription_info && $subscription_usage): ?>
                <?php 
                $tracks_remaining = $subscription_usage['track_limit'] - ($subscription_usage['tracks_created'] ?? 0);
                $tracks_color = $tracks_remaining > 0 ? '#48bb78' : '#e53e3e';
                ?>
                <a href="/manage_subscription.php" style="margin-left: 1.5rem; text-decoration: none; display: inline-block;">
                    <span style="color: <?= $tracks_color ?>; font-size: 1.4rem; transition: opacity 0.3s ease;">
                        <i class="fas fa-crown" style="font-size: 1.2rem; margin-right: 0.5rem;"></i>
                        <?= $tracks_remaining ?> / <?= $subscription_usage['track_limit'] ?> <?= t('subscription.tracks_left') ?>
                    </span>
                </a>
            <?php endif; ?>
        </div>
        <!-- Description removed to avoid redundancy - already explained in hero section -->
    </div>

<!-- Subscription Plans Section -->
<div style="margin-bottom: 60px;">
    <div class="section-header" style="text-align: center; margin-bottom: 40px;">
        <h2 style="color: white; font-size: 2.5rem; margin-bottom: 15px;"><?= t('credits.monthly_subscriptions') ?></h2>
        <p style="color: #a0aec0; font-size: 1.2rem;"><?= t('credits.monthly_subscriptions_desc') ?></p>
    </div>
    
    <?php
    // Load subscription plans config
    $plans_config = require __DIR__ . '/config/subscription_plans.php';
    $plan_order = ['essential', 'starter', 'pro', 'premium', 'enterprise'];
    ?>
    
    <div class="credits-packages">
        <?php foreach ($plan_order as $index => $plan_key): 
            $plan = $plans_config[$plan_key];
            $plan_display_name = getPlanLabel($plan_key, $plan['name']);
            $is_featured = $plan_key === 'pro'; // Pro is featured
        ?>
            <div class="credit-package <?= $is_featured ? 'featured' : '' ?>">
                <?php if ($is_featured): ?>
                    <div class="package-badge"><?= t('home.most_popular') ?></div>
                <?php endif; ?>
                <div class="package-icon" style="color: <?= $plan['color'] ?>;">
                    <i class="fas <?= $plan['icon'] ?>"></i>
                </div>
                <h3 class="package-name"><?= htmlspecialchars($plan_display_name) ?></h3>
                <div class="package-credits"><?= $plan['tracks_per_month'] ?> <?= t('home.tracks_per_month') ?></div>
                <div class="package-price">
                    <span class="current-price" style="color: <?= $plan['color'] ?>;">$<?= number_format($plan['price'], 2) ?></span>
                    <span class="per-credit"><?= t('home.per_month') ?></span>
                </div>
                <div class="special-badge" style="background: linear-gradient(135deg, <?= $plan['color'] ?>, <?= $plan['color'] ?>dd);"><?= t('dropdown.subscription') ?></div>
                <ul class="package-features">
                    <?php 
                    // Translation mapping for plan features (same as homepage)
                    $feature_translations = [
                        '5 tracks per month' => t('plan.feature.tracks_per_month', ['count' => 5]),
                        '20 tracks per month' => t('plan.feature.tracks_per_month', ['count' => 20]),
                        '75 tracks per month' => t('plan.feature.tracks_per_month', ['count' => 75]),
                        '200 tracks per month' => t('plan.feature.tracks_per_month', ['count' => 200]),
                        '1000 tracks per month' => t('plan.feature.tracks_per_month', ['count' => 1000]),
                        'Monthly reset' => t('plan.feature.monthly_reset'),
                        'Basic AI models' => t('plan.feature.basic_ai_models'),
                        'Advanced AI models' => t('plan.feature.advanced_ai_models'),
                        'Standard generation speed' => t('plan.feature.standard_speed'),
                        'High-speed generation' => t('plan.feature.high_speed'),
                        'Personal use license' => t('plan.feature.personal_license'),
                        'Commercial use license' => t('plan.feature.commercial_license'),
                        'Cancel anytime' => t('plan.feature.cancel_anytime'),
                        'Priority queue access' => t('plan.feature.priority_queue'),
                        'Highest priority queue' => t('plan.feature.highest_priority'),
                        'Unlimited downloads' => t('plan.feature.unlimited_downloads'),
                        'API access' => t('plan.feature.api_access'),
                        'Full API access' => t('plan.feature.full_api_access'),
                        'Dedicated support' => t('plan.feature.dedicated_support'),
                        'White-label options' => t('plan.feature.white_label'),
                        'Dedicated account manager' => t('plan.feature.account_manager'),
                        'Custom integrations' => t('plan.feature.custom_integrations'),
                        'SLA guarantee' => t('plan.feature.sla_guarantee'),
                    ];
                    foreach (array_slice($plan['features'], 0, 6) as $feature): 
                        $translated_feature = $feature_translations[$feature] ?? $feature;
                    ?>
                        <li><?= htmlspecialchars($translated_feature) ?></li>
                    <?php endforeach; ?>
                </ul>
                <?php
                // Determine button text and action based on subscription status
                $plan_order_map = ['essential' => 1, 'starter' => 2, 'pro' => 3, 'premium' => 4, 'enterprise' => 5];
                $current_plan_level = $plan_order_map[$current_plan] ?? 0;
                $this_plan_level = $plan_order_map[$plan_key] ?? 0;
                
                if ($has_active_subscription && $current_plan === $plan_key) {
                    // User is on this plan - show "Current Plan" or "Manage"
                    $button_text = t('credits.current_plan', ['default' => 'Current Plan']);
                    $button_action = "window.location.href='/manage_subscription.php'";
                    $button_icon = 'fa-check-circle';
                    $button_style = 'background: linear-gradient(135deg, #48bb78, #059669); cursor: default;';
                } elseif ($has_active_subscription && $this_plan_level > $current_plan_level) {
                    // User has subscription but on lower plan - show "Upgrade"
                    $button_text = t('credits.upgrade_plan', ['default' => 'Upgrade']);
                    $button_action = "window.location.href='/subscribe.php?plan={$plan_key}'";
                    $button_icon = 'fa-arrow-up';
                    $button_style = 'background: linear-gradient(135deg, ' . $plan['color'] . ', ' . $plan['color'] . 'dd);';
                } elseif ($has_active_subscription && $this_plan_level < $current_plan_level) {
                    // User has subscription but on higher plan - show "Downgrade"
                    $button_text = t('credits.downgrade_plan', ['default' => 'Downgrade']);
                    $button_action = "window.location.href='/subscribe.php?plan={$plan_key}'";
                    $button_icon = 'fa-arrow-down';
                    $button_style = 'background: linear-gradient(135deg, rgba(160, 174, 192, 0.3), rgba(160, 174, 192, 0.2));';
                } else {
                    // No subscription - show "Subscribe Now"
                    $button_text = t('home.subscribe_now');
                    $button_action = "window.location.href='/subscribe.php?plan={$plan_key}'";
                    $button_icon = 'fa-sync-alt';
                    $button_style = 'background: linear-gradient(135deg, ' . $plan['color'] . ', ' . $plan['color'] . 'dd);';
                }
                ?>
                <button class="purchase-btn" onclick="<?= $button_action ?>" style="<?= $button_style ?>">
                    <i class="fas <?= $button_icon ?>"></i>
                    <?= $button_text ?>
                </button>
            </div>
        <?php endforeach; ?>
    </div>
</div>

<!-- Extra Credits Section -->
<div id="extra-credits" style="margin-top: 60px; padding-top: 60px; border-top: 2px solid #333;">
    <div class="section-header" style="text-align: center; margin-bottom: 40px;">
        <h2 style="color: white; font-size: 2.5rem; margin-bottom: 15px;"><?= t('credits.extra_credits') ?></h2>
    </div>
    
    <!-- Subscription Requirement Notice -->
    <div style="background: linear-gradient(135deg, rgba(102, 126, 234, 0.1), rgba(118, 75, 162, 0.1)); border: 1px solid rgba(102, 126, 234, 0.3); border-radius: 12px; padding: 2rem; margin-bottom: 3rem; max-width: 1000px; margin-left: auto; margin-right: auto;">
        <div style="display: flex; align-items: center; gap: 1rem; margin-bottom: 1rem;">
            <i class="fas fa-info-circle" style="font-size: 2rem; color: #667eea;"></i>
            <h3 style="margin: 0; font-size: 1.8rem; color: #fff;"><?= t('home.credits_subscription_required_title') ?></h3>
        </div>
        <p style="margin: 0; font-size: 1.4rem; color: #a0aec0; line-height: 1.6;">
            <?= t('home.credits_subscription_required_message') ?>
        </p>
    </div>
    
    <!-- "How It Works" section removed to avoid redundancy - already explained in hero section and subscription requirement notice -->
    
    <div class="credits-packages">
        <!-- Starter Credits Package -->
        <div class="credit-package">
            <div class="package-icon">
                <i class="fas fa-star"></i>
            </div>
            <h3 class="package-name"><?= t('credits.starter_credits') ?></h3>
            <div class="package-credits">30 <?= t('user.credits') ?></div>
            <div class="package-price">
                <span class="original-price">$29.99</span>
                <span class="current-price">$19.99</span>
                <span class="per-credit">$0.67 <?= t('common.per_track') ?></span>
            </div>
            <div class="special-badge"><?= t('credits.one_time_purchase') ?></div>
            <ul class="package-features">
                <li><?= t('credits.music_tracks', ['count' => 30]) ?></li>
                <li><?= t('plan.feature.advanced_ai_models') ?></li>
                <li><?= t('plan.feature.high_speed') ?></li>
                <li><?= t('plan.feature.priority_queue') ?></li>
                <li><?= t('credits.ad_free') ?></li>
                <li><?= t('plan.feature.commercial_license') ?></li>
                <li><?= t('plan.feature.unlimited_downloads') ?></li>
                <li><?= t('home.extra_feature_2') ?></li>
            </ul>
            <button class="purchase-btn" onclick="purchaseCredits('starter', 30, 19.99)">
                <i class="fas fa-shopping-cart"></i>
                <?= t('credits.purchase_now') ?>
            </button>
            <button class="add-to-cart-btn" onclick="addToCart('starter', 30, 19.99)">
                <i class="fas fa-plus"></i>
                <?= t('credits.add_to_cart') ?>
            </button>
        </div>
        
        <!-- Pro Credits Package -->
        <div class="credit-package featured">
            <div class="package-badge"><?= t('credits.best_value') ?></div>
            <div class="package-icon">
                <i class="fas fa-fire"></i>
            </div>
            <h3 class="package-name"><?= t('credits.pro_credits') ?></h3>
            <div class="package-credits">150 <?= t('user.credits') ?></div>
            <div class="package-price">
                <span class="original-price">$59</span>
                <span class="current-price">$49</span>
                <span class="per-credit">$0.33 <?= t('common.per_track') ?></span>
            </div>
            <div class="special-badge"><?= t('credits.one_time_purchase') ?></div>
            <ul class="package-features">
                <li><?= t('credits.music_tracks', ['count' => 150]) ?></li>
                <li><?= t('plan.feature.advanced_ai_models') ?></li>
                <li><?= t('plan.feature.high_speed') ?></li>
                <li><?= t('plan.feature.priority_queue') ?></li>
                <li><?= t('credits.ad_free') ?></li>
                <li><?= t('plan.feature.commercial_license') ?></li>
                <li><?= t('plan.feature.unlimited_downloads') ?></li>
                <li><?= t('credits.private_mode') ?></li>
                <li><?= t('credits.unlimited_storage') ?></li>
                <li><?= t('home.extra_feature_2') ?></li>
            </ul>
            <button class="purchase-btn" onclick="purchaseCredits('pro', 150, 49, event)">
                <i class="fas fa-shopping-cart"></i>
                <?= t('credits.purchase_now') ?>
            </button>
            <button class="add-to-cart-btn" onclick="addToCart('pro', 150, 49)">
                <i class="fas fa-plus"></i>
                <?= t('credits.add_to_cart') ?>
            </button>
        </div>
        
        <!-- Premium Credits Package -->
        <div class="credit-package">
            <div class="package-icon">
                <i class="fas fa-crown"></i>
            </div>
            <h3 class="package-name"><?= t('credits.premium_credits') ?></h3>
            <div class="package-credits">500 <?= t('user.credits') ?></div>
            <div class="package-price">
                <span class="original-price">$179</span>
                <span class="current-price">$129</span>
                <span class="per-credit">$0.26 <?= t('common.per_track') ?></span>
            </div>
            <div class="special-badge"><?= t('credits.one_time_purchase') ?></div>
            <ul class="package-features">
                <li><?= t('credits.music_tracks', ['count' => 500]) ?></li>
                <li><?= t('plan.feature.advanced_ai_models') ?></li>
                <li><?= t('plan.feature.high_speed') ?></li>
                <li><?= t('plan.feature.priority_queue') ?></li>
                <li><?= t('credits.ad_free') ?></li>
                <li><?= t('plan.feature.commercial_license') ?></li>
                <li><?= t('plan.feature.unlimited_downloads') ?></li>
                <li><?= t('credits.private_mode') ?></li>
                <li><?= t('credits.unlimited_storage') ?></li>
                <li><?= t('home.extra_feature_2') ?></li>
            </ul>
            <button class="purchase-btn" onclick="purchaseCredits('premium', 500, 129)">
                <i class="fas fa-shopping-cart"></i>
                <?= t('credits.purchase_now') ?>
            </button>
            <button class="add-to-cart-btn" onclick="addToCart('premium', 500, 129)">
                <i class="fas fa-plus"></i>
                <?= t('credits.add_to_cart') ?>
            </button>
        </div>
    </div>
</div>



<!-- Cart Modal -->
<div class="cart-modal" id="cartModal">
    <div class="cart-content">
        <div class="cart-header">
            <h2 class="cart-title"><?= t('credits.shopping_cart') ?></h2>
            <button class="close-cart" onclick="hideCart()">&times;</button>
        </div>
        
        <div class="cart-items" id="cartItems">
            <!-- Cart items will be populated here -->
        </div>
        
        <div class="cart-total">
            <span class="cart-total-label"><?= t('credits.total') ?></span>
            <span class="cart-total-amount" id="cartTotal">$0.00</span>
        </div>
        
        <div class="cart-actions">
            <button class="btn-clear-cart" onclick="clearCart()">
                <i class="fas fa-trash"></i>
                <?= t('credits.clear_cart') ?>
            </button>
            <button class="btn-checkout" onclick="checkoutCart()">
                <i class="fas fa-credit-card"></i>
                <?= t('credits.checkout') ?>
            </button>
        </div>
    </div>
</div>

<script src="https://js.stripe.com/v3/"></script>
<script>
    // Translation strings for JavaScript
    const translations = {
        creditsAdded: '<?= t('credits.added_to_cart') ?>',
        creditsFailed: '<?= t('credits.failed_to_add') ?>',
        package: '<?= t('common.package') ?>',
        credits: '<?= t('user.credits') ?>',
        totalCredits: '<?= t('credits.total_credits') ?>',
        cartEmpty: '<?= t('common.empty_cart') ?>',
        success: '<?= t('msg.success') ?>'
    };
    
    // Initialize Stripe
    const stripe = Stripe('pk_live_51Rn8TtD0zXLMB4gHMCZ5OMunyo0YtN6hBR30BoXFEiQxPG9I6U2tko6Axxwl0yJS21DCCykhC9PxAMdZoEfwJI0p00KlrZUR3w');
    
    // Cart functionality
    let cart = [];
    
    // Load cart from session storage
    function loadCart() {
        const savedCart = sessionStorage.getItem('creditCart');
        if (savedCart) {
            cart = JSON.parse(savedCart);
            updateCartDisplay();
        }
    }
    
    // Save cart to session storage
    function saveCart() {
        sessionStorage.setItem('creditCart', JSON.stringify(cart));
    }
    
    // Add item to cart
    function addToCart(package, credits, price) {
        console.log('🎯 Adding credit package to cart:', { package, credits, price });
        
        // Show loading state
        const button = event.target;
        const originalText = button.innerHTML;
        button.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Adding...';
        button.disabled = true;
        
        fetch('/add_to_cart.php', {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify({
                type: 'credit',
                package: package,
                credits: credits,
                price: price,
                quantity: 1
            })
        })
        .then(response => response.json())
        .then(data => {
            if (data.success) {
                // Show success notification
                if (typeof window.showNotification === 'function') {
                    window.showNotification(`${credits} ${translations.credits} ${translations.creditsAdded} 🎵`, 'success');
                } else {
                    showSuccessMessage(`${credits} ${translations.credits} ${translations.creditsAdded}`);
                }
                
                // Update cart count in header if available
                if (typeof updateCartCount === 'function') {
                    updateCartCount();
                } else {
                    // Fallback: reload page to update cart count
                    setTimeout(() => {
                        window.location.reload();
                    }, 1500);
                }
                
            } else {
                throw new Error(data.error || translations.creditsFailed);
            }
        })
        .catch(error => {
            console.error('🎯 Error adding credits to cart:', error);
            
            // Show error notification
            if (typeof window.showNotification === 'function') {
                window.showNotification(translations.creditsFailed + ': ' + error.message, 'error');
            } else {
                showSuccessMessage(translations.creditsFailed + ': ' + error.message);
            }
        })
        .finally(() => {
            // Reset button state
            button.innerHTML = originalText;
            button.disabled = false;
        });
    }
    
    // Update cart display
    function updateCartDisplay() {
        const cartCount = document.getElementById('cart-count');
        const cartItems = document.getElementById('cartItems');
        const cartTotal = document.getElementById('cartTotal');
        
        // Update cart count
        const totalItems = cart.reduce((sum, item) => sum + item.quantity, 0);
        cartCount.textContent = totalItems;
        
        // Update cart items
        cartItems.innerHTML = '';
        let total = 0;
        
        cart.forEach(item => {
            const itemTotal = item.price * item.quantity;
            total += itemTotal;
            
            cartItems.innerHTML += `
                <div class="cart-item">
                    <div class="cart-item-info">
                        <div class="cart-item-name">${item.package.charAt(0).toUpperCase() + item.package.slice(1)} ${translations.package}</div>
                        <div class="cart-item-details">${item.credits} ${translations.credits} × ${item.quantity}</div>
                    </div>
                    <div class="cart-item-price">$${itemTotal.toFixed(2)}</div>
                </div>
            `;
        });
        
        cartTotal.textContent = `$${total.toFixed(2)}`;
    }
    
    // Show cart modal
    function showCart() {
        document.getElementById('cartModal').style.display = 'flex';
    }
    
    // Hide cart modal
    function hideCart() {
        document.getElementById('cartModal').style.display = 'none';
    }
    
    // Clear cart
    function clearCart() {
        cart = [];
        saveCart();
        updateCartDisplay();
        hideCart();
        showSuccessMessage('Cart cleared!');
    }
    
    // Checkout cart - redirect to checkout page
    function checkoutCart() {
        if (cart.length === 0) {
            alert(translations.cartEmpty);
            return;
        }
        
        // Save cart to session and redirect to checkout page
        fetch('save_cart.php', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
            },
            body: JSON.stringify({ cart: cart })
        }).then(() => {
            // Use AJAX navigation to preserve global player
        if (window.ajaxNavigation) {
            window.ajaxNavigation.navigateToPage('/checkout.php');
        } else {
            window.location.href = '/checkout.php';
        }
        });
    }
    
    // Purchase credits function - redirect to checkout page
    function purchaseCredits(package, credits, price, event) {
        // Show loading state
        let button = null;
        let originalText = '';
        if (event && event.target) {
            button = event.target.closest('.purchase-btn') || event.target;
            originalText = button.innerHTML;
            button.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Loading...';
            button.disabled = true;
        }
        
        // Add to existing cart instead of replacing it
        fetch('add_to_cart.php', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
            },
            body: JSON.stringify({
                type: 'credit',
                package: package,
                credits: credits,
                price: price,
                quantity: 1
            })
        })
        .then(response => response.json())
        .then(data => {
            if (data.success) {
                // Use AJAX navigation to preserve global player
                if (window.ajaxNavigation) {
                    window.ajaxNavigation.navigateToPage('/checkout.php');
                } else {
                    window.location.href = '/checkout.php';
                }
            } else {
                // Show error message
                if (button) {
                    button.innerHTML = originalText;
                    button.disabled = false;
                }
                
                let errorMsg = data.message || data.error || 'An error occurred';
                
                // Check if subscription is required
                if (data.requires_subscription) {
                    const subscriptionMsg = '<?= addslashes(t('checkout.subscription_required_message')) ?>';
                    if (confirm(errorMsg + '\n\n' + subscriptionMsg)) {
                        window.location.href = data.subscription_url || '/account_settings.php?tab=subscription';
                    }
                } else {
                    alert(errorMsg);
                }
            }
        })
        .catch(error => {
            console.error('Error adding to cart:', error);
            if (button) {
                button.innerHTML = originalText;
                button.disabled = false;
            }
            alert('An error occurred. Please try again.');
        });
    }
    
    // Confirm payment and update credits
    async function confirmPayment(paymentIntentId) {
        try {
            const response = await fetch('process_credit_payment.php', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                },
                body: JSON.stringify({
                    action: 'confirm_payment',
                    payment_intent_id: paymentIntentId
                })
            });
            
            const result = await response.json();
            
            if (!result.success) {
                throw new Error(result.error);
            }
            
            // Update credits display
            document.querySelector('.credits-display').innerHTML = `
                <i class="fas fa-coins"></i>
                ${result.total_credits} ${translations.credits}
            `;
            
            return result;
            
        } catch (error) {
            console.error('Confirmation error:', error);
            throw error;
        }
    }
    
    // Show success message
    function showSuccessMessage(message) {
        const successDiv = document.createElement('div');
        successDiv.className = 'success-message';
        successDiv.innerHTML = `
            <div class="success-content">
                <i class="fas fa-check-circle"></i>
                <h3>Success!</h3>
                <p>${message}</p>
            </div>
        `;
        
        // Add styles
        successDiv.style.cssText = `
            position: fixed;
            top: 20px;
            right: 20px;
            background: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 50%, #0a0a0a 100%);
            border: 2px solid;
            border-image: linear-gradient(135deg, #667eea, #764ba2) 1;
            border-radius: 16px;
            padding: 2rem;
            color: white;
            z-index: 10000;
            box-shadow: 0 10px 30px rgba(0, 0, 0, 0.8);
            backdrop-filter: blur(25px);
            max-width: 400px;
        `;
        
        document.body.appendChild(successDiv);
        
        // Remove after 5 seconds
        setTimeout(() => {
            if (successDiv.parentNode) {
                successDiv.parentNode.removeChild(successDiv);
            }
        }, 5000);
    }
    
    // Close cart when clicking outside
    document.getElementById('cartModal').addEventListener('click', function(e) {
        if (e.target === this) {
            hideCart();
        }
    });
    
    // Initialize cart on page load
    document.addEventListener('DOMContentLoaded', function() {
        loadCart();
    });
    
    // Test function for development
    window.testCreditPurchase = function() {
        purchaseCredits('test', 5, 4.99, null);
    };
</script>

<?php include 'includes/footer.php'; ?> 

CasperSecurity Mini