🚚 Same Day Delivery Available in Chennai! 🎉
Home
The Tales Of Murugan - English | by Pooja/ Childrens Book/ Story Book
The Tales Of Murugan - English | by Pooja/ Childrens Book/ Story Book
Availability:
61 in stock, ready to be shipped
Original price
Rs. 100.00
-
Original price
Rs. 100.00
Original price
Rs. 100.00
Rs. 100.00
-
Rs. 100.00
Current price
Rs. 100.00
| /
"The Tales of Murugan" is a beautifully illustrated and engaging children's book by Pooja, aimed at introducing young readers to the captivating stories and legends of Lord Murugan, the beloved Hindu deity known for his valor, wisdom, and compassion. With rich storytelling and vibrant illustrations, this book serves as an excellent way for children to connect with the divine tales of Murugan in an entertaining and educational manner.
The book brings to life the timeless legends of Lord Murugan, offering children a chance to explore his heroic adventures, his divine role as a protector, and his eternal connection with wisdom and devotion. The book is designed to nurture spiritual growth in young minds, while also imparting important values of courage, righteousness, and compassion.
Key Features & Highlights
• The book offers a simple yet profound introduction to Lord Murugan, his divine origins, his family, and his role as the protector of the universe.
• It presents his stories in a way that is accessible and captivating to young minds, making it ideal for children to learn about this important deity.
• The Tales of Murugan includes a collection of well-known stories such as the birth of Lord Murugan, his battle with the demon Surapadman, and his victory over evil forces.
• These tales highlight his valor, determination, and devotion to truth, offering children role models to look up to and emulate.
• The language is simple and child-friendly, making it easy for children to follow along and enjoy the adventures of Lord Murugan.
• Vibrant and colorful illustrations enhance the storytelling experience, keeping young readers engaged and sparking their imagination as they dive into the tales.
• Each story is carefully crafted to impart valuable life lessons such as bravery, honesty, devotion, and justice.
• The book encourages children to embrace qualities like humility, compassion, and kindness through the example of Lord Murugan's actions and teachings.
(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 initially
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);
// --- Dutch Specific Condition ---
const updateGenderForDutch = () => {
const lang = langSelect.value;
const currentGender = genderSelect.value;
if (lang === "Dutch") {
genderSelect.innerHTML = '';
const opt = document.createElement('option');
// Else only women to choose
opt.value = "Male";
opt.textContent = "Male";
genderSelect.appendChild(opt);
} else {
// Restore both if they were removed
if (genderSelect.options.length < 2) {
genderSelect.innerHTML = '';
["Male", "Female"].forEach(g => {
const opt = document.createElement('option');
opt.value = g;
opt.textContent = g;
if (g === currentGender) opt.selected = true;
genderSelect.appendChild(opt);
});
}
}
};
langSelect.addEventListener('change', updateGenderForDutch);
}
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) {
console.error("ResponsiveVoice not loaded");
btnWrapper.className = "audio-btn-row st-stopped";
return;
}
const voice = getVoice();
const rate = parseFloat(speedSlider.value);
if (!voiceText) voiceText = textEl.innerText;
const textToSpeak = voiceText.substring(startIndex);
console.log("Initiating speech:", { voice, rate, startIndex });
responsiveVoice.speak(textToSpeak, voice, {
rate: rate,
onstart: () => {
console.log("Speech started");
btnWrapper.className = "audio-btn-row st-playing";
},
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: () => {
console.log("Speech ended");
btnWrapper.className = "audio-btn-row st-stopped";
lastCharIndex = 0;
textEl.innerHTML = voiceText;
},
onerror: (e) => {
console.error("ResponsiveVoice error callback:", e);
btnWrapper.className = "audio-btn-row st-stopped";
responsiveVoice.cancel(); // Force clear
}
});
}
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"; // Handled by onstart callback
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"; // Immediate feedback
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
textEl.innerHTML = voiceText;
});
}
}
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;
}