Bước tới nội dung

Khác biệt giữa bản sửa đổi của “MediaWiki:Common.js”

Từ Từ nguyên Tiếng Việt
Không có tóm lược sửa đổi
Thẻ: Đã bị lùi lại
Không có tóm lược sửa đổi
Thẻ: Đã bị lùi lại
Dòng 1: Dòng 1:
// Optimized & Modernized Version (with your requested behaviors preserved)
// Example columns
 
function excol() {
const optimizeColumns = () => {
     var dl = document.getElementsByTagName('dl');
     // Example columns (excol)
    var maxwidth = 0;
    document.querySelectorAll('dl').forEach(dl => {
    var cnt = 0;
         let maxWidth = 0;
    for (var i = 0; i < dl.length; i++) {
         const dds = dl.querySelectorAll('dd');
         cnt = 0;
         const containerWidth = dl.clientWidth;
         var dd = dl[i].getElementsByTagName('dd');
 
         for (j = 0; j < dd.length; j++) {
        dds.forEach(dd => {
             dd[j].style.setProperty('min-width', 'max-content');
             dd.style.setProperty('min-width', 'max-content');
             dd[j].style.setProperty('column-span', 'unset');
             dd.style.setProperty('column-span', 'unset');
             if (dd[j].clientWidth + parseFloat(window.getComputedStyle(dd[j]).marginLeft) > dl[i].clientWidth / 2) {
 
                 dd[j].style.setProperty('min-width', 'calc(100% - 1.6em)');
             const ddWidth = dd.clientWidth + parseFloat(getComputedStyle(dd).marginLeft || 0);
                 dd[j].style.setProperty('column-span', 'all');
 
             }
            if (ddWidth > containerWidth / 2) {
            if (maxwidth < dd[j].clientWidth && dd[j].style.minWidth != 'calc(100% - 1.6em)') {
                 dd.style.setProperty('min-width', 'calc(100% - 1.6em)');
                 maxwidth = dd[j].clientWidth + parseFloat(window.getComputedStyle(dd[j]).marginLeft) + 5;
                 dd.style.setProperty('column-span', 'all');
             } else if (maxWidth < ddWidth) {
                 maxWidth = ddWidth + 5;
             }
             }
         });
         console.log(maxwidth);
 
         cnt++;
        const count = dds.length;
        if (count >= 6) {
            if (maxWidth * 3 < containerWidth) dl.style.columnCount = 3;
            else if (maxWidth * 2 < containerWidth) dl.style.columnCount = 2;
            else dl.style.columnCount = 1;
         } else {
            dl.style.columnCount = 1;
         }
         }
    });
         if (cnt >= 6 && maxwidth * 3 < dl[i].clientWidth) {
 
             dl[i].style.columns = 3
    // Cognates columns
         } else if (cnt >= 6 && maxwidth * 2 < dl[i].clientWidth && maxwidth * 3 > dl[i].clientWidth) {
    document.querySelectorAll('.cognates ul').forEach(ul => {
             dl[i].style.columns = 2
        const lis = ul.querySelectorAll('li');
         if (!lis.length) return;
 
        let widestWidth = 0;
        lis.forEach(li => widestWidth = Math.max(widestWidth, li.clientWidth));
 
        const refText = document.querySelector('.cognates .reference-text');
        if (!refText) return;
 
        const refOl = refText.querySelector('ol');
        const marginLeft = refOl ? parseFloat(getComputedStyle(refOl).marginLeft || 0) : 0;
        const containerWidth = refText.clientWidth;
        const itemWidth = widestWidth + marginLeft + 10;
 
        if (lis.length > 7 && containerWidth > itemWidth * 3) {
             ul.style.columnCount = 3;
         } else if (lis.length > 4 && containerWidth > itemWidth * 2) {
             ul.style.columnCount = 2;
         } else {
         } else {
             ul.style.columnCount = 1;
             dl[i].style.columns = 1
        }
         }  
    });
};
 
// Wikipedia links
const cleanWikiLinks = () => {
    document.querySelectorAll('.extiw').forEach(link => {
        link.title = link.title.replace('wikipedia:vi:', '');
    });
};
 
// Keyboard shortcuts
const setupShortcuts = () => {
    document.addEventListener('keydown', e => {
        const isMac = navigator.platform.includes('Mac');
        if (!(isMac ? e.metaKey : e.ctrlKey)) return;
 
        const map = {
            's': '[value="Save changes"]',
            'p': '[value="Show preview"]',
            'e': 'a[accesskey="e"]',
            'r': 'input[accesskey="r"]',
            'g': 'input[accesskey="g"]'
        };
 
        const selector = map[e.key];
        if (selector) {
            e.preventDefault();
            var el = document.querySelector(selector);
            if (el) el.click();
        }
    });
};
 
// Clean citations
const cleanCitations = () => {
    const citerefs = document.querySelectorAll('[id^="cite_ref-"]');
    citerefs.forEach(ref => {
        if (ref.childNodes[0] && ref.childNodes[0].textContent === ' ') {
            ref.childNodes[0].textContent = '';
        }
    });
 
    if (citerefs.length) {
        const parent = citerefs[0].parentElement;
        if (parent) {
            parent.innerHTML = parent.innerHTML.replaceAll(' <sup id="cite_ref-', '<sup id="cite_ref-');
         }
     }
     }
};
}
 
