{"id":1300,"date":"2018-06-23T07:21:46","date_gmt":"2018-06-23T07:21:46","guid":{"rendered":"http:\/\/www.ccc-corvallis.org\/2018\/?page_id=1300"},"modified":"2025-09-22T02:10:38","modified_gmt":"2025-09-22T02:10:38","slug":"bible-lookup","status":"publish","type":"page","link":"http:\/\/www.ccc-corvallis.org\/2018\/bible-lookup\/","title":{"rendered":"Bible Lookup \/ \u5723\u7ecf\u67e5\u8be2\uff08NIV\uff0b\u548c\u5408\u672c\uff09"},"content":{"rendered":"<div id=\"pl-1300\"  class=\"panel-layout\" ><div id=\"pg-1300-0\"  class=\"panel-grid panel-no-style\" ><div id=\"pgc-1300-0-0\"  class=\"panel-grid-cell\" ><div id=\"panel-1300-0-0-0\" class=\"widget_text so-panel widget widget_custom_html panel-first-child panel-last-child\" data-index=\"0\" ><h3 class=\"widget-title\">Bible Lookup \/ \u5723\u7ecf\u67e5\u8be2\uff08\u82f1\u6587\uff0b\u4e2d\u6587\uff09<\/h3><div class=\"textwidget custom-html-widget\"><!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n<meta charset=\"utf-8\" \/>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\" \/>\n<title>Bible Lookup \u00b7 \u5723\u7ecf\u67e5\u8be2\uff08KJV + \u4e2d\u6587\uff09<\/title>\n\n<style>\n\/* ===== \u57fa\u7840\u6837\u5f0f\uff08\u65e0 CSS \u53d8\u91cf\uff09 ===== *\/\nhtml{scroll-behavior:smooth;}\nbody{\n  font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,'Noto Sans',sans-serif;\n  line-height:1.62;\n  color:#222f43;\n  margin:0;\n  background:#f6f7fb;\n  font-size:16px; \/* \u666e\u901a *\/\n}\nbody.fs-lg{font-size:18px;}   \/* \u5927 *\/\nbody.fs-xl{font-size:20px;}   \/* \u7279\u5927 *\/\n\n.wrap{max-width:1100px;margin:28px auto;padding:0 18px}\nh1{font-size:22px;margin:0 0 18px;display:flex;align-items:center;gap:.6rem}\nh1 small{font-weight:500;color:#5b6476}\n\n\/* \u9876\u90e8\u5de5\u5177\u6761 *\/\n.toolbar{\n  position:sticky;top:0;z-index:10;\n  background:#f6f7fb;border-bottom:1px solid #e6e9f2;padding:.75rem .2rem .6rem;\n}\n.bar{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}\n.bar input{\n  flex:1 1 540px;border:1px solid #e6e9f2;border-radius:12px;\n  padding:.85rem 1rem;font-size:16px;background:#fff;\n}\n.btn{\n  display:inline-flex;align-items:center;gap:.35rem;border-radius:12px;\n  padding:.7rem 1rem;border:1px solid #e6e9f2;background:#fff;cursor:pointer;\n  font-size:14px;color:#22314a\n}\n.btn.primary{background:#0b5bd3;border-color:#0b5bd3;color:#fff}\n.btn:disabled{opacity:.6;cursor:not-allowed}\n\n.seg{display:inline-flex;border:1px solid #e6e9f2;border-radius:12px;overflow:hidden}\n.seg button{border:0;background:#fff;padding:.55rem .9rem}\n.seg button.active{background:#eef4ff;color:#0a49b7}\n\n.hint{color:#5b6476;margin:.6rem 0 1.2rem}\n\n\/* \u4e66\u5377\u5f69\u8272\u6807\u7b7e *\/\n.books{display:flex;gap:.6rem;margin:.3rem 0 1.2rem;flex-wrap:wrap}\n.tag{\n  display:inline-flex;align-items:center;justify-content:center;\n  height:36px;min-width:88px;padding:0 .9rem;border-radius:999px;border:1px solid #e6e9f2;\n  background:#fff;color:#22314a;font-size:13px;\n  box-shadow:0 1px 0 rgba(10,20,40,.03);\n}\n.tag:hover{box-shadow:0 4px 14px rgba(0,0,0,.06)}\n.tag:active{transform:translateY(1px)}\n\/* \u4e3b\u9898\u8272\uff08OT \u4e94\u7c7b \/ NT \u56db\u7c7b\uff09 *\/\n.c1{background:#eef4ff} \/* \u5f8b\u6cd5\u4e66 \/ \u798f\u97f3\u4e66+\u4f7f\u5f92\u884c\u4f20 *\/\n.c2{background:#eaf7f0} \/* \u5386\u53f2\u4e66 \/ \u4fdd\u7f57\u4e66\u4fe1 *\/\n.c3{background:#fff4e6} \/* \u8bd7\u6b4c\u667a\u6167 \/ \u666e\u901a\u4e66\u4fe1 *\/\n.c4{background:#f0f7ff} \/* \u5927\u5148\u77e5\u4e66 \/ \u542f\u793a\u5f55 *\/\n.c5{background:#f6f3ff} \/* \u5c0f\u5148\u77e5\u4e66 *\/\n.c6{background:#f6f3ff} \/* \u9884\u7559 *\/\n.c7{background:#eaf7f0} \/* \u9884\u7559 *\/\n.c8{background:#fff4e6} \/* \u9884\u7559 *\/\n.c9{background:#f0f7ff} \/* \u9884\u7559 *\/\n\n.card{background:#fff;border:1px solid #e6e9f2;border-radius:14px;padding:1.1rem}\n.card h3{margin:0 0 .5rem;display:flex;align-items:center;gap:.6rem}\n.badge{display:inline-block;background:#eef4ff;color:#0a49b7;border-radius:999px;padding:.15rem .5rem;font-size:12px}\n\n.tools{display:flex;gap:.5rem;margin:.35rem 0 0}\n.copy{border:1px solid #e6e9f2;border-radius:10px;padding:.35rem .65rem;background:#fff;cursor:pointer;font-size:13px}\n\/* \u4e24\u5217\u5e76\u6392\uff08\u81ea\u52a8\u6362\u884c\uff09\uff0c\u7a84\u5c4f\u5355\u5217 \u2014\u2014 Flex \u65b9\u6848 *\/\n.grid{\n  display: flex;\n  flex-wrap: wrap;\n  gap: 1.2rem;\n  align-items: flex-start;\n}\n\n.grid>.col{\n  flex: 1 1 0;\n  min-width: 320px;  \/* \u4fdd\u8bc1\u4e24\u5217\u65f6\u4e0d\u592a\u7a84\uff1b\u53ef\u6309\u9700\u8c03 *\/\n}\n\n\/* \u5c0f\u4e8e 900px \u5f3a\u5236\u5355\u5217 *\/\n@media (max-width: 900px){\n  .grid>.col{ flex-basis: 100%; }\n}\n\n.verses{white-space:pre-wrap}\n.v{display:flex;gap:.6rem;align-items:flex-start;margin:.28rem 0}\n.v .n{min-width:2.4rem;color:#5b6476}\n.v .t{flex:1 1 auto}\n\n.warn{background:#fff7e6;border:1px solid #ffe4b8;color:#795b00;padding:.7rem 1rem;border-radius:12px}\n\n\/* \u7ae0\u8282\u6309\u94ae\u7f51\u683c *\/\n#chapbox{margin-top:.6rem}\n.chap{display:flex;flex-wrap:wrap;gap:.5rem}\n.chap button{\n  border:1px solid #e6e9f2;background:#fff;border-radius:8px;padding:.45rem .65rem;min-width:44px\n}\n\n\/* \u6253\u5370\u53cb\u597d *\/\n@media (max-width:900px){\n  .grid>.col{flex-basis:100%}\n}\n<\/style>\n<\/head>\n\n<body class=\"fs-normal\">\n<div class=\"wrap\" id=\"ccc-bible-lookup\">\n  <h1>\ud83d\udcd6 Bible Lookup \/ \u5723\u7ecf\u67e5\u8be2\uff08KJV + \u4e2d\u6587\uff09\n    <small id=\"sizeTip\">\uff08\u5b57\u53f7\uff1a\u666e\u901a\uff09<\/small>\n  <\/h1>\n\n  <!-- \u9876\u90e8\u5de5\u5177\u6761 -->\n  <div class=\"toolbar\">\n    <div class=\"bar\">\n      <input id=\"q\" placeholder=\"\u4f8b\u5982\uff1aJohn 3:16 \u6216 \u7ea6\u7ff0\u798f\u97f3 3:16 \/ \u521b\u4e16\u8bb0 1\" \/>\n      <div class=\"seg\" title=\"\u4e2d\u6587\u7b80\u7e41\u4f53\">\n        <button id=\"btn-sim\" class=\"active\">\u7b80\u4f53<\/button>\n        <button id=\"btn-tra\">\u7e41\u4f53<\/button>\n      <\/div>\n      <div class=\"seg\" title=\"\u5b57\u53f7\">\n        <button class=\"active\" id=\"sz-n\">\u666e\u901a<\/button>\n        <button id=\"sz-l\">\u5927<\/button>\n        <button id=\"sz-x\">\u7279\u5927<\/button>\n      <\/div>\n      <button id=\"btn-search\" class=\"btn primary\">Search \u67e5\u8be2<\/button>\n    <\/div>\n    <div class=\"hint\">\u63d0\u793a\uff1a\u70b9\u51fb\u4e66\u5377 \u2192 \u7ae0\u8282\uff0c\u5373\u53ef\u67e5\u770b\u6574\u7ae0\uff1b\u4e5f\u53ef\u76f4\u63a5\u8f93\u5165\u201c\u7ea6\u7ff0\u798f\u97f3 3:16 \/ John 3:16\u201d\uff0c\u518d\u70b9\u300cSearch \u67e5\u8be2\u300d\u3002<\/div>\n  <\/div>\n\n  <!-- \u4e66\u5377\u9009\u62e9 -->\n  <h3 style=\"margin:.6rem 0 .4rem\">\u9009\u62e9\u4e66\u5377\uff08\u65e7\u7ea6 \/ \u65b0\u7ea6\uff09<\/h3>\n  <div class=\"books\" id=\"ot\"><\/div>\n  <div class=\"books\" id=\"nt\"><\/div>\n\n  <div id=\"chapbox\" class=\"card\" style=\"display:none\">\n    <div style=\"display:flex;align-items:center;gap:.6rem;margin:0 0 .4rem\">\n      <b id=\"bkTitle\">\u4e66\u5377<\/b> <span id=\"bkBadge\" class=\"badge\"><\/span>\n    <\/div>\n    <div id=\"chapGrid\" class=\"chap\"><\/div>\n  <\/div>\n\n  <!-- \u4e24\u680f\u7ed3\u679c -->\n  <div class=\"grid\">\n    <div class=\"card col\" id=\"enCard\">\n      <h3 id=\"enH\">English <span class=\"badge\" id=\"enVer\">KJV<\/span><\/h3>\n      <div class=\"tools\"><button class=\"copy\" id=\"copyEn\">\u590d\u5236\u82f1\u6587<\/button><\/div>\n      <div class=\"verses\" id=\"en\"><\/div>\n    <\/div>\n    <div class=\"card col\" id=\"cnCard\">\n      <h3 id=\"cnH\">\u4e2d\u6587 <span class=\"badge\" id=\"cnVer\">\u7b80\u4f53<\/span><\/h3>\n      <div class=\"tools\"><button class=\"copy\" id=\"copyCn\">\u590d\u5236\u4e2d\u6587<\/button><\/div>\n      <div class=\"verses\" id=\"cn\"><\/div>\n    <\/div>\n  <\/div>\n\n  <div id=\"msg\" style=\"margin-top:1rem\"><\/div>\n\n  <p class=\"src\" style=\"margin-top:1.2rem;color:#5b6476\">\n    English\uff1a<b>King James Version (KJV)<\/b> \u2014 Public Domain\uff1bvia <code>api.bible<\/code>\u3002<br\/>\n    \u4e2d\u6587\uff1a<b>Biblica\u00ae Open Chinese Contemporary Bible<\/b>\uff08\u7b80\u4f53 2022 \/ \u7e41\u4f53 2023\uff09\uff1bvia <code>api.bible<\/code>\u3002\n  <\/p>\n<\/div>\n\n<script>\n\/* ===================== \u914d\u7f6e ===================== *\/\nconst API_KEY = '86e128daa13bdcb9324cf508d5f705c5';  \/\/ \u4f60\u7684 api.bible Key\nconst KJV_ID = 'de4e12af7f28f599-02';                  \/\/ KJV\nconst CN_SIMPLIFIED_ID  = '7ea794434e9ea7ee-01';        \/\/ Biblica \u7b80\u4f53\nconst CN_TRADITIONAL_ID = 'a6e06d2c5b90ad89-01';        \/\/ Biblica \u7e41\u4f53\nlet CN_GB = 1; \/\/ 1=\u7b80\u4f53  0=\u7e41\u4f53\n\n\/* ===================== \u4e66\u5377\u6570\u636e\uff08OSIS + \u82f1\/\u4e2d + \u914d\u8272\u7c7b\uff09 ===================== *\/\n\/* OT \u5206\u7ec4\uff1ac1 \u5f8b\u6cd5 | c2 \u5386\u53f2 | c3 \u8bd7\u6b4c\u667a\u6167 | c4 \u5927\u5148\u77e5 | c5 \u5c0f\u5148\u77e5\n   NT \u5206\u7ec4\uff1ac1 \u798f\u97f3+\u884c\u4f20 | c2 \u4fdd\u7f57\u4e66\u4fe1 | c3 \u666e\u901a\u4e66\u4fe1 | c4 \u542f\u793a\u5f55 *\/\nconst BOOKS = [\n  \/\/ Pentateuch (c1)\n  {osis:'GEN', en:'Genesis', zh:'\u521b\u4e16\u8bb0', zhT:'\u5275\u4e16\u8a18', ot:true, cls:'c1'},\n  {osis:'EXO', en:'Exodus', zh:'\u51fa\u57c3\u53ca\u8bb0', zhT:'\u51fa\u57c3\u53ca\u8a18', ot:true, cls:'c1'},\n  {osis:'LEV', en:'Leviticus', zh:'\u5229\u672a\u8bb0', zhT:'\u5229\u672a\u8a18', ot:true, cls:'c1'},\n  {osis:'NUM', en:'Numbers', zh:'\u6c11\u6570\u8bb0', zhT:'\u6c11\u6578\u8a18', ot:true, cls:'c1'},\n  {osis:'DEU', en:'Deuteronomy', zh:'\u7533\u547d\u8bb0', zhT:'\u7533\u547d\u8a18', ot:true, cls:'c1'},\n  \/\/ History (c2)\n  {osis:'JOS', en:'Joshua', zh:'\u7ea6\u4e66\u4e9a\u8bb0', zhT:'\u7d04\u66f8\u4e9e\u8a18', ot:true, cls:'c2'},\n  {osis:'JDG', en:'Judges', zh:'\u58eb\u5e08\u8bb0', zhT:'\u58eb\u5e2b\u8a18', ot:true, cls:'c2'},\n  {osis:'RUT', en:'Ruth', zh:'\u8def\u5f97\u8bb0', zhT:'\u8def\u5f97\u8a18', ot:true, cls:'c2'},\n  {osis:'1SA', en:'1 Samuel', zh:'\u6492\u6bcd\u8033\u8bb0\u4e0a', zhT:'\u6492\u6bcd\u8033\u8a18\u4e0a', ot:true, cls:'c2'},\n  {osis:'2SA', en:'2 Samuel', zh:'\u6492\u6bcd\u8033\u8bb0\u4e0b', zhT:'\u6492\u6bcd\u8033\u8a18\u4e0b', ot:true, cls:'c2'},\n  {osis:'1KI', en:'1 Kings', zh:'\u5217\u738b\u7eaa\u4e0a', zhT:'\u5217\u738b\u7d00\u4e0a', ot:true, cls:'c2'},\n  {osis:'2KI', en:'2 Kings', zh:'\u5217\u738b\u7eaa\u4e0b', zhT:'\u5217\u738b\u7d00\u4e0b', ot:true, cls:'c2'},\n  {osis:'1CH', en:'1 Chronicles', zh:'\u5386\u4ee3\u5fd7\u4e0a', zhT:'\u6b77\u4ee3\u5fd7\u4e0a', ot:true, cls:'c2'},\n  {osis:'2CH', en:'2 Chronicles', zh:'\u5386\u4ee3\u5fd7\u4e0b', zhT:'\u6b77\u4ee3\u5fd7\u4e0b', ot:true, cls:'c2'},\n  {osis:'EZR', en:'Ezra', zh:'\u4ee5\u65af\u62c9\u8bb0', zhT:'\u4ee5\u65af\u62c9\u8a18', ot:true, cls:'c2'},\n  {osis:'NEH', en:'Nehemiah', zh:'\u5c3c\u5e0c\u7c73\u8bb0', zhT:'\u5c3c\u5e0c\u7c73\u8a18', ot:true, cls:'c2'},\n  {osis:'EST', en:'Esther', zh:'\u4ee5\u65af\u5e16\u8bb0', zhT:'\u4ee5\u65af\u5e16\u8a18', ot:true, cls:'c2'},\n  \/\/ Poetry\/Wisdom (c3)\n  {osis:'JOB', en:'Job', zh:'\u7ea6\u4f2f\u8bb0', zhT:'\u7d04\u4f2f\u8a18', ot:true, cls:'c3'},\n  {osis:'PSA', en:'Psalms', zh:'\u8bd7\u7bc7', zhT:'\u8a69\u7bc7', ot:true, cls:'c3'},\n  {osis:'PRO', en:'Proverbs', zh:'\u7bb4\u8a00', zhT:'\u7bb4\u8a00', ot:true, cls:'c3'},\n  {osis:'ECC', en:'Ecclesiastes', zh:'\u4f20\u9053\u4e66', zhT:'\u50b3\u9053\u66f8', ot:true, cls:'c3'},\n  {osis:'SNG', en:'Song of Songs', zh:'\u96c5\u6b4c', zhT:'\u96c5\u6b4c', ot:true, cls:'c3'},\n  \/\/ Major Prophets (c4)\n  {osis:'ISA', en:'Isaiah', zh:'\u4ee5\u8d5b\u4e9a\u4e66', zhT:'\u4ee5\u8cfd\u4e9e\u66f8', ot:true, cls:'c4'},\n  {osis:'JER', en:'Jeremiah', zh:'\u8036\u5229\u7c73\u4e66', zhT:'\u8036\u5229\u7c73\u66f8', ot:true, cls:'c4'},\n  {osis:'LAM', en:'Lamentations', zh:'\u8036\u5229\u7c73\u54c0\u6b4c', zhT:'\u8036\u5229\u7c73\u54c0\u6b4c', ot:true, cls:'c4'},\n  {osis:'EZK', en:'Ezekiel', zh:'\u4ee5\u897f\u7ed3\u4e66', zhT:'\u4ee5\u897f\u7d50\u66f8', ot:true, cls:'c4'},\n  {osis:'DAN', en:'Daniel', zh:'\u4f46\u4ee5\u7406\u4e66', zhT:'\u4f46\u4ee5\u7406\u66f8', ot:true, cls:'c4'},\n  \/\/ Minor Prophets (c5)\n  {osis:'HOS', en:'Hosea', zh:'\u4f55\u897f\u963f\u4e66', zhT:'\u4f55\u897f\u963f\u66f8', ot:true, cls:'c5'},\n  {osis:'JOL', en:'Joel', zh:'\u7ea6\u73e5\u4e66', zhT:'\u7d04\u73e5\u66f8', ot:true, cls:'c5'},\n  {osis:'AMO', en:'Amos', zh:'\u963f\u6469\u53f8\u4e66', zhT:'\u963f\u6469\u53f8\u66f8', ot:true, cls:'c5'},\n  {osis:'OBA', en:'Obadiah', zh:'\u4fc4\u5df4\u5e95\u4e9a\u4e66', zhT:'\u4fc4\u5df4\u5e95\u4e9e\u66f8', ot:true, cls:'c5'},\n  {osis:'JON', en:'Jonah', zh:'\u7ea6\u62ff\u4e66', zhT:'\u7d04\u62ff\u66f8', ot:true, cls:'c5'},\n  {osis:'MIC', en:'Micah', zh:'\u5f25\u8fe6\u4e66', zhT:'\u5f4c\u8fe6\u66f8', ot:true, cls:'c5'},\n  {osis:'NAM', en:'Nahum', zh:'\u90a3\u9e3f\u4e66', zhT:'\u90a3\u9d3b\u66f8', ot:true, cls:'c5'},\n  {osis:'HAB', en:'Habakkuk', zh:'\u54c8\u5df4\u8c37\u4e66', zhT:'\u54c8\u5df4\u8c37\u66f8', ot:true, cls:'c5'},\n  {osis:'ZEP', en:'Zephaniah', zh:'\u897f\u756a\u96c5\u4e66', zhT:'\u897f\u756a\u96c5\u66f8', ot:true, cls:'c5'},\n  {osis:'HAG', en:'Haggai', zh:'\u54c8\u8be5\u4e66', zhT:'\u54c8\u8a72\u66f8', ot:true, cls:'c5'},\n  {osis:'ZEC', en:'Zechariah', zh:'\u6492\u8fe6\u5229\u4e9a\u4e66', zhT:'\u6492\u8fe6\u5229\u4e9e\u66f8', ot:true, cls:'c5'},\n  {osis:'MAL', en:'Malachi', zh:'\u739b\u62c9\u57fa\u4e66', zhT:'\u746a\u62c9\u57fa\u66f8', ot:true, cls:'c5'},\n\n  \/* NT *\/\n  \/\/ Gospels + Acts (c1)\n  {osis:'MAT', en:'Matthew', zh:'\u9a6c\u592a\u798f\u97f3', zhT:'\u99ac\u592a\u798f\u97f3', cls:'c1'},\n  {osis:'MRK', en:'Mark', zh:'\u9a6c\u53ef\u798f\u97f3', zhT:'\u99ac\u53ef\u798f\u97f3', cls:'c1'},\n  {osis:'LUK', en:'Luke', zh:'\u8def\u52a0\u798f\u97f3', zhT:'\u8def\u52a0\u798f\u97f3', cls:'c1'},\n  {osis:'JHN', en:'John', zh:'\u7ea6\u7ff0\u798f\u97f3', zhT:'\u7d04\u7ff0\u798f\u97f3', cls:'c1'},\n  {osis:'ACT', en:'Acts', zh:'\u4f7f\u5f92\u884c\u4f20', zhT:'\u4f7f\u5f92\u884c\u50b3', cls:'c1'},\n  \/\/ Pauline Epistles (c2)\n  {osis:'ROM', en:'Romans', zh:'\u7f57\u9a6c\u4e66', zhT:'\u7f85\u99ac\u66f8', cls:'c2'},\n  {osis:'1CO', en:'1 Corinthians', zh:'\u54e5\u6797\u591a\u524d\u4e66', zhT:'\u54e5\u6797\u591a\u524d\u66f8', cls:'c2'},\n  {osis:'2CO', en:'2 Corinthians', zh:'\u54e5\u6797\u591a\u540e\u4e66', zhT:'\u54e5\u6797\u591a\u5f8c\u66f8', cls:'c2'},\n  {osis:'GAL', en:'Galatians', zh:'\u52a0\u62c9\u592a\u4e66', zhT:'\u52a0\u62c9\u592a\u66f8', cls:'c2'},\n  {osis:'EPH', en:'Ephesians', zh:'\u4ee5\u5f17\u6240\u4e66', zhT:'\u4ee5\u5f17\u6240\u66f8', cls:'c2'},\n  {osis:'PHP', en:'Philippians', zh:'\u8153\u7acb\u6bd4\u4e66', zhT:'\u8153\u7acb\u6bd4\u66f8', cls:'c2'},\n  {osis:'COL', en:'Colossians', zh:'\u6b4c\u7f57\u897f\u4e66', zhT:'\u6b4c\u7f85\u897f\u66f8', cls:'c2'},\n  {osis:'1TH', en:'1 Thessalonians', zh:'\u5e16\u6492\u7f57\u5c3c\u8fe6\u524d\u4e66', zhT:'\u5e16\u6492\u7f85\u5c3c\u8fe6\u524d\u66f8', cls:'c2'},\n  {osis:'2TH', en:'2 Thessalonians', zh:'\u5e16\u6492\u7f57\u5c3c\u8fe6\u540e\u4e66', zhT:'\u5e16\u6492\u7f85\u5c3c\u8fe6\u5f8c\u66f8', cls:'c2'},\n  {osis:'1TI', en:'1 Timothy', zh:'\u63d0\u6469\u592a\u524d\u4e66', zhT:'\u63d0\u6469\u592a\u524d\u66f8', cls:'c2'},\n  {osis:'2TI', en:'2 Timothy', zh:'\u63d0\u6469\u592a\u540e\u4e66', zhT:'\u63d0\u6469\u592a\u5f8c\u66f8', cls:'c2'},\n  {osis:'TIT', en:'Titus', zh:'\u63d0\u591a\u4e66', zhT:'\u63d0\u591a\u66f8', cls:'c2'},\n  {osis:'PHM', en:'Philemon', zh:'\u8153\u5229\u95e8\u4e66', zhT:'\u8153\u5229\u9580\u66f8', cls:'c2'},\n  \/\/ General Epistles (c3)\n  {osis:'HEB', en:'Hebrews', zh:'\u5e0c\u4f2f\u6765\u4e66', zhT:'\u5e0c\u4f2f\u4f86\u66f8', cls:'c3'},\n  {osis:'JAS', en:'James', zh:'\u96c5\u5404\u4e66', zhT:'\u96c5\u5404\u66f8', cls:'c3'},\n  {osis:'1PE', en:'1 Peter', zh:'\u5f7c\u5f97\u524d\u4e66', zhT:'\u5f7c\u5f97\u524d\u66f8', cls:'c3'},\n  {osis:'2PE', en:'2 Peter', zh:'\u5f7c\u5f97\u540e\u4e66', zhT:'\u5f7c\u5f97\u5f8c\u66f8', cls:'c3'},\n  {osis:'1JN', en:'1 John', zh:'\u7ea6\u7ff0\u4e00\u4e66', zhT:'\u7d04\u7ff0\u4e00\u66f8', cls:'c3'},\n  {osis:'2JN', en:'2 John', zh:'\u7ea6\u7ff0\u4e8c\u4e66', zhT:'\u7d04\u7ff0\u4e8c\u66f8', cls:'c3'},\n  {osis:'3JN', en:'3 John', zh:'\u7ea6\u7ff0\u4e09\u4e66', zhT:'\u7d04\u7ff0\u4e09\u66f8', cls:'c3'},\n  {osis:'JUD', en:'Jude', zh:'\u72b9\u5927\u4e66', zhT:'\u7336\u5927\u66f8', cls:'c3'},\n  \/\/ Revelation (c4)\n  {osis:'REV', en:'Revelation', zh:'\u542f\u793a\u5f55', zhT:'\u555f\u793a\u9304', cls:'c4'},\n];\n\n\/* \u4e2d\u6587\u540d\u2192OSIS\uff08\u7b80\u7e41\u5e38\u89c1\u7b80\u79f0\uff09 *\/\nconst CN_NAME_MAP = (() => {\n  const m = {};\n  BOOKS.forEach(b=>{\n    m[b.zh] = b.osis; m[b.zhT] = b.osis;\n    const shortCN = b.zh.replace(\/(\u4e66|\u798f\u97f3|\u8bb0)$\/,'');\n    const shortCNT = b.zhT.replace(\/(\u66f8|\u798f\u97f3|\u8a18)$\/,'');\n    if(shortCN !== b.zh) m[shortCN] = b.osis;\n    if(shortCNT !== b.zhT) m[shortCNT] = b.osis;\n  });\n  m['\u521b\u4e16']='GEN'; m['\u51fa\u57c3\u53ca']='EXO'; m['\u5229\u672a']='LEV'; m['\u6c11\u6570']='NUM'; m['\u7533\u547d']='DEU';\n  m['\u8bd7\u7bc7']='PSA'; m['\u7bb4\u8a00']='PRO'; m['\u4f20\u9053']='ECC'; m['\u96c5\u6b4c']='SNG';\n  m['\u9a6c\u592a']='MAT'; m['\u9a6c\u53ef']='MRK'; m['\u8def\u52a0']='LUK'; m['\u7ea6\u7ff0']='JHN'; m['\u4f7f\u5f92\u884c\u4f20']='ACT';\n  return m;\n})();\n\n\/* ===================== \u6e32\u67d3\u4e66\u5377\u5217\u8868 ===================== *\/\nconst otBox = document.getElementById('ot');\nconst ntBox = document.getElementById('nt');\nconst chapbox = document.getElementById('chapbox');\nconst chapGrid = document.getElementById('chapGrid');\nconst bkTitle = document.getElementById('bkTitle');\nconst bkBadge = document.getElementById('bkBadge');\n\nfunction renderBooks(){\n  otBox.innerHTML=''; ntBox.innerHTML='';\n  BOOKS.filter(b=>b.ot).forEach(b=>{\n    const btn=document.createElement('button');\n    btn.className='tag '+(b.cls||'');\n    btn.textContent = CN_GB ? b.zh : b.zhT;\n    btn.title = b.en;\n    btn.onclick = ()=> openBook(b);\n    otBox.appendChild(btn);\n  });\n  BOOKS.filter(b=>!b.ot).forEach(b=>{\n    const btn=document.createElement('button');\n    btn.className='tag '+(b.cls||'');\n    btn.textContent = CN_GB ? b.zh : b.zhT;\n    btn.title = b.en;\n    btn.onclick = ()=> openBook(b);\n    ntBox.appendChild(btn);\n  });\n}\nrenderBooks();\n\nfunction openBook(book){\n  bkTitle.textContent = `${CN_GB?book.zh:book.zhT} \/ ${book.en}`;\n  bkBadge.textContent = book.osis;\n  chapGrid.innerHTML = '';\n  chapbox.style.display = 'block';\n  const CHAP_COUNT = {\n    GEN:50, EXO:40, LEV:27, NUM:36, DEU:34, JOS:24, JDG:21, RUT:4, '1SA':31, '2SA':24,\n    '1KI':22, '2KI':25, '1CH':29, '2CH':36, EZR:10, NEH:13, EST:10, JOB:42, PSA:150, PRO:31, ECC:12, SNG:8,\n    ISA:66, JER:52, LAM:5, EZK:48, DAN:12, HOS:14, JOL:3, AMO:9, OBA:1, JON:4, MIC:7, NAM:3, HAB:3, ZEP:3, HAG:2, ZEC:14, MAL:4,\n    MAT:28, MRK:16, LUK:24, JHN:21, ACT:28, ROM:16, '1CO':16, '2CO':13, GAL:6, EPH:6, PHP:4, COL:4, '1TH':5, '2TH':3,\n    '1TI':6, '2TI':4, TIT:3, PHM:1, HEB:13, JAS:5, '1PE':5, '2PE':3, '1JN':5, '2JN':1, '3JN':1, JUD:1, REV:22\n  };\n  const n = CHAP_COUNT[book.osis] || 50;\n  for(let i=1;i<=n;i++){\n    const cbtn=document.createElement('button');\n    cbtn.textContent = i;\n    cbtn.onclick = ()=> loadRef(`${book.osis}.${i}`, `${book.en} ${i}`, true);\n    chapGrid.appendChild(cbtn);\n  }\n}\n\n\/* ===================== \u7ed3\u679c\u533a\u5904\u7406 ===================== *\/\nconst enDiv = document.getElementById('en');\nconst cnDiv = document.getElementById('cn');\nconst enVer = document.getElementById('enVer');\nconst cnVer = document.getElementById('cnVer');\nconst msg = document.getElementById('msg');\n\nfunction getCnId(){ return CN_GB ? CN_SIMPLIFIED_ID : CN_TRADITIONAL_ID; }\n\nfunction htmlToVerses(html){\n  if(!html) return [];\n  let s = String(html)\n    .replace(\/<br\\s*\\\/?>\/gi,'\\n')\n    .replace(\/<\\\/?p[^>]*>\/gi,'\\n')\n    .replace(\/<sup[^>]*>(\\d+)<\\\/sup>\/gi,'\\n$1 ')\n    .replace(\/<[^>]+>\/g,'')\n    .replace(\/\\r\/g,'')\n    .replace(\/\\n{3,}\/g,'\\n\\n')\n    .trim();\n  const out=[];\n  s.split('\\n').forEach(line=>{\n    const t=line.trim(); if(!t) return; out.push(t);\n  });\n  return out;\n}\nfunction renderVerses(target, verses){\n  if(!verses || !verses.length){ target.innerHTML='<div class=\"warn\">No verses.<\/div>'; return; }\n  const frag=document.createDocumentFragment();\n  verses.forEach(v=>{\n    const m=v.match(\/^(\\d+)\\s*(.*)$\/);\n    const wrap=document.createElement('div'); wrap.className='v';\n    const n=document.createElement('span'); n.className='n';\n    const t=document.createElement('span'); t.className='t';\n    if(m){ n.textContent=m[1]; t.textContent=m[2]; }\n    else{ n.textContent='\u00b7'; t.textContent=v; }\n    wrap.appendChild(n); wrap.appendChild(t); frag.appendChild(wrap);\n  });\n  target.innerHTML=''; target.appendChild(frag);\n}\n\n\/* API \u8c03\u7528 *\/\nasync function fetchChapter(bibleId, osisChap){\n  const headers={'api-key':API_KEY,'accept':'application\/json'};\n  const url=`https:\/\/api.scripture.api.bible\/v1\/bibles\/${bibleId}\/chapters\/${osisChap}?content-type=html&include-verse-spans=true&include-verse-numbers=true`;\n  const r=await fetch(url,{headers}); if(!r.ok) throw new Error(r.status);\n  const j=await r.json(); return htmlToVerses(j&&j.data&&j.data.content);\n}\nasync function fetchPassage(bibleId, reference){\n  const headers={'api-key':API_KEY,'accept':'application\/json'};\n  const url=`https:\/\/api.scripture.api.bible\/v1\/bibles\/${bibleId}\/passages?reference=${encodeURIComponent(reference)}&content-type=html&include-verse-spans=true&include-verse-numbers=true`;\n  const r=await fetch(url,{headers}); if(!r.ok) throw new Error(r.status);\n  const j=await r.json(); return htmlToVerses(j&&j.data&&j.data.content);\n}\n\n\/* \u89e3\u6790\u8f93\u5165 *\/\nfunction parseInput(text){\n  text=(text||'').trim(); if(!text) return null;\n  const mRef=text.match(\/(\\d?\\s*[A-Za-z\\u4e00-\\u9fa5]+)\\s+([\\d:\u2013\\-\u2014\\u4e00-\\u9fa5]+.*)?\/);\n  let bookPart=text, rest=''; if(mRef){ bookPart=mRef[1].trim(); rest=(mRef[2]||'').trim(); }\n  let osis = CN_NAME_MAP[bookPart.replace(\/\\s\/g,'')] || null;\n  if(!osis){\n    const low=bookPart.toLowerCase().replace(\/\\.\/g,'');\n    const hit=BOOKS.find(b=> b.en.toLowerCase().replace(\/\\.\/g,'')===low || b.en.toLowerCase().startsWith(low));\n    if(hit) osis=hit.osis;\n  }\n  if(!osis){ if(BOOKS.find(b=>b.osis===bookPart.toUpperCase())) osis=bookPart.toUpperCase(); }\n  if(!osis) return null;\n\n  let englishRef = BOOKS.find(b=>b.osis===osis).en; if(rest) englishRef += ' ' + rest;\n  let osisRef = osis; if(rest && \/^\\d+$\/.test(rest.replace(\/\\s\/g,''))) osisRef = `${osis}.${rest.replace(\/\\s\/g,'')}`;\n  const isChapter = \/^\\D+\\s+\\d+$\/.test(englishRef);\n  return {osisRef, englishRef, isChapter};\n}\n\n\/* \u52a0\u8f7d\u67e5\u8be2 *\/\nasync function loadRef(osisRef, englishRef, isChapter){\n  msg.innerHTML='';\n  enVer.textContent='KJV'; cnVer.textContent = CN_GB ? '\u7b80\u4f53' : '\u7e41\u4f53';\n  enDiv.innerHTML='<div class=\"v\"><span class=\"n\">\u00b7<\/span><span class=\"t\">Loading\u2026<\/span><\/div>';\n  cnDiv.innerHTML='<div class=\"v\"><span class=\"n\">\u00b7<\/span><span class=\"t\">\u52a0\u8f7d\u4e2d\u2026<\/span><\/div>';\n\n  try{\n    const en=isChapter? await fetchChapter(KJV_ID, osisRef) : await fetchPassage(KJV_ID, englishRef);\n    renderVerses(enDiv, en);\n  }catch(e){\n    if(isChapter){\n      try{ renderVerses(enDiv, await fetchPassage(KJV_ID, englishRef)); }\n      catch(e2){ enDiv.innerHTML=`<div class=\"warn\">\u82f1\u6587\u83b7\u53d6\u5931\u8d25\uff1a${e2.message||e2}<\/div>`; }\n    }else{\n      enDiv.innerHTML=`<div class=\"warn\">\u82f1\u6587\u83b7\u53d6\u5931\u8d25\uff1a${e.message||e}<\/div>`;\n    }\n  }\n\n  const CN_ID=getCnId();\n  try{\n    const cn=isChapter? await fetchChapter(CN_ID, osisRef) : await fetchPassage(CN_ID, englishRef);\n    renderVerses(cnDiv, cn);\n  }catch(e){\n    if(isChapter){\n      try{ renderVerses(cnDiv, await fetchPassage(CN_ID, englishRef)); }\n      catch(e2){ cnDiv.innerHTML=`<div class=\"warn\">\u4e2d\u6587\u83b7\u53d6\u5931\u8d25\uff1a${e2.message||e2}<\/div>`; }\n    }else{\n      cnDiv.innerHTML=`<div class=\"warn\">\u4e2d\u6587\u83b7\u53d6\u5931\u8d25\uff1a${e.message||e}<\/div>`;\n    }\n  }\n}\n\n\/* \u4e8b\u4ef6\uff1a\u67e5\u8be2 \/ \u7b80\u7e41 \/ \u590d\u5236 \/ \u5b57\u53f7 *\/\ndocument.getElementById('btn-search').onclick=()=>{\n  const v=document.getElementById('q').value.trim();\n  const p=parseInput(v);\n  if(!p){ msg.innerHTML=`<div class=\"warn\">\u65e0\u6cd5\u8bc6\u522b\u8f93\u5165\uff1a\u8bd5\u8bd5 \u201cJohn 3:16 \/ \u7ea6\u7ff0\u798f\u97f3 3:16 \/ \u521b\u4e16\u8bb0 1\u201d\u3002<\/div>`; return; }\n  loadRef(p.osisRef, p.englishRef, p.isChapter);\n};\n\ndocument.getElementById('btn-sim').onclick=()=>{\n  CN_GB=1; document.getElementById('btn-sim').classList.add('active'); document.getElementById('btn-tra').classList.remove('active');\n  cnVer.textContent='\u7b80\u4f53'; renderBooks();\n};\ndocument.getElementById('btn-tra').onclick=()=>{\n  CN_GB=0; document.getElementById('btn-tra').classList.add('active'); document.getElementById('btn-sim').classList.remove('active');\n  cnVer.textContent='\u7e41\u4f53'; renderBooks();\n};\n\ndocument.getElementById('copyEn').onclick=()=> navigator.clipboard.writeText(enDiv.textContent||'');\ndocument.getElementById('copyCn').onclick=()=> navigator.clipboard.writeText(cnDiv.textContent||'');\n\n\/* \u5b57\u53f7\uff1a\u666e\u901a\/\u5927\/\u7279\u5927 *\/\nconst bodyEl=document.body, sizeTip=document.getElementById('sizeTip');\nconst btnN=document.getElementById('sz-n'), btnL=document.getElementById('sz-l'), btnX=document.getElementById('sz-x');\nfunction setSize(cls, label){\n  bodyEl.classList.remove('fs-lg','fs-xl');\n  if(cls) bodyEl.classList.add(cls);\n  btnN.classList.remove('active'); btnL.classList.remove('active'); btnX.classList.remove('active');\n  if(cls==='fs-lg') btnL.classList.add('active'); else if(cls==='fs-xl') btnX.classList.add('active'); else btnN.classList.add('active');\n  sizeTip.textContent = `\uff08\u5b57\u53f7\uff1a${label}\uff09`;\n}\nbtnN.onclick=()=> setSize('', '\u666e\u901a');\nbtnL.onclick=()=> setSize('fs-lg', '\u5927');\nbtnX.onclick=()=> setSize('fs-xl', '\u7279\u5927');\n<\/script>\n<\/body>\n<\/html><\/div><\/div><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Bible Lookup \/ \u5723\u7ecf\u67e5\u8be2\uff08\u82f1\u6587\uff0b\u4e2d\u6587\uff09 Bible Lookup \u00b7 \u5723\u7ecf\u67e5\u8be2\uff08KJV + \u4e2d\u6587\uff09 \ud83d\udcd6 Bible Lookup \/ \u5723\u7ecf\u67e5\u8be2\uff08KJV + \u4e2d\u6587\uff09 \uff08\u5b57\u53f7\uff1a\u666e\u901a\uff09 \u7b80\u4f53 \u7e41\u4f53 \u666e\u901a \u5927 \u7279\u5927 Search \u67e5\u8be2 \u63d0\u793a\uff1a\u70b9\u51fb\u4e66\u5377 \u2192 \u7ae0\u8282\uff0c\u5373\u53ef\u67e5\u770b\u6574\u7ae0\uff1b\u4e5f\u53ef\u76f4\u63a5\u8f93\u5165\u201c\u7ea6\u7ff0\u798f\u97f3 3:16 \/ John 3:16\u201d\uff0c\u518d\u70b9\u300cSearch \u67e5\u8be2\u300d\u3002 \u9009\u62e9\u4e66\u5377\uff08\u65e7\u7ea6 \/ \u65b0\u7ea6\uff09 \u4e66\u5377 English KJV \u590d\u5236\u82f1\u6587 \u4e2d\u6587 \u7b80\u4f53 \u590d\u5236\u4e2d\u6587 English\uff1aKing James Version (KJV) \u2014 Public Domain\uff1bvia<span class=\"more-link\"><a href=\"http:\/\/www.ccc-corvallis.org\/2018\/bible-lookup\/\">Read More &rarr;<\/a><\/span><\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["entry","author-xisheng","post-1300","page","type-page","status-publish"],"_links":{"self":[{"href":"http:\/\/www.ccc-corvallis.org\/2018\/wp-json\/wp\/v2\/pages\/1300","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.ccc-corvallis.org\/2018\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/www.ccc-corvallis.org\/2018\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/www.ccc-corvallis.org\/2018\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/www.ccc-corvallis.org\/2018\/wp-json\/wp\/v2\/comments?post=1300"}],"version-history":[{"count":49,"href":"http:\/\/www.ccc-corvallis.org\/2018\/wp-json\/wp\/v2\/pages\/1300\/revisions"}],"predecessor-version":[{"id":5261,"href":"http:\/\/www.ccc-corvallis.org\/2018\/wp-json\/wp\/v2\/pages\/1300\/revisions\/5261"}],"wp:attachment":[{"href":"http:\/\/www.ccc-corvallis.org\/2018\/wp-json\/wp\/v2\/media?parent=1300"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}