CONTACT

Grow with us! See the latest career opportunities with E3

HOME BASE

  • 2040 Highland Village Road, Suite 100, Highland Village, Texas 75077
  • General question?
    info@e3es.com
  • Accounting question?
    accounting@e3es.com
  • Monday – Friday, 8 to 5, and whenever our clients need us.

WHERE WE WORK

We have three offices and employees sprinkled across the great State of Texas.

  • Highland Village
  • Houston
  • Boerne

GIVE US A CALL

We would love to talk to you. You’ll most likely hear Pat’s friendly voice when you call our main line. She knows our business like the back of her hand, so you’ll be in good hands.

972.325.1919

document.addEventListener(‘DOMContentLoaded’, () => { const map = document.getElementById(‘contact-texas-map’); if (!map) return; const tooltip = document.getElementById(‘contact-map-tooltip’); const tooltipTitle = tooltip.querySelector(‘.contact-map__tooltip__title’); const tooltipAddress = tooltip.querySelector(‘.contact-map__tooltip__address’); const tooltipPhone = tooltip.querySelector(‘.contact-map__tooltip__phone’); const tooltipDirections = tooltip.querySelector(‘.contact-map__tooltip__directions’); let hideTimeout = null; let currentActiveOfficeKey = null; const offices = { ‘highland-village’: { title: ‘Highland Village (HQ)’, address: ‘2040 Highland Village Road, Suite 100, Highland Village, TX 75077’, phone: ‘972.325.1919’, phoneRaw: ‘+19723251919’, directions: ‘Directions: Take FM 407 (Justin Rd) West to Highland Village Road, turn North.’, directionsUrl: ‘https://maps.google.com/?q=2040+Highland+Village+Road,+Suite+100,+Highland+Village,+TX+75077’, x: 669, y: 305 }, ‘houston’: { title: ‘Houston Office’, address: ‘11757 Katy Freeway, Suite 1300, Houston, TX 77079’, phone: ‘713.208.6133’, phoneRaw: ‘+17132086133’, directions: ‘Directions: Located off I-10 West (Katy Freeway) near the Kirkwood Rd exit.’, directionsUrl: ‘https://maps.google.com/?q=11757+Katy+Freeway,+Suite+1300,+Houston,+TX+77079’, x: 763, y: 522 }, ‘boerne’: { title: ‘Boerne Office’, address: ‘10004 Johns Road, Boerne, TX 78006’, phone: ‘210.428.9707’, phoneRaw: ‘+12104289707’, directions: ‘Directions: From I-10 West, exit Johns Road and head East toward Boerne.’, directionsUrl: ‘https://maps.google.com/?q=10004+Johns+Road,+Boerne,+TX+78006’, x: 562, y: 483 } }; const interactiveElements = map.querySelectorAll(‘[data-region], [data-office]’); function showTooltip(officeKey) { currentActiveOfficeKey = officeKey; const office = offices[officeKey]; if (!office) return; tooltipTitle.textContent = office.title; tooltipAddress.innerHTML = `${office.address}`; tooltipPhone.innerHTML = `${office.phone}`; tooltipDirections.innerHTML = `${office.directions}`; const mapRect = map.getBoundingClientRect(); const viewBoxWidth = 941.76; const viewBoxHeight = 907.17; const scaleX = mapRect.width / viewBoxWidth; const scaleY = mapRect.height / viewBoxHeight; const tooltipX = office.x * scaleX; const tooltipY = office.y * scaleY; tooltip.style.left = `${tooltipX}px`; tooltip.style.top = `${tooltipY}px`; tooltip.classList.add(‘contact-map__tooltip–visible’); tooltip.setAttribute(‘aria-hidden’, ‘false’); } function hideTooltip() { tooltip.classList.remove(‘contact-map__tooltip–visible’); tooltip.setAttribute(‘aria-hidden’, ‘true’); } function getOfficeForRegion(region) { if (region === ‘north’ || region === ‘panhandle’ || region === ‘west’ || region === ‘northeast’) return ‘highland-village’; if (region === ‘southeast’) return ‘houston’; if (region === ‘hill-country’ || region === ‘south’ || region === ‘central’) return ‘boerne’; return null; } interactiveElements.forEach(el => { let officeKey = el.getAttribute(‘data-office’); if (!officeKey) { const region = el.getAttribute(‘data-region’); officeKey = getOfficeForRegion(region); } if (!officeKey) return; el.addEventListener(‘mouseenter’, () => { clearTimeout(hideTimeout); highlightRegion(officeKey); showTooltip(officeKey); }); el.addEventListener(‘mouseleave’, () => { hideTimeout = setTimeout(() => { clearHighlights(); hideTooltip(); }, 250); }); el.addEventListener(‘focus’, () => { clearTimeout(hideTimeout); highlightRegion(officeKey); showTooltip(officeKey); }); el.addEventListener(‘blur’, () => { hideTimeout = setTimeout(() => { clearHighlights(); hideTooltip(); }, 250); }); el.addEventListener(‘touchstart’, (e) => { const isVisible = tooltip.classList.contains(‘contact-map__tooltip–visible’); clearHighlights(); if (isVisible) { hideTooltip(); } else { highlightRegion(officeKey); showTooltip(officeKey); } e.stopPropagation(); }); }); tooltip.addEventListener(‘mouseenter’, () => { clearTimeout(hideTimeout); if (currentActiveOfficeKey) { highlightRegion(currentActiveOfficeKey); } }); tooltip.addEventListener(‘mouseleave’, () => { clearHighlights(); hideTooltip(); }); document.addEventListener(‘touchstart’, () => { clearHighlights(); hideTooltip(); }); function highlightRegion(officeKey) { clearHighlights(); let regionSelectors = []; if (officeKey === ‘highland-village’) { regionSelectors = [‘north’, ‘panhandle’, ‘west’, ‘northeast’]; } else if (officeKey === ‘houston’) { regionSelectors = [‘southeast’]; } else if (officeKey === ‘boerne’) { regionSelectors = [‘hill-country’, ‘south’, ‘central’]; } regionSelectors.forEach(reg => { const pathEl = map.querySelector(`[data-region=”${reg}”]`); if (pathEl) { pathEl.classList.add(‘contact-map__region–active’); } }); } function clearHighlights() { map.querySelectorAll(‘.contact-map__region’).forEach(el => { el.classList.remove(‘contact-map__region–active’); }); } });

GET IN TOUCH

document.addEventListener(‘DOMContentLoaded’, () => { const form = document.getElementById(‘contactForm’); if (!form) return; const nameInput = document.getElementById(‘contact-name’); const emailInput = document.getElementById(‘contact-email’); const messageInput = document.getElementById(‘contact-message’); const nameError = document.getElementById(‘name-error’); const emailError = document.getElementById(’email-error’); const messageError = document.getElementById(‘message-error’); const formStatus = document.getElementById(‘form-status’); form.addEventListener(‘submit’, (e) => { e.preventDefault(); // Reset errors nameError.textContent = ”; emailError.textContent = ”; messageError.textContent = ”; formStatus.textContent = ”; formStatus.className = ‘contact-form__status’; let isValid = true; // Validate Name if (!nameInput.value.trim()) { nameError.textContent = ‘Name is required.’; isValid = false; } // Validate Email const emailValue = emailInput.value.trim(); if (!emailValue) { emailError.textContent = ‘Email is required.’; isValid = false; } else { const emailRegex = /^[^s@]+@[^s@]+.[^s@]+$/; if (!emailRegex.test(emailValue)) { emailError.textContent = ‘Please enter a valid email address.’; isValid = false; } } // Validate Message if (!messageInput.value.trim()) { messageError.textContent = ‘Message is required.’; isValid = false; } if (isValid) { formStatus.textContent = ‘Thank you for reaching out! We will contact you shortly.’; formStatus.className = ‘contact-form__status success’; form.reset(); } else { formStatus.textContent = ‘Please correct the errors above and try again.’; formStatus.className = ‘contact-form__status error’; } }); });