// Line-break arrows - Preserved original fallback entries[0] case
const processEntryArrows = () => {
    if (window.location.href.search('index.php') >= 0 || window.location.href.lastIndexOf(':') !== 5) return;
 
    var ol = document.querySelector('ol');
    const entries = ol ? ol.querySelectorAll('li') : null;
    if (!entries) return;
 
    entries.forEach((entryEl, i) => {
        if (!entryEl.innerHTML.includes('> →')) return;
 
        const parts = entryEl.innerHTML.split('> →');
        let newHTML = parts[0] + 'b>';
        let didFallback = false;  // FIX: flag to track if entries[0] fallback was used
 
        for (let j = 1; j < parts.length; j++) {
            if (j < parts.length - 1) {
                newHTML += `<br><span style="display:inline-block;margin-left:calc(${j+1}em + 0.5ch);text-indent:calc(-1em - 0.5ch)"><arrow>↳ </arrow>${parts[j]}</span>`;
            } else {
                // Last part - keep original fallback logic
                if (parts[j].search('dl') > -1) {
                    const beforeDl = parts[j].split('<dl')[0];
                    const lastSpaceIdx = beforeDl.lastIndexOf(' ');
                    const textBefore = beforeDl.slice(0, lastSpaceIdx);
                    const lastWord = beforeDl.slice(lastSpaceIdx + 1);


                    newHTML += `<br><span style="display:inline-block;margin-left:calc(${parts.length}em + 0.5ch);text-indent:calc(-1em - 0.5ch)"><arrow>↳ </arrow>${textBefore}&nbsp;${lastWord}</span><dl${parts[j].split('<dl')[1]}`;
// Cognates columns
                } else if (parts[j].slice(parts[j].lastIndexOf(' ') - 2, parts[j].lastIndexOf(' ')) !== '<a') {
function cogcol() {
                    const lastSpace = parts[j].lastIndexOf(' ');
    var cognates = document.querySelectorAll('.cognates ul');
                    newHTML += `<br><span style="display:inline-block;margin-left:calc(${parts.length}em + 0.5ch);text-indent:calc(-1em - 0.5ch)"><arrow>↳ </arrow>${parts[j].slice(0, lastSpace)}&nbsp;${parts[j].slice(lastSpace + 1)}</span>`;
    for (var c = 0; c < cognates.length; c++) {
                 } else {
        var widest = null;
                    // Original fallback: append to first entry
        var widestwidth = 0;
                    entries[0].innerHTML += `<br><span style="display:inline-block;margin-left:calc(${parts.length}em + 0.5ch);text-indent:calc(-1em - 0.5ch)"><arrow>↳ </arrow>${parts[j]}`;
        var coglis = cognates[c].querySelectorAll('li');
                    didFallback = true; // FIX: mark that we used the fallback
        for (var l = 0; l < coglis.length; l++) {
                }
            if (widest == null) {
                widestwidth = coglis[l].clientWidth;
                widest = l;
            } else if (widestwidth < coglis[l].clientWidth) {
                 widestwidth = coglis[l].clientWidth;
                widest = l;
             }
             }
         }
         }


         // FIX: only overwrite innerHTML if we didn't use the entries[0] fallback
         if (document.querySelector('.cognates .reference-text').clientWidth > (widestwidth + parseFloat(window.getComputedStyle(document.querySelector('.reference-text ol'))['marginLeft'])) * 3 + 10 && cognates[c].querySelectorAll('li').length > 7) {
         if (!didFallback) {
            cognates[c].style.columnCount = 3;
             entryEl.innerHTML = newHTML;
         } else if (document.querySelector('.cognates .reference-text').clientWidth > (widestwidth + parseFloat(window.getComputedStyle(document.querySelector('.reference-text ol'))['marginLeft'])) * 2 + 10 && cognates[c].querySelectorAll('li').length > 4) {
             cognates[c].style.columnCount = 2;
        } else {
            cognates[c].style.columnCount = 1;
         }
         }
     });
     }
};
}
excol();
cogcol();
window.addEventListener('resize', () => {
    cogcol();
    excol();
})


