[three_fifth]
<h1>Why waste time welding in HVAC support frames? Install them yourself in 15 minutes.</h1>
<strong>Commercial buildings and TI retrofits have unique, and often extensive, needs for their rooftop (RTU) HVAC systems, and too often you're stuck waiting on fabricators for welded angle irons</strong>. Now with QuickFrames, you can bolt-in steel structural supports below the deck fast... typically in about 15 to 20 minutes. And if changes happen, their easy to adjust and easy to move.
<blockquote><em>"The product is absolutely the easiest solution to supporting the HVAC equipment on the roof, the quality is superior. The staff is by far the best! Orders always arrive on time."
</em>★ ★ ★ ★ ★<em>
</em>—<em>Dennis K., HVAC Contractor/Supplier</em>

<em>"New product for myself and my guys in the field, I was extremely excited by their response. They were amazingly easy to work with and incorporate into the existing structure (conventional bar joists)"
</em>★ ★ ★ ★ ★<em>
</em>—<em>Rich L., HVAC Mechanical Contractor</em></blockquote>
<h2>Watch the Demo Install Video</h2>
[embedyt] https://youtu.be/aOv_AwB0nss [/embedyt]
<h4>Benefits of Using QuickFrames for RTU supports for HVAC units:</h4>
<ul>
 	<li>Quick and painless bolt-on installation below the deck in about 15 minutes</li>
 	<li>No welding required (all you need is a ¾” impact driver)</li>
 	<li>Precision engineering: and pre-engineered for a variety of applications</li>
 	<li>Site-specific engineering services when needed at no extra cost</li>
 	<li>In-field adjustability in both axes to accommodate variations in as-built conditions</li>
 	<li>Most frame sizes available for same or next-day shipment</li>
</ul>
&nbsp;

Whether you use Trane, Carrier or another brand, using steel frame supports for these roof top units (RTUs) is essential. Roof top units and curb are heavy and require engineered structural support. Fortunately, that’s why QuickFrames is here.

Structural frames are required for roof openings in a commercial building of more than 12 inches, ensuring safe, long-term support for the opening and the unit. Curbs and opening sizes for RTUs exceed this cut size, and therefore require a roof top unit support frame for each one.

[responsive] <img class="alignnone" src="/wp-content/uploads/rtu-curb-framing.jpg" alt="RTU Support Frame" /> [/responsive]

[/three_fifth]

[two_fifth_last]
[divider type="space" margintop="10" marginbottom="0"]
[responsive] <a href="tel:14806561675"><img class="alignnone" src="/wp-content/uploads/web-cta-call-now-box.png" alt="Curb RTU HVAC Support Frames" width="441" height="165" /></a> [/responsive]
<h2>OR DOWNLOAD PRICING NOW HERE</h2>
(instant PDF download)
[divider type="space" margintop="-21" marginbottom="0"]

<style type="text/css">
  .my-custom-form-styling form {<br />    width: 100%;<br />    margin-left: 0;<br />    margin-right: 0;<br />    text-align: left;<br />  }<br />    .my-custom-form-styling input {<br />      color: red;<br />    }<br /></style>
