function openPopup(url) {
    window.open(url, "_blank", "width=640,height=480,personalbar=no,location=yes,toolbar=yes,scrollbars=yes");
    return false;
}

function lang_selector() {
    var url = this.options[this.selectedIndex].value;
    if (url) {
        location = url;
    }
}

function pr2d(v) {
    return v < 10 ? '0' + v : v;
}

function time2absstr(t) {
    var d = new Date(t * 1000);
    return [ d.getFullYear(), pr2d(d.getMonth() + 1), pr2d(d.getDate()) ].join('/')
        + ' '
        + [ pr2d(d.getHours()), pr2d(d.getMinutes()) ].join(':');
}

function initWFParams() {
    PlusWiki.wfParams.initHandlers = function (name) {
        this.initHandlers();
        this.shiftLevel = 0;
        this.addFilter(function (line) {
            var newLevel = 0;
            if (line.match(/^(:+)\s*/)) {
                line = RegExp.rightContext;
                newLevel = RegExp.$1.length;
            }
            if (this.shiftLevel != newLevel) {
                this.mode();
                if (this.shiftLevel != 0) {
                    this.out.push('</div>');
                }
                if (newLevel != 0) {
                    this.out.push(
                        '<div style="margin-left: '
                        + (newLevel * 2)
                        + 'em;">');
                }
                this.shiftLevel = newLevel;
            }
            return line;
        });
        this.addTaggedStatement('!', '<h2>');
        this.addTaggedStatement('!!', '<h3>');
        this.addTaggedStatement('!!!', '<h4>');
        this.addTaggedStatement('*', '<h2>');
        this.addTaggedStatement('**', '<h3>');
        this.addTaggedStatement('***', '<h4>');
    };
    PlusWiki.wfParams.nameToLink = function (name) {
        var path = location.pathname.replace(/[^\/]*$/, '');
        if (name.match(/^note:/)) {
            return path + 'note?target='
                + encodeURIComponent(RegExp.rightContext);
        }
        path += 'wiki?_name=' + encodeURIComponent(name);
        var lang = location.search.toQueryParams().lang;
        if (typeof lang != 'undefined') {
            path += '&lang=' + lang;
        }
        return path;
    };
}
