Home ›
Surgeons ›
Florida ›
Temple Terrace
Top Orthopedic Surgeons in Temple Terrace, FL
Medicare procedure volume rankings for orthopedic surgeons in Temple Terrace, Florida. Built on public CMS Medicare data. Pick a procedure to see surgeons ranked by volume.
23 surgeons profiled
•
3 procedure types ranked
Procedures in Temple Terrace
Surgeons practicing in Temple Terrace
23 orthopedic surgeons with profiles in Temple Terrace. Click any surgeon for full Medicare procedure volume, hospital affiliations, and credentials.
// Theme Toggle
const themeToggle = document.querySelector('.theme-toggle');
const sunIcon = document.querySelector('.sun-icon');
const moonIcon = document.querySelector('.moon-icon');
function updateThemeIcons(isDark) {
if (isDark) {
sunIcon.style.display = 'none';
moonIcon.style.display = 'block';
} else {
sunIcon.style.display = 'block';
moonIcon.style.display = 'none';
}
if (themeToggle) {
themeToggle.setAttribute('aria-pressed', isDark ? 'true' : 'false');
themeToggle.setAttribute('aria-label', isDark ? 'Switch to light theme' : 'Switch to dark theme');
}
}
// Initialize theme on page load
const savedTheme = localStorage.getItem('theme');
const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
const initialTheme = savedTheme || (systemPrefersDark ? 'dark' : 'light');
if (initialTheme === 'dark') {
document.documentElement.classList.add('dark');
updateThemeIcons(true);
}
themeToggle?.addEventListener('click', () => {
const isDark = document.documentElement.classList.toggle('dark');
localStorage.setItem('theme', isDark ? 'dark' : 'light');
updateThemeIcons(isDark);
});
// Menu Toggle
const menuButton = document.querySelector('.menu-button');
const menuDropdown = document.querySelector('.menu-dropdown');
menuButton?.addEventListener('click', () => {
const isOpen = menuDropdown.style.display === 'block';
menuDropdown.style.display = isOpen ? 'none' : 'block';
menuButton.setAttribute('aria-expanded', !isOpen);
});
// Close menu when clicking outside
document.addEventListener('click', (e) => {
if (!menuButton?.contains(e.target) && !menuDropdown?.contains(e.target)) {
menuDropdown.style.display = 'none';
menuButton?.setAttribute('aria-expanded', 'false');
}
});
// R4-T8 (I24): condensed sticky header on long list pages only.
// Markup contract untouched — we only toggle a modifier class.
(function() {
if (!document.body.classList.contains('list-page')) return;
const siteHeader = document.querySelector('.site-header');
if (!siteHeader) return;
let condensedTicking = false;
function applyCondensed() {
siteHeader.classList.toggle('is-condensed', window.scrollY > 120);
}
window.addEventListener('scroll', () => {
if (!condensedTicking) {
window.requestAnimationFrame(() => {
applyCondensed();
condensedTicking = false;
});
condensedTicking = true;
}
}, { passive: true });
applyCondensed();
})();
// === ENHANCED ANIMATIONS & INTERACTIONS ===
// NOTE: Fade-in reveal is owned by scripts/lib/animation-system.js
// (getCoreAnimationSystem().script). Pages that use .fade-in interpolate
// that script; do NOT register a second observer here.
// Scroll glow effect
const glowObserver = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('active');
setTimeout(() => {
entry.target.classList.remove('active');
}, 2000);
}
});
}, { threshold: 0.3 });
// Apply glow to cards
document.querySelectorAll('.scroll-glow').forEach(el => {
glowObserver.observe(el);
});
// Magnetic button effect
const magneticButtons = document.querySelectorAll('.magnetic-btn');
magneticButtons.forEach(button => {
button.addEventListener('mousemove', (e) => {
const rect = button.getBoundingClientRect();
const x = e.clientX - rect.left - rect.width / 2;
const y = e.clientY - rect.top - rect.height / 2;
const moveX = x * 0.2;
const moveY = y * 0.2;
button.style.transform = `translate(${moveX}px, ${moveY}px) scale(1.05)`;
});
button.addEventListener('mouseleave', () => {
button.style.transform = 'translate(0, 0) scale(1)';
});
});
// 3D Tilt effect for cards
const tiltCards = document.querySelectorAll('.tilt-card');
tiltCards.forEach(card => {
card.addEventListener('mousemove', (e) => {
const rect = card.getBoundingClientRect();
const x = e.clientX - rect.left;
const y = e.clientY - rect.top;
const centerX = rect.width / 2;
const centerY = rect.height / 2;
const rotateX = (y - centerY) / 20;
const rotateY = (centerX - x) / 20;
card.style.transform = `perspective(1000px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) translateY(-4px) scale(1.02)`;
card.style.transition = 'transform 0.1s ease';
});
card.addEventListener('mouseleave', () => {
card.style.transform = 'perspective(1000px) rotateX(0) rotateY(0) translateY(0) scale(1)';
card.style.transition = 'transform 0.4s cubic-bezier(0.4, 0, 0.2, 1)';
});
});
// Scroll progress indicator
let progressBar = document.querySelector('.scroll-progress');
if (!progressBar) {
progressBar = document.createElement('div');
progressBar.className = 'scroll-progress';
progressBar.style.cssText = `
position: fixed;
top: 0;
left: 0;
right: 0;
height: 3px;
background: #3b82f6;
transform-origin: left;
z-index: 9999;
transition: transform 0.1s ease-out;
`;
document.body.prepend(progressBar);
}
function updateScrollProgress() {
const winScroll = document.documentElement.scrollTop;
const height = document.documentElement.scrollHeight - document.documentElement.clientHeight;
const scrolled = (winScroll / height);
progressBar.style.transform = `scaleX(${scrolled})`;
}
let progressTicking = false;
window.addEventListener('scroll', () => {
if (!progressTicking) {
window.requestAnimationFrame(() => {
updateScrollProgress();
progressTicking = false;
});
progressTicking = true;
}
}, { passive: true });
// === SURGEON SEARCH AUTOCOMPLETE ===
(function() {
const searchInput = document.getElementById('surgeon-search-input');
const searchResults = document.getElementById('surgeon-search-results');
const clearBtn = document.getElementById('search-clear-btn');
if (!searchInput || !searchResults) return;
let surgeonIndex = null;
let isLoading = false;
let debounceTimer = null;
let highlightedIndex = -1;
// Load search index on first interaction
async function loadSearchIndex() {
if (surgeonIndex || isLoading) return;
isLoading = true;
try {
searchResults.style.display = 'block';
searchResults.innerHTML = 'Loading surgeons...
';
const response = await fetch('/surgeon-search-index.json');
if (!response.ok) throw new Error('Failed to load search index');
surgeonIndex = await response.json();
// Clear loading message if input is still empty
if (!searchInput.value.trim()) {
searchResults.style.display = 'none';
} else {
performSearch(searchInput.value);
}
} catch (err) {
console.error('Search index load error:', err);
searchResults.innerHTML = '