// ==UserScript==
// @name           Trigger Warning
// @namespace      http://everything2.com
// @description    Hide content marked with a trigger warning behind a clickwall.
// @include        http://everything2.com/*
// @include        http://www.everything2.com/*
// @include        http://everything2.net/*
// @include        http://www.everything2.net/*
// @include        http://everything2.org/*
// @include        http://www.everything2.org/*
// @author         raincomplex
// ==/UserScript==

/*
    FUNCTION
        For a writeup in at least one category whose name
        begins with "Trigger Warning: ", the content will
        be replaced by the following message:
        
            This writeup is marked with a trigger warning.
            Click here to show the content.
        
        Upon clicking there, the message is removed and
        the writeup is shown as normal.
*/

var pagebody = document.getElementById('pagebody')

for (i = 0; i < pagebody.children.length; i++) {
    var div = pagebody.children[i]
    if (div.className.search(/(^| )item( |$)/) != -1) {
        var content = div.children[1]
        var footer = div.children[2]
        
        var warnings = 0
        var str = footer.innerHTML
        var regex = new RegExp("<[^<>]+>Trigger Warning: [^<>]+</a>", 'gi')
        while (true) {
            var m = regex.exec(str)
            if (m == null) break
            warnings += 1
        }
        
        if (warnings > 0) {
            var warn = 'a trigger warning'
            if (warnings > 1)
                warn = 'trigger warnings'
            content.innerHTML = '<div id="triggerwarning' + i + '">'
                + '<p><b>This writeup is marked with ' + warn + '.</b>'
                + '<p><a href="" onclick="'
                    + 'document.getElementById(\'triggerwarning' + i + '\').style.display = \'none\'; '
                    + 'document.getElementById(\'triggercontent' + i + '\').style.display = \'block\'; '
                    + 'return false">Click here</a> to show the content.</div>'
                + '<div style="display: none" id="triggercontent' + i + '">' + content.innerHTML + '</div>'
        }
    }
}

// vim: ts=4 et