Toggle menu
1.3K
4.4K
15
13.5K
WikiGenius
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Get Your WikiGenius page
Chat on WhatsApp Now →

MediaWiki:Common.js

MediaWiki interface page

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
mw.loader.using('mediawiki.util').then(function() {
  var script = document.createElement('script');
  script.type = 'application/ld+json';
  script.text = JSON.stringify({
    "@context": "https://schema.org",
    "@type": "Organization",
    "name": "WikiGenius",
    "url": "https://wikigenius.org/",
    "logo": "https://wikigenius.org/images/3/3d/WikiGenius_Favicon.png",
    "foundingDate": "2023-07-22",
    "description": "WikiGenius is a dedicated online encyclopedia that profiles entrepreneurs, startups, business leaders, and founders worldwide. Our platform highlights inspiring success stories, innovative companies, and industry pioneers, providing reliable and well-researched information to support the business community and aspiring entrepreneurs.",
    "founder": {
      "@type": "Person",
      "name": "Shovon Ahmed",
      "sameAs": [
        "https://g.co/kgs/VEEEjKG",
        "https://www.google.com/search?kgmid=/g/11r3_4dnj8"
      ]
    },
    "sameAs": [
      "https://www.facebook.com/profile.php?id=61574894462519",
      "https://www.instagram.com/wikigenius2026/",
      "https://www.linkedin.com/company/wikigenius10/"
    ],
    "address": {
      "@type": "PostalAddress",
      "addressRegion": "Florida",
      "addressCountry": "United States"
    }
  });
  document.head.appendChild(script);
});

