|
|
|
How to play the correct chords of My Father's Eyes (c) Eric Clapton Tutorial for Guitar -
|
|
Random Page / Random Song |
|
|
|
|
My Father's Eyes Capo 2
If you like my videos, please donate a small amount here: https://www.paypal.me/jogo1209
I appreciate every Dollar or Euro. It helps me a lot.
Intro: Bm G Em7 A / D G Em7 A / Bm G Em7 A / D G / C (Tacet) C!G!D!E!A!
A E A B D E A
Sailing down behind the sun, Waiting for my prince to come.
A D E F#m B C G D
Praying for the healing rain To res-tore my soul again.
Bm G Em7 A D G Em7 A
Just a toe rag on double run. How did I get here? !what have I done?
Bm G Em7 A D G
When will all my hopes arise? How will I know him?
Em7 A Bm
When_I_look In my father's eyes
Bm G Em7 A D G
(Look in-to my fathers eyes) My father's eyes
Em7 A Bm
When_I_look In my father's eyes
Bm G Em7 A D G
(Look in-to my fathers eyes) My father's eyes
C (Tacet) C!G!D!E!A!
A E A B D E A
Then the light be-gins to shine I-hear-those ancient lulla-bies.
A D E F#m B C G D
_And as I !watch this seedling grow, feel my heart start to o_verflow.
Bm G Em7 A D G Em7 A
Where do I find the words to say? how do I teach him? what do we play?
Bm G Em7 A D G
Bit by bit, I've rea-lized that's when I need them,
Em7 A Bm
That's when I need my fa__ther's eyes
Bm G Em7 A D G
(Look in-to my fathers eyes) My father's eyes
Em7 A Bm
That's when I need my father's eyes
Bm G Em7 A D G E F#
(Look in-to my fathers eyes) My father's eyes
D G Em7 Em7 / A! D D D / D! G G G / A! D D D /
F#m!A! Bm G Em7 A / D G Em7 A / Bm G Em7 A / D G Em7 G!D!A!
A E A B D E A
Then the jagged edge appears through the distant clouds of tears.
A D E F#m B C G D
I'm like a bridge that was washed away; my foun-dations were made of clay.
Bm G Em7 A D G Em7 A
As my soul slides down to die. How could I lose him? What did I try?
Bm G Em7 A D G
Bit by bit, I've rea-lized that he was here with me;
Em7 A Bm
I looked inTo my father's eyes
Bm G Em7 A D G
(Look in-to my fathers eyes) My father's eyes
Em7 A Hm
I looked inTo my father's eyes
Bm G Em7 A D G Em7 A Bm
(Look in-to my fathers eyes) My father's eyes My father's eyes
Bm G Em7 A D G
(Look in-to my fathers eyes) My father's eyes
Em7 A Bm
I looked inTo my father's eyes
|
|
|
|
|
|
© 2021 DigMusic Online/**
* 1. GENERAL AJAX FORM SUBMISSION HANDLER
* Intercepts a standard form submission by its ID, submits it via fetch (POST),
* and passes the result text back to a custom callback function.
*/
function submitFormAjax(formId, callback) {
const formElement = document.getElementById(formId);
if (!formElement) return;
formElement.addEventListener('submit', function (event) {
event.preventDefault();
event.stopPropagation();
const formData = new FormData(formElement, event.submitter);
if (event.submitter && event.submitter.name) {
formData.append(event.submitter.name, event.submitter.value);
}
const actionUrl = formElement.getAttribute('action') || './ajax_handler.php';
fetch(actionUrl, {
method: 'POST',
body: formData
})
.then(response => response.text())
.then(result => {
if (typeof callback === 'function') {
callback(result, formElement);
}
})
.catch(error => {
console.error("Fetch error:", error);
});
return false;
});
}
/**
* 2. ALPHABETICAL DROPDOWN OPTION INSERTER
*/
function insertOptionAlphabetically(selectElement, text, value) {
if (!selectElement) return;
for (let i = 0; i < selectElement.options.length; i++) {
if (selectElement.options[i].value === value) return;
}
const option = document.createElement('option');
option.value = value;
option.text = text;
let inserted = false;
for (let i = 0; i < selectElement.options.length; i++) {
if (selectElement.options[i].value === "") continue;
if (selectElement.options[i].text.localeCompare(text, undefined, {sensitivity: 'accent', numeric: true}) > 0) {
selectElement.add(option, selectElement.options[i]);
inserted = true;
break;
}
}
if (!inserted) {
selectElement.add(option);
}
}
/**
* 3. SCORE UPDATE AJAX HANDLER
*/
function updateScoreAjax() {
const formElement = document.getElementById('scoreForm');
const selectElement = document.getElementById('scoreSelect');
if (!formElement || !selectElement) return;
if (selectElement.value === "") return;
const formData = new FormData(formElement);
formData.set('score', selectElement.value);
// Ensure URL is present if missing
if (!formData.has('url') || formData.get('url') === '') {
const segments = window.location.pathname.split('/');
const lastSegment = segments[segments.length - 1];
const trackUrl = lastSegment.replace('play_', '').replace('.php', '');
formData.set('url', trackUrl);
}
const actionUrl = formElement.getAttribute('action') || window.location.href;
fetch(actionUrl, {
method: 'POST',
body: formData
})
.then(response => response.text())
.then(html => {
const parser = new DOMParser();
const doc = parser.parseFromString(html, 'text/html');
const currentTable = formElement.closest('table');
const newDocTable = doc.getElementById('scoreForm') ? doc.getElementById('scoreForm').closest('table') : null;
if (currentTable && newDocTable) {
currentTable.innerHTML = newDocTable.innerHTML;
}
})
.catch(error => {
console.error("Score fetch error:", error);
});
}
/**
* 4. SHELF ITEM AJAX INITIALIZER
*/
function initShelfItemAjax() {
if (window._shelfAjaxInitialized) return;
window._shelfAjaxInitialized = true;
document.addEventListener('submit', function (event) {
const form = event.target;
const isShelfForm = form.name === 'shelfitemform' || form.id === 'addToShelfForm' || form.querySelector('select[name="myshelves"]');
if (!isShelfForm) return;
event.preventDefault();
event.stopPropagation();
const formData = new FormData(form, event.submitter);
if (event.submitter && event.submitter.name) {
formData.append(event.submitter.name, event.submitter.value);
}
formData.set('ajax', '1');
const actionUrl = form.getAttribute('action') || './add_to_shelf.php';
fetch(actionUrl, {
method: 'POST',
body: formData
})
.then(response => response.text())
.then(html => {
const parser = new DOMParser();
const doc = parser.parseFromString(html, 'text/html');
const shelfItemContainer = document.getElementById('shelfItemContainer');
const newContainer = doc.getElementById('shelfItemContainer');
if (newContainer && shelfItemContainer) {
shelfItemContainer.innerHTML = newContainer.innerHTML;
}
const newInfo = doc.getElementById('trackShelvesInfo');
const currentInfo = document.getElementById('trackShelvesInfo');
if (newInfo && currentInfo) {
currentInfo.outerHTML = newInfo.outerHTML;
}
})
.catch(error => {
console.error("Shelf item fetch error:", error);
});
return false;
});
}
/**
* 5. DOM CONTENT LOADED INITIALIZER
*/
document.addEventListener("DOMContentLoaded", function () {
// Handle score dropdown change event cleanly
const selectElement = document.getElementById('scoreSelect');
if (selectElement) {
selectElement.addEventListener('change', updateScoreAjax);
}
// Handle the creation of a brand new custom shelf dynamically
submitFormAjax('shelfForm', function(result, form) {
let status = document.getElementById('shelfStatus');
if (!status) return;
let cleanResult = result.trim();
if (cleanResult.startsWith("Success")) {
status.innerText = "Added!";
status.style.color = "green";
const shelfInput = form.querySelector('input[name="shelf_name"]');
const shelfName = shelfInput ? shelfInput.value.trim() : "";
let newSid = "";
let separator = cleanResult.includes("|") ? "|" : ":";
if (cleanResult.includes(separator)) {
let parts = cleanResult.split(separator);
newSid = parts[1].replace(/[^0-9]/g, "");
}
// Instantly inject into all relevant dropdowns alphabetically
if (shelfName && newSid) {
document.querySelectorAll('select[name="shelvesall"], select[name="sid"], select[name="myshelves"], #myShelvesSelect').forEach(sel => {
insertOptionAlphabetically(sel, shelfName, newSid);
});
}
form.reset();
} else if (cleanResult.includes("Already there")) {
status.innerText = "Already exists.";
status.style.color = "orange";
} else {
status.innerText = "Error.";
status.style.color = "red";
}
});
// Handle comment submissions cleanly using your standard AJAX form submitter
submitFormAjax('commentform', function(result, form) {
const commentsContainer = document.getElementById('commentsContainer');
if (!commentsContainer) return;
const parser = new DOMParser();
const doc = parser.parseFromString(result, 'text/html');
const newContainer = doc.getElementById('commentsContainer');
if (newContainer) {
commentsContainer.innerHTML = newContainer.innerHTML;
form.reset();
}
});
// Initialize the other AJAX watchers safely once on load
if (typeof initShelfItemAjax === 'function') {
initShelfItemAjax();
}
});
/**
/**
* 6. GLOBE TRANSLATE POPUP TOGGLE
*/
function toggleTranslatePopup(event) {
event.stopPropagation();
const popup = document.getElementById('translatePopup');
if (popup) {
// Explicitly toggle inline display block/none
if (popup.style.display === 'none' || popup.style.display === '') {
popup.style.display = 'block';
} else {
popup.style.display = 'none';
}
}
}
// Close the popup if clicking anywhere else on the page
document.addEventListener('click', () => {
const popup = document.getElementById('translatePopup');
if (popup && popup.style.display === 'block') {
popup.style.display = 'none';
}
}); |