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 += "| " + col.trim() + " | ");
tableHTML += "
";
isFirstRow = false;
} else {
tableHTML += "";
cols.forEach(col => tableHTML += "| " + col.trim() + " | ");
tableHTML += "
";
}
});
tableHTML += "
";
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
});
});