(function () {
    'use strict';

    var STORAGE_KEY = 'parvejBirthdayPopupClosed';
    var ONE_HOUR = 60 * 60 * 1000;
    var TARGET_DATE = '08-23';
    var PHOTO_URL = 'https://synchchaos.com/wp-content/uploads/2023/10/parvej.png';

    function isBirthdayToday() {
        var d = new Date();
        var mm = String(d.getMonth() + 1).padStart(2, '0');
        var dd = String(d.getDate()).padStart(2, '0');
        return (mm + '-' + dd) === TARGET_DATE;
    }

    function shouldShowPopup() {
        var closedAt = localStorage.getItem(STORAGE_KEY);
        if (!closedAt) return true;
        return Date.now() - parseInt(closedAt, 10) >= ONE_HOUR;
    }

    function closePopup(popup) {
        popup.classList.add('pb-birthday-hide');
        setTimeout(function () {
            if (popup.parentNode) {
                popup.parentNode.removeChild(popup);
            }
        }, 300);
        localStorage.setItem(STORAGE_KEY, Date.now().toString());
    }

    function el(tag, opts) {
        var node = document.createElement(tag);
        opts = opts || {};
        if (opts.className) node.className = opts.className;
        if (opts.text) node.textContent = opts.text;
        if (opts.html) node.innerHTML = opts.html; // used only for the trusted static emoji string
        if (opts.attrs) {
            for (var key in opts.attrs) {
                if (Object.prototype.hasOwnProperty.call(opts.attrs, key)) {
                    node.setAttribute(key, opts.attrs[key]);
                }
            }
        }
        return node;
    }

    function buildPopup() {
        var popup = el('div', { attrs: { id: 'parvej-birthday-popup' } });

        var overlay = el('div', { className: 'pb-birthday-overlay' });

        var card = el('div', { className: 'pb-birthday-card' });

        var closeBtn = el('button', {
            className: 'pb-birthday-close',
            text: '\u00D7',
            attrs: {
                type: 'button',
                'aria-label': 'Close birthday message',
                title: 'Close'
            }
        });
        closeBtn.addEventListener('click', function () {
            closePopup(popup);
        });

        var photo = el('img', {
            className: 'pb-birthday-photo',
            attrs: {
                src: PHOTO_URL,
                alt: 'Parvej Husen Talukder'
            }
        });

        var title = el('div', {
            className: 'pb-birthday-title',
            text: 'Happy Birthday!'
        });

        var name = el('div', {
            className: 'pb-birthday-name',
            text: 'Parvej Husen Talukder'
        });

        var message = el('div', { className: 'pb-birthday-message' });
        message.appendChild(document.createTextNode('WikiGenius wishes its '));
        var strong = el('strong', { text: 'Co-Founder, Poet & Internet Entrepreneur' });
        message.appendChild(strong);
        message.appendChild(document.createTextNode(' a very happy birthday!'));

        var subtitle = el('div', {
            className: 'pb-birthday-subtitle',
            text: 'May his creativity, words, and vision continue to inspire people around the world.'
        });

        var cake = el('div', {
            className: 'pb-birthday-cake',
            text: '\uD83C\uDF89 \uD83C\uDF82 \uD83C\uDF89'
        });

        card.appendChild(closeBtn);
        card.appendChild(photo);
        card.appendChild(title);
        card.appendChild(name);
        card.appendChild(message);
        card.appendChild(subtitle);
        card.appendChild(cake);

        popup.appendChild(overlay);
        popup.appendChild(card);

        return popup;
    }

    function injectStyles() {
        if (document.getElementById('pb-birthday-styles')) return;

        var style = document.createElement('style');
        style.id = 'pb-birthday-styles';
        style.textContent =
            '#parvej-birthday-popup {' +
                'position: fixed; inset: 0; z-index: 99999;' +
                'display: flex; align-items: center; justify-content: center;' +
                'animation: pbBirthdayFadeIn .35s ease;' +
            '}' +
            '.pb-birthday-overlay {' +
                'position: absolute; inset: 0;' +
                'background: rgba(0,0,0,.68); backdrop-filter: blur(5px);' +
            '}' +
            '.pb-birthday-card {' +
                'position: relative; z-index: 2;' +
                'width: min(440px, calc(100vw - 32px));' +
                'padding: 38px 30px 32px; text-align: center;' +
                'border-radius: 24px;' +
                'background: linear-gradient(145deg, #ffffff, #fff8ec);' +
                'box-shadow: 0 30px 80px rgba(0,0,0,.35), 0 8px 30px rgba(0,0,0,.18);' +
                'border: 1px solid rgba(255,193,7,.35);' +
            '}' +
            '.pb-birthday-close {' +
                'position: absolute; top: 12px; right: 14px;' +
                'width: 34px; height: 34px; border: 0; border-radius: 50%;' +
                'background: rgba(0,0,0,.07); color: #555;' +
                'font-size: 25px; line-height: 30px; cursor: pointer;' +
                'transition: .2s ease;' +
            '}' +
            '.pb-birthday-close:hover { background: rgba(0,0,0,.14); transform: rotate(90deg); }' +
            '.pb-birthday-photo {' +
                'width: 96px; height: 96px; border-radius: 50%;' +
                'object-fit: cover; border: 3px solid #ffc107;' +
                'box-shadow: 0 4px 16px rgba(0,0,0,.15);' +
                'margin-bottom: 14px; display: block; margin-left: auto; margin-right: auto;' +
            '}' +
            '.pb-birthday-title { font-size: 28px; font-weight: 800; color: #d97706; margin-bottom: 5px; }' +
            '.pb-birthday-name { font-size: 20px; font-weight: 700; color: #222; margin-bottom: 18px; }' +
            '.pb-birthday-message { font-size: 16px; line-height: 1.7; color: #444; margin-bottom: 12px; }' +
            '.pb-birthday-message strong { color: #b45309; }' +
            '.pb-birthday-subtitle { font-size: 14px; line-height: 1.6; color: #777; }' +
            '.pb-birthday-cake { margin-top: 20px; font-size: 25px; letter-spacing: 8px; }' +
            '.pb-birthday-hide { animation: pbBirthdayFadeOut .3s ease forwards; }' +
            '@keyframes pbBirthdayFadeIn { from { opacity: 0; } to { opacity: 1; } }' +
            '@keyframes pbBirthdayFadeOut { from { opacity: 1; } to { opacity: 0; } }' +
            '@media (max-width: 480px) {' +
                '.pb-birthday-card { padding: 32px 22px 28px; border-radius: 20px; }' +
                '.pb-birthday-photo { width: 80px; height: 80px; }' +
                '.pb-birthday-title { font-size: 24px; }' +
                '.pb-birthday-name { font-size: 17px; }' +
            '}';

        document.head.appendChild(style);
    }

    function init() {
        if (!isBirthdayToday()) return;
        if (!shouldShowPopup()) return;

        injectStyles();
        var popup = buildPopup();
        document.body.appendChild(popup);
    }

    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', init);
    } else {
        init();
    }
})();