// Video zoom
if (document.querySelector('.notelistalpha') != null && document.querySelector('.notelistalpha').childElementCount < 2) { document.querySelector('.notelistalpha').style.visibility = 'hidden' };
const setupVideoZoom = () => {
    const zoombtns = document.getElementsByClassName('enlarge');
    const videos = document.querySelectorAll('[title="Play video"]');


    const resizeVideo = (index, multiply) => {
// Wikipedia links
        const vid = videos[index];
var wlinks = document.getElementsByClassName('extiw');
        if (!vid) return;
for (var i = 0; i < wlinks.length; i++) {
    wlinks[i].title = wlinks[i].title.replace('wikipedia:vi:', '')
}


        vid.width *= multiply;
// CTRL + shortcuts
         vid.height *= multiply;
document.addEventListener("keydown", function(e) {
 
    if (e.key === 's' && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
         const w = vid.width + 'px';
         e.preventDefault();
        const h = vid.height + 'px';
         document.querySelector('[value="Save changes"]').click();
 
    };
        vid.style.width = w; vid.style.height = h;
    if (e.key === 'p' && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
 
         e.preventDefault();
         let parent = vid.parentElement;
         document.querySelector('[value="Show preview"]').click();
         while (parent && parent !== document.body) {
    };
            parent.style.width = w;
    if (e.key === 'e' && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
            parent.style.height = h;
         e.preventDefault();
            parent = parent.parentElement;
         document.querySelector('a[accesskey="e"]').click();
         }
    };
 
    if (e.key === 'r' && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
         const btn = zoombtns[index];
        e.preventDefault();
        if (btn) {
        document.querySelector('input[accesskey="r"]').click();
            const isEnlarge = multiply > 1;
            btn.onclick = () => resizeVideo(index, isEnlarge ? 0.5 : 2);
            btn.title = isEnlarge ? 'Thu nhỏ' : 'Phóng to';
        }
     };
     };
 
     if (e.key === 'g' && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
     Array.from(zoombtns).forEach((btn, i) => {
         e.preventDefault();
        btn.onclick = () => resizeVideo(i, 2);
        document.querySelector('input[accesskey="g"]').click();
        btn.title = 'Phóng to';
    });
};
 
// Zoomed text
// FIX: wrap HTMLCollection with Array.from() before calling .forEach()
const setupZoomText = () => {
    const wrapClass = (className) => {
         Array.from(document.getElementsByClassName(className)).forEach(el => {
            const html = el.innerHTML;
            el.innerHTML = `<div class="tttext">${html}<span class="ttzoom"> ${html}</span></div>`;
        });
     };
     };
}, false);


    wrapClass('Hani');
// Remove space before citation
    wrapClass('notHani');
var citerefs = document.querySelectorAll('[id^="cite_ref-"]');
 
if (citerefs.length > 0) {
     document.querySelectorAll('.ttzoom').forEach(span => {
     for (var i = 0; i < citerefs.length; i++) {
         if (span.getBoundingClientRect().right + 20 > window.innerWidth) {
         if (citerefs[i].childNodes[0].textContent == ' ') {
             span.style.left = '-800%';
             citerefs[i].childNodes[0].textContent = '';
         }
         }
    });
};
// Hide empty ruby
const hideEmptyRuby = () => {
    document.querySelectorAll('rt').forEach(rt => {
        if (rt.innerText.trim() === '') rt.style.display = 'none';
    });
};
// Replace textimg - original i++ behavior preserved (skips every other element)
const setTextImgPlaceholders = () => {
    const textimg = document.querySelectorAll('[class*="textimg"]');
    for (let i = 0; i < textimg.length; i++) {
        const img = textimg[i].querySelector('img');
        if (img) img.src = 'https://www.tunguyentiengviet.com/images/4/47/Placeholder.png';
        i++;  // original manual i++ kept exactly as requested
     }
     }
};
    citerefs[0].parentElement.innerHTML = citerefs[0].parentElement.innerHTML.replaceAll(' <sup id="cite_ref-', '<sup id="cite_ref-');
}


