{"id":318,"date":"2026-01-22T19:17:49","date_gmt":"2026-01-22T19:17:49","guid":{"rendered":"https:\/\/sites.clarkson.edu\/brian-helenbrook\/?page_id=318"},"modified":"2026-04-09T04:30:33","modified_gmt":"2026-04-09T04:30:33","slug":"publications-2","status":"publish","type":"page","link":"https:\/\/sites.clarkson.edu\/brian-helenbrook\/publications-2\/","title":{"rendered":"Publications"},"content":{"rendered":"\n\n\n<div id=\"pubFrameWrap\"><\/div>\n\n<script>\n(function () {\n  var BASE = \"https:\/\/people.clarkson.edu\/~joijodp\/Helenbrook\/\";\n  var DEFAULT = \"web.html\";\n  var CHILD_ORIGIN = \"https:\/\/people.clarkson.edu\";\n  var wrap = document.getElementById(\"pubFrameWrap\");\n\n  var frame = null;\n  var lastTarget = \"\";\n  var lastHeight = 0;\n\n  function parseTarget(raw) {\n    raw = decodeURIComponent((raw || \"\").trim()) || DEFAULT;\n\n    var hashIndex = raw.indexOf(\"#\");\n    var file = hashIndex >= 0 ? raw.slice(0, hashIndex) : raw;\n    var anchor = hashIndex >= 0 ? raw.slice(hashIndex + 1) : \"\";\n\n    if (!\/^[A-Za-z0-9._-]+\\.html?$\/i.test(file)) {\n      file = DEFAULT;\n      anchor = \"\";\n    }\n\n    return { file: file, anchor: anchor };\n  }\n\n  function canonicalTarget(t) {\n    return t.file + (t.anchor ? \"#\" + t.anchor : \"\");\n  }\n\n  function currentTarget() {\n    return decodeURIComponent((location.hash || \"\").replace(\/^#\/, \"\")) || DEFAULT;\n  }\n\n  function buildSrc(t) {\n    var src = BASE + t.file + \"?v=20260317-1605&_cb=\" + Date.now();\n    if (t.anchor) src += \"#\" + t.anchor;\n    return src;\n  }\n\n  function updateHash(target, mode) {\n    var wanted = \"#\" + encodeURIComponent(target);\n\n    if (mode === \"push\") {\n      if (location.hash !== wanted) history.pushState(null, \"\", wanted);\n    } else {\n      if (location.hash !== wanted) history.replaceState(null, \"\", wanted);\n    }\n  }\n\n  function createFrame(src) {\n    var newFrame = document.createElement(\"iframe\");\n    newFrame.id = \"pubFrame\";\n    newFrame.setAttribute(\"scrolling\", \"no\");\n    newFrame.setAttribute(\"src\", src);\n    newFrame.style.height = \"120px\";\n    return newFrame;\n  }\n\n  function loadPage(rawTarget, mode, force) {\n    var t = parseTarget(rawTarget);\n    var target = canonicalTarget(t);\n\n    if (!force && target === lastTarget) return;\n    lastTarget = target;\n    lastHeight = 0;\n\n    var newFrame = createFrame(buildSrc(t));\n    wrap.innerHTML = \"\";\n    wrap.appendChild(newFrame);\n    frame = newFrame;\n\n    updateHash(target, mode || \"replace\");\n  }\n\n  if (\"scrollRestoration\" in history) {\n    history.scrollRestoration = \"manual\";\n  }\n\n  window.addEventListener(\"message\", function (e) {\n    if (e.origin !== CHILD_ORIGIN) return;\n    if (!frame) return;\n    if (e.source !== frame.contentWindow) return;\n    if (!e.data || !e.data.type) return;\n\n    if (e.data.type === \"navigate-page\") {\n      loadPage(e.data.page, \"push\", true);\n      return;\n    }\n\n    if (e.data.type === \"sync-page\") {\n      var t = parseTarget(e.data.page);\n      var target = canonicalTarget(t);\n\n      if (target !== lastTarget) {\n        lastTarget = target;\n        updateHash(target, \"replace\");\n      }\n      return;\n    }\n\n    if (e.data.type === \"iframe-height\") {\n      var h = parseInt(e.data.height, 10);\n      if (!isNaN(h) && h > 0 && Math.abs(h - lastHeight) > 1) {\n        lastHeight = h;\n        frame.style.height = h + \"px\";\n      }\n      return;\n    }\n  });\n\n  window.addEventListener(\"hashchange\", function () {\n    loadPage(currentTarget(), \"replace\", true);\n  });\n\n  window.addEventListener(\"popstate\", function () {\n    loadPage(currentTarget(), \"replace\", true);\n  });\n\n  window.addEventListener(\"pageshow\", function () {\n    loadPage(currentTarget(), \"replace\", true);\n  });\n\n  loadPage(currentTarget(), \"replace\", true);\n})();\n<\/script>\n\n\n\n<p><\/p>\n<style class=\"advgb-styles-renderer\">\nbody,\n.entry-content,\n.site-content,\n.content-area,\n#pubFrameWrap,\n#pubFrame {\n  background: #fff !important;\n}\n\n#pubFrameWrap {\n  width: 100%;\n}\n\n#pubFrame {\n  width: 100%;\n  height: 120px;\n  min-height: 0 !important;\n  border: 0;\n  display: block;\n  overflow: hidden;\n  background: #fff !important;\n}\n<\/style>","protected":false},"excerpt":{"rendered":"","protected":false},"author":239,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","footnotes":""},"class_list":["post-318","page","type-page","status-publish","hentry"],"coauthors":[],"author_meta":{"author_link":"https:\/\/sites.clarkson.edu\/brian-helenbrook\/author\/joijodp\/","display_name":"joijodp"},"relative_dates":{"created":"Posted 3 months ago","modified":"Updated 3 days ago"},"absolute_dates":{"created":"Posted on January 22, 2026","modified":"Updated on April 9, 2026"},"absolute_dates_time":{"created":"Posted on January 22, 2026 7:17 pm","modified":"Updated on April 9, 2026 4:30 am"},"featured_img_caption":"","featured_img":false,"series_order":"","_links":{"self":[{"href":"https:\/\/sites.clarkson.edu\/brian-helenbrook\/wp-json\/wp\/v2\/pages\/318","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sites.clarkson.edu\/brian-helenbrook\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sites.clarkson.edu\/brian-helenbrook\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sites.clarkson.edu\/brian-helenbrook\/wp-json\/wp\/v2\/users\/239"}],"replies":[{"embeddable":true,"href":"https:\/\/sites.clarkson.edu\/brian-helenbrook\/wp-json\/wp\/v2\/comments?post=318"}],"version-history":[{"count":85,"href":"https:\/\/sites.clarkson.edu\/brian-helenbrook\/wp-json\/wp\/v2\/pages\/318\/revisions"}],"predecessor-version":[{"id":455,"href":"https:\/\/sites.clarkson.edu\/brian-helenbrook\/wp-json\/wp\/v2\/pages\/318\/revisions\/455"}],"wp:attachment":[{"href":"https:\/\/sites.clarkson.edu\/brian-helenbrook\/wp-json\/wp\/v2\/media?parent=318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}