// Adds a contextual IPA key after the tooltip text in any element which has class=IPA
// modified version of [[User:Nohat/IPA.js]]
// raw script is at /w/index.php?title=User:Mzajac/monobook.js&action=raw&ctype=text/javascript
var IPAkey = new Array();
// consonants
IPAkey["dz"] = "poDS";
IPAkey["ʣ"] = "poDS";
IPAkey["dʒ"] = "riDGe";
IPAkey["ʤ"] = "riDGe";
IPAkey["ɡ"] = "piG";
IPAkey["ʒ"] = "beiGE";
IPAkey["j"] = "Yes";
IPAkey["ŋ"] = "riNG";
IPAkey["ŋɡ"] = "fiNGer";
IPAkey["ɹ"] = "Red";
IPAkey["ʃ"] = "SHoe";
IPAkey["tʃ"] = "CHoose";
IPAkey["θ"] = "THing";
IPAkey["ð"] = "THis";
IPAkey["ʍ"] = "WHat";
IPAkey["hw"] = "WHat";
IPAkey["ʔ"] = "uh-oh";
// vowels
IPAkey["ɑ"] = "spA";
IPAkey["ɑɹ"] = "cAR";
IPAkey["ɒ"] = "rOd";
IPAkey["æ"] = "bAd";
IPAkey["ɔ"] = "lAW";
IPAkey["ɔɹ"] = "nORth";
IPAkey["ə"] = "About";
IPAkey["ɚ"] = "winnER";
IPAkey["ɛ"] = "bEd";
IPAkey["ɝ"] = "shIRt";
IPAkey["ɜr"] = "hER";
IPAkey["i"] = "shE";
IPAkey["ɪ"] = "bIg";
IPAkey["ɨ"] = "rosEs";
IPAkey["ʧ"] = "CHoose";
IPAkey["ʊ"] = "bOOk";
IPAkey["ʊɹ"] = "tOUR";
IPAkey["u"] = "fOOd";
IPAkey["ʌ"] = "rUn";
// diphthongs
IPAkey["aɪ"] = "crY";
IPAkey["aʊ"] = "nOW";
IPAkey["eɪ"] = "mAId";
IPAkey["əʊ"] = "sOAp";
IPAkey["ɔɪ"] = "bOY";
IPAkey["oʊ"] = "sOAp";
IPAkey["ju"] = "cUE";
// regional
IPAkey["ɑ̃"] = "frANglais";
IPAkey["æ̃"] = "biEN";
IPAkey["ɜː"] = "dEUX";
IPAkey["ɔ̃"] = "bON";
IPAkey["x"] = "loCH";
function IPAkeys() {
var ipaSpans = getElementsByClassName(document, "span", "IPA");
for (var i = 0; i < ipaSpans.length ; i++) {
var span = ipaSpans[i];
var str = IPA_getInnerText(span);
var helpText = '';
var foundMatches = new Array();
for (var j = 0; j < str.length; j++) {
var one = str.charAt(j);
var two = one + str.charAt(j+1);
var IPA_match = '';
if (IPAkey[two]) {
IPA_match = two;
j++;
} else if (IPAkey[one]) {
IPA_match = one;
}
if (IPA_match && !foundMatches[IPA_match] && IPAkey[IPA_match]) {
if (helpText > '') {
helpText += ', ';
}
foundMatches[IPA_match] = 1;
helpText += IPA_match + ' ' + IPAkey[IPA_match];
}
}
if (helpText != '') {
span.title += ': ' + helpText;
}
}
}
function IPA_getInnerText(el) {
if (typeof el == "string") return el;
if (typeof el == "undefined") { return el };
if (el.innerText) return el.innerText; // Not needed but it is faster
var str = "";
var cs = el.childNodes;
var l = cs.length;
for (var i = 0; i < l; i++) {
switch (cs[i].nodeType) {
case 1: //ELEMENT_NODE
str += IPA_getInnerText(cs[i]);
break;
case 3: //TEXT_NODE
str += cs[i].nodeValue;
break;
}
}
return str;
}
$(IPAkeys);