// Highlight entry
// Line-break arrows
const highlightEntry = () => {
var entries = '';
    if (window.location.href.includes('#entry')) {
if (window.location.href.search('index.php') < 0 && window.location.href.lastIndexOf(':') == 5) {
        const id = window.location.href.substring(window.location.href.indexOf('#') + 1);
    entries = document.querySelector('ol').querySelectorAll('li');
        const el = document.getElementById(id);
    for (i = 0; i < entries.length; i++) {
         if (el && el.parentElement) {
         if (entries[i].innerHTML.match(/> →/g) != null) {
             el.parentElement.style.background = 'rgba(255,222,100,0.4)';
             var entry = entries[i].innerHTML.split('> →');
        }
            entries[i].innerHTML = '';
    }
            entries[i].innerHTML += entry[0] + 'b>';
};
            for (j = 1; j < entry.length - 1; j++) {
 
                entries[i].innerHTML += '<br><span style="display:inline-block;margin-left:calc(' + (j + 1) + 'em + 0.5ch);text-indent: calc(-1em - 0.5ch)">' + '<arrow>↳ </arrow>' + entry[j] + '></span>';
// Main init
            }
const init = () => {
            if (entry[entry.length - 1].search('dl') > -1 && entry[entry.length - 1].split('<dl')[0].slice(0, entry[entry.length - 1].split('<dl')[0].lastIndexOf(' ')).slice(entry[entry.length - 1].split('<dl')[0].slice(0, entry[entry.length - 1].split('<dl')[0].lastIndexOf(' ')).length - 2) != '<a') {
    optimizeColumns();
                entries[i].innerHTML += '<br><span style="display:inline-block;margin-left:calc(' + entry.length + 'em + 0.5ch);text-indent: calc(-1em - 0.5ch)">' + '<arrow>↳ </arrow>' + entry[entry.length - 1].split('<dl')[0].slice(0, entry[entry.length - 1].split('<dl')[0].lastIndexOf(' ')) + '&nbsp;' + entry[entry.length - 1].split('<dl')[0].slice(entry[entry.length - 1].split('<dl')[0].lastIndexOf(' ') + 1) + '</span><dl' + entry[entry.length - 1].split('<dl')[1];
    cleanWikiLinks();
            } else if (entry[entry.length - 1].slice(entry[entry.length - 1].lastIndexOf(' ') - 2, entry[entry.length - 1].lastIndexOf(' ')) != '<a') {
    setupShortcuts();
                entries[i].innerHTML += '<br><span style="display:inline-block;margin-left:calc(' + entry.length + 'em + 0.5ch);text-indent: calc(-1em - 0.5ch)">' + '<arrow>↳ </arrow>' + entry[entry.length - 1].slice(0, entry[entry.length - 1].lastIndexOf(' ')) + '&nbsp;' + entry[entry.length - 1].slice(entry[entry.length - 1].lastIndexOf(' ') + 1) + '</span>';
    cleanCitations();
            } else {
    processEntryArrows();
                 entries[0].innerHTML += '<br><span style="display:inline-block;margin-left:calc(' + entry.length + 'em + 0.5ch);text-indent: calc(-1em - 0.5ch)">' + '<arrow></arrow>' + entry[entry.length - 1]
    setupVideoZoom();
            }
    setupZoomText();
    hideEmptyRuby();
    setTextImgPlaceholders();
    highlightEntry();
 
    // Empty notelistalpha
    const notelist = document.querySelector('.notelistalpha');
    if (notelist && notelist.childElementCount < 2) {
        notelist.style.visibility = 'hidden';
    }
 
    // Global replaces
    const content = document.getElementById('mw-content-text');
    if (content) {
        if (window.location.href.indexOf('MediaWiki') === -1) {
            content.innerHTML = content.innerHTML.replaceAll(' ', ' ');
        }
        if (window.location.href.indexOf('index') === -1) {
            content.innerHTML = content.innerHTML
                .replaceAll(' &gt; ', '<con> &gt; </con>')
                 .replaceAll(' ~ ', '<con> ~ </con>');
         }
         }
     }
     }
}
// Remove double spaces & replace Word Connectors * replace → arrow
if (window.location.href.indexOf('MediaWiki') == -1) {
    document.getElementById('mw-content-text').innerHTML = document.getElementById('mw-content-text').innerHTML.replaceAll('  ', ' ');
}
if (window.location.href.indexOf('index') == -1) {
    document.getElementById('mw-content-text').innerHTML = document.getElementById('mw-content-text').innerHTML.replaceAll(' &gt; ', '<con> &gt; </con>').replaceAll(' ~ ', '<con> ~ </con>');
}


    // Debounced resize
// Zoom Videos
    let timeout;
var zoombtn = document.getElementsByClassName("enlarge");
     window.addEventListener('resize', () => {
for (var i = 0; i < zoombtn.length; i++) {
        clearTimeout(timeout);
     zoombtn[i].setAttribute("onclick", "enlarge(" + i + ")");
        timeout = setTimeout(optimizeColumns, 120);
    zoombtn[i].setAttribute("title", "Phóng to");
    });
}
var video = document.querySelectorAll('[title="Play video"]');


};
function enlarge(vid) {
    video[vid].width *= 2;
    video[vid].height *= 2;
    video[vid].style.setProperty("height", video[vid].height + "px");
    video[vid].style.setProperty("width", video[vid].width + "px");
    video[vid].parentElement.style.setProperty("height", video[vid].height + "px");
    video[vid].parentElement.style.setProperty("width", video[vid].width + "px");
    video[vid].parentElement.parentElement.style.setProperty("width", video[vid].width + "px");
    video[vid].parentElement.parentElement.style.setProperty("width", video[vid].width + "px");
    video[vid].parentElement.parentElement.parentElement.style.setProperty("width", video[vid].width + "px");
    video[vid].parentElement.parentElement.parentElement.style.setProperty("width", video[vid].width + "px");
    zoombtn[vid].setAttribute("onclick", "smaller(" + vid + ")");
    zoombtn[vid].setAttribute("title", "Thu nhỏ");
}


