document.addEventListener("DOMContentLoaded", function () { var SELECTORS = [ ".saji-pdp__desc", ".product-details__description", ".product__description", "#description", ".description-content", "article", ".pro-details", ]; function processContainer(targetElement) { if (!targetElement || targetElement.dataset.tableDone) return; var htmlContent = targetElement.innerHTML; var regex = /\|جدول\|([\s\S]*?)\|الجدول\|/g; if (!regex.test(htmlContent)) return; var newHtml = htmlContent.replace(/\|جدول\|([\s\S]*?)\|الجدول\|/g, function (match, tableContent) { var cleanText = tableContent .replace(//gi, "\n") .replace(/<\/p>/gi, "\n") .replace(/<[^>]*>/g, "") .replace(/ /g, " "); var rows = cleanText.split("\n"); var tableHTML = ''; var isFirstRow = true; rows.forEach(function (row) { row = row.trim(); if (!row) return; var cols = row.split("|"); if (isFirstRow) { tableHTML += ""; cols.forEach(col => tableHTML += ""); tableHTML += ""; isFirstRow = false; } else { tableHTML += ""; cols.forEach(col => tableHTML += ""); tableHTML += ""; } }); tableHTML += "
" + col.trim() + "
" + col.trim() + "
"; return tableHTML; }); targetElement.innerHTML = newHtml; targetElement.dataset.tableDone = "1"; } function processFAQ(targetElement) { if (!targetElement || targetElement.dataset.faqDone) return; var htmlContent = targetElement.innerHTML; var faqRegex = /\|اسئلة\|([\s\S]*?)\|نهاية\|/g; if (!faqRegex.test(htmlContent)) return; var faqData = []; var newHtml = htmlContent.replace(/\|اسئلة\|([\s\S]*?)\|نهاية\|/g, function (match, faqContent) { var cleanText = faqContent .replace(//gi, "\n") .replace(/<\/p>/gi, "\n") .replace(/<[^>]*>/g, "") .replace(/ /g, " "); var lines = cleanText.split('\n'); var faqHTML = '
'; var currentQ = '', currentA = ''; for (var i = 0; i < lines.length; i++) { var line = lines[i].trim(); if (!line) continue; if (line.indexOf('س:') === 0 || line.indexOf('س :') === 0) { if (currentQ && currentA) faqData.push({ question: currentQ, answer: currentA }); if (currentQ) faqHTML += '
'; currentQ = line.replace(/س\s*:\s*/, '').trim(); currentA = ''; faqHTML += '

' + currentQ + '

'; } else if (line.indexOf('ج:') === 0 || line.indexOf('ج :') === 0) { currentA = line.replace(/ج\s*:\s*/, '').trim(); faqHTML += '

' + currentA + '

'; } } if (currentQ && currentA) faqData.push({ question: currentQ, answer: currentA }); faqHTML += ''; if (faqData.length > 0) addFAQSchema(faqData); return faqHTML; }); targetElement.innerHTML = newHtml; targetElement.dataset.faqDone = "1"; } function addFAQSchema(faqData) { var old = document.getElementById('faq-schema'); if (old) old.remove(); var schemaData = { "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": faqData.map(function (item) { return { "@type": "Question", "name": item.question, "acceptedAnswer": { "@type": "Answer", "text": item.answer } }; }) }; var script = document.createElement('script'); script.id = 'faq-schema'; script.type = 'application/ld+json'; script.text = JSON.stringify(schemaData); document.head.appendChild(script); } function runAll() { SELECTORS.forEach(function (selector) { document.querySelectorAll(selector).forEach(function (el) { processContainer(el); processFAQ(el); }); }); } runAll(); var observer = new MutationObserver(function (mutations) { var shouldRun = mutations.some(function (m) { return m.addedNodes.length > 0 || m.type === 'characterData'; }); if (shouldRun) runAll(); }); observer.observe(document.body, { childList: true, subtree: true, characterData: true }); });