{"id":255,"date":"2021-03-03T04:30:46","date_gmt":"2021-03-03T04:30:46","guid":{"rendered":"https:\/\/trubianvillage.com\/registry\/home\/"},"modified":"2026-05-26T00:36:46","modified_gmt":"2026-05-26T00:36:46","slug":"home","status":"publish","type":"page","link":"https:\/\/trubianvillage.com\/registry\/","title":{"rendered":"Home"},"content":{"rendered":"\n\n\n<h2 style=\"text-align: center;\">Cuthaugula Coahuila Tribal Registry\n<\/h2>\n\n\n\n\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\" \/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\n<title>Tree &#038; River Registry \u2014 Secure Multi-Level Portal<\/title>\n<style>\n:root{--bg:#07140d;--panel:#102418;--panel2:#163522;--gold:#d8b15a;--text:#f7f0d8;--muted:#c7b98b;--danger:#c04444;--ok:#3fbf7f;--line:#34523b}\n*{box-sizing:border-box} body{margin:0;font-family:Arial,Helvetica,sans-serif;background:radial-gradient(circle at top,#21442a,#07140d 55%);color:var(--text)}\nheader{padding:28px 18px;text-align:center;border-bottom:2px solid var(--gold);background:linear-gradient(135deg,#102418,#07140d)}\nh1,h2,h3{color:var(--gold);margin:.25rem 0}.wrap{max-width:1180px;margin:auto;padding:18px}\n.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}\n.card{background:rgba(16,36,24,.94);border:1px solid var(--line);border-radius:14px;padding:16px;box-shadow:0 10px 25px rgba(0,0,0,.25)}\nbutton,input,select,textarea{width:100%;padding:10px;margin:6px 0;border-radius:10px;border:1px solid #52694b;background:#08130c;color:var(--text)}\nbutton{cursor:pointer;background:linear-gradient(135deg,#b78c33,#e2c36f);color:#1d1605;font-weight:bold;border:0}\nbutton.secondary{background:#1f3927;color:var(--text);border:1px solid var(--gold)}\nbutton.danger{background:var(--danger);color:#fff}.hidden{display:none!important}\n.badge{display:inline-block;padding:4px 8px;border-radius:999px;border:1px solid var(--gold);color:var(--gold);font-size:.82rem;margin:2px}\n.ok{color:var(--ok)}.dangerText{color:#ff8585}.muted{color:var(--muted);font-size:.92rem}\ntable{width:100%;border-collapse:collapse;margin-top:10px}th,td{border-bottom:1px solid var(--line);padding:9px;text-align:left;vertical-align:top}th{color:var(--gold)}\n.memberCard{border:1px solid var(--line);border-radius:12px;padding:12px;margin:10px 0;background:#0b1b12}\n.tree ul{list-style:none;border-left:1px solid var(--gold);margin-left:12px;padding-left:18px}.tree li{margin:8px 0}\n.idcard{max-width:360px;border:2px solid var(--gold);border-radius:16px;padding:16px;background:#f8f1d8;color:#171207}\n.idcard h3{color:#171207}.photo{width:96px;height:96px;border-radius:10px;object-fit:cover;border:2px solid #171207;background:#ddd}\n.small{font-size:.86rem}.tabs{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.tabs button{width:auto;padding:10px 14px}\n@media print{body{background:#fff;color:#000}.noPrint,header,.tabs,.card:not(.printMe){display:none!important}.printMe{display:block!important;border:0;box-shadow:none}}\n<\/style>\n<\/head>\n<body>\n<header>\n  <h1>\ud83c\udf33 Tree &#038; River Registry \ud83c\udf0a<\/h1>\n  <p>Cuthaugula Coahuila Tribal Nation Federation \u2014 Secure Bloodline Fraternity Portal<\/p>\n  <span class=\"badge\">144 Bloodline Limit<\/span>\n  <span class=\"badge\">Public Privacy Masking<\/span>\n  <span class=\"badge\">Family Tree to Reconstruction Era<\/span>\n<\/header>\n\n<div class=\"wrap\">\n  <div class=\"card noPrint\">\n    <h2>Access Portal<\/h2>\n    <p class=\"muted\">Public view only shows basic verification and masked registry identifiers. Private records require authorization.<\/p>\n    <p class=\"muted\"><b>Access Levels:<\/b> Member = own virtual membership portal; Family Admin = only their family branch; Bloodline Admin = their bloodline fraternity portal only; Master Admin = whole 144-house registry.<\/p>\n    <div class=\"grid\">\n      <div>\n        <label>Access Level<\/label>\n        <select id=\"loginRole\">\n          <option value=\"public\">Public Verifier<\/option>\n          <option value=\"member\">Member Portal<\/option>\n          <option value=\"family\">Family Administrator<\/option>\n          <option value=\"bloodline\">Bloodline Fraternity Administrator<\/option>\n          <option value=\"master\">Master Administrator<\/option>\n        <\/select>\n      <\/div>\n      <div>\n        <label>Access Code<\/label>\n        <input id=\"loginCode\" placeholder=\"Enter access code\" \/>\n      <\/div>\n      <div>\n        <label>Bloodline # for Bloodline Admin<\/label>\n        <input id=\"loginBloodline\" placeholder=\"001-144\" \/>\n      <\/div>\n    <\/div>\n    <button onclick=\"login()\">Unlock Portal<\/button>\n    <button class=\"secondary\" onclick=\"logout()\">Lock \/ Public Mode<\/button>\n    <p id=\"sessionInfo\" class=\"muted\"><\/p>\n  <\/div>\n\n  <div class=\"tabs noPrint\">\n    <button onclick=\"showTab('dashboard')\">Dashboard<\/button>\n    <button onclick=\"showTab('verify')\">Verify Member<\/button>\n    <button onclick=\"showTab('members')\">Members<\/button>\n    <button onclick=\"showTab('familyTree')\">Family Tree<\/button>\n    <button onclick=\"showTab('register')\">Register \/ Edit<\/button>\n    <button onclick=\"showTab('charters')\">Bloodline Charters<\/button>\n    <button onclick=\"showTab('backup')\">Backup<\/button>\n  <\/div>\n\n  <section id=\"dashboard\" class=\"tab card\">\n    <h2>Dashboard<\/h2>\n    <div class=\"card\">\n      <h3>Chartered Bloodline Fraternity Access Codes<\/h3>\n      <p class=\"muted\">These codes are for the authorized administrators of each chartered bloodline fraternity portal.<\/p>\n      <table>\n        <thead><tr><th>Bloodline #<\/th><th>Bloodline Fraternity<\/th><th>Access Code<\/th><th>Authority Level<\/th><\/tr><\/thead>\n        <tbody>\n          <tr><td>001<\/td><td>House Of Yakaba<\/td><td><b>YAKABA001<\/b><\/td><td>Bloodline Admin Portal<\/td><\/tr>\n          <tr><td>002<\/td><td>Hattak Lusa Holitopa \/ Holitopa-Douglas Clan<\/td><td><b>HOLI002<\/b><\/td><td>Bloodline Admin Portal<\/td><\/tr>\n          <tr><td>003<\/td><td>ABA OCHA&#8217;KWA YAKABA \/ DUGDAMONTYA Nation Tribe<\/td><td><b>ABA003<\/b><\/td><td>Bloodline Admin Portal<\/td><\/tr>\n        <\/tbody>\n      <\/table>\n      <p><b>Master Administrator Code:<\/b> 144001<\/p>\n    <\/div>\n    <div class=\"grid\">\n      <div class=\"card\"><h3 id=\"statBloodlines\">0<\/h3><p>Bloodline Fraternities Chartered<\/p><\/div>\n      <div class=\"card\"><h3 id=\"statMembers\">0<\/h3><p>Total Registered Members<\/p><\/div>\n      <div class=\"card\"><h3 id=\"statFederation\">0<\/h3><p>Federation Members<\/p><\/div>\n    <\/div>\n    <h3>Foundational Bloodlines<\/h3>\n    <div id=\"bloodlineList\"><\/div>\n  <\/section>\n\n  <section id=\"verify\" class=\"tab card hidden\">\n    <h2>Public Member Verification<\/h2>\n    <p class=\"muted\">Search by last 3 of Registry ID, last 4 of tribal number, full Registry ID, or name. Public results are masked.<\/p>\n    <input id=\"verifySearch\" placeholder=\"Example: 133, 5133, 001-001-133, Zyaun\" oninput=\"renderVerify()\" \/>\n    <div id=\"verifyResults\"><\/div>\n  <\/section>\n\n  <section id=\"members\" class=\"tab card hidden\">\n    <h2>Member Records<\/h2>\n    <input id=\"memberSearch\" placeholder=\"Search visible records...\" oninput=\"renderMembers()\" \/>\n    <div id=\"memberResults\"><\/div>\n  <\/section>\n\n  <section id=\"familyTree\" class=\"tab card hidden\">\n    <h2>Family Tree \/ Reconstruction Lineage<\/h2>\n    <p class=\"muted\">Each bloodline should document lineage roots reaching the Reconstruction period or earlier before final verification.<\/p>\n    <select id=\"treeBloodline\" onchange=\"renderFamilyTree()\"><\/select>\n    <div id=\"treeOutput\" class=\"tree\"><\/div>\n  <\/section>\n\n  <section id=\"register\" class=\"tab card hidden noPrint\">\n    <h2>Register \/ Edit Member<\/h2>\n    <p class=\"muted\">Family admins may add data only under their assigned family. Bloodline admins may manage their bloodline. Master admin can edit all.<\/p>\n    <div class=\"grid\">\n      <input id=\"editId\" placeholder=\"Registry ID to edit, or leave blank for new\" \/>\n      <input id=\"firstName\" placeholder=\"First Name\" \/>\n      <input id=\"lastName\" placeholder=\"Last Name\" \/>\n      <input id=\"maidenName\" placeholder=\"Maiden Name\" \/>\n      <input id=\"tribalName\" placeholder=\"Tribal Name\" \/>\n      <input id=\"dob\" placeholder=\"DOB MM\/DD\/YYYY\" \/>\n      <input id=\"tribalNumber\" placeholder=\"Tribal Number\" \/>\n      <input id=\"bloodlineNo\" placeholder=\"Bloodline # e.g. 001\" \/>\n      <input id=\"familyNo\" placeholder=\"Family # e.g. 001\" \/>\n      <input id=\"personalNo\" placeholder=\"Personal # e.g. 133\" \/>\n      <input id=\"memberAccessCode\" placeholder=\"4-digit Member Portal Code\" maxlength=\"4\" \/>\n      <input id=\"familyAdminCode\" placeholder=\"4-digit Family Admin Code\" maxlength=\"4\" \/>\n      <input id=\"parentRegistryId\" placeholder=\"Parent Registry ID for family tree\" \/>\n      <select id=\"documentQualification\">\n        <option>Passed Reconstruction Document Phase<\/option>\n        <option>Pending Document Review<\/option>\n        <option>Failed Document Phase<\/option>\n      <\/select>\n      <select id=\"verificationStatus\">\n        <option>Verified<\/option><option>Pending<\/option><option>Rejected<\/option>\n      <\/select>\n      <select id=\"virtualMembershipStatus\">\n        <option>Virtual Membership Active<\/option>\n        <option>Virtual Membership Locked<\/option>\n      <\/select>\n      <select id=\"registrationPaid\">\n        <option>Paid<\/option><option>Waived<\/option><option>Unpaid<\/option>\n      <\/select>\n      <select id=\"federationStatus\">\n        <option>Active<\/option><option>Pending<\/option><option>Suspended<\/option>\n      <\/select>\n    <\/div>\n    <textarea id=\"reconstructionProof\" placeholder=\"Reconstruction Era document connection \/ notes\"><\/textarea>\n    <textarea id=\"adminNotes\" placeholder=\"Admin notes\"><\/textarea>\n    <button onclick=\"saveMember()\">Save Member<\/button>\n    <button class=\"secondary\" onclick=\"clearForm()\">Clear Form<\/button>\n  <\/section>\n\n  <section id=\"charters\" class=\"tab card hidden\">\n    <h2>Bloodline Fraternity Charters<\/h2>\n    <p>Bloodline Fraternity Charter Fee: <b>$2,500.00<\/b> for Bloodline Fraternity land rights.<\/p>\n    <div id=\"charterList\"><\/div>\n    <div id=\"charterAdmin\" class=\"hidden noPrint\">\n      <h3>Add \/ Edit Charter<\/h3>\n      <div class=\"grid\">\n        <input id=\"charterNo\" placeholder=\"Bloodline # 001-144\" \/>\n        <input id=\"charterName\" placeholder=\"Bloodline \/ House Name\" \/>\n        <input id=\"charterFounder\" placeholder=\"Founder \/ Trust Head\" \/>\n        <input id=\"charterAdminCode\" placeholder=\"Bloodline Admin Code\" \/>\n        <select id=\"charterPaid\"><option>Paid<\/option><option>Waived<\/option><option>Unpaid<\/option><\/select>\n        <select id=\"charterStatus\"><option>Chartered<\/option><option>Pending<\/option><option>Suspended<\/option><\/select>\n      <\/div>\n      <textarea id=\"charterNotes\" placeholder=\"Trust, charter, land rights notes\"><\/textarea>\n      <button onclick=\"saveCharter()\">Save Charter<\/button>\n    <\/div>\n  <\/section>\n\n  <section id=\"backup\" class=\"tab card hidden noPrint\">\n    <h2>Data Backup + Email Report<\/h2>\n    <p class=\"muted\">A standalone HTML file cannot silently send email by itself. This system creates a full backup file and opens an email draft with the latest update report. For automatic sending, connect this file to a backend email service.<\/p>\n    <button onclick=\"downloadBackup()\">Download Full JSON Backup<\/button>\n    <button onclick=\"emailBackup()\">Open Email Draft with Current Backup Report<\/button>\n    <textarea id=\"backupBox\" rows=\"10\" readonly><\/textarea>\n  <\/section>\n\n  <section id=\"printArea\" class=\"printMe hidden\">\n    <div id=\"idCardOutput\"><\/div>\n  <\/section>\n<\/div>\n\n<script>\nconst MASTER_ADMIN_CODE = \"144001\";\nconst BACKUP_EMAIL = \"trubianvillage@yahoo.com\";\nconst STORAGE_KEY = \"treeRiverSecureRegistryV1\";\n\nlet session = { role: \"public\", code: \"\", bloodline: \"\" };\n\nconst starterData = {\n  charters: [\n    { no:\"001\", name:\"House Of Yakaba\", founder:\"Chief Minko Lusakio Yakaba\", trust:\"Trubian Village Choctaw Tribal Trust\", status:\"Chartered\", paid:\"Paid\", adminCode:\"YAKABA001\", notes:\"Foundational bloodline fraternity. Charter and bloodline trust paid. Bloodline fraternity land rights active.\" },\n    { no:\"002\", name:\"Hattak Lusa Holitopa \/ Holitopa-Douglas Clan\", founder:\"Hattak Lusa Holitopa \/ Herman Clarence Douglas\", trust:\"Cuthaugula Coahula Nation Tribal Trust Charter\", status:\"Chartered\", paid:\"Paid\", adminCode:\"HOLI002\", notes:\"Foundational tribal trust and bloodline fraternity. Paid and active.\" },\n    { no:\"003\", name:\"ABA OCHA'KWA YAKABA \/ DUGDAMONTYA Nation Tribe\", founder:\"ABA OCHA'KWA YAKABA \/ Shenece Shenean Scott\", trust:\"DUGDAMONTYA Nation Tribal Trust Charter\", status:\"Chartered\", paid:\"Paid\", adminCode:\"ABA003\", notes:\"Foundational tribal trust and bloodline fraternity. Paid and active.\" }\n  ],\n  members: [\n    m(\"001\",\"001\",\"001\",\"Chief\",\"Yakaba\",\"\",\"Chief Minko Lusakio Yakaba\",\"\",\"\",\"Minko Yakaba founding entry\",\"YAKABA001\"),\n    m(\"001\",\"001\",\"132\",\"Thomas\",\"Lee\",\"\",\"Minko Lusakio Yakaba\",\"09\/06\/1972\",\"201965132\",\"House of Yakaba member insert\",\"1321\"),\n    m(\"001\",\"001\",\"133\",\"Zyaun\",\"Lee\",\"\",\"Zyaun Yakaba\",\"11\/06\/2001\",\"201965133\",\"House of Yakaba member insert\",\"1331\"),\n    m(\"001\",\"001\",\"134\",\"Niara\",\"Lee\",\"Lee\",\"Niara Yakaba\",\"06\/12\/2012\",\"201965134\",\"House of Yakaba member insert\",\"1341\"),\n    m(\"001\",\"001\",\"135\",\"Zsamine\",\"Sanders\",\"Lee\",\"Zsamine Yakaba\",\"07\/29\/1998\",\"201965135\",\"House of Yakaba member insert\",\"1351\"),\n    m(\"001\",\"001\",\"136\",\"Earliene\",\"Arnold\",\"Culter\",\"Joy Yakaba\",\"09\/21\/1946\",\"201965136\",\"House of Yakaba member insert\",\"1361\"),\n    m(\"001\",\"001\",\"158\",\"Alvin\",\"Brown\",\"\",\"Waya Wiyot\",\"\",\"201965158\",\"House of Yakaba member insert\",\"1581\"),\n    m(\"001\",\"001\",\"159\",\"Loletta\",\"Brown\",\"\",\"Ahyoka Wiyot\",\"\",\"201965159\",\"House of Yakaba member insert\",\"1591\"),\n    m(\"001\",\"001\",\"186\",\"Dachaun\",\"Cavness\",\"\",\"Yakaba\",\"07\/10\/1967\",\"201965186\",\"House of Yakaba member insert\",\"1861\"),\n    m(\"001\",\"001\",\"187\",\"Johnice\",\"Arnold\",\"\",\"Yakaba\",\"06\/01\/1969\",\"201965187\",\"House of Yakaba member insert\",\"1871\"),\n\n    m(\"002\",\"001\",\"001\",\"Hattak Lusa\",\"Holitopa\",\"\",\"Hattak Lusa Holitopa\",\"\",\"\",\"Foundational Holitopa-Douglas trust head\",\"2001\"),\n    m(\"002\",\"001\",\"002\",\"Wilbert Asey\",\"Douglas\",\"\",\"\",\"\",\"\",\"Living bloodline member\",\"2002\"),\n    m(\"002\",\"001\",\"003\",\"Randolph Limen\",\"Douglas\",\"\",\"\",\"\",\"\",\"Living bloodline member\",\"2003\"),\n    m(\"002\",\"001\",\"004\",\"Herman Clarence\",\"Douglas\",\"\",\"Hattak Lusa Holitopa\",\"\",\"\",\"Trust named holder and living bloodline member\",\"2004\"),\n    m(\"002\",\"001\",\"005\",\"Marc Dushun\",\"Douglas\",\"\",\"\",\"\",\"\",\"Living bloodline member\",\"2005\"),\n    m(\"002\",\"001\",\"006\",\"Herman Don Sheridon\",\"Douglas\",\"\",\"\",\"\",\"\",\"Living bloodline member\",\"2006\"),\n    m(\"002\",\"001\",\"007\",\"Tamond Tajid\",\"Douglas\",\"\",\"\",\"\",\"\",\"Living bloodline member\",\"2007\"),\n    m(\"002\",\"001\",\"008\",\"Anwar Liem-Jamil\",\"Douglas\",\"\",\"\",\"\",\"\",\"Living bloodline member\",\"2008\"),\n    m(\"002\",\"001\",\"009\",\"Brook Alia\",\"Douglas\",\"\",\"\",\"\",\"\",\"Living bloodline member\",\"2009\"),\n    m(\"002\",\"001\",\"010\",\"Blaire Alise\",\"Douglas\",\"\",\"\",\"\",\"\",\"Living bloodline member\",\"2010\"),\n    m(\"002\",\"001\",\"011\",\"Iris Selena\",\"Douglas\",\"\",\"\",\"\",\"\",\"Living bloodline member\",\"2011\"),\n    m(\"002\",\"001\",\"012\",\"Ivan Malik\",\"Douglas\",\"\",\"\",\"\",\"\",\"Living bloodline member\",\"2012\"),\n    m(\"002\",\"001\",\"013\",\"Ishmel\",\"Douglas\",\"\",\"\",\"\",\"\",\"Living bloodline member\",\"2013\"),\n    m(\"002\",\"001\",\"014\",\"Harrison\",\"Douglas\",\"\",\"\",\"\",\"\",\"Living bloodline member\",\"2014\"),\n    m(\"002\",\"001\",\"015\",\"Ayden\",\"Douglas\",\"\",\"\",\"\",\"\",\"Living bloodline member\",\"2015\"),\n\n    m(\"003\",\"001\",\"001\",\"ABA OCHA'KWA\",\"YAKABA\",\"\",\"ABA OCHA'KWA YAKABA\",\"\",\"\",\"Foundational DUGDAMONTYA trust head\",\"3001\"),\n    m(\"003\",\"001\",\"002\",\"Julia Ann\",\"Treadway\",\"\",\"\",\"\",\"\",\"Living bloodline member\",\"3002\"),\n    m(\"003\",\"001\",\"003\",\"Tamela Shondale\",\"Scott\",\"\",\"\",\"\",\"\",\"Living bloodline member\",\"3003\"),\n    m(\"003\",\"001\",\"004\",\"Hope\",\"Scott\",\"\",\"\",\"\",\"\",\"Living bloodline member\",\"3004\"),\n    m(\"003\",\"001\",\"005\",\"Ashley Symone\",\"Scott\",\"\",\"\",\"\",\"\",\"Living bloodline member\",\"3005\"),\n    m(\"003\",\"001\",\"006\",\"Winston Hieri\",\"Scott Sr.\",\"\",\"\",\"\",\"Living bloodline member\",\"3006\"),\n    m(\"003\",\"001\",\"007\",\"Whitley Deneshia Lorece\",\"Scott\",\"\",\"\",\"\",\"\",\"Living bloodline member\",\"3007\"),\n    m(\"003\",\"001\",\"008\",\"Lailani Mia\",\"Scott\",\"\",\"\",\"\",\"\",\"Living bloodline member\",\"3008\"),\n    m(\"003\",\"001\",\"009\",\"Winston Hier\",\"Scott Jr.\",\"\",\"\",\"\",\"Living bloodline member\",\"3009\"),\n    m(\"003\",\"001\",\"010\",\"Winry Selah Symone\",\"Scott\",\"\",\"\",\"\",\"\",\"Living bloodline member\",\"3010\"),\n    m(\"003\",\"001\",\"011\",\"Kirin Jasia\",\"Scott\",\"\",\"\",\"\",\"\",\"Living bloodline member\",\"3011\"),\n    m(\"003\",\"001\",\"012\",\"Sia Namaari\",\"Scott\",\"\",\"\",\"\",\"\",\"Living bloodline member\",\"3012\")\n  ]\n};\n\nfunction m(b,f,p,first,last,maiden,tribal,dob,tribalNo,proof,code){\n  return {\n    id:`${b}-${f}-${p}`, bloodlineNo:b, familyNo:f, personalNo:p,\n    firstName:first, lastName:last, maidenName:maiden, tribalName:tribal, dob:dob,\n    tribalNumber:tribalNo, documentQualification:\"Passed Reconstruction Document Phase\", verificationStatus:\"Verified\", virtualMembershipStatus:\"Virtual Membership Active\", registrationPaid:\"Paid\",\n    federationStatus:\"Active\", memberAccessCode:code || p.padStart(4,\"0\"),\n    familyAdminCode:f+\"1\", parentRegistryId:\"\", reconstructionProof:proof || \"\",\n    adminNotes:\"\", createdAt:new Date().toISOString(), updatedAt:new Date().toISOString()\n  };\n}\n\nlet db = load();\n\nfunction load(){\n  try { return JSON.parse(localStorage.getItem(STORAGE_KEY)) || starterData; }\n  catch(e){ return starterData; }\n}\nfunction persist(reason){\n  localStorage.setItem(STORAGE_KEY, JSON.stringify(db));\n  renderAll();\n  document.getElementById(\"backupBox\").value = backupText(reason || \"Data updated\");\n  localStorage.setItem(STORAGE_KEY+\"_lastReport\", backupText(reason || \"Data updated\"));\n}\nfunction fullName(x){ return [x.firstName,x.lastName].filter(Boolean).join(\" \"); }\nfunction charterName(no){ return (db.charters.find(c=>c.no===no)||{}).name || \"Unchartered Bloodline\"; }\nfunction canMaster(){ return session.role===\"master\"; }\nfunction canBloodline(no){ return canMaster() || (session.role===\"bloodline\" && session.bloodline===no); }\nfunction canFamily(x){ return canBloodline(x.bloodlineNo) || (session.role===\"family\" && session.code===x.familyAdminCode); }\nfunction canMember(x){ return canFamily(x) || (session.role===\"member\" && session.code===x.memberAccessCode); }\nfunction maskId(id){ const parts=id.split(\"-\"); return `***-***-${parts[2]}`; }\nfunction last4(s){ return (s||\"\").slice(-4); }\n\nfunction login(){\n  const role = document.getElementById(\"loginRole\").value;\n  const code = document.getElementById(\"loginCode\").value.trim();\n  const bloodline = document.getElementById(\"loginBloodline\").value.trim().padStart(3,\"0\");\n  if(role===\"master\" && code !== MASTER_ADMIN_CODE) return alert(\"Invalid master administrator code.\");\n  if(role===\"bloodline\"){\n    const c = db.charters.find(x=>x.no===bloodline && x.adminCode===code);\n    if(!c) return alert(\"Invalid bloodline admin code or bloodline number.\");\n  }\n  if(role===\"family\" && !db.members.some(x=>x.familyAdminCode===code)) return alert(\"Invalid family administrator code.\");\n  if(role===\"member\" && !db.members.some(x=>x.memberAccessCode===code)) return alert(\"Invalid member access code.\");\n  session = { role, code, bloodline: role===\"bloodline\" ? bloodline : \"\" };\n  document.getElementById(\"sessionInfo\").innerHTML = `Unlocked as <b>${role}<\/b>${session.bloodline ? \" for Bloodline \"+session.bloodline : \"\"}`;\n  renderAll();\n}\nfunction logout(){\n  session = { role:\"public\", code:\"\", bloodline:\"\" };\n  document.getElementById(\"sessionInfo\").textContent = \"Public mode active.\";\n  renderAll();\n}\nfunction showTab(id){\n  document.querySelectorAll(\".tab\").forEach(x=>x.classList.add(\"hidden\"));\n  document.getElementById(id).classList.remove(\"hidden\");\n  renderAll();\n}\nfunction renderAll(){\n  renderDashboard(); renderVerify(); renderMembers(); renderTreeSelect(); renderFamilyTree(); renderCharters();\n  document.getElementById(\"charterAdmin\").classList.toggle(\"hidden\", !canMaster());\n}\nfunction renderDashboard(){\n  document.getElementById(\"statBloodlines\").textContent = `${db.charters.length} \/ 144`;\n  document.getElementById(\"statMembers\").textContent = db.members.length;\n  document.getElementById(\"statFederation\").textContent = db.members.filter(x=>x.federationStatus===\"Active\").length;\n  document.getElementById(\"bloodlineList\").innerHTML = db.charters.map(c=>`\n    <div class=\"memberCard\">\n      <b>${c.no} \u2014 ${c.name}<\/b><br>\n      Founder: ${c.founder}<br>\n      Trust: ${c.trust || \"\"}<br>\n      <span class=\"badge\">${c.status}<\/span><span class=\"badge\">${c.paid}<\/span>\n    <\/div>`).join(\"\");\n}\nfunction allowedMembers(){\n  if(canMaster()) return db.members;\n  if(session.role===\"bloodline\") return db.members.filter(x=>x.bloodlineNo===session.bloodline);\n  if(session.role===\"family\") return db.members.filter(x=>x.familyAdminCode===session.code);\n  if(session.role===\"member\") return db.members.filter(x=>x.memberAccessCode===session.code);\n  return [];\n}\nfunction publicRow(x){\n  return `<div class=\"memberCard\">\n    <b>${maskId(x.id)}<\/b> \u2014 ${fullName(x)}<br>\n    Tribal Name: ${x.tribalName || \"\u2014\"}<br>\n    Bloodline: ${charterName(x.bloodlineNo)}<br>\n    Status: <span class=\"ok\">${x.verificationStatus}<\/span> \/ Federation ${x.federationStatus}<br>\n    Virtual Membership: ${x.virtualMembershipStatus || \"Virtual Membership Locked\"}<br>\n    Public Identifier: Last 3 ID <b>${x.personalNo}<\/b>${x.tribalNumber ? \" \/ Last 4 Tribal # <b>\"+last4(x.tribalNumber)+\"<\/b>\" : \"\"}\n  <\/div>`;\n}\nfunction privateRow(x){\n  return `<div class=\"memberCard\">\n    <b>${x.id}<\/b> \u2014 ${fullName(x)}<br>\n    Tribal Name: ${x.tribalName || \"\u2014\"} | DOB: ${x.dob || \"\u2014\"} | Tribal #: ${x.tribalNumber || \"\u2014\"}<br>\n    Bloodline: ${charterName(x.bloodlineNo)} | Family: ${x.familyNo} | Personal: ${x.personalNo}<br>\n    Member Code: ${x.memberAccessCode} | Family Admin Code: ${x.familyAdminCode}<br>\n    Document Phase: ${x.documentQualification || \"Pending Document Review\"}<br>\n    Status: ${x.verificationStatus} \/ Fee ${x.registrationPaid} \/ Federation ${x.federationStatus}<br>\n    Virtual Membership: ${x.virtualMembershipStatus || \"Virtual Membership Locked\"}<br>\n    Reconstruction Proof: ${x.reconstructionProof || \"\u2014\"}<br>\n    <button class=\"secondary\" onclick=\"loadEdit('${x.id}')\">Edit<\/button>\n    <button onclick=\"printId('${x.id}')\">Print Digital ID<\/button>\n    ${canMaster()?`<button class=\"danger\" onclick=\"deleteMember('${x.id}')\">Delete<\/button>`:\"\"}\n  <\/div>`;\n}\nfunction renderVerify(){\n  const q=(document.getElementById(\"verifySearch\")?.value||\"\").toLowerCase().trim();\n  const list = db.members.filter(x=>{\n    if(!q) return false;\n    return x.id.toLowerCase().includes(q)||x.personalNo===q||last4(x.tribalNumber)===q||fullName(x).toLowerCase().includes(q)||String(x.tribalName).toLowerCase().includes(q);\n  });\n  document.getElementById(\"verifyResults\").innerHTML = list.length ? list.map(publicRow).join(\"\") : \"<p class='muted'>No public verification results.<\/p>\";\n}\nfunction renderMembers(){\n  const q=(document.getElementById(\"memberSearch\")?.value||\"\").toLowerCase().trim();\n  let list = allowedMembers();\n  if(session.role===\"public\") {\n    document.getElementById(\"memberResults\").innerHTML = \"<p class='muted'>Private member records require authorization. Use Verify Member for public lookup.<\/p>\";\n    return;\n  }\n  if(q) list = list.filter(x=>JSON.stringify(x).toLowerCase().includes(q));\n  document.getElementById(\"memberResults\").innerHTML = list.map(privateRow).join(\"\") || \"<p class='muted'>No accessible records.<\/p>\";\n}\nfunction renderTreeSelect(){\n  const sel=document.getElementById(\"treeBloodline\");\n  if(!sel) return;\n  sel.innerHTML = db.charters.map(c=>`<option value=\"${c.no}\">${c.no} \u2014 ${c.name}<\/option>`).join(\"\");\n}\nfunction renderFamilyTree(){\n  const no=document.getElementById(\"treeBloodline\")?.value || \"001\";\n  const list=db.members.filter(x=>x.bloodlineNo===no);\n  const visible = canBloodline(no) || canMaster();\n  const roots=list.filter(x=>!x.parentRegistryId);\n  const childrenOf = id => list.filter(x=>x.parentRegistryId===id);\n  function node(x){\n    const label = visible ? `${x.id} \u2014 ${fullName(x)} (${x.tribalName||\"No tribal name\"})` : `${maskId(x.id)} \u2014 ${fullName(x)}`;\n    const kids=childrenOf(x.id);\n    return `<li>${label}${kids.length?`<ul>${kids.map(node).join(\"\")}<\/ul>`:\"\"}<\/li>`;\n  }\n  document.getElementById(\"treeOutput\").innerHTML = `<h3>${charterName(no)}<\/h3><ul>${roots.map(node).join(\"\")}<\/ul>`;\n}\nfunction saveMember(){\n  const b=document.getElementById(\"bloodlineNo\").value.trim().padStart(3,\"0\");\n  const f=document.getElementById(\"familyNo\").value.trim().padStart(3,\"0\");\n  const p=document.getElementById(\"personalNo\").value.trim().padStart(3,\"0\");\n  const id=document.getElementById(\"editId\").value.trim() || `${b}-${f}-${p}`;\n  const existing=db.members.find(x=>x.id===id);\n  const incoming = {\n    id, bloodlineNo:b, familyNo:f, personalNo:p,\n    firstName:val(\"firstName\"), lastName:val(\"lastName\"), maidenName:val(\"maidenName\"),\n    tribalName:val(\"tribalName\"), dob:val(\"dob\"), tribalNumber:val(\"tribalNumber\"),\n    memberAccessCode:val(\"memberAccessCode\") || p+\"1\",\n    familyAdminCode:val(\"familyAdminCode\") || f+\"1\",\n    parentRegistryId:val(\"parentRegistryId\"),\n    documentQualification:val(\"documentQualification\"), verificationStatus:val(\"verificationStatus\"), virtualMembershipStatus:val(\"virtualMembershipStatus\"), registrationPaid:val(\"registrationPaid\"), federationStatus:val(\"federationStatus\"),\n    reconstructionProof:val(\"reconstructionProof\"), adminNotes:val(\"adminNotes\"),\n    createdAt: existing?.createdAt || new Date().toISOString(),\n    updatedAt: new Date().toISOString()\n  };\n  if(!canMaster() && !canBloodline(b) && !(session.role===\"family\" && session.code===incoming.familyAdminCode)) {\n    return alert(\"You are not authorized to save records in this family or bloodline.\");\n  }\n  if(incoming.documentQualification !== \"Passed Reconstruction Document Phase\") {\n    incoming.verificationStatus = \"Pending\";\n    incoming.federationStatus = \"Pending\";\n    incoming.virtualMembershipStatus = \"Virtual Membership Locked\";\n  }\n  if(incoming.verificationStatus === \"Rejected\" || incoming.documentQualification === \"Failed Document Phase\") {\n    incoming.federationStatus = \"Pending\";\n    incoming.virtualMembershipStatus = \"Virtual Membership Locked\";\n  }\n  if(existing) Object.assign(existing,incoming); else db.members.push(incoming);\n  persist(\"Member saved\/updated: \"+incoming.id+\" \"+fullName(incoming));\n  emailBackup();\n  alert(\"Member saved and backup report prepared.\");\n}\nfunction val(id){ return document.getElementById(id).value.trim(); }\nfunction loadEdit(id){\n  const x=db.members.find(m=>m.id===id); if(!x || !canMember(x)) return alert(\"Not authorized.\");\n  [\"editId\",\"firstName\",\"lastName\",\"maidenName\",\"tribalName\",\"dob\",\"tribalNumber\",\"bloodlineNo\",\"familyNo\",\"personalNo\",\"memberAccessCode\",\"familyAdminCode\",\"parentRegistryId\",\"documentQualification\",\"verificationStatus\",\"virtualMembershipStatus\",\"registrationPaid\",\"federationStatus\",\"reconstructionProof\",\"adminNotes\"].forEach(k=>{\n    const el=document.getElementById(k); if(!el) return;\n    const map={editId:\"id\"};\n    el.value = x[map[k]||k] || \"\";\n  });\n  showTab(\"register\");\n}\nfunction clearForm(){ document.querySelectorAll(\"#register input,#register textarea\").forEach(x=>x.value=\"\"); }\nfunction deleteMember(id){\n  if(!canMaster()) return alert(\"Master admin only.\");\n  db.members=db.members.filter(x=>x.id!==id);\n  persist(\"Member deleted: \"+id);\n  emailBackup();\n}\nfunction saveCharter(){\n  if(!canMaster()) return alert(\"Master admin only.\");\n  const no=val(\"charterNo\").padStart(3,\"0\");\n  if(Number(no)<1 || Number(no)>144) return alert(\"Bloodline number must be 001-144.\");\n  let c=db.charters.find(x=>x.no===no);\n  const data={no,name:val(\"charterName\"),founder:val(\"charterFounder\"),trust:\"Bloodline Fraternity Trust\",adminCode:val(\"charterAdminCode\"),paid:val(\"charterPaid\"),status:val(\"charterStatus\"),notes:val(\"charterNotes\")};\n  if(c) Object.assign(c,data); else {\n    if(db.charters.length>=144) return alert(\"144 bloodline limit reached.\");\n    db.charters.push(data);\n  }\n  persist(\"Charter saved\/updated: \"+no+\" \"+data.name);\n  emailBackup();\n}\nfunction renderCharters(){\n  document.getElementById(\"charterList\").innerHTML = db.charters.map(c=>`\n    <div class=\"memberCard\">\n      <b>${c.no} \u2014 ${c.name}<\/b><br>Founder: ${c.founder}<br>Trust: ${c.trust}<br>\n      Fee: $2,500.00 Land Rights \/ Status: ${c.status} \/ Payment: ${c.paid}<br>\n      Benefits: Bloodline land-right record, fraternity charter, trust standing, family archive, private portal, federation recognition.\n      ${canMaster()?`<br><span class=\"badge\">Admin Code: ${c.adminCode}<\/span>`:\"\"}\n    <\/div>`).join(\"\");\n}\nfunction printId(id){\n  const x=db.members.find(m=>m.id===id); if(!x || !canMember(x)) return alert(\"Not authorized.\");\n  document.getElementById(\"idCardOutput\").innerHTML = `<div class=\"idcard\">\n    <h3>Tree & River Digital ID<\/h3>\n    <p><b>${fullName(x)}<\/b><\/p>\n    <p>Tribal Name: ${x.tribalName || \"\u2014\"}<\/p>\n    <p>Registry ID: ${x.id}<\/p>\n    <p>Bloodline: ${charterName(x.bloodlineNo)}<\/p>\n    <p>DOB: ${x.dob || \"\u2014\"}<\/p>\n    <p>Document Phase: ${x.documentQualification || \"Pending Document Review\"}<\/p>\n    <p>Status: ${x.verificationStatus} \/ ${x.federationStatus}<\/p>\n    <p>Virtual Membership: ${x.virtualMembershipStatus || \"Virtual Membership Locked\"}<\/p>\n    <p class=\"small\">Public Verify: Last 3 ID ${x.personalNo}${x.tribalNumber ? \" \/ Last 4 Tribal # \"+last4(x.tribalNumber) : \"\"}<\/p>\n  <\/div>`;\n  document.getElementById(\"printArea\").classList.remove(\"hidden\");\n  window.print();\n}\nfunction backupText(reason){\n  return JSON.stringify({ reason, timestamp:new Date().toISOString(), session, data:db }, null, 2);\n}\nfunction downloadBackup(){\n  const blob = new Blob([backupText(\"Manual full backup\")], {type:\"application\/json\"});\n  const a = document.createElement(\"a\");\n  a.href = URL.createObjectURL(blob);\n  a.download = \"tree_river_registry_backup_\"+new Date().toISOString().replace(\/[:.]\/g,\"-\")+\".json\";\n  a.click();\n}\nfunction emailBackup(){\n  const subject=encodeURIComponent(\"Tree & River Registry Data Backup Update\");\n  const body=encodeURIComponent(backupText(\"Registry update backup report\"));\n  window.location.href=`mailto:${BACKUP_EMAIL}?subject=${subject}&body=${body.slice(0,18000)}`;\n}\nfunction importBackupText(text){\n  const obj=JSON.parse(text);\n  db=obj.data || obj;\n  persist(\"Backup imported\");\n}\ndocument.getElementById(\"backupBox\").value = localStorage.getItem(STORAGE_KEY+\"_lastReport\") || backupText(\"Current registry state\");\nrenderAll();\nlogout();\n<\/script>\n<\/body>\n<\/html>\n\n\n\n\n\n\n\n\n\n\n\n<p>&nbsp;<\/p>\n<p>Trubian Village Tribal Land Development<\/p>\n<p><\/p>\n\n\n\n\n\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1122,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"pagelayer_contact_templates":[],"_pagelayer_content":"","footnotes":""},"class_list":["post-255","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/trubianvillage.com\/registry\/wp-json\/wp\/v2\/pages\/255"}],"collection":[{"href":"https:\/\/trubianvillage.com\/registry\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/trubianvillage.com\/registry\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/trubianvillage.com\/registry\/wp-json\/wp\/v2\/users\/1122"}],"replies":[{"embeddable":true,"href":"https:\/\/trubianvillage.com\/registry\/wp-json\/wp\/v2\/comments?post=255"}],"version-history":[{"count":228,"href":"https:\/\/trubianvillage.com\/registry\/wp-json\/wp\/v2\/pages\/255\/revisions"}],"predecessor-version":[{"id":1718,"href":"https:\/\/trubianvillage.com\/registry\/wp-json\/wp\/v2\/pages\/255\/revisions\/1718"}],"wp:attachment":[{"href":"https:\/\/trubianvillage.com\/registry\/wp-json\/wp\/v2\/media?parent=255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}