/*
* @title Show chord diagrams on j-total
* @description マウスオーバーでコード表示
* @include http://music.j-total.net/data/*
* @license MIT License
* @require
*/
(function(){
var chords = document.querySelectorAll('tt a[href]');
Array.prototype.forEach.call(chords, function (elm) {
elm.addEventListener('mouseover', function () {
showchord(elm, elm.href);
}, false);
elm.addEventListener('mouseleave', function () {
setTimeout(function () {
if (elm.hasChildNodes()) {
for (var i = 1; i < (elm.childNodes.length); i++) {
elm.removeChild(elm.childNodes[i]);
}
}
}, 1500);
}, false);
});
function showchord(e, c){
var chord_list = {
'C$': 'C$_D$$',
'D&': 'C$_D$$',
'D$': 'D$_E$$',
'E&': 'D$_E$$',
'F$': 'F$_G$$',
'G&': 'F$_G$$',
'G$': 'G$_A$$',
'A&': 'G$_A$$',
'A$': 'A$_B$$',
'B&': 'A$_B$$',
// m chord
'C$m': 'C$m_D$$m',
'D&m': 'C$m_D$$m',
'D$m': 'D$m_E$$m',
'E&m': 'D$m_E$$m',
'F$m': 'F$m_G$$m',
'G&m': 'F$m_G$$m',
'G$m': 'G$m_A$$m',
'A&m': 'G$m_A$$m',
'A$m': 'A$m_B$$m',
'B&m': 'A$m_B$$m',
// add 9th
'C$add9': 'C$add9_D$$add9',
'D&add9': 'C$add9_D$$add9',
'D$add9': 'D$add9_E$$add9',
'E&add9': 'D$add9_E$$add9',
'F$add9': 'F$add9_G$$add9',
'G&add9': 'F$add9_G$$add9',
'G$add9': 'G$add9_A$$add9',
'A&add9': 'G$add9_A$$add9',
'A$add9': 'A$add9_B$$add9',
'B&add9': 'A$add9_B$$add9',
// 7th
'C$7': 'C$7_D$$7',
'D&7': 'C$7_D$$7',
'D$7': 'D$7_E$$7',
'E&7': 'D$7_E$$7',
'F$7': 'F$7_G$$7',
'G&7': 'F$7_G$$7',
'G$7': 'G$7_A$$7',
'A&7': 'G$7_A$$7',
'A$7': 'A$7_B$$7',
'B&7': 'A$7_B$$7',
// M7
'C$mag7': 'C$mag7_D$$mag7',
'D&mag7': 'C$mag7_D$$mag7',
'D$mag7': 'D$mag7_E$$mag7',
'E&mag7': 'D$mag7_E$$mag7',
'F$mag7': 'F$mag7_G$$mag7',
'G&mag7': 'F$mag7_G$$mag7',
'G$mag7': 'G$mag7_A$$mag7',
'A&mag7': 'G$mag7_A$$mag7',
'A$mag7': 'A$mag7_B$$mag7',
'B&mag7': 'A$mag7_B$$mag7',
// minor 7
'C$m7': 'C$m7_D$$m7',
'D&m7': 'C$m7_D$$m7',
'D$m7': 'D$m7_E$$m7',
'E&m7': 'D$m7_E$$m7',
'F$m7': 'F$m7_G$$m7',
'G&m7': 'F$m7_G$$m7',
'G$m7': 'G$m7_A$$m7',
'A&m7': 'G$m7_A$$m7',
'A$m7': 'A$m7_B$$m7',
'B&m7': 'A$m7_B$$m7',
// dim
'C$dim': 'C$dim_D$$dim',
'D&dim': 'C$dim_D$$dim',
'D$dim': 'D$dim_E$$dim',
'E&dim': 'D$dim_E$$dim',
'F$dim': 'F$dim_G$$dim',
'G&dim': 'F$dim_G$$dim',
'G$dim': 'G$dim_A$$dim',
'A&dim': 'G$dim_A$$dim',
'A$dim': 'A$dim_B$$dim',
'B&dim': 'A$dim_B$$dim',
// minor 7 -5
'C$m7&5': 'C$m7&5_D$$m7&5',
'D&m7&5': 'C$m7&5_D$$m7&5',
'D$m7&5': 'D$m7&5_E$$m7&5',
'E&m7&5': 'D$m7&5_E$$m7&5',
'F$m7&5': 'F$m7&5_G$$m7&5',
'G&m7&5': 'F$m7&5_G$$m7&5',
'G$m7&5': 'G$m7&5_A$$m7&5',
'A&m7&5': 'G$m7&5_A$$m7&5',
'A$m7&5': 'A$m7&5_B$$m7&5',
'B&m7&5': 'A$m7&5_B$$m7&5',
// augumented
'C$aug': 'C$aug_D$$aug',
'D&aug': 'C$aug_D$$aug',
'D$aug': 'D$aug_E$$aug',
'E&aug': 'D$aug_E$$aug',
'F$aug': 'F$aug_G$$aug',
'G&aug': 'F$aug_G$$aug',
'G$aug': 'G$aug_A$$aug',
'A&aug': 'G$aug_A$$aug',
'A$aug': 'A$aug_B$$aug',
'B&aug': 'A$aug_B$$aug',
// M7 sus 4
'C$7sus4': 'C$7sus4_D$$7sus4',
'D&7sus4': 'C$7sus4_D$$7sus4',
'D$7sus4': 'D$7sus4_E$$7sus4',
'E&7sus4': 'D$7sus4_E$$7sus4',
'F$7sus4': 'F$7sus4_G$$7sus4',
'G&7sus4': 'F$7sus4_G$$7sus4',
'G$7sus4': 'G$7sus4_A$$7sus4',
'A&7sus4': 'G$7sus4_A$$7sus4',
'A$7sus4': 'A$7sus4_B$$7sus4',
'B&7sus4': 'A$7sus4_B$$7sus4',
// 6th
'C$6': 'C$6_D$$6',
'D&6': 'C$6_D$$6',
'D$6': 'D$6_E$$6',
'E&6': 'D$6_E$$6',
'F$6': 'F$6_G$$6',
'G&6': 'F$6_G$$6',
'G$6': 'G$6_A$$6',
'A&6': 'G$6_A$$6',
'A$6': 'A$6_B$$6',
'B&6': 'A$6_B$$6'
};
var this_chord = c.replace(/.+\/(.*)\.html\'\);$/, '$1');
if (/[$&]+/g.test(this_chord)){
this_chord = chord_list[this_chord];
}
if (!this_chord) return;
var x = new XMLHttpRequest();
x.open('GET', '/cd/img/' + this_chord + '.gif');
x.responseType = 'blob';
x.onload = function(){
if (this.status == 200) {
var blob = this.response;
var img = document.createElement('img');
img.onload = function () {
window.URL.revokeObjectURL(img.src);
};
img.src = window.URL.createObjectURL(blob);
if (e.childNodes.length < 2) {
e.appendChild(img);
}
}
};
x.send();
}
})();
/* checked @ 1444824000
http://music.j-total.net/data/032mi/009_Mr_Children/013.html
*/