{"product_id":"10-to-18-medium-duty-galvenized-post-shore-psv-725g","title":"10' to 18' Medium Duty Post Shore - PSV-725G","description":"\u003cp\u003e\u003cspan style=\"font-family: Montserrat; font-size: 11pt;\"\u003e\u003cb\u003e\u003ci\u003eOffer Increased Loading Capacity in Concrete Construction with the Medium Duty 10' to 18' Galvanized Post Shore\u003c\/i\u003e\u003c\/b\u003e\u003c\/span\u003e \u003cbr\u003e\u003cbr\u003e\u003cb\u003eFeatures\u003c\/b\u003e\u003cbr\u003eMade of High Quality Steel\u003cbr\u003eWeight: 69.30 lbs. \u003cbr\u003eProduct Code: PSV-725G\u003cbr\u003e\u003cbr\u003e\u003cspan style=\"font-size: 12pt; color: #0073b7; font-family: Montserrat;\"\u003e\u003cb\u003eNeed help in learning about shoring? Call NOW \u003cspan class=\"phone\"\u003e800-592-1718\u003c\/span\u003e\u003c\/b\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cbr\u003e\n\u003cstyle\u003e\n  \/* ---- Scoped to .stva-chart so it won't collide with host page styles ---- *\/\n  .stva-chart {\n    --navy:   #1f4e79;\n    --red:    #c00000;\n    --green:  #008000;\n    --grid:   #d9d9d9;\n    --axis:   #bfbfbf;\n    --label:  #595959;\n    --bg:     #ffffff;\n\n    font-family: Arial, Helvetica, sans-serif;\n    background: var(--bg);\n    border: 1px solid #e3e3e3;\n    padding: 16px 20px 8px;\n    max-width: 1040px;\n    margin: 0 auto;\n    box-sizing: border-box;\n  }\n  .stva-chart__title {\n    margin: 4px 0 0;\n    text-align: center;\n    font-size: clamp(17px, 2.4vw, 26px);\n    font-style: italic;\n    font-weight: 700;\n    color: var(--navy);\n  }\n  .stva-chart__svg { display: block; width: 100%; height: auto; }\n\n  .stva-chart .grid-line   { stroke: var(--grid); stroke-width: 1; }\n  .stva-chart .axis-line   { stroke: var(--axis); stroke-width: 1; }\n  .stva-chart .tick-label  { fill: var(--label); font-size: 11px; }\n  .stva-chart .y-tick      { text-anchor: end; dominant-baseline: middle; }\n  .stva-chart .x-tick      { text-anchor: middle; }\n  .stva-chart .axis-title  { fill: var(--label); font-size: 11px; text-anchor: middle; }\n\n  .stva-chart .series-line { fill: none; stroke-width: 2.5;\n                             stroke-linejoin: round; stroke-linecap: round; }\n  .stva-chart .marker      { stroke: #fff; stroke-width: 1.5; }\n  .stva-chart .hit         { fill: transparent; cursor: pointer; }\n\n  .stva-chart__legend {\n    display: flex; flex-wrap: wrap; justify-content: center;\n    gap: 6px 22px; margin: 2px 0 10px; padding: 0; list-style: none;\n  }\n  .stva-chart__legend li {\n    display: flex; align-items: center; gap: 7px;\n    font-size: 12px; color: #333; cursor: pointer; user-select: none;\n  }\n  .stva-chart__legend li[aria-pressed=\"true\"] { opacity: .35; }\n  .stva-chart__legend li:focus-visible { outline: 2px solid var(--navy); outline-offset: 3px; }\n  .stva-chart__swatch { width: 26px; height: 3px; border-radius: 2px; position: relative; }\n  .stva-chart__swatch::after {\n    content: \"\"; position: absolute; left: 50%; top: 50%;\n    width: 9px; height: 9px; border-radius: 50%;\n    transform: translate(-50%, -50%); background: inherit;\n  }\n\n  .stva-chart__tip {\n    position: absolute; pointer-events: none; opacity: 0;\n    transform: translate(-50%, -120%); transition: opacity .12s ease;\n    background: #fff; border: 1px solid #c8c8c8;\n    box-shadow: 0 2px 6px rgba(0,0,0,.14);\n    padding: 6px 9px; font-size: 12px; line-height: 1.45;\n    white-space: nowrap; border-radius: 3px; z-index: 10;\n  }\n  .stva-chart__tip strong { display: block; color: var(--navy); margin-bottom: 2px; }\n  .stva-chart__wrap { position: relative; }\n\n  @media (prefers-reduced-motion: reduce) {\n    .stva-chart__tip { transition: none; }\n  }\n\u003c\/style\u003e\n\u003cfigure class=\"stva-chart\" id=\"psvChart\"\u003e\n  \u003ch2 class=\"stva-chart__title\"\u003ePSV-725G 10' - 18' Medium Duty Post Shore\u003c\/h2\u003e\n  \u003cp style=\"text-align:center;\"\u003eLoad Testing Data\u003c\/p\u003e\n  \u003cdiv class=\"stva-chart__wrap\"\u003e\n    \u003csvg class=\"stva-chart__svg\" viewbox=\"0 0 960 470\" role=\"img\" aria-label=\"Line chart of ultimate average load and 3 to 1 safety factor load in pounds-force at 10, 14 and 18 foot extensions for the PSV-725G steel post shore.\"\u003e\u003c\/svg\u003e\n    \u003cdiv class=\"stva-chart__tip\" role=\"status\" aria-live=\"polite\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cul class=\"stva-chart__legend\"\u003e\u003c\/ul\u003e\n\u003c\/figure\u003e\n\n\u003cscript\u003e\n(function () {\n  \"use strict\";\n\n  var CATEGORIES = [\"10ft\", \"14ft\", \"18ft\"];\n\n  var SERIES = [\n    { name: \"Ultimate Avg. Load Lbf\",                 color: \"#1f4e79\", values: [39138, 15590, 6808] },\n    { name: \"3:1 Safety Factor Lbf\",                   color: \"#c00000\", values: [13046,  5197, 2269] },\n    { name: \"Load per Leg After Safety Factor Lbf\",    color: \"#008000\", values: [    0,     0,    0] }\n  ];\n\n  var CONFIG = {\n    yMin: 0,\n    yMax: 45000,\n    yStep: 5000,\n    xAxisTitle: \"Test Heights\",\n    margin: { top: 24, right: 40, bottom: 58, left: 78 },\n    width: 960,\n    height: 470\n  };\n\n  var NS = \"http:\/\/www.w3.org\/2000\/svg\";\n  var root   = document.getElementById(\"psvChart\");\n  var svg    = root.querySelector(\".stva-chart__svg\");\n  var tip    = root.querySelector(\".stva-chart__tip\");\n  var legend = root.querySelector(\".stva-chart__legend\");\n\n  var hidden = SERIES.map(function () { return false; });\n\n  function el(tag, attrs) {\n    var node = document.createElementNS(NS, tag);\n    for (var k in attrs) { if (attrs[k] != null) node.setAttribute(k, attrs[k]); }\n    return node;\n  }\n  function fmt(n) { return n.toLocaleString(\"en-US\"); }\n\n  var m  = CONFIG.margin;\n  var iw = CONFIG.width  - m.left - m.right;   \/\/ inner plot width\n  var ih = CONFIG.height - m.top  - m.bottom;  \/\/ inner plot height\n\n  function xAt(i) {\n    return CATEGORIES.length === 1\n      ? m.left + iw \/ 2\n      : m.left + (iw * i) \/ (CATEGORIES.length - 1);\n  }\n  function yAt(v) {\n    var t = (v - CONFIG.yMin) \/ (CONFIG.yMax - CONFIG.yMin);\n    return m.top + ih - t * ih;\n  }\n\n  function draw() {\n    while (svg.firstChild) svg.removeChild(svg.firstChild);\n\n    \/\/ Horizontal gridlines + y tick labels\n    for (var v = CONFIG.yMin; v \u003c= CONFIG.yMax; v += CONFIG.yStep) {\n      var y = yAt(v);\n      svg.appendChild(el(\"line\", {\n        class: \"grid-line\", x1: m.left, x2: m.left + iw, y1: y, y2: y\n      }));\n      var yl = el(\"text\", { class: \"tick-label y-tick\", x: m.left - 12, y: y });\n      yl.textContent = fmt(v);\n      svg.appendChild(yl);\n    }\n\n    \/\/ Axis lines\n    svg.appendChild(el(\"line\", {\n      class: \"axis-line\", x1: m.left, x2: m.left + iw,\n      y1: yAt(CONFIG.yMin), y2: yAt(CONFIG.yMin)\n    }));\n    svg.appendChild(el(\"line\", {\n      class: \"axis-line\", x1: m.left, x2: m.left,\n      y1: m.top, y2: m.top + ih\n    }));\n\n    \/\/ X tick labels\n    CATEGORIES.forEach(function (cat, i) {\n      var xl = el(\"text\", {\n        class: \"tick-label x-tick\", x: xAt(i), y: m.top + ih + 22\n      });\n      xl.textContent = cat;\n      svg.appendChild(xl);\n    });\n\n    var at = el(\"text\", {\n      class: \"axis-title\", x: m.left + iw \/ 2, y: m.top + ih + 46\n    });\n    at.textContent = CONFIG.xAxisTitle;\n    svg.appendChild(at);\n\n    \/\/ Series\n    SERIES.forEach(function (s, si) {\n      if (hidden[si]) return;\n\n      var d = s.values.map(function (v, i) {\n        return (i ? \"L\" : \"M\") + xAt(i) + \" \" + yAt(v);\n      }).join(\" \");\n\n      svg.appendChild(el(\"path\", {\n        class: \"series-line\", d: d, stroke: s.color\n      }));\n\n      s.values.forEach(function (v, i) {\n        svg.appendChild(el(\"circle\", {\n          class: \"marker\", cx: xAt(i), cy: yAt(v), r: 5, fill: s.color\n        }));\n\n        var hit = el(\"circle\", {\n          class: \"hit\", cx: xAt(i), cy: yAt(v), r: 16, tabindex: \"0\",\n          role: \"img\",\n          \"aria-label\": s.name + \", \" + CATEGORIES[i] + \", \" + fmt(v) + \" pounds-force\"\n        });\n        function show() { showTip(s, i, v); }\n        function hide() { tip.style.opacity = 0; }\n        hit.addEventListener(\"mouseenter\", show);\n        hit.addEventListener(\"mouseleave\", hide);\n        hit.addEventListener(\"focus\", show);\n        hit.addEventListener(\"blur\", hide);\n        svg.appendChild(hit);\n      });\n    });\n  }\n\n  function showTip(series, i, value) {\n    tip.innerHTML = \"\u003cstrong\u003e\" + CATEGORIES[i] + \" \u0026mdash; \" + series.name + \"\u003c\/strong\u003e\" +\n                    fmt(value) + \" lbf\";\n    \/\/ Convert SVG user units to on-screen pixels\n    var scale = svg.getBoundingClientRect().width \/ CONFIG.width;\n    tip.style.left = (xAt(i) * scale) + \"px\";\n    tip.style.top  = (yAt(value) * scale) + \"px\";\n    tip.style.opacity = 1;\n  }\n\n  function buildLegend() {\n    SERIES.forEach(function (s, si) {\n      var li = document.createElement(\"li\");\n      li.setAttribute(\"role\", \"button\");\n      li.setAttribute(\"tabindex\", \"0\");\n      li.setAttribute(\"aria-pressed\", \"false\");\n\n      var sw = document.createElement(\"span\");\n      sw.className = \"stva-chart__swatch\";\n      sw.style.background = s.color;\n\n      var label = document.createElement(\"span\");\n      label.textContent = s.name;\n\n      li.appendChild(sw);\n      li.appendChild(label);\n\n      function toggle() {\n        hidden[si] = !hidden[si];\n        li.setAttribute(\"aria-pressed\", String(hidden[si]));\n        tip.style.opacity = 0;\n        draw();\n      }\n      li.addEventListener(\"click\", toggle);\n      li.addEventListener(\"keydown\", function (e) {\n        if (e.key === \"Enter\" || e.key === \" \") { e.preventDefault(); toggle(); }\n      });\n\n      legend.appendChild(li);\n    });\n  }\n\n  buildLegend();\n  draw();\n  window.addEventListener(\"resize\", function () { tip.style.opacity = 0; });\n})();\n\u003c\/script\u003e\n","brand":"STVA","offers":[{"title":"Default Title","offer_id":49260977291481,"sku":"PSV-725G","price":105.68,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0644\/4630\/0377\/files\/PSV-725-2.jpg?v=1789587275","url":"https:\/\/scaffoldexpress.com\/products\/10-to-18-medium-duty-galvenized-post-shore-psv-725g","provider":"ScaffoldExpress.com","version":"1.0","type":"link"}