0 && vSalePrice < vRegPrice;
// Different calculations based on product condition
if (isNew) {
// For NEW products, calculate discount from MSRP
if (vMsrp > 0 && vPrice > 0) {
discountPercentage = Math.round((vMsrp - vPrice) / vMsrp * 100);
// Show badge if discount is 40% or more
if (discountPercentage >= 40) {
discountBadge.textContent = discountPercentage + '% OFF!';
discountBadge.style.display = 'inline-flex';
} else {
discountBadge.style.display = 'none';
}
} else {
discountBadge.style.display = 'none';
}
} else {
// For USED/refurbished products, calculate discount from regular price
if (isOnSale && vRegPrice > 0 && vPrice > 0) {
discountPercentage = Math.round((vRegPrice - vPrice) / vRegPrice * 100);
// Show badge if discount is 40% or more
if (discountPercentage >= 40) {
discountBadge.textContent = discountPercentage + '% OFF!';
discountBadge.style.display = 'inline-flex';
} else {
discountBadge.style.display = 'none';
}
} else {
discountBadge.style.display = 'none';
}
}
">

Sale!
62% OFF!
0) {
const newIndex = currentIndex - 1;
const img = thumbs[newIndex].querySelector('img');
const fullUrl = img.dataset.fullUrl;
const srcset = img.dataset.srcset;
const alt = img.alt;
const tempImage = new Image();
tempImage.src = fullUrl;
const updateImages = () => {
currentLightboxImage = fullUrl;
currentLightboxSrcset = srcset;
currentLightboxAlt = alt;
currentIndex = newIndex;
requestAnimationFrame(() => {
thumbs[newIndex].click();
});
};
if (tempImage.complete) {
updateImages();
} else {
tempImage.onload = updateImages;
}
}
}
"
@keydown.arrow-right.window="
if (showLightbox) {
const thumbs = document.querySelectorAll('.gallery-thumb');
if (currentIndex < thumbs.length - 1) {
const newIndex = currentIndex + 1;
const img = thumbs[newIndex].querySelector('img');
const fullUrl = img.dataset.fullUrl;
const srcset = img.dataset.srcset;
const alt = img.alt;
const tempImage = new Image();
tempImage.src = fullUrl;
const updateImages = () => {
currentLightboxImage = fullUrl;
currentLightboxSrcset = srcset;
currentLightboxAlt = alt;
currentIndex = newIndex;
requestAnimationFrame(() => {
thumbs[newIndex].click();
});
};
if (tempImage.complete) {
updateImages();
} else {
tempImage.onload = updateImages;
}
}
}
"
@touchstart="
$event.target === $event.currentTarget && $event.preventDefault();
window.touchStartX = $event.touches[0].clientX;
"
@touchmove="
$event.target === $event.currentTarget && $event.preventDefault();
"
@touchend="
$event.target === $event.currentTarget && $event.preventDefault();
if (!window.touchStartX) return;
const touchEndX = $event.changedTouches[0].clientX;
const diff = touchEndX - window.touchStartX;
const threshold = 50; // minimum swipe distance
if (Math.abs(diff) >= threshold) {
const thumbs = document.querySelectorAll('.gallery-thumb');
if (diff > 0 && currentIndex > 0) {
// Swipe right - go to previous
const newIndex = currentIndex - 1;
const img = thumbs[newIndex].querySelector('img');
const fullUrl = img.dataset.fullUrl;
const srcset = img.dataset.srcset;
const alt = img.alt;
const tempImage = new Image();
tempImage.src = fullUrl;
const updateImages = () => {
currentLightboxImage = fullUrl;
currentLightboxSrcset = srcset;
currentLightboxAlt = alt;
currentIndex = newIndex;
requestAnimationFrame(() => {
thumbs[newIndex].click();
});
};
if (tempImage.complete) {
updateImages();
} else {
tempImage.onload = updateImages;
}
} else if (diff < 0 && currentIndex < thumbs.length - 1) {
// Swipe left - go to next
const newIndex = currentIndex + 1;
const img = thumbs[newIndex].querySelector('img');
const fullUrl = img.dataset.fullUrl;
const srcset = img.dataset.srcset;
const alt = img.alt;
const tempImage = new Image();
tempImage.src = fullUrl;
const updateImages = () => {
currentLightboxImage = fullUrl;
currentLightboxSrcset = srcset;
currentLightboxAlt = alt;
currentIndex = newIndex;
requestAnimationFrame(() => {
thumbs[newIndex].click();
});
};
if (tempImage.complete) {
updateImages();
} else {
tempImage.onload = updateImages;
}
}
}
window.touchStartX = null;
"
x-data="{
isFirstImage() {
return currentIndex === 0;
},
isLastImage() {
const thumbs = document.querySelectorAll('.gallery-thumb');
return currentIndex === thumbs.length - 1;
}
}">
0) {
// Determine if we're before or after cutoff
const now = new Date();
const hour = now.getHours();
const isBeforeCutoff = hour < 14;
availabilityMessageElements.forEach(element => {
if (isBeforeCutoff) {
element.textContent = 'Same-Day Delivery!';
} else {
element.textContent = 'Order Online';
}
});
}
} else {
deliveryNoteElement.textContent = 'Local Delivery Available';
// Update all availability message elements
if (availabilityMessageElements && availabilityMessageElements.length > 0) {
availabilityMessageElements.forEach(element => {
element.textContent = 'Order Online';
});
}
}
}
}
// Update main product image
const mainImage = document.querySelector('#main-product-image');
if (mainImage && v?.main_image_id) {
mainImage.style.opacity = 0;
setTimeout(() => {
if (v.image_url) {
mainImage.src = v.image_url;
mainImage.srcset = v.image_srcset || '';
}
mainImage.style.opacity = 1;
}, 150);
}
">
Pramberger LG-157N PE QRSPM2 Player Grand Piano
UsedGrand Piano - Player
Joseph Pramberger designed 5'2" baby grand piano in polished ebony finish with nickel hardware. Features QRS PM2 Player Piano system, reproducing some of the world's finest piano performances. Player system upgrade available for an additional $3395 plus $600 labor ($3995 total)
3-Year Store Warranty (In-Home)
100% Lifetime Trade-Up Credit
Matching Bench Included
Available in Store
Price:
$12,988
Regular:
$33,939
While we make every effort to provide accurate pricing and availability, occasional errors may occur. All prices and availability are subject to change without notice. We reserve the right to cancel or refuse any purchase made based on incorrect pricing.