Open Tool `; toolGrid.appendChild(card); }); // 2. MODAL HANDLING toolGrid.addEventListener('click', (e) => { if (e.target.classList.contains('btn')) { const toolId = e.target.getAttribute('data-tool-id'); openModal(toolId); } }); const closeModal = () => modal.classList.remove('show'); closeBtn.onclick = closeModal; modal.addEventListener('click', (e) => { if (e.target === modal) { closeModal(); } }); function openModal(toolId) { const tool = tools.find(t => t.id === toolId); modalHost.innerHTML = getToolHTML(toolId, tool.title); modal.classList.add('show'); attachToolListener(toolId); } // 3. GENERATE HTML FOR EACH TOOL'S INTERFACE function getToolHTML(toolId, title) { const buttonText = toolId === 'backlinkMaker' ? 'Find Opportunities' : 'Analyze'; return `
${title} ${buttonText}
`; } // 4. ATTACH EVENT LISTENERS AND DEFINE TOOL LOGIC function attachToolListener(toolId) { const actionBtn = modal.querySelector('#tool-action-btn'); const resultDiv = modal.querySelector('#tool-result-output'); const urlInput = modal.querySelector('#tool-input-url'); actionBtn.addEventListener('click', () => { const url = urlInput.value.trim(); // Simple URL validation if (!url || !url.startsWith('http')) { resultDiv.innerHTML = `
Please enter a valid URL (e.g., https://example.com).
`; return; } // Show loader and simulate processing resultDiv.innerHTML = `
Analyzing... This may take a moment.
`; setTimeout(() => { displayDemoResults(toolId, resultDiv, url); }, 2000); // Simulate a 2-second API call }); } // 5. FUNCTION TO DISPLAY DEMO RESULTS function displayDemoResults(toolId, resultDiv, url) { let html = `
Demonstration Results for: ${url}
Note: This is simulated data. True backlink analysis requires a server-side API.
`; switch(toolId) { case 'backlinkChecker': case 'valuableBacklink': html += `
`; break; case 'brokenLinkChecker': case 'brokenBacklinkChecker': html += `
`; break; case 'backlinkMaker': html += `
Potential Backlink Opportunities: Guest Post: Submit an article to forbes.com/sites/business (DR 95) Directory Listing: Add your site to best-blogs-directory.com (DR 65) Forum Profile: Create a profile on tech-forum.net (DR 78) `; break; case 'anchorText': html += `
Anchor Text Distribution: Anchor Text Count Percentage Brand Name 1,250 45% "click here" 500 18% Keyword Anchor 800 29% Naked URL 230 8%
`; break; case 'linkAnalyzer': case 'backlinkCompetitors': html += `
Top Competing Domain: competitor.com Metric Your Domain Competitor Domain Rating 75 82 Total Backlinks 15,000 28,000 Referring Domains 1,200 2,500
`; break; } resultDiv.innerHTML = html; } })();