/g, '```\n') .replace(/<\/code><\/pre>/g, '\n```\n') .replace(/
]+src="([^"]+)"[^>]*alt="([^"]*)"[^>]*>/g, '') .replace(/
]+src="([^"]+)"[^>]*>/g, '') .replace(/]+href="([^"]+)"[^>]*>([^<]+)<\/a>/g, '[$2]($1)') .replace(/<[^>]+>/g, '') .replace(/ /g, ' ') .replace(/&/g, '&') .replace(/</g, '<') .replace(/>/g, '>') .replace(/"/g, '"') .replace(/'/g, "'") .replace(/\n\n\n+/g, '\n\n') .trim(); } // Basic Markdown to HTML conversion function markdownToHtml(markdown) { if (!markdown) return ''; return markdown .replace(/^# (.+)$/gm, '$1
') .replace(/^## (.+)$/gm, '$1
') .replace(/^### (.+)$/gm, '$1
') .replace(/^#### (.+)$/gm, '$1
') .replace(/^##### (.+)$/gm, '$1
') .replace(/^###### (.+)$/gm, '$1
') .replace(/\*\*(.+?)\*\*/g, '$1') .replace(/_(.+?)_/g, '$1') .replace(/!\[([^\]]*)\]\(([^)]+)\)/g, '
') .replace(/\[([^\]]+)\]\(([^)]+)\)/g, '$1') .replace(/^- (.+)$/gm, '$1') .replace(/(.*<\/li>)/s, '') .replace(/^> (.+)$/gm, '$1
') .replace(/\n\n/g, '') .replace(/^/, '
') .replace(/$/, '
'); } // Test function to verify script is loaded function testScript() { console.log('✅ JavaScript loaded successfully!'); alert('JavaScript is working!'); } // Initialize on page load document.addEventListener('DOMContentLoaded', function() { console.log('DOM loaded, initializing...'); checkAuth(); }); // Ensure functions are globally available window.handleLogin = handleLogin; window.testScript = testScript;