<div class="my-custom-form-styling">
<div class="_form_1">
</div>
<form id="_form_4_" class="_form _form_4 _inline-form _dark" action="https://quickframes.activehosted.com/proc.php" method="POST" novalidate=""><input name="u" type="hidden" value="4" />
<input name="f" type="hidden" value="4" />
<input name="s" type="hidden" />
<input name="c" type="hidden" value="0" />
<input name="m" type="hidden" value="0" />
<input name="act" type="hidden" value="sub" />
<input name="v" type="hidden" value="2" />
<div class="_form-content">
<div class="_form_element _x41108699 _full_width "><label class="_form-label">
</label>
<div class="_field-wrapper"><input name="firstname" required="" type="text" placeholder="Your First Name" /></div>
</div>
<div class="_form_element _x38570637 _full_width "><label class="_form-label">
</label>
<div class="_field-wrapper"><input name="lastname" required="" type="text" placeholder="Your Last Name" /></div>
</div>
<div class="_form_element _x90819398 _full_width "><label class="_form-label">
</label>
<div class="_field-wrapper"><input name="customer_account" type="text" placeholder="Company" /></div>
</div>
<div class="_form_element _x34359891 _full_width "><label class="_form-label">
</label>
<div class="_field-wrapper"><input name="email" required="" type="text" placeholder="Primary Business Email" /></div>
</div>
<div class="_form_element _x30245572 _full_width "><label class="_form-label">
</label>
<div class="_field-wrapper"><input name="phone" required="" type="text" placeholder="Primary (Daytime) Phone" /></div>
</div>
<div class="_form_element _field31 _full_width "><input name="field[31]" type="hidden" value="" /></div>
<div class="_form_element _x82409926 _full_width "><label class="_form-label">
Please prove you're human*
</label>
<div class="g-recaptcha" data-sitekey="6LcwIw8TAAAAACP1ysM08EhCgzd6q5JAOUR1a0Go"></div>
</div>
<div class="_button-wrapper _full_width"><button id="_form_4_submit" class="_submit" type="submit">
SEND
</button></div>
<div class="_clear-element"></div>
</div>
<div class="_form-thank-you" style="display: none;"></div>
</form><script type="text/javascript">
window.cfields = {"31":"landing_page"};
window._show_thank_you = function(id, message, trackcmp_url, email) {
  var form = document.getElementById('_form_' + id + '_'), thank_you = form.querySelector('._form-thank-you');
  form.querySelector('._form-content').style.display = 'none';
  thank_you.innerHTML = message;
  thank_you.style.display = 'block';
  const vgoAlias = typeof visitorGlobalObjectAlias === 'undefined' ? 'vgo' : visitorGlobalObjectAlias;
  var visitorObject = window[vgoAlias];
  if (email && typeof visitorObject !== 'undefined') {
    visitorObject('setEmail', email);
    visitorObject('update');
  } else if (typeof(trackcmp_url) != 'undefined' && trackcmp_url) {
    // Site tracking URL to use after inline form submission.
    _load_script(trackcmp_url);
  }
  if (typeof window._form_callback !== 'undefined') window._form_callback(id);
};
window._show_error = function(id, message, html) {
  var form = document.getElementById('_form_' + id + '_'), err = document.createElement('div'), button = form.querySelector('button'), old_error = form.querySelector('._form_error');
  if (old_error) old_error.parentNode.removeChild(old_error);
  err.innerHTML = message;
  err.className = '_error-inner _form_error _no_arrow';
  var wrapper = document.createElement('div');
  wrapper.className = '_form-inner';
  wrapper.appendChild(err);
  button.parentNode.insertBefore(wrapper, button);
  document.querySelector('[id^="_form"][id$="_submit"]').disabled = false;
  if (html) {
    var div = document.createElement('div');
    div.className = '_error-html';
    div.innerHTML = html;
    err.appendChild(div);
  }
};
window._load_script = function(url, callback) {
  var head = document.querySelector('head'), script = document.createElement('script'), r = false;
  script.type = 'text/javascript';
  script.charset = 'utf-8';
  script.src = url;
  if (callback) {
    script.onload = script.onreadystatechange = function() {
      if (!r && (!this.readyState || this.readyState == 'complete')) {
        r = true;
        callback();
      }
    };
  }
  head.appendChild(script);
};
(function() {
  if (window.location.search.search("excludeform") !== -1) return false;
  var getCookie = function(name) {
    var match = document.cookie.match(new RegExp('(^|; )' + name + '=([^;]+)'));
    return match ? match[2] : null;
  }
  var setCookie = function(name, value) {
    var now = new Date();
    var time = now.getTime();
    var expireTime = time + 1000 * 60 * 60 * 24 * 365;
    now.setTime(expireTime);
    document.cookie = name + '=' + value + '; expires=' + now + ';path=/';
  }
      var addEvent = function(element, event, func) {
    if (element.addEventListener) {
      element.addEventListener(event, func);
    } else {
      var oldFunc = element['on' + event];
      element['on' + event] = function() {
        oldFunc.apply(this, arguments);
        func.apply(this, arguments);
      };
    }
  }
  var _removed = false;
  var form_to_submit = document.getElementById('_form_4_');
  var allInputs = form_to_submit.querySelectorAll('input, select, textarea'), tooltips = [], submitted = false;

  var getUrlParam = function(name) {
    var regexStr = '[\?&]' + name + '=([^&#]*)';
    var results = new RegExp(regexStr, 'i').exec(window.location.href);
    return results != undefined ? decodeURIComponent(results[1]) : false;
  };

  for (var i = 0; i < allInputs.length; i++) {
    var regexStr = "field\\[(\\d+)\\]";
    var results = new RegExp(regexStr).exec(allInputs[i].name);
    if (results != undefined) {
      allInputs[i].dataset.name = window.cfields[results[1]];
    } else {
      allInputs[i].dataset.name = allInputs[i].name;
    }
    var fieldVal = getUrlParam(allInputs[i].dataset.name);

    if (fieldVal) {
      if (allInputs[i].dataset.autofill === "false") {
        continue;
      }
      if (allInputs[i].type == "radio" || allInputs[i].type == "checkbox") {
        if (allInputs[i].value == fieldVal) {
          allInputs[i].checked = true;
        }
      } else {
        allInputs[i].value = fieldVal;
      }
    }
  }

  var remove_tooltips = function() {
    for (var i = 0; i < tooltips.length; i++) {
      tooltips[i].tip.parentNode.removeChild(tooltips[i].tip);
    }
    tooltips = [];
  };
  var remove_tooltip = function(elem) {
    for (var i = 0; i < tooltips.length; i++) {
      if (tooltips[i].elem === elem) {
        tooltips[i].tip.parentNode.removeChild(tooltips[i].tip);
        tooltips.splice(i, 1);
        return;
      }
    }
  };
  var create_tooltip = function(elem, text) {
    var tooltip = document.createElement('div'), arrow = document.createElement('div'), inner = document.createElement('div'), new_tooltip = {};
    if (elem.type != 'radio' && elem.type != 'checkbox') {
      tooltip.className = '_error';
      arrow.className = '_error-arrow';
      inner.className = '_error-inner';
      inner.innerHTML = text;
      tooltip.appendChild(arrow);
      tooltip.appendChild(inner);
      elem.parentNode.appendChild(tooltip);
    } else {
      tooltip.className = '_error-inner _no_arrow';
      tooltip.innerHTML = text;
      elem.parentNode.insertBefore(tooltip, elem);
      new_tooltip.no_arrow = true;
    }
    new_tooltip.tip = tooltip;
    new_tooltip.elem = elem;
    tooltips.push(new_tooltip);
    return new_tooltip;
  };
  var resize_tooltip = function(tooltip) {
    var rect = tooltip.elem.getBoundingClientRect();
    var doc = document.documentElement, scrollPosition = rect.top - ((window.pageYOffset || doc.scrollTop)  - (doc.clientTop || 0));
    if (scrollPosition < 40) {
      tooltip.tip.className = tooltip.tip.className.replace(/ ?(_above|_below) ?/g, '') + ' _below';
    } else {
      tooltip.tip.className = tooltip.tip.className.replace(/ ?(_above|_below) ?/g, '') + ' _above';
    }
  };
  var resize_tooltips = function() {
    if (_removed) return;
    for (var i = 0; i < tooltips.length; i++) {
      if (!tooltips[i].no_arrow) resize_tooltip(tooltips[i]);
    }
  };
  var validate_field = function(elem, remove) {
    var tooltip = null, value = elem.value, no_error = true;
    remove ? remove_tooltip(elem) : false;
    if (elem.type != 'checkbox') elem.className = elem.className.replace(/ ?_has_error ?/g, '');
    if (elem.getAttribute('required') !== null) {
      if (elem.type == 'radio' || (elem.type == 'checkbox' && /any/.test(elem.className))) {
        var elems = form_to_submit.elements[elem.name];
        if (!(elems instanceof NodeList || elems instanceof HTMLCollection) || elems.length <= 1) {
          no_error = elem.checked;
        }
        else {
          no_error = false;
          for (var i = 0; i < elems.length; i++) {
            if (elems[i].checked) no_error = true;
          }
        }
        if (!no_error) {
          tooltip = create_tooltip(elem, "Please select an option.");
        }
      } else if (elem.type =='checkbox') {
        var elems = form_to_submit.elements[elem.name], found = false, err = [];
        no_error = true;
        for (var i = 0; i < elems.length; i++) {
          if (elems[i].getAttribute('required') === null) continue;
          if (!found && elems[i] !== elem) return true;
          found = true;
          elems[i].className = elems[i].className.replace(/ ?_has_error ?/g, '');
          if (!elems[i].checked) {
            no_error = false;
            elems[i].className = elems[i].className + ' _has_error';
            err.push("Checking %s is required".replace("%s", elems[i].value));
          }
        }
        if (!no_error) {
          tooltip = create_tooltip(elem, err.join('<br/>'));
        }
      } else if (elem.tagName == 'SELECT') {
        var selected = true;
        if (elem.multiple) {
          selected = false;
          for (var i = 0; i < elem.options.length; i++) {
            if (elem.options[i].selected) {
              selected = true;
              break;
            }
          }
        } else {
          for (var i = 0; i < elem.options.length; i++) {
            if (elem.options[i].selected && !elem.options[i].value) {
              selected = false;
            }
          }
        }
        if (!selected) {
          elem.className = elem.className + ' _has_error';
          no_error = false;
          tooltip = create_tooltip(elem, "Please select an option.");
        }
      } else if (value === undefined || value === null || value === '') {
        elem.className = elem.className + ' _has_error';
        no_error = false;
        tooltip = create_tooltip(elem, "This field is required.");
      }
    }
    if (no_error && elem.name == 'email') {
      if (!value.match(/^[\+_a-z0-9-'&=]+(\.[\+_a-z0-9-']+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/i)) {
        elem.className = elem.className + ' _has_error';
        no_error = false;
        tooltip = create_tooltip(elem, "Enter a valid email address.");
      }
    }
    if (no_error && /date_field/.test(elem.className)) {
      if (!value.match(/^\d\d\d\d-\d\d-\d\d$/)) {
        elem.className = elem.className + ' _has_error';
        no_error = false;
        tooltip = create_tooltip(elem, "Enter a valid date.");
      }
    }
    tooltip ? resize_tooltip(tooltip) : false;
    return no_error;
  };
  var needs_validate = function(el) {
        if(el.getAttribute('required') !== null){
            return true
        }
        if(el.name === 'email' && el.value !== ""){
            return true
        }
        return false
  };
  var validate_form = function(e) {
    var err = form_to_submit.querySelector('._form_error'), no_error = true;
    if (!submitted) {
      submitted = true;
      for (var i = 0, len = allInputs.length; i < len; i++) {
        var input = allInputs[i];
        if (needs_validate(input)) {
          if (input.type == 'text') {
            addEvent(input, 'blur', function() {
              this.value = this.value.trim();
              validate_field(this, true);
            });
            addEvent(input, 'input', function() {
              validate_field(this, true);
            });
          } else if (input.type == 'radio' || input.type == 'checkbox') {
            (function(el) {
              var radios = form_to_submit.elements[el.name];
              for (var i = 0; i < radios.length; i++) {
                addEvent(radios[i], 'click', function() {
                  validate_field(el, true);
                });
              }
            })(input);
          } else if (input.tagName == 'SELECT') {
            addEvent(input, 'change', function() {
              validate_field(this, true);
            });
          } else if (input.type == 'textarea'){
            addEvent(input, 'input', function() {
              validate_field(this, true);
            });
          }
        }
      }
    }
    remove_tooltips();
    for (var i = 0, len = allInputs.length; i < len; i++) {
      var elem = allInputs[i];
      if (needs_validate(elem)) {
        if (elem.tagName.toLowerCase() !== "select") {
          elem.value = elem.value.trim();
        }
        validate_field(elem) ? true : no_error = false;
      }
    }
    if (!no_error && e) {
      e.preventDefault();
    }
    resize_tooltips();
    return no_error;
  };
  addEvent(window, 'resize', resize_tooltips);
  addEvent(window, 'scroll', resize_tooltips);
  window['recaptcha_callback'] = function() {
  // Get all recaptchas in the DOM (there may be more than one form on the page).
  var recaptchas = document.getElementsByClassName("g-recaptcha");
  for (var i in recaptchas) {
    // Set the recaptcha element ID, so the recaptcha can be applied to each element.
    var recaptcha_id = "recaptcha_" + i;
    recaptchas[i].id = recaptcha_id;
    var el = document.getElementById(recaptcha_id);
    if (el != null) {
      var sitekey = el.getAttribute("data-sitekey");
      var stoken = el.getAttribute("data-stoken");
      grecaptcha.render(recaptcha_id, {"sitekey":sitekey,"stoken":stoken});
    }
  }
};  _load_script("//www.google.com/recaptcha/api.js?onload=recaptcha_callback&render=explicit");
  window._old_serialize = null;
  if (typeof serialize !== 'undefined') window._old_serialize = window.serialize;
  _load_script("//d3rxaij56vjege.cloudfront.net/form-serialize/0.3/serialize.min.js", function() {
    window._form_serialize = window.serialize;
    if (window._old_serialize) window.serialize = window._old_serialize;
  });
  var form_submit = function(e) {
    e.preventDefault();
    if (validate_form()) {
      // use this trick to get the submit button & disable it using plain javascript
      document.querySelector('#_form_4_submit').disabled = true;
            var serialized = _form_serialize(document.getElementById('_form_4_'));
      var err = form_to_submit.querySelector('._form_error');
      err ? err.parentNode.removeChild(err) : false;
      _load_script('https://quickframes.activehosted.com/proc.php?' + serialized + '&jsonp=true');
    }
    return false;
  };
  addEvent(form_to_submit, 'submit', form_submit);
})();

</script>

</div>
<h2>Why Customers Love QuickFrames</h2>
<ul class="check-list">
 	<li>Engineered, high quality frames</li>
 	<li>Zero quality returns</li>
 	<li>45,000+ installs nationwide</li>
 	<li>15-minute installation</li>
 	<li>24-hour quote response</li>
 	<li>Same and next-day shipping</li>
 	<li>Real 5-star customer reviews</li>
</ul>
&nbsp;
<h3>More 5-Star Reviews</h3>
[grw place_photo="https://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png" place_name="QuickFrames USA LLC" place_id="ChIJJ2OB6_mnK4cRmotCnS6elh4" title="QuickFrames Google Reviews" pagination="3" text_size="120" refresh_reviews=true lazy_load_img=true reduce_avatars_size=true open_link=true nofollow_link=true]
[/two_fifth_last]