×
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';
document.getElementById('panorama').style.display = 'none';
document.getElementById('panoHelpBtn').style.display = 'none';
document.getElementById('panoHelp').style.display = 'none';
// Stop any playing media
const iframe = document.getElementById('lightboxEmbed').querySelector('iframe');
if (iframe) {
iframe.src = iframe.src; // This reloads the iframe, stopping video/audio
}
// Cleanup panorama specific listeners and instance
if (window.cleanupPanorama) {
window.cleanupPanorama();
window.cleanupPanorama = null;
}
// Cleanup VR scene if it exists
const vrScene = document.getElementById('vrScene');
if (vrScene) {
vrScene.parentNode.removeChild(vrScene);
}
}
function enterVR(panoramaUrl) {
// Hide lightbox
document.getElementById('lightbox').classList.remove('active');
// Create and enter A-Frame scene
let vrScene = document.getElementById('vrScene');
if (!vrScene) {
vrScene = document.createElement('div');
vrScene.id = 'vrScene';
vrScene.innerHTML = `
`;
document.body.appendChild(vrScene);
} else {
vrScene.querySelector('a-sky').setAttribute('src', panoramaUrl);
}
// A-Frame's enter VR logic will be triggered by its UI
setTimeout(() => {
const sceneEl = document.querySelector('a-scene');
if (sceneEl && sceneEl.hasLoaded) {
sceneEl.enterVR();
} else {
sceneEl.addEventListener('loaded', () => sceneEl.enterVR());
}
}, 100);
}
function hotspot(hotSpotDiv, args) {
hotSpotDiv.classList.add('pano-hotspot');
const span = document.createElement('span');
span.textContent = args.label || 'Hotspot';
hotSpotDiv.appendChild(span);
// Optional: Add custom styling or classes
span.classList.add('hotspot-label');
// Optional: Add tooltip or info window on click
hotSpotDiv.onclick = () => {
alert(`Hotspot at Yaw: ${args.yaw}, Pitch: ${args.pitch}`);
};
}
function closeLightbox() {
const lightbox = document.getElementById('lightbox');
lightbox.classList.remove('active');
// Hide all media containers
document.getElementById('lightboxImage').style.display = 'none';
document.getElementById('lightboxEmbed').style.display = 'none';
document.getElementById('modelViewerContainer').style.display = 'none';