<!DOCTYPE html>
<html>
<head>
    <title>AdSense Article Importer</title>
    <meta charset="UTF-8">
    <style>
        body { font-family: Arial, sans-serif; max-width: 800px; margin: 50px auto; padding: 20px; }
        .button { background: #0073aa; color: white; padding: 15px 30px; border: none; border-radius: 5px; cursor: pointer; font-size: 16px; }
        .button:hover { background: #005177; }
        .status { margin-top: 20px; padding: 15px; border-radius: 5px; }
        .success { background: #d4edda; color: #155724; }
        .error { background: #f8d7da; color: #721c24; }
        .progress { background: #d1ecf1; color: #0c5460; }
    </style>
</head>
<body>
    <h1>AdSense Article Importer</h1>
    <p>This will create 48 articles (8 per category) for your website.</p>
    <p><strong>Categories:</strong> GP Services, Emergency Care, Prescriptions & Pharmacy, Dental & Optical, Mental Health, Private Healthcare</p>
    
    <button class="button" onclick="startImport()">Start Import (48 Articles)</button>
    
    <div id="status"></div>
    
    <script>
    function startImport() {
        const statusDiv = document.getElementById('status');
        statusDiv.className = 'status progress';
        statusDiv.innerHTML = '<h3>⏳ Importing...</h3><p>Please wait, this may take 2-3 minutes.</p>';
        
        fetch('complete-import.php', {
            method: 'POST',
            headers: {'Content-Type': 'application/json'},
            body: JSON.stringify({action: 'import_all'})
        })
        .then(response => response.json())
        .then(data => {
            if (data.status === 'success') {
                statusDiv.className = 'status success';
                statusDiv.innerHTML = 
                    '<h3>✅ Import Complete!</h3>' +
                    '<p>Successfully created <strong>' + data.total + '</strong> articles</p>' +
                    '<ul>' +
                    '<li>GP Services: ' + (data.details['GP Services'] || 0) + ' articles</li>' +
                    '<li>Emergency Care: ' + (data.details['Emergency Care'] || 0) + ' articles</li>' +
                    '<li>Prescriptions & Pharmacy: ' + (data.details['Prescriptions & Pharmacy'] || 0) + ' articles</li>' +
                    '<li>Dental & Optical: ' + (data.details['Dental & Optical'] || 0) + ' articles</li>' +
                    '<li>Mental Health: ' + (data.details['Mental Health'] || 0) + ' articles</li>' +
                    '<li>Private Healthcare: ' + (data.details['Private Healthcare'] || 0) + ' articles</li>' +
                    '</ul>' +
                    '<p><a href="/">View Site</a> | <a href="/wp-admin/">Admin Dashboard</a></p>';
            } else {
                statusDiv.className = 'status error';
                statusDiv.innerHTML = 
                    '<h3>❌ Error</h3>' +
                    '<p>' + (data.message || 'Unknown error') + '</p>';
            }
        })
        .catch(error => {
            statusDiv.className = 'status error';
            statusDiv.innerHTML = 
                '<h3>❌ Connection Error</h3>' +
                '<p>' + error + '</p>' +
                '<p>Please make sure complete-import.php exists and is accessible.</p>';
        });
    }
    </script>
</body>
</html>