if (document.readyState === 'loading') {
function smaller(vid) {
     document.addEventListener('DOMContentLoaded', init);
    video[vid].width /= 2;
} else {
    video[vid].height /= 2;
     init();
    video[vid].style.setProperty("height", video[vid].height + "px");
    video[vid].style.setProperty("width", video[vid].width + "px");
    video[vid].parentElement.style.setProperty("height", video[vid].height + "px");
    video[vid].parentElement.style.setProperty("width", video[vid].width + "px");
    video[vid].parentElement.parentElement.style.setProperty("width", video[vid].width + "px");
    video[vid].parentElement.parentElement.style.setProperty("width", video[vid].width + "px");
    video[vid].parentElement.parentElement.parentElement.style.setProperty("width", video[vid].width + "px");
     video[vid].parentElement.parentElement.parentElement.style.setProperty("width", video[vid].width + "px");
    zoombtn[vid].setAttribute("onclick", "enlarge(" + vid + ")");
     zoombtn[vid].setAttribute("title", "Thu nhỏ");
}
}

Phiên bản lúc 09:23, ngày 23 tháng 4 năm 2026

// Example columns
function excol() {
    var dl = document.getElementsByTagName('dl');
    var maxwidth = 0;
    var cnt = 0;
    for (var i = 0; i < dl.length; i++) {
        cnt = 0;
        var dd = dl[i].getElementsByTagName('dd');
        for (j = 0; j < dd.length; j++) {
            dd[j].style.setProperty('min-width', 'max-content');
            dd[j].style.setProperty('column-span', 'unset');
            if (dd[j].clientWidth + parseFloat(window.getComputedStyle(dd[j]).marginLeft) > dl[i].clientWidth / 2) {
                dd[j].style.setProperty('min-width', 'calc(100% - 1.6em)');
                dd[j].style.setProperty('column-span', 'all');
            }
            if (maxwidth < dd[j].clientWidth && dd[j].style.minWidth != 'calc(100% - 1.6em)') {
                maxwidth = dd[j].clientWidth + parseFloat(window.getComputedStyle(dd[j]).marginLeft) + 5;
            }
        console.log(maxwidth);
        cnt++;
        }
        if (cnt >= 6 && maxwidth * 3 < dl[i].clientWidth) {
            dl[i].style.columns = 3
        } else if (cnt >= 6 && maxwidth * 2 < dl[i].clientWidth && maxwidth * 3 > dl[i].clientWidth) {
            dl[i].style.columns = 2
        } else {
            dl[i].style.columns = 1
        } 
    }
}

