User:Mike Dillon/Scripts/searchNewWindow.js

From Wikipedia, the free encyclopedia

Note: After saving, you have to bypass your browser's cache to see the changes. Firefox/Mozilla/Safari: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Internet Explorer: press Ctrl-F5, Opera/Konqueror: press F5.

// Requires: [[User:Mike Dillon/Scripts/easydom.js]]

// <pre><nowiki>

// searchNewWindowDefault: Controls default state of checkbox on page load; "false" if unspecified
var searchNewWindowDefault;
if (searchNewWindowDefault == null) {
    searchNewWindowDefault = false;
}

// searchNewWindowLabel: Text to be used as the checkbox label
var searchNewWindowLabel;
if (searchNewWindowLabel == null) {
    searchNewWindowLabel = "New window?";
}

addOnloadHook(function () {
    // Find the search form
    var searchform = document.getElementById("searchform");
    if (!searchform) return;

    // Get the first div inside (holds the input elements)
    var searchdiv = searchform.getElementsByTagName("div")[0];
    if (!searchdiv) return;

    with (easydom) {
        // Build the checkbox and onchange handler
        var newWindowCheckbox = input({
            "id": "searchNewWindow",
            "type": "checkbox",
            "onchange": function () {
                if (this.checked) {
                    searchform.setAttribute("target", "_blank");
                } else {
                    searchform.setAttribute("target", "_top");
                }
            }
        });

        // Add the checkbox and label to the div
        searchdiv.appendChild(div(
            { "class": "searchNewWindow" },
            newWindowCheckbox, " ",
            label({ "for": "searchNewWindow" }, searchNewWindowLabel)));
    }

    // If searchNewWindowDefault is true, click the checkbox
    if (searchNewWindowDefault) {
        newWindowCheckbox.click();
    }
});

// </nowiki></pre>