Event.observe(window, 'load', function(e) {
    $$('input[type=checkbox]').invoke('observe', 'checkboxReplacement:stateChanged', function(e) {
        var boxes = $$('input[type=checkbox]');
        var first = boxes.first();
        var anyChecked = (boxes.without(first).find(function(cb) { return cb.checked; }) != undefined);
        if (e.element() == first) {
            if (!this.checked) {
                if (!anyChecked) {
                    e.element().checked = true;
                    e.element().instance.observerHandler(e.element(), true);
                    e.stop();
                    return;
                }
            } else {
                if (anyChecked) {
                    boxes.without(first).each(function(c) {
                        c.checked = false;
                        c.instance.observerHandler(c, false);
                    });
                    e.stop();
                    return;
                }
            }
        }
        if (anyChecked) {
            if (this != first)
                first.checked = false;
        }
        else {
            first.checked = true;
        }

    });
    if($('copyToClipboardLink')!=null) $('copyToClipboardLink').observe('click', function(e) {
        var url = this.previous('input').value;
        copyToClipboard(url);
        this.insert({ bottom: new Element('img', { src: 'images/loading.gif', border: '0' }) });
        window.setTimeout(function(e) {
            this.update('Copied to clipboard.');
            window.setTimeout(function(e) {
                this.update('Copy link to clipboard');
            } .bind(this), 3000);
        } .bind(this), 1000);
        e.stop();
    });
});