Schedule an Appointment

Welcome to our online scheduler. We are eager to meet you! Please find a convenient time and date that works best for you from the available options below. If you are a new patient to our practice, once your appointment is scheduled, we will email you a few short forms to complete. If you prefer to schedule your appointment over the phone, no problem--please call us at (626) 963-7200.
top rated audiologist
4.9 out of 5 stars on Google
See Our Reviews
Location & Parking

About Our Practice

Our practice is located in Glendora at 130 West Route 66 in Suite 210. We are open Monday-Friday between the hours of 9:00 AM–5:00 PM.

We are located on the second floor of the Huntington East Medical Building which is right next door to the Glendora Oaks Behavioral Health Hospital. Hill Imaging Center is on the ground floor of the building we are located inside.
130 West Route 66, Suite 210
Glendora, CA 91740

Ready to Improve Your Quality of Life?

Book an appointment with Dr. Kevin Ivory to start hearing better today.

Call
Text
Reviews
top rated audiologist
4.9 out of 5 stars on Google
See Our Reviews
// Anti-Bot Protection for Acuity Scheduling (Simplified Version) // Add this script to your page after the Acuity embed code (function() { // Configuration options const config = { minTimeOnPage: 3000, // Minimum time in ms that a human would take (3 seconds) deviceAware: true, // Enable device-specific checks debugMode: false // Set to true to see console logs }; // Variables to track user behavior let pageLoadTime = Date.now(); let userInteracted = false; let isTouchDevice = false; // Function to log debug messages function debug(message) { if (config.debugMode) { console.log(`[Acuity Bot Protection]: ${message}`); } } // Detect if the user is on a touch device function detectDevice() { isTouchDevice = ('ontouchstart' in window) || (navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0); debug(`Device detected: ${isTouchDevice ? 'Touch device' : 'Desktop'}`); } // Wait for Acuity iframe to load fully function waitForAcuityIframe() { debug("Waiting for Acuity iframe..."); detectDevice(); // Function to check if the Acuity iframe is loaded const checkIframe = setInterval(() => { const iframe = document.querySelector('iframe[src*="acuityscheduling"]'); if (iframe) { clearInterval(checkIframe); debug("Acuity iframe found, initializing protection"); initProtection(iframe); } }, 500); // Stop checking after 10 seconds to prevent infinite loop setTimeout(() => clearInterval(checkIframe), 10000); } // Initialize protection mechanisms function initProtection(iframe) { // Add appropriate event listeners based on device type if (isTouchDevice) { // For touch devices document.addEventListener('touchstart', function() { userInteracted = true; debug("Touch interaction detected"); }, { passive: true }); } else { // For desktop devices document.addEventListener('mousemove', function() { userInteracted = true; debug("Mouse movement detected"); }); document.addEventListener('click', function() { userInteracted = true; debug("Click detected"); }); } // Try to detect when the iframe form is being submitted try { const iframeContent = iframe.contentDocument || iframe.contentWindow.document; debug("Successfully accessed iframe content"); // If we can access the iframe, intercept form submissions const forms = iframeContent.querySelectorAll('form'); forms.forEach(form => { form.addEventListener('submit', validateSubmission); }); } catch (e) { // If we can't access the iframe content due to same-origin policy debug("Cannot access iframe content directly due to same-origin policy"); // Add message listener for communication with iframe window.addEventListener('message', function(event) { if (event.origin.includes('acuityscheduling')) { if (event.data.type === 'formSubmission') { if (!validateSubmission()) { event.preventDefault(); event.stopPropagation(); return false; } } } }); // Since we can't directly access the iframe, we'll use a MutationObserver // to detect changes that might indicate a submission observeAcuityChanges(iframe); } debug("Protection mechanisms initialized"); } // Observe iframe for changes that might indicate submission function observeAcuityChanges(iframe) { // Watch for changes in the iframe's attributes const observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (mutation.type === 'attributes' && mutation.attributeName === 'src') { debug("Acuity iframe src changed, possible submission"); validateSubmission(); } }); }); // Start observing the iframe observer.observe(iframe, { attributes: true }); } // Validate submission before allowing it to proceed function validateSubmission(event) { debug("Validating submission..."); // Calculate time spent on page const timeSpent = Date.now() - pageLoadTime; debug(`Time spent: ${timeSpent}ms`); // Check minimum time spent on page if (timeSpent < config.minTimeOnPage) { debug("Too fast! Likely a bot."); showError("You're submitting too quickly. Please try again."); if (event) { event.preventDefault(); } return false; } // Check for user interaction based on device type if (!userInteracted) { const errorMsg = isTouchDevice ? "Please interact with the screen before submitting." : "Please move your mouse or interact with the page before submitting."; debug("No user interaction detected. Likely a bot."); showError(errorMsg); if (event) { event.preventDefault(); } return false; } debug("Validation passed! Allowing submission."); return true; } // Show error message function showError(message) { // Check if error element already exists let errorElement = document.getElementById('acuity-bot-error'); if (!errorElement) { // Create new error element errorElement = document.createElement('div'); errorElement.id = 'acuity-bot-error'; errorElement.style.color = 'red'; errorElement.style.padding = '10px'; errorElement.style.margin = '10px 0'; errorElement.style.border = '1px solid red'; errorElement.style.borderRadius = '4px'; // Insert before the Acuity element const acuityElement = document.querySelector('.acuity-embed-button, iframe[src*="acuityscheduling"]'); if (acuityElement) { acuityElement.parentNode.insertBefore(errorElement, acuityElement); } else { // If Acuity element not found, append to body document.body.appendChild(errorElement); } } // Update error message errorElement.textContent = message; // Auto-hide after 5 seconds setTimeout(() => { errorElement.style.display = 'none'; }, 5000); } // Start initialization when document is ready if (document.readyState === "complete" || document.readyState === "interactive") { waitForAcuityIframe(); } else { document.addEventListener("DOMContentLoaded", waitForAcuityIframe); } })();