Find Local Foundation Repair Contractors, Companies, and Quotes

Get Foundation Quotes From Experts

The foundation of your home is exactly that – it is the base supporting your entire house. So, when the foundation develops issues, you must repair them immediately. If you have noticed signs of foundation issues in your home and you would like to get a quick, easy quote from your local professional, enter your zip code above and tell us a little about your project.

How To Identify Foundation Issues

When the foundation under your home begins to deteriorate, you’ll notice signs around your home. Telltale indicators of foundation issues include cracks in the walls, floors, and columns. You also might see misalignment in the doors and window frames, where the door doesn’t seem to line up with the frame, making it difficult to open the door.

In addition, you might notice bowing in your basement walls, where the walls seem to bend inward, or sagging crawl space floors. There might be water damage throughout lower portions of your home, especially in your basement, as water seeps through cracks in the foundation.

Outside your home, your chimney might lean to one side, and the front porch or stoop might seem as though it sits lower than normal.

If you’re not sure if your home has foundation issues or not, you can hire a structural engineer to assess it. They can determine if there are any problems and recommend the best solutions.

Common Causes Of Foundation Damage

Foundation problems can arise from various occurrences, but a few common causes are familiar to foundation repair companies.

For example, if you live in the southern portion of the United States (Texas and surrounding states), your home likely sits atop expansive clay soil. In dry seasons, the soil contracts, but in wet seasons, the soil expands. This contraction and expansion throughout the seasons cause the foundation to rise and fall, leading to damage.

Alternatively, your home’s foundation might sit on poorly compacted fill soil. Compacting the fill soil underneath a new foundation is essential, as loose soil will eventually settle, causing issues with the foundation.

Sometimes, the problems might stem from a plumbing leak hiding beneath the slab. When this happens, water seeps into the soil underneath your home, eventually compromising the foundation’s structural integrity if it goes unchecked.

Another common problem associated with foundation damage is tree roots beneath the foundation. If you have large trees surrounding your home, it’s possible for them to sap the water from the soil under your home, leaving the earth dry and shriveled. This can cause the foundation to settle unevenly, causing cracks and damage throughout your home.

How Much Does Foundation Repair Cost?

The cost of repairing a damaged foundation fluctuates drastically based on the severity of the issue. On average, homeowners should expect to pay anywhere from $2,010 and $7,717 to have professionals repair their foundations. However, this number may fluctuate based on how extensive the damage is.

For minor repairs, homeowners might pay as little as $500. However, more extensive repairs can cost up to $10,000, especially if the repair requires hydraulic piers.

The longer it takes to complete the repair, the more expensive the total will be. Many contractors specializing in foundation repair charge about $200 per hour (national average), although this varies based on geographical location and the cost of living in your area. Foundation issues often lead to settled floors, misaligned doors, cracked interior walls, and in severe cases, collapsed ceilings and burst pipes.

In some scenarios, the foundation damage may be irreversible, so repairs are unnecessary, as they cannot fix the damage.

What Happens If You Don’t Fix Foundation Issues?

While repairing major foundation issues may seem like a daunting task, failing to address the issues accordingly can exacerbate the problem and cause ripple effects throughout your entire home. You’ll likely notice various warning signs of foundation problems, including structural damage, plumbing problems, and water damage, among other issues.

Structural Damage

If left unchecked, foundation issues can lead to extensive structural damage. Doors and windows may develop gaps and not close properly, floors might dip or round, and walls might crack. The longer the problem persists, the more issues you’ll notice throughout your home.

Eventually, ceilings, upstairs walls, wooden cross beams, and attached garages may begin to display the effects of your home’s foundation issues. In severe cases, ceilings can collapse, and cracked walls will become the norm, making your home unsafe to stay in.

Plumbing Issues

Foundation issues pose a significant threat to plumbing throughout your home. This is especially true for pier and beam foundations, where pipes can become intertwined with the foundation and weave into the house.

With slab foundations, issues can lead to damaged plumbing as the slab shifts, potentially snapping pipes throughout your home. Pinpointing this issue can be tricky, especially when the problem lies beneath your home. Generally, you’ll need professional assistance to diagnose this issue.

The problem can even plague the pipes running through your walls and beneath floors, as shifting foundations can place stress in these areas by causing structural displacement throughout your home.

Water Damage

Cracks in your foundation and crumbled concrete throughout the slab make your home exceptionally vulnerable to water damage. Moisture can seep into your home via these cracks and crumbled spots, potentially causing significant water damage throughout your home.

If you have a basement, water can seep through the basement walls, causing damage to flooring, furniture, walls, and other structures throughout the space. The longer the moisture remains a problem, the higher the likelihood of mold and mildew growth in your basement. Certain types of mold and mildew can cause cold-like symptoms, including nasal stuffiness, coughing, asthma, eye and throat irritation, and similar respiratory complications.

Source

The 10 Best Home Repair Services in Hillsboro, OR 2023

The national average cost to repair broken pipes ranges from $120 to $170. Prices can vary depending on the type of damage, whether the pipe is easily accessible, the materials needed and where the pipe is located. For example, an exposed pipe under the sink will likely cost much less than a pipeline in your yard that requires digging. 

Your overall cost will also depend on the hourly rate of the contractor. Most plumbers charge between $60 and $65 per hour for standard pipe repair, and up to $95 per hour for complex plumbing work. 

Contact the best pipe repairers in your area to find out how much it will cost to fix your pipe(s). 

To learn more about pricing factors, read “How much does pipe repair cost?”

Source

Wooden Fences


