def perform_request_init(uid, ln, req, lastupdated):
    """Handle the initial request by adding menu and JavaScript to the page."""
    errors = []
    warnings = []
    body = ""

    # Add script data.
    record_templates = get_record_templates()
    record_templates.sort()
    tag_names = get_name_tags_all()
    protected_fields = ["001"]
    protected_fields.extend(CFG_BIBEDIT_PROTECTED_FIELDS.split(","))
    history_url = '"' + CFG_SITE_URL + '/admin/bibedit/bibeditadmin.py/history"'
    cern_site = "false"

    if not simplejson_available:
        title = "Record Editor"
        body = """Sorry, the record editor cannot operate when the
                `simplejson' module is not installed.  Please see the INSTALL
                file."""
        return page(
            title=title,
            body=body,
            errors=[],
            warnings=[],
            uid=uid,
            language=ln,
            navtrail="",
            lastupdated=lastupdated,
            req=req,
        )

    if CFG_CERN_SITE:
        cern_site = "true"
    data = {
        "gRECORD_TEMPLATES": record_templates,
        "gTAG_NAMES": tag_names,
        "gPROTECTED_FIELDS": protected_fields,
        "gSITE_URL": '"' + CFG_SITE_URL + '"',
        "gHISTORY_URL": history_url,
        "gCERN_SITE": cern_site,
        "gHASH_CHECK_INTERVAL": CFG_BIBEDIT_JS_HASH_CHECK_INTERVAL,
        "gCHECK_SCROLL_INTERVAL": CFG_BIBEDIT_JS_CHECK_SCROLL_INTERVAL,
        "gSTATUS_ERROR_TIME": CFG_BIBEDIT_JS_STATUS_ERROR_TIME,
        "gSTATUS_INFO_TIME": CFG_BIBEDIT_JS_STATUS_INFO_TIME,
        "gCLONED_RECORD_COLOR": '"' + CFG_BIBEDIT_JS_CLONED_RECORD_COLOR + '"',
        "gCLONED_RECORD_COLOR_FADE_DURATION": CFG_BIBEDIT_JS_CLONED_RECORD_COLOR_FADE_DURATION,
        "gNEW_ADD_FIELD_FORM_COLOR": '"' + CFG_BIBEDIT_JS_NEW_ADD_FIELD_FORM_COLOR + '"',
        "gNEW_ADD_FIELD_FORM_COLOR_FADE_DURATION": CFG_BIBEDIT_JS_NEW_ADD_FIELD_FORM_COLOR_FADE_DURATION,
        "gNEW_CONTENT_COLOR": '"' + CFG_BIBEDIT_JS_NEW_CONTENT_COLOR + '"',
        "gNEW_CONTENT_COLOR_FADE_DURATION": CFG_BIBEDIT_JS_NEW_CONTENT_COLOR_FADE_DURATION,
        "gNEW_CONTENT_HIGHLIGHT_DELAY": CFG_BIBEDIT_JS_NEW_CONTENT_HIGHLIGHT_DELAY,
        "gTICKET_REFRESH_DELAY": CFG_BIBEDIT_JS_TICKET_REFRESH_DELAY,
        "gRESULT_CODES": CFG_BIBEDIT_AJAX_RESULT_CODES,
        "gAUTOSUGGEST_TAGS": CFG_BIBEDIT_AUTOSUGGEST_TAGS,
        "gAUTOCOMPLETE_TAGS": CFG_BIBEDIT_AUTOCOMPLETE_TAGS_KBS.keys(),
        "gKEYWORD_TAG": '"' + CFG_BIBEDIT_KEYWORD_TAG + '"',
    }
    body += '<script type="text/javascript">\n'
    for key in data:
        body += "    var %s = %s;\n" % (key, data[key])
    body += "    </script>\n"

    # Adding the information about field templates
    fieldTemplates = get_available_fields_templates()
    body += "<script>\n" + "   var fieldTemplates = %s\n" % (json.dumps(fieldTemplates),) + "</script>\n"
    # Add scripts (the ordering is NOT irrelevant).
    scripts = [
        "jquery.min.js",
        "jquery.effects.core.min.js",
        "jquery.effects.highlight.min.js",
        "jquery.autogrow.js",
        "jquery.jeditable.mini.js",
        "jquery.hotkeys.min.js",
        "json2.js",
        "bibedit_display.js",
        "bibedit_engine.js",
        "bibedit_keys.js",
        "bibedit_menu.js",
        "bibedit_holdingpen.js",
        "marcxml.js",
        "bibedit_clipboard.js",
    ]

    for script in scripts:
        body += '    <script type="text/javascript" src="%s/js/%s">' "</script>\n" % (CFG_SITE_URL, script)

    # Build page structure and menu.
    # rec = create_record(format_record(235, "xm"))[0]
    # oaiId = record_extract_oai_id(rec)

    body += bibedit_templates.menu()
    body += '    <div id="bibEditContent"></div>\n'

    return body, errors, warnings