// Cognates columns
function cogcol() {
    var cognates = document.querySelectorAll('.cognates ul');
    for (var c = 0; c < cognates.length; c++) {
        var widest = null;
        var widestwidth = 0;
        var coglis = cognates[c].querySelectorAll('li');
        for (var l = 0; l < coglis.length; l++) {
            if (widest == null) {
                widestwidth = coglis[l].clientWidth;
                widest = l;
            } else if (widestwidth < coglis[l].clientWidth) {
                widestwidth = coglis[l].clientWidth;
                widest = l;
            }
        }

        if (document.querySelector('.cognates .reference-text').clientWidth > (widestwidth + parseFloat(window.getComputedStyle(document.querySelector('.reference-text ol'))['marginLeft'])) * 3 + 10 && cognates[c].querySelectorAll('li').length > 7) {
            cognates[c].style.columnCount = 3;
        } else if (document.querySelector('.cognates .reference-text').clientWidth > (widestwidth + parseFloat(window.getComputedStyle(document.querySelector('.reference-text ol'))['marginLeft'])) * 2 + 10 && cognates[c].querySelectorAll('li').length > 4) {
            cognates[c].style.columnCount = 2;
        } else {
            cognates[c].style.columnCount = 1;
        }
    }
}
excol();
cogcol();
window.addEventListener('resize', () => {
    cogcol();
    excol();
})

if (document.querySelector('.notelistalpha') != null && document.querySelector('.notelistalpha').childElementCount < 2) { document.querySelector('.notelistalpha').style.visibility = 'hidden' };

// Wikipedia links
var wlinks = document.getElementsByClassName('extiw');
for (var i = 0; i < wlinks.length; i++) {
    wlinks[i].title = wlinks[i].title.replace('wikipedia:vi:', '')
}

// CTRL + shortcuts
document.addEventListener("keydown", function(e) {
    if (e.key === 's' && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
        e.preventDefault();
        document.querySelector('[value="Save changes"]').click();
    };
    if (e.key === 'p' && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
        e.preventDefault();
        document.querySelector('[value="Show preview"]').click();
    };
    if (e.key === 'e' && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
        e.preventDefault();
        document.querySelector('a[accesskey="e"]').click();
    };
    if (e.key === 'r' && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
        e.preventDefault();
        document.querySelector('input[accesskey="r"]').click();
    };
    if (e.key === 'g' && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
        e.preventDefault();
        document.querySelector('input[accesskey="g"]').click();
    };
}, false);

// Remove space before citation
var citerefs = document.querySelectorAll('[id^="cite_ref-"]');
if (citerefs.length > 0) {
    for (var i = 0; i < citerefs.length; i++) {
        if (citerefs[i].childNodes[0].textContent == ' ') {
            citerefs[i].childNodes[0].textContent = '';
        }
    }
    citerefs[0].parentElement.innerHTML = citerefs[0].parentElement.innerHTML.replaceAll(' <sup id="cite_ref-', '<sup id="cite_ref-');
}