Make sure you are not offline.’, password: ‘Incorrect name/password combination’, tryAgain: ‘Try again’ }, NavigationAreaParams: { ShowBackToHomeOnInnerPages: true, NavbarSize: 4, NavbarLiveHomePage: ‘https://www.taterbuiltfences.com/’, BlockContainerSelector: ‘.dmBody’, NavbarSelector: ‘#dmNav:has(a)’, SubNavbarSelector: ‘#subnav_main’ }, hasCustomCode: true, planID: ‘753’, customTemplateId: ‘null’, siteTemplateId: ‘null’, productId: ‘DM_DIRECT’, disableTracking: false, pageType: ‘FROM_SCRATCH’, isRuntimeServer: true, isInEditor: false, }; window.Parameters.LayoutID = {}; window.Parameters.LayoutID[window._currentDevice] = 6; window.Parameters.LayoutVariationID = {}; window.Parameters.LayoutVariationID[window._currentDevice] = 5; ]]]]]]>]]]]>]]> > 0 } ]]]]]]>]]]]>]]> { setTimeout(() => { storedRuntimeCssLink.disabled = false; storedGlobalCssLink.disabled = false storedPageCssLink.disabled = false; cssLinks = null; }, 0); }); } } function loadCSS(link) { try { var urlParams = new URLSearchParams(window.location.search); var noCSS = !!urlParams.get(“nocss”); var cssTimeout = urlParams.get(“cssTimeout”) || 0; if (noCSS) { return; } if (link.href.includes(“d-css-runtime”)) { cssLinks.runtime = link; checkCss(); } else if (link.id === “siteGlobalCss”) { cssLinks.global = link; checkCss(); } else if(link.id.includes(“CssLink”)) { cssLinks.page = link; checkCss(); } else { requestIdleCallback(function () { window.setTimeout(function () { loadCssLink(link); }, parseInt(cssTimeout, 10)); }); } } catch (e) { throw e } } window.loadCSS = window.loadCSS || loadCSS; })(); ]]]]]]>]]]]>]]> { setTimeout(() => { storedRuntimeCssLink.disabled = false; storedGlobalCssLink.disabled = false storedPageCssLink.disabled = false; cssLinks = null; }, 0); }); } } function loadCSS(link) { try { var urlParams = new URLSearchParams(window.location.search); var noCSS = !!urlParams.get(“nocss”); var cssTimeout = urlParams.get(“cssTimeout”) || 0; if (noCSS) { return; } if (link.href.includes(“d-css-runtime”)) { cssLinks.runtime = link; checkCss(); } else if (link.id === “siteGlobalCss”) { cssLinks.global = link; checkCss(); } else if(link.id.includes(“CssLink”)) { cssLinks.page = link; checkCss(); } else { requestIdleCallback(function () { window.setTimeout(function () { loadCssLink(link); }, parseInt(cssTimeout, 10)); }); } } catch (e) { throw e } } window.loadCSS = window.loadCSS || loadCSS; })(); ]]]]]]>]]]]>]]> Wooden Fences | Wood Fence Repair | Lewistown, PA 1){ $(element).find(‘.multipleYextError’).addClass(‘hasError’); return; }else if(data.config.type === ‘none’){ $(element).find(‘.editorOnlyInfo’).addClass(‘inEditor’); } } } /* refresh yext script */ window.refreshYext = function(){ loadYext(true); } //function for Omniture tracking window._trackConvWidgetClickEvent = function(eventName) { if(typeof(HAF)===”object”){ HAF.OmTracking.onCMClick(eventName) } return; } /* draw yext map */ var drawMap = function(yextData){ var zoom = data.config.mapZoom; var yData = yextData.entities[0].attributes; var addressQuery = yData[‘address1’] + ” ” + yData[‘address2’] + ” ” + yData[‘city’] + ” ” + yData[‘state’] + ” ” + yData[‘zip’]; dmAPI.drawMap({addressQuery: addressQuery, zoom: zoom, container: $(element).find(‘.yextMap’)}); } var formatPhoneBeforeRender = function(num,cb) { if (!cb) cb = function(){return} if(data.config.formatPhone){ var s2 = (“”+num).replace(/D/g, ”); var m = s2.match(/^(d{3})(d{3})(d{4})$/); var formatted = (!m) ? null : “(” + m[1] + “) ” + m[2] + “-” + m[3]; cb(formatted); return formatted; } else { cb(num); return num; } } var displayTextdList = function(type,yextData,firstOnly) { var list = “”; if(yextData.entities[0].attributes[type]) { var yextAtt = yextData.entities[0].attributes[type] } else { var yextAtt = false } if(yextAtt && Array.isArray(yextAtt)) { for (var i=0; i< yextAtt.length; i++) { if (yextAtt[i] === 'Android Pay') { list += '

  • Google Pay’; } else { list += ‘
  • ‘ + yextAtt[i] + ”; } } $(element).find(‘#’ + type + ‘List’).html(list); } else if (yextAtt) { var yextAtt = yextAtt.split(“, “); for (var i=0; i< yextAtt.length; i++) { list += '
  • ‘ + yextAtt[i] + ”; } $(element).find(‘#’ + type + ‘List’).html(list); } else if (data.inEditor) { $(element).html(emptyListPlaceHolder); } else { $(element).css(‘display’,’none’); } } var displaySpecialties = function(yextData){ var list = “”; if(yextData.entities[0].attributes[“specialties”]) { var yextAtt = yextData.entities[0].attributes[“specialties”] } else if (yextData.entities[0].attributes[“specialities”]) { var yextAtt = yextData.entities[0].attributes[“specialities”] } else { var yextAtt = false } if(yextAtt && Array.isArray(yextAtt)) { for (var i=0; i< yextAtt.length; i++) { list += '
  • ‘ + yextAtt[i] + ”; } $(element).find(‘#specialtiesList’).html(list); } else if (yextAtt) { var yextAtt = yextAtt.split(“, “); for (var i=0; i< yextAtt.length; i++) { list += '
  • ‘ + yextAtt[i] + ”; } $(element).find(‘#specialtiesList’).html(list); } else if (data.inEditor) { $(element).html(emptyListPlaceHolder); } else { $(element).css(‘display’,’none’); } } var displayHours = function(type,yextData) { var list = “”; if(yextData.entities[0].attributes[type]) { var yextAtt = yextData.entities[0].attributes[type] } else { var yextAtt = false } if(yextAtt && Array.isArray(yextAtt)) { for(var i=0;i < yextAtt.length;i++) { var indexEndDay = yextAtt[i].lastIndexOf('day ') + 3; var leftSide = yextAtt[i].substr(0,indexEndDay).replace("Monday","Mon").replace("Tuesday","Tue").replace("Wednesday","Wed").replace("Thursday","Thu").replace("Friday","Fri").replace("Saturday","Sat").replace("Sunday","Sun"); var rightSide = yextAtt[i].substr(indexEndDay + 1) list += '' + leftSide + '' + rightSide + ''; } $(element).find('#hoursSmall').html(list); } else if(yextAtt) { var yextAtt = yextAtt.split(", "); for(var i=0;i < yextAtt.length;i++) { if((/s/.test(yextAtt[i])) === false){ yextAtt[i] = yextAtt[i] + ' - ' + yextAtt[i+1] yextAtt.splice(i+1, 1) } if (yextAtt[i].includes('day') === false ){ var leftSide = ' '; var rightSide = yextAtt[i] }else { var indexEndDay = yextAtt[i].lastIndexOf('day ') + 3; var leftSide = yextAtt[i].substr(0,indexEndDay).replace("Monday","Mon").replace("Tuesday","Tue").replace("Wednesday","Wed").replace("Thursday","Thu").replace("Friday","Fri").replace("Saturday","Sat").replace("Sunday","Sun"); var rightSide = yextAtt[i].substr(indexEndDay + 1) } list += '' + leftSide + '' + rightSide + ''; } $(element).find('#hoursSmall').html(list); } else if (data.inEditor) { $(element).html(emptyListPlaceHolder); } else { $(element).css('display','none'); } } var displayOpenHours = function(type, yextData){ if(yextData.entities[0].attributes['timezone']){ var zone = yextData.entities[0].attributes['timezone'] } else { var zone = false } if(zone){ var time = new Date().toLocaleString("en-US", {timeZone: zone}); var today = new Date(time ); var thirtyMins = 30 * 60 * 1000 var days = ['sunday','monday','tuesday','wednesday','thursday','friday','saturday']; var daysShort = ['Sun','Mon','Tues','Wed','Thurs','Fri','Sat']; var day = days[today.getDay()]; var hour = today.getHours(); var min = today.getMinutes(); var dd = ("0" + today.getDate()).slice(-2); var mm = ("0" + (today.getMonth() + 1)).slice(-2) var yyyy = today.getFullYear(); var todayDate = yyyy + '-' + mm + '-' + dd var mm = mm - 1 const tomorrow = new Date(today) tomorrow.setDate(tomorrow.getDate() + 1) var mmTmw = ("0" + (tomorrow.getMonth() + 1)).slice(-2) var ddTmw = ("0" + tomorrow.getDate()).slice(-2) var yyyyTmw = tomorrow.getFullYear(); var nextDay = days[tomorrow.getDay()] var tommorrow = yyyyTmw + '-' + mmTmw + '-' + ddTmw var mmTmw = mmTmw - 1 } if(yextData.entities[0].attributes[type + '-' + day]) { var yextAtt = yextData.entities[0].attributes[type + '-' + day] if (yextAtt === "Closed"){ yextAtt = false } } else { var yextAtt = false } //check if day is closed if(yextData.entities[0].attributes[type + '.' + day + '.isClosed'] === true) { var closed = true } //collects business holiday hours if(yextData.entities[0].attributes[type + '.holidayHours']){ var holidayHours = yextData.entities[0].attributes[type + '.holidayHours'] } else{ var holidayHours = false } //gets next days start time if(yextData.entities[0].attributes[type + '.' + nextDay + '.isClosed'] === true){ var tomorrowOpen = false } else { var tomorrowOpen = true var tmrwStart = yextData.entities[0].attributes[type + '-' + nextDay].split(" - ")[0] } //checks if holiday hours change if(holidayHours) { for(var i=0;i < holidayHours.length;i++){ if(holidayHours[i].date === todayDate && holidayHours[i].openIntervals){ yextAtt = holidayHours[i].hoursFormatted } } } //split hours if(yextAtt && yextAtt.includes(",")){ yextAtt = yextAtt.split(", ") for(var i=0;i < yextAtt.length;i++){ var end = yextAtt[i].split(' - ')[1] var start = yextAtt[i].split(' - ')[0] if (i+1 != yextAtt.length){ var nextStart = yextAtt[i + 1].split(' - ')[0] } if(start.includes("pm") && start.split(/s+|:/)[0] != "12"){ var startDate = new Date(yyyy, mm, dd, parseInt(start.split(/s+|:/)[0]) + 12, parseInt(start.split(/s+|:/)[1])) } else { var startDate = new Date(yyyy, mm, dd, parseInt(start.split(/s+|:/)[0]), parseInt(start.split(/s+|:/)[1])) } if(nextStart.includes("pm") && nextStart.split(/s+|:/)[0] != "12"){ var nextStartDate = new Date(yyyy, mm, dd, parseInt(nextStart.split(/s+|:/)[0]) + 12, parseInt(nextStart.split(/s+|:/)[1])) } else { var nextStartDate = new Date(yyyy, mm, dd, parseInt(nextStart), parseInt(nextStart.split(/s+|:/)[1])) } if(end.includes("pm") && end.split(/s+|:/)[0] != "12"){ var endDate = new Date(yyyy, mm, dd, parseInt(end.split(/s+|:/)[0]) + 12, parseInt(end.split(/s+|:/)[1])) } else { var endDate = new Date(yyyy, mm, dd, parseInt(end.split(/s+|:/)[0]), parseInt(end.split(/s+|:/)[1])) } if (end.includes("am") && (endDate < startDate)){ endDate = new Date(yyyyTmw, mmTmw, ddTmw, parseInt(end.split(/s+|:/)[0]), parseInt(end.split(/s+|:/)[1])) } if(today startDate && today endDate && (i+1 != yextAtt.length) && today endDate && i+1 === yextAtt.length){ var closed = true } } } if(yextAtt || closed) { if(typeof yextAtt === "string"){ var start = yextAtt.split(" - ")[0] var end = yextAtt.split(" - ")[1] if(start.includes("pm") && start.split(/s+|:/)[0] != "12"){ var startDate = new Date(yyyy, mm, dd, parseInt(start.split(/s+|:/)[0]) + 12, parseInt(start.split(/s+|:/)[1])) } else { var startDate = new Date(yyyy, mm, dd, parseInt(start.split(/s+|:/)[0]), parseInt(start.split(/s+|:/)[1])) } if(end.includes("pm") && end.split(/s+|:/)[0] != "12"){ var endDate = new Date(yyyy, mm, dd, parseInt(end.split(/s+|:/)[0]) + 12, parseInt(end.split(/s+|:/)[1])) } else if (end.includes("am") && end.split(/s+|:/)[0] === "12") { var endDate = new Date(yyyy, mm, dd, parseInt(end.split(/s+|:/)[0]) - 12, parseInt(end.split(/s+|:/)[1])) } else { var endDate = new Date(yyyy, mm, dd, parseInt(end.split(/s+|:/)[0]), parseInt(end.split(/s+|:/)[1])) } if (end.includes("am") && (endDate endDate){ var closed = true //opened 24 hours } else if(start === '12:00 am' && end === '11:59 pm'){ var status = "Open " var cssClass = "allDayStatus" var busHours = ' 24 hours ' //opened } else if(today < startDate){ var closed = true //check if closing soon } else if (endDate - today < thirtyMins && endDate - today < 0 === false ){ var status = "Closing Soon " var cssClass = "soonStatus" var busHours = ' • ' + end } else { var status = "Open " var cssClass = "openedStatus" var busHours = '• Closes ' + end } } if(closed){ // closed & opening today if((today < startDate)){ var status = "Closed " var cssClass = "closedStatus" var busHours = ' Opens ' + start //closed & open tomorrow } else if(closed && tomorrowOpen === true){ var status = "Closed " var cssClass = "closedStatus" var busHours = ' • Opens ' + tmrwStart //closed and not open tomorrow } else if(closed && tomorrowOpen != true){ var offset = days.indexOf(day) + 1 for( var i=0; i < days.length; i++) { var dayIndex = (i + offset) % days.length; if(yextData.entities[0].attributes[type + '.' + days[dayIndex] + '.openIntervals']){ tmrwStart = daysShort[dayIndex] + " " + yextData.entities[0].attributes[type + '-' + days[dayIndex]].split(" - ")[0] break } } var status = "Closed " var cssClass = "closedStatus" var busHours = ' • Opens ' + tmrwStart } } } // checks if holiday if(holidayHours) { for(var i=0;i < holidayHours.length;i++){ if(holidayHours[i].date === todayDate && holidayHours[i].isClosed === true && tomorrowOpen === false){ var offset = days.indexOf(day) + 1 for( var i=0; i < days.length; i++) { var dayIndex = (i + offset) % days.length; if(yextData.entities[0].attributes[type + '.' + days[dayIndex] + '.openIntervals']){ tmrwStart = daysShort[dayIndex] + " " + yextData.entities[0].attributes[type + '-' + days[dayIndex]].split(" - ")[0] break } } var status = "Closed " var cssClass = "closedStatus" var busHours = ' • Opens ' + tmrwStart } else if(holidayHours[i].date === todayDate && holidayHours[i].isClosed === true && tomorrowOpen === true){ var status = "Closed " var cssClass = "closedStatus" var busHours = ' • Opens ' + tmrwStart } } } if(cssClass){ var hoursWidgets = document.getElementsByClassName('status') for( var i=0; i < hoursWidgets.length; i++) { hoursWidgets[i].classList.add(cssClass); } } if(status){ var hoursWidgets = document.getElementsByClassName('status') for( var i=0; i < hoursWidgets.length; i++) { hoursWidgets[i].innerText = status; } } if(cssClass === 'allDayStatus'){ var hoursWidgets = $(element).find('.openHours') for( var i=0; i 1){ var hoursWidgets = document.getElementsByClassName('openHours') for( var i=0; i < hoursWidgets.length; i++) { var openHoursLength = hoursWidgets[i].childNodes.length var oldHours = hoursWidgets[i] oldHours.removeChild(oldHours.childNodes[openHoursLength - 1]) } } var hoursWidgets = document.getElementsByClassName('openHours') for( var i=0; i < hoursWidgets.length; i++) { hoursWidgets[i].append(busHours) } } var displayHolidayHoursList = function(type,yextData) { var list = ""; if(yextData.entities[0].attributes["hours.holidayHours"]) { var yextAtt = yextData.entities[0].attributes["hours.holidayHours"] } else if(yextData.entities[0].attributes["holidayHours"]) { var yextAtt = yextData.entities[0].attributes["holidayHours"] } else { var yextAtt = false } if(yextAtt) { for (var i=0; i -1) { // write to dom list += '
  • ‘ + yextAtt[i].dateFormatted + ‘ – ‘ + yextAtt[i].hoursFormatted + ”; } } $(element).find(‘#’ + type + ‘List’).html(list); } else if (data.inEditor) { // if in editor display place holder $(element).html(emptyListPlaceHolder); } else { // if empty, hide element on runtime $(element).css(‘display’,’none’); } } var displayServiceArea = function(type,yextData,firstOnly) { var list = “”; if(yextData.entities[0].attributes[type]) { var yextAtt = yextData.entities[0].attributes[type] } else { var yextAtt = false } if (firstOnly) { list = ‘
  • ‘ + yextAtt[0] + ”; $(element).find(‘#’ + type + ‘List’).html(list); } else if (yextAtt && Array.isArray(yextAtt)) { for (var i=0; i< yextAtt.length; i++) { list += '
  • ‘ + yextAtt[i] + ”; } $(element).find(‘#’ + type + ‘List’).html(list); } else if (yextAtt) { var yextAtt = yextData.entities[0].attributes[type + “.places”] for (var i=0; i< yextAtt.length; i++) { list += '
  • ‘ + yextAtt[i] + ”; } $(element).find(‘#’ + type + ‘List’).html(list); } else if (data.inEditor) { $(element).html(emptyListPlaceHolder); } else { $(element).css(‘display’,’none’); } } var displayPhoneList = function(type,yextData) { var list = “”; var locData = yextData.entities[0].attributes; if(locData.phone) { list += ‘
  • Main: ‘ + formatPhoneBeforeRender(locData.phone) + ”; } if(locData.localPhone) { list += ‘
  • Local: ‘ + formatPhoneBeforeRender(locData.localPhone) + ”; } if(locData.alternatePhone) { list += ‘
  • Alternate: ‘ + formatPhoneBeforeRender(locData.alternatePhone) + ”; } if(locData.tollFreePhone) { list += ‘
  • Toll Free: ‘ + formatPhoneBeforeRender(locData.tollFreePhone) + ”; } if(locData.mobilePhone) { list += ‘
  • Mobile: ‘ + formatPhoneBeforeRender(locData.mobilePhone) + ”; } if(locData.faxPhone) { list += ‘
  • Fax: ‘ + formatPhoneBeforeRender(locData.faxPhone) + ”; } if(locData.ttyPhone) { list += ‘
  • TTY: ‘ + formatPhoneBeforeRender(locData.ttyPhone) + ”; } if(list.length > 0) { $(element).find(‘#’ + type + ‘List’).html(list); } else if (data.inEditor) { $(element).html(emptyListPlaceHolder); } else { $(element).css(‘display’,’none’); } emitYextPhoneRenderEvent(formatPhoneBeforeRender(locData.phone)); } var getNumDaysBetween = function(d1, d2) { var diff = d1.getTime() – d2.getTime(); return diff / (1000 * 60 * 60 * 24); }; var orderPaymentsList = function(listData) { if(listData.indexOf(‘Discover’) >= 0) { listData.splice(listData.indexOf(“Discover”), 1); listData.unshift(‘Discover’); } if(listData.indexOf(‘American Express’) >= 0) { listData.splice(listData.indexOf(“American Express”), 1); listData.unshift(‘American Express’); } if(listData.indexOf(‘MasterCard’) >= 0) { listData.splice(listData.indexOf(“MasterCard”), 1); listData.unshift(‘MasterCard’); } if(listData.indexOf(‘Visa’) >= 0) { listData.splice(listData.indexOf(“Visa”), 1); listData.unshift(‘Visa’); } return listData } var displayImageList = function(type,yextData) { var list = “”; var listData = orderPaymentsList(_yextData.entities[0].attributes[type]); for (var i=0; i< listData.length; i++) { list += '' + listData[i] + '‘ } if(list.length > 0) { $(element).find(‘#paymentOptionsImages’).html(list) } else if (data.inEditor) { $(element).html(emptyListPlaceHolder); } else { $(element).css(‘display’,’none’); } } var displaySocialIcons = function(type,yextData) { var list = “”; if(yextData.entities[0].attributes.facebookPageUrl) { list += ‘ ‘ } if(yextData.entities[0].attributes.twitterHandle) { list += ‘ ‘ } if(yextData.entities[0].attributes.instagramHandle) { list += ‘ ‘ } if(list.length > 0) { $(element).find(‘#socialIcons’).html(list); } else if (data.inEditor) { $(element).html(emptyListPlaceHolder); } else { $(element).css(‘display’,’none’); } } var getImageUrl = function(name,style) { var cdnPath = ‘https://cdn.websites.hibu.com/-resellers-preview/_cc_icons/’; if(!style) { style = ‘_d.svg’ } if (name === “ZELLE”){ name = “Zelle” } var imageUrl=”; switch (name) { case ‘Visa’: imageUrl = cdnPath + name.replace(/[W_]+/g,”).toLowerCase() + style; break; case ‘MasterCard’: imageUrl = cdnPath + name.replace(/[W_]+/g,”).toLowerCase() + style; break; case ‘Discover’: imageUrl = cdnPath + name.replace(/[W_]+/g,”).toLowerCase() + style; break; case ‘American Express’: imageUrl = cdnPath + name.replace(/[W_]+/g,”).toLowerCase() + style; break; case ‘Android Pay’: imageUrl = cdnPath + name.replace(/[W_]+/g,”).toLowerCase() + style; break; case ‘Apple Pay’: imageUrl = cdnPath + name.replace(/[W_]+/g,”).toLowerCase() + style; break; case ‘Bitcoin’: imageUrl = cdnPath + name.replace(/[W_]+/g,”).toLowerCase() + style; break; case ‘Cash’: imageUrl = cdnPath + name.replace(/[W_]+/g,”).toLowerCase() + style; break; case ‘Check’: imageUrl = cdnPath + name.replace(/[W_]+/g,”).toLowerCase() + style; break; case ‘Diners Club’: imageUrl = cdnPath + name.replace(/[W_]+/g,”).toLowerCase() + style; break; case ‘Discover’: imageUrl = cdnPath + name.replace(/[W_]+/g,”).toLowerCase() + style; break; case ‘Financing’: imageUrl = cdnPath + name.replace(/[W_]+/g,”).toLowerCase() + style; break; case ‘Invoice’: imageUrl = cdnPath + name.replace(/[W_]+/g,”).toLowerCase() + style; break; case ‘PayPal’: imageUrl = cdnPath + name.replace(/[W_]+/g,”).toLowerCase() + style; break; case ‘Samsung Pay’: imageUrl = cdnPath + name.replace(/[W_]+/g,”).toLowerCase() + style; break; case “Traveler’s Check”: imageUrl = cdnPath + name.replace(/[W_]+/g,”).toLowerCase() + style; break; case “Zelle”: imageUrl = cdnPath + name.replace(/[W_]+/g,”).toLowerCase() + style; break } return imageUrl } function emitYextPhoneRenderEvent(phone) { var yextPhoneRenderEvent = new CustomEvent(‘YextPhoneChangeEvent’, { detail: phone, bubbles: true, cancelable: true }); document.dispatchEvent(yextPhoneRenderEvent); } var initYextElements = function(yextData,widgetType){ if (widgetType === ‘address’ && data.config.drawMap) { drawMap(yextData); } else if (widgetType === ‘paymentOptions’ && data.config.showPaymentsAs === ‘paymentIcons’) { displayImageList(widgetType,yextData); } else if (widgetType === ‘phone’ && data.config.phoneShowAs === ‘list’) { displayPhoneList(widgetType,yextData); // check for any list type } else if(widgetType === ‘phone’ && data.config.phoneShowAs === ‘button’) { var phFormatted = formatPhoneBeforeRender(yextData.entities[0].attributes[data.config.phoneType],function(phone) { $(element).find(“.dmButtonLink”).html(” + phone + ”); emitYextPhoneRenderEvent(phone); }); } else if(widgetType === ‘phone’ && data.config.phoneShowAs === ‘text’) { var phFormatted = formatPhoneBeforeRender(yextData.entities[0].attributes[data.config.phoneType],function(phone) { $(element).find(‘.yextPhoneText’).html(” + phone + ”); emitYextPhoneRenderEvent(phone); }); } else if (widgetType === ‘services’ || widgetType === ‘googleAttributesFormatted’ || widgetType === ‘languages’ || widgetType === ‘paymentOptions’ || widgetType === ‘keywords’ || widgetType === ‘products’ || widgetType === ‘associations’ || widgetType === ‘brands’) { setTimeout(function() { displayTextdList(widgetType,yextData) },1); } else if(widgetType === ‘specialties’) { setTimeout(function() { displaySpecialties(yextData) },1) }else if (widgetType ===’serviceArea’) { setTimeout(function() { displayServiceArea(widgetType,yextData,data.config.showServiceAreaFirst) },1) } else if (widgetType ===’hours’ && data.config.hoursShowAs === ‘list’ && data.config.isList == false) { setTimeout(function() { displayHours(widgetType,yextData) },1) } else if (widgetType ===’hours’ && data.config.hoursShowAs === ‘openHours’) { setTimeout(function() { displayOpenHours(widgetType,yextData) },1) } else if (widgetType === ‘social’) { displaySocialIcons(widgetType,yextData); } else if (widgetType === ‘holidayHours’) { setTimeout(function() { displayHolidayHoursList(widgetType,yextData) },1); } else if (widgetType === ‘hours’) { //hide hours list if toggle enabled if(data.config.hideHoursList === true) { $(element).find(‘.yextHours’).css(‘display’,’none’); } } else if (widgetType === ‘description’ || widgetType === ‘yearEstablished’ || widgetType === ’email’ || widgetType === ‘name’) { // check hideIfEmpty(widgetType,yextData) } //remove error if script not entered correctly. $(element).find(‘.wrongScriptError’).removeClass(‘hasError’); } function hideIfEmpty(type,yextData) { if(!yextData.entities[0].attributes[type]) { if(data.inEditor) { $(element).html(emptyListPlaceHolder); } else { $(element).css(‘display’,’none’); } } } // TODO CHANGE TO EVENT CALL BACK var startIntervalToWaitAndLoadWidgets = function(widgetType) { //start interval for this specific widget var intervalCheckYextLoaded = setInterval(function(){ if (window._yextData) { clearInterval(intervalCheckYextLoaded); initYextElements(window._yextData,widgetType); } },50) } /* initialization */ if(data.inEditor){ window.refreshYext && window.refreshYext(); $(document).ready(function(){ if(!window.yextInitialized){ $(element).find(‘.missingYextWidget’).addClass(‘show’); } else { $(element).find(‘.missingYextWidget’).removeClass(‘show’); } }); } else { dmAPI.runOnReady(‘yext’ , function(){ loadYext(); }); // Before navigating with Ajax, we set the yext initialized to be false so it will be initialized again after the ajax navigation dmAPI.runBeforeAjaxNavigation(‘yext’, function(){ window.yextInitialized = false; }); } }; ]]]]]]>]]]]>]]>
  • ‘+getSvg(‘facebook’)+’ ‘); case ‘Tumblr’: href = ‘http://tumblr.com/share/link?url=’+link+’&name=’+encodedTitle; return ( ‘ ‘+getSvg(‘tumblr’)+’ ‘); case ‘LinkedIn’: href = ‘http://www.linkedin.com/shareArticle?mini=true&url=’+link+’&title=’+encodedTitle; statsEventName = ‘CM_SHARE_LINKEDIN’; return ( ‘ ‘+getSvg(‘linkedIn’)+’ ‘); case ‘Twitter’: href = ‘https://twitter.com/intent/tweet?text=’+link; statsEventName = ‘CM_SHARE_TWITTER’; return ( ‘ ‘+getSvg(‘twitter’)+’ ‘); case ‘Reddit’: href = ‘http://www.reddit.com/submit?url=’+link+’&title=’+encodedTitle+’&text=’+encodedTitle; return ( ‘ ‘+getSvg(‘reddit’)+’ ‘); /* case ‘GooglePlus’: href = ‘https://plus.google.com/share?url=’+link; statsEventName = ‘CM_SHARE_GOOGLE_PLUS’; return ( ‘ ‘+getSvg(‘gPlus’)+’ ‘); */ case ‘Pinterest’: href = ‘http://pinterest.com/pin/create/button/?url=’+link+’&description=’+encodedTitle; return ( ‘ ‘+getSvg(‘pinterest’)+’ ‘); default: return ”; } } // // Helpers // // check display type function isMobile() { return data.device === ‘mobile’; } function getItemAction(item, elem) { var statsEventName=”; switch(item.Action) { case ‘Link’: if(!item.Link) item.Link = { target: ‘target=”_blank’, href: ‘http://www.google.com’ } // default link var target = item.Link.target? item.Link.target : ”; var statsEventName = ‘CM_LINK_CLICK’; return ”+elem+”; case ‘Call’: statsEventName = ‘CM_CLICK_TO_CALL’; return ”+elem+”; case ‘Sms’: statsEventName = ‘CM_CLICK_TO_SMS’; return ”+elem+”; case ‘Email’: statsEventName = ‘CM_CLICK_TO_EMAIL’; return ”+elem+”; case ‘Map’: statsEventName = ‘CM_DIRECTION’; return ”+elem+”; case ‘Mess’: statsEventName = ‘CM_FB_MESSAGE’; return ”+elem+”; case ‘Share’: return ”+elem+”; default: return ”; } } // returns new default icon only if icon is default (identified by path data in default svg MUST CHANGE FOR DIFFERENT DEFAUTL) function getItemIcon(item) { // icon is default if(item.CustomIcon) { return ”+item.Icon+”; } else { switch(item.Action) { case ‘Link’: return getSvg(‘link’); case ‘Call’: return getSvg(‘phone’); case ‘Sms’: return getSvg(‘sms’); case ‘Email’: return getSvg(‘envelope’); case ‘Mess’: return getSvg(‘messenger’); case ‘Map’: return getSvg(‘map’); case ‘Share’: return getSvg(‘share’); } } } window._trackConvWidgetClickEvent = function(eventName) { if(typeof(HAF)===”object”){ HAF.OmTracking.onCMClick(eventName) } return; } function dudaicon(icon){ return ”+icon+” } function getSvg(name) { const type = name? name : data.config.DeskMain; switch(type) { case ‘vEllipsis’: return ‘More’; case ‘map’: return ” case ‘hEllipsis’: return ‘More’; case ‘plus’: return ‘More’; case ‘bars’: return ‘More’; case ‘envelope’: return ‘Email’; case ‘shareenvelope’: return ‘Email’; case ‘phone’: return ‘Phone’; case ‘close’: return ‘Close’; case ‘facebook’: return ‘Facebook’; case ‘messenger’: return ‘Facebook Messenger’ case ‘tumblr’: return ‘Tumblr’; case ‘linkedIn’: return ‘LinkedIn’; case ‘twitter’: return ‘Twitter’; case ‘reddit’: return ‘Reddit’; case ‘pinterest’: return ‘Pinterest’; case ‘share’: return ‘Share’; case ‘sms’: return ‘SMS Text’; case ‘link’: return ”; default: return ”; } } }; ]]]]]]>]]]]>]]>


    Source


    {“use strict”;var e,t,n={5763:(e,t,n)=>{n.d(t,{P_:()=>f,Mt:()=>p,C5:()=>s,DL:()=>m,OP:()=>_,lF:()=>E,Yu:()=>y,Dg:()=>g,CX:()=>c,GE:()=>b,sU:()=>j});var r=n(8632),i=n(9567);const o={beacon:r.ce.beacon,errorBeacon:r.ce.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){if(!e)throw new Error(“All info objects require an agent identifier!”);if(!a[e])throw new Error(“Info for “.concat(e,” was never set”));return a[e]}function c(e,t){if(!e)throw new Error(“All info objects require an agent identifier!”);a[e]=(0,i.D)(t,o),(0,r.Qy)(e,a[e],”info”)}var d=n(7056);const u=()=>{const e={blockSelector:”[data-nr-block]”,maskInputOptions:{password:!0}};return{allow_bfcache:!0,privacy:{cookies_enabled:!0},ajax:{deny_list:void 0,enabled:!0,harvestTimeSeconds:10},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},session:{domain:void 0,expiresMs:d.oD,inactiveMs:d.Hb},ssl:void 0,obfuscate:void 0,jserrors:{enabled:!0,harvestTimeSeconds:10},metrics:{enabled:!0},page_action:{enabled:!0,harvestTimeSeconds:30},page_view_event:{enabled:!0},page_view_timing:{enabled:!0,harvestTimeSeconds:30,long_task:!1},session_trace:{enabled:!0,harvestTimeSeconds:10},harvest:{tooManyRequestsDelay:60},session_replay:{enabled:!1,harvestTimeSeconds:60,sampleRate:.1,errorSampleRate:.1,maskTextSelector:”*”,maskAllInputs:!0,get blockClass(){return”nr-block”},get ignoreClass(){return”nr-ignore”},get maskTextClass(){return”nr-mask”},get blockSelector(){return e.blockSelector},set blockSelector(t){e.blockSelector+=”,”.concat(t)},get maskInputOptions(){return e.maskInputOptions},set maskInputOptions(t){e.maskInputOptions={…t,password:!0}}},spa:{enabled:!0,harvestTimeSeconds:10}}},l={};function f(e){if(!e)throw new Error(“All configuration objects require an agent identifier!”);if(!l[e])throw new Error(“Configuration for “.concat(e,” was never set”));return l[e]}function g(e,t){if(!e)throw new Error(“All configuration objects require an agent identifier!”);l[e]=(0,i.D)(t,u()),(0,r.Qy)(e,l[e],”config”)}function p(e,t){if(!e)throw new Error(“All configuration objects require an agent identifier!”);var n=f(e);if(n){for(var r=t.split(“.”),i=0;i{n.d(t,{D:()=>i});var r=n(50);function i(e,t){try{if(!e||”object”!=typeof e)return(0,r.Z)(“Setting a Configurable requires an object as input”);if(!t||”object”!=typeof t)return(0,r.Z)(“Setting a Configurable requires a model to set its initial properties”);const n=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(n).length?e:n;for(let a in o)if(void 0!==e[a])try{“object”==typeof e[a]&&”object”==typeof t[a]?n[a]=i(e[a],t[a]):n[a]=e[a]}catch(e){(0,r.Z)(“An error occurred while setting a property of a Configurable”,e)}return n}catch(e){(0,r.Z)(“An error occured while setting a Configurable”,e)}}},6818:(e,t,n)=>{n.d(t,{Re:()=>i,gF:()=>o,q4:()=>r});const r=”1.236.0″,i=”PROD”,o=”CDN”},385:(e,t,n)=>{n.d(t,{FN:()=>a,IF:()=>d,Nk:()=>l,Tt:()=>s,_A:()=>o,il:()=>r,pL:()=>c,v6:()=>i,w1:()=>u});const r=”undefined”!=typeof window&&!!window.document,i=”undefined”!=typeof WorkerGlobalScope&&(“undefined”!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||”undefined”!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),o=r?window:”undefined”!=typeof WorkerGlobalScope&&(“undefined”!=typeof self&&self instanceof WorkerGlobalScope&&self||”undefined”!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),a=””+o?.location,s=/iPad|iPhone|iPod/.test(navigator.userAgent),c=s&&”undefined”==typeof SharedWorker,d=(()=>{const e=navigator.userAgent.match(/Firefox[/s](d+.d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),u=Boolean(r&&window.document.documentMode),l=!!navigator.sendBeacon},1117:(e,t,n)=>{n.d(t,{w:()=>o});var r=n(50);const i={agentIdentifier:””,ee:void 0};class o{constructor(e){try{if(“object”!=typeof e)return(0,r.Z)(“shared context requires an object as input”);this.sharedContext={},Object.assign(this.sharedContext,i),Object.entries(e).forEach((e=>{let[t,n]=e;Object.keys(i).includes(t)&&(this.sharedContext[t]=n)}))}catch(e){(0,r.Z)(“An error occured while setting SharedContext”,e)}}}},8e3:(e,t,n)=>{n.d(t,{L:()=>u,R:()=>c});var r=n(2177),i=n(1284),o=n(4322),a=n(3325);const s={};function c(e,t){const n={staged:!1,priority:a.p[t]||0};d(e),s[e].get(t)||s[e].set(t,n)}function d(e){e&&(s[e]||(s[e]=new Map))}function u(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:””,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:”feature”;if(d(e),!e||!s[e].get(t))return a(t);s[e].get(t).staged=!0;const n=[…s[e]];function a(t){const n=e?r.ee.get(e):r.ee,a=o.X.handlers;if(n.backlog&&a){var s=n.backlog[t],c=a[t];if(c){for(var d=0;s&&d{let[t,n]=e;return n.staged}))&&(n.sort(((e,t)=>e[1].priority-t[1].priority)),n.forEach((e=>{let[t]=e;a(t)})))}function l(e,t){var n=e[1];(0,i.D)(t[n],(function(t,n){var r=e[0];if(n[0]===r){var i=n[1],o=e[3],a=e[2];i.apply(o,a)}}))}},2177:(e,t,n)=>{n.d(t,{ee:()=>d});var r=n(8632),i=n(2210),o=n(1284),a=n(5763),s=”nr@context”;let c=(0,r.fP)();var d;function u(){}function l(){return new u}function f(){d.aborted=!0,d.backlog={}}c.ee?d=c.ee:(d=function e(t,n){var r={},c={},g={},p=!1;try{p=16===n.length&&(0,a.OP)(n).isolatedBacklog}catch(e){}var h={on:b,addEventListener:b,removeEventListener:y,emit:m,get:A,listeners:w,context:v,buffer:x,abort:f,aborted:!1,isBuffering:D,debugId:n,backlog:p?{}:t&&”object”==typeof t.backlog?t.backlog:{}};return h;function v(e){return e&&e instanceof u?e:e?(0,i.X)(e,s,l):l()}function m(e,n,r,i,o){if(!1!==o&&(o=!0),!d.aborted||i){t&&o&&t.emit(e,n,r);for(var a=v(r),s=w(e),u=s.length,l=0;lr,p:()=>i});var r=n(2177).ee.get(“handle”);function i(e,t,n,i,o){o?(o.buffer([e],i),o.emit(e,t,n)):(r.buffer([e],i),r.emit(e,t,n))}},4322:(e,t,n)=>{n.d(t,{X:()=>o});var r=n(5546);o.on=a;var i=o.handlers={};function o(e,t,n,o){a(o||r.E,i,e,t,n)}function a(e,t,n,i,o){o||(o=”feature”),e||(e=r.E);var a=t[o]=t[o]||{};(a[n]=a[n]||[]).push([e,i])}},3239:(e,t,n)=>{n.d(t,{bP:()=>s,iz:()=>c,m$:()=>a});var r=n(385);let i=!1,o=!1;try{const e={get passive(){return i=!0,!1},get signal(){return o=!0,!1}};r._A.addEventListener(“test”,null,e),r._A.removeEventListener(“test”,null,e)}catch(e){}function a(e,t){return i||o?{capture:!!e,passive:i,signal:t}:!!e}function s(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3?arguments[3]:void 0;window.addEventListener(e,t,a(n,r))}function c(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3?arguments[3]:void 0;document.addEventListener(e,t,a(n,r))}},4402:(e,t,n)=>{n.d(t,{Rl:()=>a,ky:()=>s});var r=n(385);const i=”xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx”;function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=r._A?.crypto||r._A?.msCrypto;let t,n=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(31))),i.split(“”).map((e=>”x”===e?o(t,++n).toString(16):”y”===e?(3&o()|8).toString(16):e)).join(“”)}function s(e){const t=r._A?.crypto||r._A?.msCrypto;let n,i=0;t&&t.getRandomValues&&(n=t.getRandomValues(new Uint8Array(31)));const a=[];for(var s=0;s{n.d(t,{Bq:()=>r,Hb:()=>o,oD:()=>i});const r=”NRBA”,i=144e5,o=18e5},7894:(e,t,n)=>{function r(){return Math.round(performance.now())}n.d(t,{z:()=>r})},50:(e,t,n)=>{function r(e,t){“function”==typeof console.warn&&(console.warn(“New Relic: “.concat(e)),t&&console.warn(t))}n.d(t,{Z:()=>r})},2587:(e,t,n)=>{n.d(t,{N:()=>c,T:()=>d});var r=n(2177),i=n(5546),o=n(8e3),a=n(3325);const s={stn:[a.D.sessionTrace],err:[a.D.jserrors,a.D.metrics],ins:[a.D.pageAction],spa:[a.D.spa],sr:[a.D.sessionReplay,a.D.sessionTrace]};function c(e,t){const n=r.ee.get(t);e&&”object”==typeof e&&(Object.entries(e).forEach((e=>{let[t,r]=e;void 0===d[t]&&(s[t]?s[t].forEach((e=>{r?(0,i.p)(“feat-“+t,[],void 0,e,n):(0,i.p)(“block-“+t,[],void 0,e,n),(0,i.p)(“rumresp-“+t,[Boolean(r)],void 0,e,n)})):r&&(0,i.p)(“feat-“+t,[],void 0,void 0,n),d[t]=Boolean(r))})),Object.keys(s).forEach((e=>{void 0===d[e]&&(s[e]?.forEach((t=>(0,i.p)(“rumresp-“+e,[!1],void 0,t,n))),d[e]=!1)})),(0,o.L)(t,a.D.pageViewEvent))}const d={}},2210:(e,t,n)=>{n.d(t,{X:()=>i});var r=Object.prototype.hasOwnProperty;function i(e,t,n){if(r.call(e,t))return e[t];var i=n();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},1284:(e,t,n)=>{n.d(t,{D:()=>r});const r=(e,t)=>Object.entries(e||{}).map((e=>{let[n,r]=e;return t(n,r)}))},4351:(e,t,n)=>{n.d(t,{P:()=>o});var r=n(2177);const i=()=>{const e=new WeakSet;return(t,n)=>{if(“object”==typeof n&&null!==n){if(e.has(n))return;e.add(n)}return n}};function o(e){try{return JSON.stringify(e,i())}catch(e){try{r.ee.emit(“internal-error”,[e])}catch(e){}}}},3960:(e,t,n)=>{n.d(t,{K:()=>a,b:()=>o});var r=n(3239);function i(){return”undefined”==typeof document||”complete”===document.readyState}function o(e,t){if(i())return e();(0,r.bP)(“load”,e,t)}function a(e){if(i())return e();(0,r.iz)(“DOMContentLoaded”,e)}},8632:(e,t,n)=>{n.d(t,{EZ:()=>d,Qy:()=>c,ce:()=>o,fP:()=>a,gG:()=>u,mF:()=>s});var r=n(7894),i=n(385);const o={beacon:”bam.nr-data.net”,errorBeacon:”bam.nr-data.net”};function a(){return i._A.NREUM||(i._A.NREUM={}),void 0===i._A.newrelic&&(i._A.newrelic=i._A.NREUM),i._A.NREUM}function s(){let e=a();return e.o||(e.o={ST:i._A.setTimeout,SI:i._A.setImmediate,CT:i._A.clearTimeout,XHR:i._A.XMLHttpRequest,REQ:i._A.Request,EV:i._A.Event,PR:i._A.Promise,MO:i._A.MutationObserver,FETCH:i._A.fetch}),e}function c(e,t,n){let i=a();const o=i.initializedAgents||{},s=o[e]||{};return Object.keys(s).length||(s.initializedAt={ms:(0,r.z)(),date:new Date}),i.initializedAgents={…o,[e]:{…s,[n]:t}},i}function d(e,t){a()[e]=t}function u(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,…t}}(),function(){let e=a();const t=e.init||{};e.init={…t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={…t}}(),a()}},7956:(e,t,n)=>{n.d(t,{N:()=>i});var r=n(3239);function i(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0;return void(0,r.iz)(“visibilitychange”,(function(){if(t)return void(“hidden”==document.visibilityState&&e());e(document.visibilityState)}),n,i)}},3081:(e,t,n)=>{n.d(t,{gF:()=>o,mY:()=>i,t9:()=>r,vz:()=>s,xS:()=>a});const r=n(3325).D.metrics,i=”sm”,o=”cm”,a=”storeSupportabilityMetrics”,s=”storeEventMetrics”},7633:(e,t,n)=>{n.d(t,{Dz:()=>i,OJ:()=>a,qw:()=>o,t9:()=>r});const r=n(3325).D.pageViewEvent,i=”firstbyte”,o=”domcontent”,a=”windowload”},9251:(e,t,n)=>{n.d(t,{t:()=>r});const r=n(3325).D.pageViewTiming},5938:(e,t,n)=>{n.d(t,{W:()=>o});var r=n(5763),i=n(2177);class o{constructor(e,t,n){this.agentIdentifier=e,this.aggregator=t,this.ee=i.ee.get(e,(0,r.OP)(this.agentIdentifier).isolatedBacklog),this.featureName=n,this.blocked=!1}}},9144:(e,t,n)=>{n.d(t,{j:()=>v});var r=n(3325),i=n(5763),o=n(5546),a=n(2177),s=n(7894),c=n(8e3),d=n(3960),u=n(385),l=n(50),f=n(3081),g=n(8632);function p(){const e=(0,g.gG)();[“setErrorHandler”,”finished”,”addToTrace”,”inlineHit”,”addRelease”,”addPageAction”,”setCurrentRouteName”,”setPageViewName”,”setCustomAttribute”,”interaction”,”noticeError”,”setUserId”].forEach((t=>{e[t]=function(){for(var n=arguments.length,r=new Array(n),i=0;i1?n-1:0),i=1;i{e.exposed&&e.api[t]&&o.push(e.api[t](…r))})),o.length>1?o:o[0]}(t,…r)}}))}var h=n(2587);function v(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},v=arguments.length>2?arguments[2]:void 0,m=arguments.length>3?arguments[3]:void 0,{init:b,info:y,loader_config:w,runtime:A={loaderType:v},exposed:x=!0}=t;const D=(0,g.gG)();y||(b=D.init,y=D.info,w=D.loader_config),(0,i.Dg)(e,b||{}),(0,i.GE)(e,w||{}),(0,i.sU)(e,A),y.jsAttributes??={},u.v6&&(y.jsAttributes.isWorker=!0),(0,i.CX)(e,y),p();const _=function(e,t){t||(0,c.R)(e,”api”);const g={};var p=a.ee.get(e),h=p.get(“tracer”),v=”api-“,m=v+”ixn-“;function b(t,n,r,o){const a=(0,i.C5)(e);return null===n?delete a.jsAttributes[t]:(0,i.CX)(e,{…a,jsAttributes:{…a.jsAttributes,[t]:n}}),A(v,r,!0,o||null===n?”session”:void 0)(t,n)}function y(){}[“setErrorHandler”,”finished”,”addToTrace”,”inlineHit”,”addRelease”].forEach((e=>g[e]=A(v,e,!0,”api”))),g.addPageAction=A(v,”addPageAction”,!0,r.D.pageAction),g.setCurrentRouteName=A(v,”routeName”,!0,r.D.spa),g.setPageViewName=function(t,n){if(“string”==typeof t)return”/”!==t.charAt(0)&&(t=”/”+t),(0,i.OP)(e).customTransaction=(n||”http://custom.transaction”)+t,A(v,”setPageViewName”,!0)()},g.setCustomAttribute=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(“string”==typeof e){if([“string”,”number”].includes(typeof t)||null===t)return b(e,t,”setCustomAttribute”,n);(0,l.Z)(“Failed to execute setCustomAttribute.nNon-null value must be a string or number type, but a type of was provided.”))}else(0,l.Z)(“Failed to execute setCustomAttribute.nName must be a string type, but a type of was provided.”))},g.setUserId=function(e){if(“string”==typeof e||null===e)return b(“enduser.id”,e,”setUserId”,!0);(0,l.Z)(“Failed to execute setUserId.nNon-null value must be a string type, but a type of was provided.”))},g.interaction=function(){return(new y).get()};var w=y.prototype={createTracer:function(e,t){var n={},i=this,a=”function”==typeof t;return(0,o.p)(m+”tracer”,[(0,s.z)(),e,n],i,r.D.spa,p),function(){if(h.emit((a?””:”no-“)+”fn-start”,[(0,s.z)(),i,a],n),a)try{return t.apply(this,arguments)}catch(e){throw h.emit(“fn-err”,[arguments,this,”string”==typeof e?new Error(e):e],n),e}finally{h.emit(“fn-end”,[(0,s.z)()],n)}}}};function A(e,t,n,i){return function(){return(0,o.p)(f.xS,[“API/”+t+”/called”],void 0,r.D.metrics,p),i&&(0,o.p)(e+t,[(0,s.z)(),…arguments],n?null:this,i,p),n?void 0:this}}function x(){n.e(439).then(n.bind(n,7438)).then((t=>{let{setAPI:n}=t;n(e),(0,c.L)(e,”api”)})).catch((()=>(0,l.Z)(“Downloading runtime APIs failed…”)))}return[“actionText”,”setName”,”setAttribute”,”save”,”ignore”,”onEnd”,”getContext”,”end”,”get”].forEach((e=>{w[e]=A(m,e,void 0,r.D.spa)})),g.noticeError=function(e,t){“string”==typeof e&&(e=new Error(e)),(0,o.p)(f.xS,[“API/noticeError/called”],void 0,r.D.metrics,p),(0,o.p)(“err”,[e,(0,s.z)(),!1,t],void 0,r.D.jserrors,p)},u.il?(0,d.b)((()=>x()),!0):x(),g}(e,m);return(0,g.Qy)(e,_,”api”),(0,g.Qy)(e,x,”exposed”),(0,g.EZ)(“activatedFeatures”,h.T),_}},3325:(e,t,n)=>{n.d(t,{D:()=>r,p:()=>i});const r={ajax:”ajax”,jserrors:”jserrors”,metrics:”metrics”,pageAction:”page_action”,pageViewEvent:”page_view_event”,pageViewTiming:”page_view_timing”,sessionReplay:”session_replay”,sessionTrace:”session_trace”,spa:”spa”},i={[r.pageViewEvent]:1,[r.pageViewTiming]:2,[r.metrics]:3,[r.jserrors]:4,[r.ajax]:5,[r.sessionTrace]:6,[r.pageAction]:7,[r.spa]:8,[r.sessionReplay]:9}}},r={};function i(e){var t=r[e];if(void 0!==t)return t.exports;var o=r[e]={exports:{}};return n[e](o,o.exports,i),o.exports}i.m=n,i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,n)=>(i.f[n](e,t),t)),[])),i.u=e=>(({78:”page_action-aggregate”,147:”metrics-aggregate”,242:”session-manager”,317:”jserrors-aggregate”,348:”page_view_timing-aggregate”,412:”lazy-feature-loader”,439:”async-api”,538:”recorder”,590:”session_replay-aggregate”,675:”compressor”,733:”session_trace-aggregate”,786:”page_view_event-aggregate”,873:”spa-aggregate”,898:”ajax-aggregate”}[e]||e)+”.”+{78:”ac76d497″,147:”3dc53903″,148:”1a20d5fe”,242:”2a64278a”,317:”49e41428″,348:”bd6de33a”,412:”2f55ce66″,439:”30bd804e”,538:”1b18459f”,590:”cf0efb30″,675:”ae9f91a8″,733:”83105561″,786:”06482edd”,860:”03a8b7a5″,873:”e6b09d52″,898:”998ef92b”}[e]+”-1.236.0.min.js”),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t=”NRBA:”,i.l=(n,r,o,a)=>{if(e[n])e[n].push(r);else{var s,c;if(void 0!==o)for(var d=document.getElementsByTagName(“script”),u=0;u{s.onerror=s.onload=null,clearTimeout(g);var i=e[n];if(delete e[n],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(r))),t)return t(r)},g=setTimeout(f.bind(null,void 0,{type:”timeout”,target:s}),12e4);s.onerror=f.bind(null,s.onerror),s.onload=f.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{“undefined”!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:”Module”}),Object.defineProperty(e,”__esModule”,{value:!0})},i.j=6,i.p=”https://js-agent.newrelic.com/”,(()=>{var e={6:0,352:0};i.f.j=(t,n)=>{var r=i.o(e,t)?e[t]:void 0;if(0!==r)if(r)n.push(r[2]);else{var o=new Promise(((n,i)=>r=e[t]=[n,i]));n.push(r[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(n=>{if(i.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var o=n&&(“load”===n.type?”missing”:n.type),a=n&&n.target&&n.target.src;s.message=”Loading chunk “+t+” failed.n(“+o+”: “+a+”)”,s.name=”ChunkLoadError”,s.type=o,s.request=a,r[1](s)}}),”chunk-“+t,t)}};var t=(t,n)=>{var r,o,[a,s,c]=n,d=0;if(a.some((t=>0!==e[t]))){for(r in s)i.o(s,r)&&(i.m[r]=s[r]);if(c)c(i)}for(t&&t(n);d{i.r(o);var e=i(3325),t=i(5763);const n=Object.values(e.D);function r(e){const r={};return n.forEach((n=>{r[n]=function(e,n){return!1!==(0,t.Mt)(n,””.concat(e,”.enabled”))}(n,e)})),r}var a=i(9144);var s=i(5546),c=i(385),d=i(8e3),u=i(5938),l=i(3960),f=i(50);class g extends u.W{constructor(e,t,n){let r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];super(e,t,n),this.auto=r,this.abortHandler,this.featAggregate,this.onAggregateImported,r&&(0,d.R)(e,n)}importAggregator(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this.featAggregate||!this.auto)return;const n=c.il&&!0===(0,t.Mt)(this.agentIdentifier,”privacy.cookies_enabled”);let r;this.onAggregateImported=new Promise((e=>{r=e}));const o=async()=>{let t;try{if(n){const{setupAgentSession:e}=await Promise.all([i.e(860),i.e(242)]).then(i.bind(i,3228));t=e(this.agentIdentifier)}}catch(e){(0,f.Z)(“A problem occurred when starting up session manager. This page will not start or extend any session.”,e)}try{if(!this.shouldImportAgg(this.featureName,t))return void(0,d.L)(this.agentIdentifier,this.featureName);const{lazyFeatureLoader:n}=await i.e(412).then(i.bind(i,8582)),{Aggregate:o}=await n(this.featureName,”aggregate”);this.featAggregate=new o(this.agentIdentifier,this.aggregator,e),r(!0)}catch(e){(0,f.Z)(“Downloading and initializing “.concat(this.featureName,” failed…”),e),this.abortHandler?.(),r(!1)}};c.il?(0,l.b)((()=>o()),!0):o()}shouldImportAgg(n,r){return n!==e.D.sessionReplay||!1!==(0,t.Mt)(this.agentIdentifier,”session_trace.enabled”)&&(!!r?.isNew||!!r?.state.sessionReplay)}}var p=i(7633),h=i(7894);class v extends g{static featureName=p.t9;constructor(n,r){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(super(n,r,p.t9,i),(“undefined”==typeof PerformanceNavigationTiming||c.Tt)&&”undefined”!=typeof PerformanceTiming){const r=(0,t.OP)(n);r[p.Dz]=Math.max(Date.now()-r.offset,0),(0,l.K)((()=>r[p.qw]=Math.max((0,h.z)()-r[p.Dz],0))),(0,l.b)((()=>{const t=(0,h.z)();r[p.OJ]=Math.max(t-r[p.Dz],0),(0,s.p)(“timing”,[“load”,t],void 0,e.D.pageViewTiming,this.ee)}))}this.importAggregator()}}var m=i(1117),b=i(1284);class y extends m.w{constructor(e){super(e),this.aggregatedData={}}store(e,t,n,r,i){var o=this.getBucket(e,t,n,i);return o.metrics=function(e,t){t||(t={count:0});return t.count+=1,(0,b.D)(e,(function(e,n){t[e]=w(n,t[e])})),t}(r,o.metrics),o}merge(e,t,n,r,i){var o=this.getBucket(e,t,r,i);if(o.metrics){var a=o.metrics;a.count+=n.count,(0,b.D)(n,(function(e,t){if(“count”!==e){var r=a[e],i=n[e];i&&!i.c?a[e]=w(i.t,r):a[e]=function(e,t){if(!t)return e;t.c||(t=A(t.t));return t.min=Math.min(e.min,t.min),t.max=Math.max(e.max,t.max),t.t+=e.t,t.sos+=e.sos,t.c+=e.c,t}(i,a[e])}}))}else o.metrics=n}storeMetric(e,t,n,r){var i=this.getBucket(e,t,n);return i.stats=w(r,i.stats),i}getBucket(e,t,n,r){this.aggregatedData[e]||(this.aggregatedData[e]={});var i=this.aggregatedData[e][t];return i||(i=this.aggregatedData[e][t]={params:n||{}},r&&(i.custom=r)),i}get(e,t){return t?this.aggregatedData[e]&&this.aggregatedData[e][t]:this.aggregatedData[e]}take(e){for(var t={},n=””,r=!1,i=0;it.max&&(t.max=e),e2&&void 0!==arguments[2])||arguments[2];super(e,n,I.t,r),c.il&&((0,t.OP)(e).initHidden=Boolean(“hidden”===document.visibilityState),(0,k.N)((()=>(0,s.p)(“docHidden”,[(0,h.z)()],void 0,I.t,this.ee)),!0),(0,T.bP)(“pagehide”,(()=>(0,s.p)(“winPagehide”,[(0,h.z)()],void 0,I.t,this.ee))),this.importAggregator())}}var P=i(3081);class S extends g{static featureName=P.t9;constructor(e,t){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];super(e,t,P.t9,n),this.importAggregator()}}new class{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,j.ky)(16);c._A?(this.agentIdentifier=t,this.sharedAggregator=new y({agentIdentifier:this.agentIdentifier}),this.features={},this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(v),Object.assign(this,(0,a.j)(this.agentIdentifier,e,e.loaderType||”agent”)),this.start()):(0,f.Z)(“Failed to initial the agent. Could not determine the runtime environment.”)}get config(){return{info:(0,t.C5)(this.agentIdentifier),init:(0,t.P_)(this.agentIdentifier),loader_config:(0,t.DL)(this.agentIdentifier),runtime:(0,t.OP)(this.agentIdentifier)}}start(){const t=”features”;try{const n=r(this.agentIdentifier),i=[…this.desiredFeatures];i.sort(((t,n)=>e.p[t.featureName]-e.p[n.featureName])),i.forEach((t=>{if(n[t.featureName]||t.featureName===e.D.pageViewEvent){const r=function(t){switch(t){case e.D.ajax:return[e.D.jserrors];case e.D.sessionTrace:return[e.D.ajax,e.D.pageViewEvent];case e.D.sessionReplay:return[e.D.sessionTrace];case e.D.pageViewTiming:return[e.D.pageViewEvent];default:return[]}}(t.featureName);r.every((e=>n[e]))||(0,f.Z)(“”.concat(t.featureName,” is enabled but one or more dependent features has been disabled (“).concat((0,E.P)(r),”). This may cause unintended consequences or missing data…”)),this.features[t.featureName]=new t(this.agentIdentifier,this.sharedAggregator)}})),(0,_.Qy)(this.agentIdentifier,this.features,t)}catch(e){(0,f.Z)(“Failed to initialize all enabled instrument classes (agent aborted) -“,e);for(const e in this.features)this.features[e].abortHandler?.();const n=(0,_.fP)();return delete n.initializedAgents[this.agentIdentifier]?.api,delete n.initializedAgents[this.agentIdentifier]?.[t],delete this.sharedAggregator,n.ee?.abort(),delete n.ee?.get(this.agentIdentifier),!1}}}({features:[v,N,S],loaderType:”lite”})})(),window.NRBA=o})();]]> Source

    Updated Standard Contracts Keep You Ahead of the Cure

    Construction contracts provide a foundation for project success or, if done wrong, project failure. Updating your contracts is essential. You should evaluate and update your contracts based on the latest technology trends, legal developments, and the insurance market. ConsensusDocs updates its documents more frequently than the American Institute of Architects (AIA). The ConsensusDocs Contract Content Drafting Council “Council” solicits and reviews industry feedback to keep the ConsensusDocs ahead of the curve in identifying and establishing industry best practices. Later this month, ConsensusDocs expects to publish comprehensive revisions to its most used prime and subcontract agreements that address design-bid-build.

    In this revision cycle, the Council maintained the careful risk allocation balance that already exists in ConsensusDocs standard construction contract documents and introduced important revisions that make these best contract documents in the industry even better. Some highlights include:

    ConsensusDocs 200 Owner and Constructor Agreement with General Conditions

    • Revised the limited waiver of consequential damages (at subsection 10.3.5) to clarify that insurance coverage is exempt from the consequential damages waiver only if the insurance coverage pays for the loss. Waiver of consequential damages is one of the most important and negotiated provisions in construction contracts. The previous standard language excluded insurance coverage from the waiver of consequential damages. This principle remains as insurance provides a fair way to allocate risk among the parties.
    • Eliminated the requirement (at subsection 10.3.1) to cover “existing structures” under property insurance. Obtaining property insurance through a Builder’s Risk policy that covers damage to existing structures may not always be feasible.
    • Expanded and added more detailed procedures to submit, review, and respond when a portion of project design is delegated from the design professional to the contractor. The expanded provisions establish how an upstream party must respond to produced delegated design and procedures for better overall design coordination responsibility. The new provisions make clear that overall coordination resides with the owner through its design professional for the overall project. This provides structure and organization in the delegated design responsibility process that historically has been missing in standard construction contract documents. The new language requires a Constructor to “conform its delegated design to the performance and design criteria provided” at section 3.15. More on Delegated Design, click here.
    • Revised and provided additional clarity surrounding interim directives. ConsensusDocs uses this term to include directed change orders that are ordered because of a lack of agreement on cost and schedule impacts, as well as field instructions. AIA uses the term “construction change directives (CCDs)” for a similar concept. The revisions clarify that an owner’s issuing an interim directive does not necessarily increase price or time.
    • Added itemized cost-of-the-work items incurred due to emergency and legal, mediation, and arbitration fees and costs not associated with a dispute between the parties. These cost-of-the-work items potentially apply in this lump sum contract for changed work at subsection 8.3.3. 
    • Clarified an owner’s options when responding to submittals. Rather than review and approve, an owner may take other appropriate action, such as returning a submittal to revise and resubmit. This was implied as a rejection in previous editions of ConsensusDocs. The updated language is explicit and now clearer.
    • Added an explicit time requirement for a Constructor to provide a submittal schedule within 30 days of commencing work. Clarified that an owner may take “other appropriate action” when reviewing submittals at subsection 3.14.2.
    • Clarified that all reimbursable attorneys’ fees must be reasonable.
    • Added statute of repose in addition to statute of limitations as reasons for barring commencing arbitration (at subsection 12.5.11). Some state courts have ruled that the statute of limitations and statute of repose don’t apply to arbitration actions. Therefore, it is prudent to put this in standard contracts.
    • Clarified the “no waiver of performance” language so that not necessarily enforcing or insisting upon a contractual right does not waive such contractual right by implication.
    • Revised language clarified that the cost to uncover work is not compensable if the owner instructed that the work be left uncovered.
    • Added a required contingent assignment provision for suppliers as well as subcontractors in subcontractor and supplier agreements.
    • Created a duty to defend as part of a Constructor’s indemnity obligation to hold the owner harmless for hazardous materials brought to the site by the Constructor or someone the Constructor is liable (at subsection 3.13.7.3).
    • Simplified the language requiring the owner to obtain the right for Constructor and Subcontractors to use design documents (at subsection 2.3.1). Revised language also is more appropriate when an owner has in-house licensed design professionals produce the design documents.
    • At subsection 3.8.2 clarified that Constructor’s warranty obligations to correct material and equipment defects for owner-provided materials equipment are limited to installation defects.
    • At subsection 3.11.5 clarified that Constructor’s obligations to remedy damage or loss do not apply to damage covered by an owner’s property insurance or is attributable to the owner or the owner’s separate contractors.
    • Eliminated disclaimer language related to the reliability of estimates for cost and schedule items.
    • Defined the term “Overhead” throughout the ConsensusDocs agreement.

    ConsensusDocs 750 Standard Subcontract Agreement

    • Added a definition for “Prime Contract” in the standard subcontract.
    • Additional conforming changes were made to the ConsensusDocs 750 standard subcontract to flow these requirements consistently.

    ConsensusDocs is a Coalition of over 40 different design and construction associations. Each group has an equal voice at the drafting table to write best-practice standard construction contracts that are fair to all stakeholders in the A/E/C industry. Each national association group participating in ConsensusDocs is invited to provide two volunteers for the comprehensive drafting process, making up the Council.

    Comments or questions about this article can be directed to Brian Perlberg, Executive Director and Senior Counsel, ConsensusDocs Coalition at [email protected]. Publication of updates to the most used ConsensusDocs standard contract documents is anticipated for later this month at www.ConsensusDocs.org. All existing users will get to choose whether to use the new standard forms or the previous edition for the next 13 months.

    Additional Resource

    ConsensusDocs Guidebook which you can get here.

    Source

    Handyman Services

    Free Service.  Fast Response.  No Obligations.

    Need help finding a home remodeling contractor in your local area?  We have a directory list of general residential contractors and residential designers for home projects. You can find someone to design, remodel, or replace just about anything in your house. It does not matter if it is a small renovation project, an item that needs to be fixed or repaired, an installation job, or build a major addition to your property.

    It is not easy to find companies ready to meet your needs. Complete a request form with information about your project. We will help match requests with a local home improvement company and you will receive a price estimate without cost. Our service is time efficient and you have no obligation to hire the designer, installer, builder or remodeler that contacts you.

    Our site is like using a custom made local directory and we intend to replace traditional search methods. You submit your request outlining your project details.  Businesses that are interested in completing your project request contact you and provide you a quote. The companies that have the time and interest in providing you their install, repair, or replacement service contact you.

    We suggest that you review the license and insurance of the professional you select. We also suggest that you call references or review the ratings and reviews from previous customers.

    It is your responsibility to select the professional you are interested in working with. Any contract or agreement you have with a contractor is between you and the company you select and does not involved our program. By using our website, you agree that should you have a dispute with any company, you must address such dispute directly with the business that performed the work. You also agree to release C. David Venture Management, LLC (and our officers, directors, affiliates, directors, affiliates, employees, and agents) from any damages or claims arising out of or in any way connected with such disputes.

    Source

    Find Local Foundation Repair Contractors, Companies, and Quotes

    Get Foundation Quotes From Experts

    The foundation of your home is exactly that – it is the base supporting your entire house. So, when the foundation develops issues, you must repair them immediately. If you have noticed signs of foundation issues in your home and you would like to get a quick, easy quote from your local professional, enter your zip code above and tell us a little about your project.

    How To Identify Foundation Issues

    When the foundation under your home begins to deteriorate, you’ll notice signs around your home. Telltale indicators of foundation issues include cracks in the walls, floors, and columns. You also might see misalignment in the doors and window frames, where the door doesn’t seem to line up with the frame, making it difficult to open the door.

    In addition, you might notice bowing in your basement walls, where the walls seem to bend inward, or sagging crawl space floors. There might be water damage throughout lower portions of your home, especially in your basement, as water seeps through cracks in the foundation.

    Outside your home, your chimney might lean to one side, and the front porch or stoop might seem as though it sits lower than normal.

    If you’re not sure if your home has foundation issues or not, you can hire a structural engineer to assess it. They can determine if there are any problems and recommend the best solutions.

    Common Causes Of Foundation Damage

    Foundation problems can arise from various occurrences, but a few common causes are familiar to foundation repair companies.

    For example, if you live in the southern portion of the United States (Texas and surrounding states), your home likely sits atop expansive clay soil. In dry seasons, the soil contracts, but in wet seasons, the soil expands. This contraction and expansion throughout the seasons cause the foundation to rise and fall, leading to damage.

    Alternatively, your home’s foundation might sit on poorly compacted fill soil. Compacting the fill soil underneath a new foundation is essential, as loose soil will eventually settle, causing issues with the foundation.

    Sometimes, the problems might stem from a plumbing leak hiding beneath the slab. When this happens, water seeps into the soil underneath your home, eventually compromising the foundation’s structural integrity if it goes unchecked.

    Another common problem associated with foundation damage is tree roots beneath the foundation. If you have large trees surrounding your home, it’s possible for them to sap the water from the soil under your home, leaving the earth dry and shriveled. This can cause the foundation to settle unevenly, causing cracks and damage throughout your home.

    How Much Does Foundation Repair Cost?

    The cost of repairing a damaged foundation fluctuates drastically based on the severity of the issue. On average, homeowners should expect to pay anywhere from $2,010 and $7,717 to have professionals repair their foundations. However, this number may fluctuate based on how extensive the damage is.

    For minor repairs, homeowners might pay as little as $500. However, more extensive repairs can cost up to $10,000, especially if the repair requires hydraulic piers.

    The longer it takes to complete the repair, the more expensive the total will be. Many contractors specializing in foundation repair charge about $200 per hour (national average), although this varies based on geographical location and the cost of living in your area. Foundation issues often lead to settled floors, misaligned doors, cracked interior walls, and in severe cases, collapsed ceilings and burst pipes.

    In some scenarios, the foundation damage may be irreversible, so repairs are unnecessary, as they cannot fix the damage.

    What Happens If You Don’t Fix Foundation Issues?

    While repairing major foundation issues may seem like a daunting task, failing to address the issues accordingly can exacerbate the problem and cause ripple effects throughout your entire home. You’ll likely notice various warning signs of foundation problems, including structural damage, plumbing problems, and water damage, among other issues.

    Structural Damage

    If left unchecked, foundation issues can lead to extensive structural damage. Doors and windows may develop gaps and not close properly, floors might dip or round, and walls might crack. The longer the problem persists, the more issues you’ll notice throughout your home.

    Eventually, ceilings, upstairs walls, wooden cross beams, and attached garages may begin to display the effects of your home’s foundation issues. In severe cases, ceilings can collapse, and cracked walls will become the norm, making your home unsafe to stay in.

    Plumbing Issues

    Foundation issues pose a significant threat to plumbing throughout your home. This is especially true for pier and beam foundations, where pipes can become intertwined with the foundation and weave into the house.

    With slab foundations, issues can lead to damaged plumbing as the slab shifts, potentially snapping pipes throughout your home. Pinpointing this issue can be tricky, especially when the problem lies beneath your home. Generally, you’ll need professional assistance to diagnose this issue.

    The problem can even plague the pipes running through your walls and beneath floors, as shifting foundations can place stress in these areas by causing structural displacement throughout your home.

    Water Damage

    Cracks in your foundation and crumbled concrete throughout the slab make your home exceptionally vulnerable to water damage. Moisture can seep into your home via these cracks and crumbled spots, potentially causing significant water damage throughout your home.

    If you have a basement, water can seep through the basement walls, causing damage to flooring, furniture, walls, and other structures throughout the space. The longer the moisture remains a problem, the higher the likelihood of mold and mildew growth in your basement. Certain types of mold and mildew can cause cold-like symptoms, including nasal stuffiness, coughing, asthma, eye and throat irritation, and similar respiratory complications.

    Source