🚚 Same Day Delivery Available in Chennai! 🎉
Home
Brass Jalladai - 2 x 11.5 Inches | Sahastradhara/ Abhisheka Plate for Pooja/ 500 Gms Approx
Brass Jalladai - 2 x 11.5 Inches | Sahastradhara/ Abhisheka Plate for Pooja/ 500 Gms Approx
Availability:
Only 4 left!
Original price
Rs. 1,150.00
-
Original price
Rs. 1,150.00
Original price
Rs. 1,150.00
Rs. 1,150.00
-
Rs. 1,150.00
Current price
Rs. 1,150.00
| /
• The Brass Abhisheka Plate (Jalladai) for Pooja is a sacred and indispensable accessory for Hindu rituals and ceremonies.
• Crafted from high-quality brass, this exquisitely designed plate is specifically tailored for performing abhisheka, the ritualistic bathing of deity idols with sacred liquids like milk, water, and honey.
• Featuring a sahastradhara design, which translates to "thousand streams," this plate is adorned with numerous small perforations, resembling a metal sieve.
• These perforations allow the sacred liquids to flow evenly over the deity idol during the abhisheka, ensuring a uniform and auspicious bathing experience.
• As a quintessential pooja plate, this brass abhisheka plate serves as a symbol of devotion and reverence during religious ceremonies.
• Its sturdy construction and traditional design make it an ideal accessory for any Hindu household or temple, enhancing the authenticity and sanctity of the worship environment.
• Whether used in daily rituals or festive celebrations, this plate holds immense significance in the practice of Hindu faith, facilitating the offering of prayers and devotion to the divine.
(function () {
let lastCharIndex = 0;
let voiceText = "";
function blockQeTextInstant() {
const styleId = 'qetext-kill-style';
if (!document.getElementById(styleId)) {
const style = document.createElement('style');
style.id = styleId;
style.innerHTML = `
#qetext{
display:none !important;
visibility:hidden !important;
opacity:0 !important;
pointer-events:none !important;
position:absolute !important;
left:-9999px !important;
top:-9999px !important;
z-index:-9999 !important;
}
.audio-btn-row button {
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
.audio-btn-row button:hover:not(:disabled) {
transform: scale(1.1);
opacity: 1 !important;
}
/* --- STRICT STATE MACHINE CSS --- */
/* State: Stopped - Only Play allowed */
.audio-btn-row.st-stopped #pause,
.audio-btn-row.st-stopped #stop,
.audio-btn-row.st-stopped #resume {
opacity: 0.15 !important;
filter: grayscale(1);
cursor: not-allowed !important;
pointer-events: none !important;
}
/* State: Playing/Resumed - Only Pause and Stop allowed */
.audio-btn-row.st-playing #play,
.audio-btn-row.st-playing #resume {
opacity: 0.15 !important;
filter: grayscale(1);
cursor: not-allowed !important;
pointer-events: none !important;
}
/* State: Paused - Only Resume allowed */
.audio-btn-row.st-paused #play,
.audio-btn-row.st-paused #pause,
.audio-btn-row.st-paused #stop {
opacity: 0.15 !important;
filter: grayscale(1);
cursor: not-allowed !important;
pointer-events: none !important;
}
/* Settings UI CSS */
.audio-settings-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 12px;
width: 100%;
margin-bottom: 12px;
}
.control-group {
display: flex;
flex-direction: column;
gap: 6px;
width: 100%;
}
.speed-group {
margin-bottom: 20px;
}
.control-header {
display: flex;
justify-content: space-between;
align-items: center;
}
.control-group label {
color: rgba(255,255,255,0.9);
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.8px;
}
#speed-val {
color: #fff;
font-size: 11px;
font-weight: 700;
background: rgba(255,255,255,0.2);
padding: 2px 7px;
border-radius: 10px;
}
.control-group select {
background: rgba(255,255,255,0.12);
border: 1px solid rgba(255,255,255,0.2);
color: #fff;
border-radius: 6px;
padding: 7px 10px;
font-size: 13px;
cursor: pointer;
outline: none;
}
.control-group select option {
background: #2e7d32;
color: #fff;
}
input[type=range] {
-webkit-appearance: none;
width: 100%;
background: transparent;
}
input[type=range]:focus { outline: none; }
input[type=range]::-webkit-slider-runnable-track {
width: 100%;
height: 4px;
background: rgba(255,255,255,0.2);
border-radius: 2px;
}
input[type=range]::-webkit-slider-thumb {
height: 18px;
width: 18px;
border-radius: 50%;
background: #fff;
cursor: pointer;
-webkit-appearance: none;
margin-top: -7px;
box-shadow: 0 2px 6px rgba(0,0,0,0.3);
}
mark {
background-color: #ffeb3b !important;
color: #000 !important;
border-radius: 2px;
}
`;
document.head.appendChild(style);
}
if (!window.qeObserver) {
window.qeObserver = new MutationObserver(() => {
const qe = document.querySelector('#qetext');
if (qe) {
qe.style.setProperty('display', 'none', 'important');
qe.style.visibility = "hidden";
qe.style.opacity = "0";
}
});
window.qeObserver.observe(document.body, {
childList: true,
subtree: true
});
}
}
function applyFix() {
if (!document.body.classList.contains('template-product')) return;
const container = document.querySelector('.buttons');
const target = document.querySelector('.product-main .product-details .single-product-meta');
if (!container || !target) return;
blockQeTextInstant();
const hide = container.querySelector('.hide_text');
const show = container.querySelector('.showtext');
if (hide) hide.remove();
if (show) show.remove();
if (target.nextElementSibling !== container) {
target.parentNode.insertBefore(container, target.nextSibling);
}
container.style.cssText = `
display:flex !important;
flex-direction:column !important;
align-items:flex-start !important;
gap:12px !important;
margin-top:15px !important;
padding:18px 20px !important;
background:#2e7d32 !important;
border-radius:12px !important;
min-width:320px !important;
width:fit-content !important;
box-shadow: 0 6px 20px rgba(0,0,0,0.2);
`;
if (!container.querySelector('.audio-instruction')) {
const text = document.createElement('div');
text.className = "audio-instruction";
text.textContent = "Audio Description Options";
text.style.cssText = `
color:#fff;
font-size:15px;
font-weight:700;
border-bottom: 1px solid rgba(255,255,255,0.2);
width: 100%;
padding-bottom: 8px;
margin-bottom: 5px;
`;
container.prepend(text);
}
// --- Settings Rows ---
if (!container.querySelector('.audio-settings-grid')) {
const grid = document.createElement('div');
grid.className = "audio-settings-grid";
const langGroup = document.createElement('div');
langGroup.className = "control-group";
// Label
const langLabel = document.createElement('label');
langLabel.textContent = "Language";
// Select
const langSelect = document.createElement('select');
langSelect.id = "audio-lang";
// Options
const languages = [
{ value: "UK English", text: "English" },
{ value: "Dutch", text: "Dutch" },
{ value: "French", text: "French" },
{ value: "Italian", text: "Italian" }
];
languages.forEach(lang => {
const option = document.createElement('option');
option.value = lang.value;
option.textContent = lang.text;
langSelect.appendChild(option);
});
// Append
langGroup.appendChild(langLabel);
langGroup.appendChild(langSelect);
// -------- Gender Group --------
const genderGroup = document.createElement('div');
genderGroup.className = "control-group";
// Label
const genderLabel = document.createElement('label');
genderLabel.textContent = "Gender";
// Select
const genderSelect = document.createElement('select');
genderSelect.id = "audio-gender";
// Options
const genders = ["Male", "Female"];
genders.forEach(g => {
const option = document.createElement('option');
option.value = g;
option.textContent = g;
genderSelect.appendChild(option);
});
// Append
genderGroup.appendChild(genderLabel);
genderGroup.appendChild(genderSelect);
grid.appendChild(langGroup);
grid.appendChild(genderGroup);
const speedGroup = document.createElement('div');
speedGroup.className = "control-group speed-group";
const header = document.createElement('div');
header.className = "control-header";
// Label
const label = document.createElement('label');
label.textContent = "Playback Speed";
// Value display
const speedValue = document.createElement('span');
speedValue.id = "speed-val";
speedValue.textContent = "1.0x";
// Append header elements
header.appendChild(label);
header.appendChild(speedValue);
// -------- Range Input --------
const range = document.createElement('input');
range.type = "range";
range.id = "audio-speed";
range.min = "0.5";
range.max = "2";
range.step = "0.1";
range.value = "1";
// Append header + range to speed group
speedGroup.appendChild(header);
speedGroup.appendChild(range);
const instruction = container.querySelector('.audio-instruction');
instruction.after(speedGroup);
instruction.after(grid);
}
let btnWrapper = container.querySelector('.audio-btn-row');
if (!btnWrapper) {
btnWrapper = document.createElement('div');
btnWrapper.className = "audio-btn-row st-stopped";
btnWrapper.style.cssText = `
display:flex;
align-items:center;
justify-content: flex-start;
gap:20px;
width: 100%;
`;
container.querySelectorAll('button').forEach(btn => {
btn.style.cssText = `
display:flex;
align-items:center;
justify-content:center;
background:transparent;
border:none;
cursor:pointer;
padding:8px;
color:#fff;
`;
btnWrapper.appendChild(btn);
});
container.appendChild(btnWrapper);
}
container.querySelectorAll('svg').forEach(svg => {
svg.style.width = "22px";
svg.style.height = "22px";
});
const close = container.querySelector('.close_sbutton');
if (close && !close.dataset.done) {
close.onclick = () => container.style.display = "none";
close.dataset.done = "1";
}
// --- Enhanced Playback Logic ---
const play = document.getElementById('play');
const pause = document.getElementById('pause');
const stop = document.getElementById('stop');
const resume = document.getElementById('resume');
const textEl = document.getElementById('qetext');
const speedSlider = document.getElementById('audio-speed');
const speedVal = document.getElementById('speed-val');
const audioLang = document.getElementById('audio-lang');
const audioGender = document.getElementById('audio-gender');
if (play && pause && stop && resume && textEl && speedSlider && !play.dataset.customized) {
play.dataset.customized = "true";
function getVoice() {
const lang = audioLang.value;
const gender = audioGender.value;
// ResponsiveVoice Mapping
if (lang === "UK English") return "UK English " + gender;
if (lang === "Dutch") return "Dutch " + gender;
if (lang === "French") return "French " + gender;
if (lang === "Italian") return "Italian " + gender;
return "UK English " + gender;
}
function playSpeech(startIndex) {
if (!window.responsiveVoice) return;
const voice = getVoice();
const rate = parseFloat(speedSlider.value);
if (!voiceText) voiceText = textEl.innerText;
const textToSpeak = voiceText.substring(startIndex);
console.log("text to speak", textToSpeak);
console.log("voice", voice);
console.log("rate", rate);
responsiveVoice.speak(textToSpeak, voice, {
rate: rate,
onboundary: (e) => {
if (e.name === 'word') {
const absIdx = startIndex + e.charIndex;
lastCharIndex = absIdx;
let wordLen = e.charLength || voiceText.substring(absIdx).match(/^[a-z\d']*/i)[0].length || 5;
textEl.innerHTML = voiceText.substring(0, absIdx) + '' + voiceText.substring(absIdx, absIdx + wordLen) + ' ' + voiceText.substring(absIdx + wordLen);
}
},
onend: () => {
btnWrapper.className = "audio-btn-row st-stopped";
lastCharIndex = 0;
textEl.innerHTML = voiceText;
}
});
}
let speedTimer;
speedSlider.addEventListener('input', (e) => {
const rate = parseFloat(e.target.value);
if (speedVal) speedVal.textContent = rate.toFixed(1) + 'x';
if (btnWrapper.classList.contains('st-playing')) {
clearTimeout(speedTimer);
speedTimer = setTimeout(() => {
responsiveVoice.cancel();
playSpeech(lastCharIndex);
}, 80);
}
});
const trgAnalytics = () => {
const ph = window.location.pathname.split('/').pop();
if (window.jQuery && window.jQuery.ajax && window.Shopify) {
window.jQuery.ajax({
url: 'https://apps.qeapps.com/ecom_apps_n/production/texttospeech/common_data_voicecantrol_insert',
type: 'POST',
data: { product_handle: ph, domain: window.Shopify.shop }
});
}
};
const newPlay = play.cloneNode(true);
const newPause = pause.cloneNode(true);
const newResume = resume.cloneNode(true);
const newStop = stop.cloneNode(true);
play.parentNode.replaceChild(newPlay, play);
pause.parentNode.replaceChild(newPause, pause);
resume.parentNode.replaceChild(newResume, resume);
stop.parentNode.replaceChild(newStop, stop);
newPlay.addEventListener('click', () => {
btnWrapper.className = "audio-btn-row st-playing";
if (!voiceText) voiceText = textEl.innerText;
playSpeech(lastCharIndex);
// trgAnalytics();
});
newPause.addEventListener('click', () => {
responsiveVoice.pause();
btnWrapper.className = "audio-btn-row st-paused";
});
newResume.addEventListener('click', () => {
btnWrapper.className = "audio-btn-row st-playing";
if (responsiveVoice.isPlaying()) responsiveVoice.resume();
else playSpeech(lastCharIndex);
});
newStop.addEventListener('click', () => {
responsiveVoice.cancel();
btnWrapper.className = "audio-btn-row st-stopped";
lastCharIndex = 0; // User said "after stop user can click on play", usually resets
});
}
}
let count = 0;
const interval = setInterval(() => {
applyFix();
if (++count > 40) clearInterval(interval);
}, 250);
const observer = new MutationObserver(() => applyFix());
observer.observe(document.body, {
childList: true,
subtree: true
});
})();
.template-index #start_button,
.template-collection #start_button,
.template-product #start_button,
body.template-index .buttons {
display: none !important;
}
.template-collection .buttons,
.template-product .buttons {
display: none !important;
}