// Alter anzeigen
var mw = mw ?? null;
(function() {
    var metadata = $('#Vorlage_Personendaten');
    if ($('#jw-age').length==0 && metadata.length>0) {
        $('head').append(
            '<link href="/w/index.php?title=Benutzer:Wiegels/css/indicator.css&action=raw&ctype=text/css" rel="stylesheet" type="text/css"/>'+
            '<link href="/w/index.php?title=Benutzer:Wiegels/css/age.css&action=raw&ctype=text/css" rel="stylesheet" type="text/css"/>'
        );
        metadata = metadata.clone().attr('id', '').addClass('jw-indicator');
        $('.mw-indicators').append('<div id="jw-age" class="jw-indicator"></div>').append(metadata);
        var dates = ;
        var intro = $('.mw-parser-output > p').
            filter((index, element) =>
                $(element).html().replace(/<span style="display:none;">.*?<\/span>/, '').replace(/\s/g, '')!='' &&
                $(element).text().replace(/\s/g, '')!=''
            ).
            first().text().replace(/\s+/g, ' ').replace(/\]+\]/g, '');
        var months = mw.config.get('wgMonthNames').join('|').replace(/(Januar)/, 'Jänner|$1');
        var matches = [
            metadata.text().match(/GEBURTSDATUM\n\n(+)/),
            metadata.text().match(/STERBEDATUM\n\n(+)/)
        ];
        $(matches).each(function(index, match) {
            if (match) {
                var date = match.match(RegExp('^.*?(\\d{1,2}\. |)('+months+'|) ?(\\d{4})$'));
                if (date) {
                    if (
                        !intro.replace(/(\(.*?)\(.*?\)(.*?\))/g, '$1$2').replace(/\s+/g, ' ').
                        match(RegExp((date+date.replace(/(Januar)/, '($1|Jänner)')).replace(/ $/, '')+' '+date))
                    ) {
                        metadata.html(metadata.html().
                            replace(RegExp('('++'\\n<\\/td>\\n<td>)(+)'), '$1<mark>$2</mark>'
                        ));
                    }
                    dates = [
                        0,
                        parseInt('0'+date),
                        Math.max(months.replace(RegExp(date+'.*$'), '').replace(//g, '').length-1, 0),
                        parseInt(date)
                    ];
                }
            }
        });
        var date0 = dates;
        var today = new Date();
        var date1 = dates || ;
        var age = date0 ?
            (Math.max(date0, date1)>12 || Math.min(date0, date1)==0 ? '&asymp;' : '')+
            (date1-date0-(date1*32+date1<date0*32+date0 ? 1 : 0)) :
            null;
        var cats = '|'+mw.config.get('wgCategories').join('|')+'|';
        $('#jw-age').append(
            '<span><a href="#" accesskey="b" title="Personendaten umschalten ">'+
            (age ? age+ ' Jahr'+(age.replace('&asymp;', '')!=1 ? 'e' : '')+' alt' : 'Alter unbekannt')+'</a></span>'
        );
        $('#jw-age').addClass(
            (cats.match(/\|Frau\|/) ? 'jw-female' : cats.match(/\|Mann\|/) ? 'jw-male' : '')+
            (dates ? ' jw-died' : date0+'-'+date0==date1+'-'+date1 ? ' jw-birthday' : '')
        );
        $('#jw-age a').on('click', function(event) {
            event.preventDefault();
            metadata.toggle();
        });
        metadata.filter(':has(mark)').on('mouseenter mouseleave', function(event) {
            $(this).find('tr:not(:has(mark))').toggle(event.type=='mouseenter');
        });
        if (metadata.html().match(/<mark>/)!=null) {
            metadata.toggle().find('tr:not(:has(mark))').toggle();
        }
    }
})();