// Line-break arrows
var entries = '';
if (window.location.href.search('index.php') < 0 && window.location.href.lastIndexOf(':') == 5) {
    entries = document.querySelector('ol').querySelectorAll('li');
    for (i = 0; i < entries.length; i++) {
        if (entries[i].innerHTML.match(/> →/g) != null) {
            var entry = entries[i].innerHTML.split('> →');
            entries[i].innerHTML = '';
            entries[i].innerHTML += entry[0] + 'b>';
            for (j = 1; j < entry.length - 1; j++) {
                entries[i].innerHTML += '<br><span style="display:inline-block;margin-left:calc(' + (j + 1) + 'em + 0.5ch);text-indent: calc(-1em - 0.5ch)">' + '<arrow>↳ </arrow>' + entry[j] + '></span>';
            }
            if (entry[entry.length - 1].search('dl') > -1 && entry[entry.length - 1].split('<dl')[0].slice(0, entry[entry.length - 1].split('<dl')[0].lastIndexOf(' ')).slice(entry[entry.length - 1].split('<dl')[0].slice(0, entry[entry.length - 1].split('<dl')[0].lastIndexOf(' ')).length - 2) != '<a') {
                entries[i].innerHTML += '<br><span style="display:inline-block;margin-left:calc(' + entry.length + 'em + 0.5ch);text-indent: calc(-1em - 0.5ch)">' + '<arrow>↳ </arrow>' + entry[entry.length - 1].split('<dl')[0].slice(0, entry[entry.length - 1].split('<dl')[0].lastIndexOf(' ')) + '&nbsp;' + entry[entry.length - 1].split('<dl')[0].slice(entry[entry.length - 1].split('<dl')[0].lastIndexOf(' ') + 1) + '</span><dl' + entry[entry.length - 1].split('<dl')[1];
            } else if (entry[entry.length - 1].slice(entry[entry.length - 1].lastIndexOf(' ') - 2, entry[entry.length - 1].lastIndexOf(' ')) != '<a') {
                entries[i].innerHTML += '<br><span style="display:inline-block;margin-left:calc(' + entry.length + 'em + 0.5ch);text-indent: calc(-1em - 0.5ch)">' + '<arrow>↳ </arrow>' + entry[entry.length - 1].slice(0, entry[entry.length - 1].lastIndexOf(' ')) + '&nbsp;' + entry[entry.length - 1].slice(entry[entry.length - 1].lastIndexOf(' ') + 1) + '</span>';
            } else {
                entries[0].innerHTML += '<br><span style="display:inline-block;margin-left:calc(' + entry.length + 'em + 0.5ch);text-indent: calc(-1em - 0.5ch)">' + '<arrow>↳ </arrow>' + entry[entry.length - 1]
            }
        }
    }
}
// Remove double spaces & replace Word Connectors * replace → arrow
if (window.location.href.indexOf('MediaWiki') == -1) {
    document.getElementById('mw-content-text').innerHTML = document.getElementById('mw-content-text').innerHTML.replaceAll('  ', ' ');
}
if (window.location.href.indexOf('index') == -1) {
    document.getElementById('mw-content-text').innerHTML = document.getElementById('mw-content-text').innerHTML.replaceAll(' &gt; ', '<con> &gt; </con>').replaceAll(' ~ ', '<con> ~ </con>');
}

// Zoom Videos
var zoombtn = document.getElementsByClassName("enlarge");
for (var i = 0; i < zoombtn.length; i++) {
    zoombtn[i].setAttribute("onclick", "enlarge(" + i + ")");
    zoombtn[i].setAttribute("title", "Phóng to");
}
var video = document.querySelectorAll('[title="Play video"]');

function enlarge(vid) {
    video[vid].width *= 2;
    video[vid].height *= 2;
    video[vid].style.setProperty("height", video[vid].height + "px");
    video[vid].style.setProperty("width", video[vid].width + "px");
    video[vid].parentElement.style.setProperty("height", video[vid].height + "px");
    video[vid].parentElement.style.setProperty("width", video[vid].width + "px");
    video[vid].parentElement.parentElement.style.setProperty("width", video[vid].width + "px");
    video[vid].parentElement.parentElement.style.setProperty("width", video[vid].width + "px");
    video[vid].parentElement.parentElement.parentElement.style.setProperty("width", video[vid].width + "px");
    video[vid].parentElement.parentElement.parentElement.style.setProperty("width", video[vid].width + "px");
    zoombtn[vid].setAttribute("onclick", "smaller(" + vid + ")");
    zoombtn[vid].setAttribute("title", "Thu nhỏ");
}

function smaller(vid) {
    video[vid].width /= 2;
    video[vid].height /= 2;
    video[vid].style.setProperty("height", video[vid].height + "px");
    video[vid].style.setProperty("width", video[vid].width + "px");
    video[vid].parentElement.style.setProperty("height", video[vid].height + "px");
    video[vid].parentElement.style.setProperty("width", video[vid].width + "px");
    video[vid].parentElement.parentElement.style.setProperty("width", video[vid].width + "px");
    video[vid].parentElement.parentElement.style.setProperty("width", video[vid].width + "px");
    video[vid].parentElement.parentElement.parentElement.style.setProperty("width", video[vid].width + "px");
    video[vid].parentElement.parentElement.parentElement.style.setProperty("width", video[vid].width + "px");
    zoombtn[vid].setAttribute("onclick", "enlarge(" + vid + ")");
    zoombtn[vid].setAttribute("title", "Thu nhỏ");
}