सदस्यः:Bodhisattwa/common.js
सूचना : भवता/भवत्या कृतानि सम्पादनानि संरक्ष्य तानि परिवर्तनेषु द्रष्टुं गवेषकस्य पृष्ठस्य पुनरारोपणम् (reload) आवश्यकं भवति ।
- Firefox / Safari: Shiftकुड्मलेन सह Reloadकुड्मलं नुदतु ।
- Google Chrome: Ctrl-Shift-R नोदनेन पुनरारोपणं भवति । (⌘-R इति Mac तन्त्रांशप्रयोक्तॄभ्यः)
- Internet Explorer: Ctrlकुड्मलेन सह Refreshकुड्मलं नुदतु, Ctrl-F5 नुदतु वा ।
- Opera: Tools → Preferences इत्यत्र गत्वा कर्तुं शक्नोति ।
var doneonce = false;
var origText = new Array();
var scriptChoice = "en";
var DevanagariTab = {
"a" : "अ", "A" : "आ",
"i" : "इ", "I" : "ई",
"u" : "उ", "U" : "ऊ",
"R" : "ऋ", "RR" : "ॠ",
"lR" : "ऌ", "lRR" : "ॡ",
"e" : "ऎ", "E" : "ए", "ai" : "ऐ",
"o" : "ऒ", "O" : "ओ", "au" : "औ",
"M" : "ं", "H" : "ः",
"k" : "क", "kh" : "ख",
"g" : "ग", "gh" : "घ", "G" : "ङ",
"c" : "च", "ch" : "छ",
"j" : "ज", "jh" : "झ", "J" : "ञ",
"T" : "ट", "Th" : "ठ",
"D" : "ड", "Dh" : "ढ", "N" : "ण",
"t" : "त", "th" : "थ",
"d" : "द", "dh" : "ध", "n" : "न", "nN" : "न",
"p" : "प", "ph" : "फ",
"b" : "ब", "bh" : "भ", "m" : "म",
"y" : "य", "r" : "र", "rR" : "ऱ",
"l" : "ल", "L" : "ळ", "zh" : "ऴ",
"v" : "व", "w" : "व",
"z" : "श", "S" : "ष", "s" : "स", "h" : "ह",
"'" : "ऽ", "A$" : "ा",
"i$" : "ि", "I$" : "ी",
"u$" : "ु", "U$" : "ू",
"R$" : "ृ", "RR$" : "ॄ",
"lR$" : "ॢ", //"lRR$" : "ॣ",
"e$" : "ॆ", "E$" : "े", "ai$" : "ै",
"o$" : "ॊ", "O$" : "ो", "au$" : "ौ",
"V$" : "्",
"f" : "फ़", "Z" : "ज़",
"|" : "।", "||" : "॥"
};
var KannadaTab = {
"a" : "ಅ", "A" : "ಆ",
"i" : "ಇ", "I" : "ಈ",
"u" : "ಉ", "U" : "ಊ",
"R" : "ಋ", "RR" : "ೠ",
"lR" : "ಌ", "lRR" : "ೡ",
"e" : "ಎ", "E" : "ಏ", "ai" : "ಐ",
"o" : "ಒ", "O" : "ಓ", "au" : "ಔ",
"M" : "ಂ", "H" : "ಃ",
"k" : "ಕ", "kh" : "ಖ",
"g" : "ಗ", "gh" : "ಘ", "G" : "ಙ",
"c" : "ಚ", "ch" : "ಛ",
"j" : "ಜ", "jh" : "ಝ", "J" : "ಞ",
"T" : "ಟ", "Th" : "ಠ",
"D" : "ಡ", "Dh" : "ಢ", "N" : "ಣ",
"t" : "ತ", "th" : "ಥ",
"d" : "ದ", "dh" : "ಧ", "n" : "ನ", "nN" : "ನ",
"p" : "ಪ", "ph" : "ಫ",
"b" : "ಬ", "bh" : "ಭ", "m" : "ಮ",
"y" : "ಯ",
"r" : "ರ", "rR" : "ಱ",
"l" : "ಲ", "L" : "ಳ", "zh" : "ಳ",
"v" : "ವ", "w" : "ವ",
"z" : "ಶ", "S" : "ಷ",
"s" : "ಸ", "h" : "ಹ",
"A$" : "ಾ",
"i$" : "ಿ", "I$" : "ೀ",
"u$" : "ು", "U$" : "ೂ",
"R$" : "ೃ", "RR$" : "ೄ",
"lR$" : "ೄ", //"lRR$" : "ೄ",
"e$" : "ೆ", "E$" : "ೇ", "ai$" : "ೈ",
"o$" : "ೊ", "O$" : "ೋ", "au$" : "ೌ",
"V$" : "್",
"Z" : "ಜ", "f" : "ೞ"
};
var RomanTab = {
"a": "a", "A": "ā",
"i": "i", "I": "ī",
"u": "u", "U": "ū",
"R": "ṛ", "RR": "ṝ",
"lR": "l", "lRR": "l",
"e": "e", "E": "ē", "ai$": "ai",
"o": "o", "O": "ō", "au": "au",
"M": "ṃ", "H": "ḥ",
"k": "k", "kh": "kh", "g": "g", "gh": "gh", "G": "ṅ",
"c": "c", "ch": "ch", "j": "j", "jh": "jh", "J": "ñ",
"T": "ṭ", "Th": "ṭh",
"D": "ḍ", "Dh": "ḍh", "N": "ṇ",
"t": "t", "th": "th", "d": "d", "dh": "dh", "n": "n", "nN": "n",
"p": "p", "ph": "ph", "b": "b", "bh": "bh", "m": "m",
"y": "y", "r": "r", "rR": "ṟ", "l": "l",
"L": "ḷ", "zh": "zh",
"v": "v", "w": "w",
"z": "ś", "S": "ṣ", "s": "s", "h": "h",
"A$": "ā",
"i$": "i", "I$": "ī",
"u$": "u", "U$": "ū",
"R$": "ṛ", "RR$": "ṝ",
"lR$": "lR", //"lRR$" : "lRR",
"e$": "e", "E$": "ē", "ai$": "ai",
"o$": "o", "O$": "ō", "au$": "au",
"V$": "్",
"f": "f", "Z": "z"
};
var MalayalamTab = {
"a" : "അ", "A" : "ആ",
"i" : "ഇ", "I" : "ഈ",
"u" : "ഉ", "U" : "ഊ",
"R" : "ഋ", "RR" : "ൠ",
"lR" : "ഌ", "lRR" : "ൡ",
"e" : "എ", "E" : "ഏ", "ai" : "ഐ",
"o" : "ഒ", "O" : "ഓ", "au" : "ഔ",
"M" : "ം", "H" : "ഃ",
"k" : "ക", "kh" : "ഖ",
"g" : "ഗ", "gh" : "ഘ", "G" : "ങ",
"c" : "ച", "ch" : "ഛ",
"j" : "ജ", "jh" : "ഝ", "J" : "ഞ",
"T" : "ട", "Th" : "ഠ",
"D" : "ഡ", "Dh" : "ഢ", "N" : "ണ",
"t" : "ത", "th" : "ഥ",
"d" : "ദ", "dh" : "ധ", "n" : "ന", "nN" : "ന",
"p" : "പ", "ph" : "ഫ",
"b" : "ബ", "bh" : "ഭ", "m" : "മ",
"y" : "യ", "r" : "ര", "rR" : "റ",
"l" : "ല", "L" : "ള", "zh" : "ഴ",
"v" : "വ", "w" : "വ",
"z" : "ശ", "S" : "ഷ",
"s" : "സ", "h" : "ഹ",
"'" : "ʼ", "A$" : "ാ",
"i$" : "ി", "I$" : "ീ",
"u$" : "ു", "U$" : "ൂ",
"R$" : "ൃ", "RR$" : "ൃ",
"lR$" : "ൃ", //"lRR$" : "ൄ",
"e$" : "െ", "E$" : "േ", "ai$" : "ൈ",
"o$" : "ൊ", "O$" : "ോ", "au$" : "ൌ",
"V$" : "്",
"Z" : "ജ", "f" : "ഫ"
};
var TamilTab = {
"a" : "அ", "A" : "ஆ",
"i" : "இ", "I" : "ஈ",
"u" : "உ", "U" : "ஊ",
"R" : "ரு", "RR" : "ரூ",
"lR" : "லு", "lRR" : "லூ",
"e" : "எ", "E" : "ஏ", "ai" : "ஐ",
"o" : "ஒ", "O" : "ஓ", "au" : "ஔ",
"M" : "ம்", "H" : ":",
"k" : "க", "kh" : "க",
"g" : "க", "gh" : "க", "G" : "ங",
"c" : "ச", "ch" : "ச",
"j" : "ஜ", "jh" : "ஜ", "J" : "ஞ",
"T" : "ட", "Th" : "ட",
"D" : "ட", "Dh" : "ட", "N" : "ண",
"t" : "த", "th" : "த",
"d" : "த", "dh" : "த", "n" : "ந", "nN" : "ன",
"p" : "ப", "ph" : "ப",
"b" : "ப", "bh" : "ப", "m" : "ம",
"y" : "ய", "r" : "ர", "rR" : "ற",
"l" : "ல", "L" : "ள", "zh" : "ழ",
"v" : "வ", "w" : "வ",
"z" : "ஶ", "S" : "ஷ",
"s" : "ஸ", "h" : "ஹ",
"A$" : "ா",
"i$" : "ி", "I$" : "ீ",
"u$" : "ு", "U$" : "ூ",
"R$" : "்ரு", "RR$" : "்ரூ",
"lR$" : "்லு", //"lRR$" : "௄",
"e$" : "ெ", "E$" : "ே", "ai$" : "ை",
"o$" : "ொ", "O$" : "ோ", "au$" : "ௌ",
"V$" : "்",
"f" : "ஃப", "Z" : "ஜ"
//"zrI" : "ஸ்ரீ"
};
var TeluguTab = {
"a" : "అ", "A" : "ఆ",
"i" : "ఇ", "I" : "ఈ",
"u" : "ఉ", "U" : "ఊ",
"R" : "ఋ", "RR" : "ౠ",
"lR" : "ఌ", "lRR" : "ౡ",
"e" : "ఎ", "E" : "ఏ", "ai" : "ఐ",
"o" : "ఒ", "O" : "ఓ", "au" : "ఔ",
"M" : "ం", "H" : "ః",
"k" : "క", "kh" : "ఖ",
"g" : "గ", "gh" : "ఘ", "G" : "ఙ",
"c" : "చ", "ch" : "ఛ",
"j" : "జ", "jh" : "ఝ", "J" : "ఞ",
"T" : "ట", "Th" : "ఠ",
"D" : "డ", "Dh" : "ఢ", "N" : "ణ",
"t" : "త", "th" : "థ",
"d" : "ద", "dh" : "ధ", "n" : "న", "nN" : "న",
"p" : "ప", "ph" : "ఫ",
"b" : "బ", "bh" : "భ", "m" : "మ",
"y" : "య", "r" : "ర", "rR" : "ఱ",
"l" : "ల", "L" : "ళ", "zh" : "ళ",
"v" : "వ", "w" : "వ",
"z" : "శ", "S" : "ష",
"s" : "స", "h" : "హ",
// "a$" : "",
"A$" : "ా",
"i$" : "ి", "I$" : "ీ",
"u$" : "ు", "U$" : "ూ",
"R$" : "ృ", "RR$" : "ౄ",
"lR$" : "ౢ", //"lRR$" : "ౣ",
"e$" : "ె", "E$" : "ే", "ai$" : "ై",
"o$" : "ొ", "O$" : "ో", "au$" : "ౌ",
"V$" : "్",
"f" : "ఫ", "Z" : "జ"
};
var Tables = {
"sa" : DevanagariTab,
"en" : RomanTab,
"kn" : KannadaTab,
"ml" : MalayalamTab,
"ta" : TamilTab,
"te" : TeluguTab
};
// Removes leading whitespaces
function LTrim(value) {
var re = /\s*((\S+\s*)*)/;
return value.replace(re, "$1");
}
// Removes ending whitespaces
function RTrim(value) {
var re = /((\s*\S+)*)\s*/;
return value.replace(re, "$1");
}
// Removes leading and ending whitespaces
function trim(value) {
return LTrim(RTrim(value));
}
function isConsonant(str) {
var consonants = [
"k","kh","g","gh","G",
"c","ch","j","jh","J",
"T","Th","D","Dh","N","nN",
"t","th","d","dh","n",
"p","ph","b","bh","m",
"y","r","rR","l","L","zh","v","w",
"z","S","s","h","f","Z"];
if(str=="") return false;
for(var i=0; i < consonants.length; i++) {
if(str == consonants[i])
return true;
}
return false;
}
function isVowel(str) {
var vowels = [
"a","A","i","I","u","U",
"R","RR","lR","lRR",
"e","E","ai","o","O","au"];
if(str=="") return false;
for(var i=0; i < vowels.length; i++) {
if(vowels[i] == str)
return true;
}
return false;
}
function performTransliteration(input, lang, option) {
var i=0,j=1;
var output="", current="", previous="";
if(lang == "ta") {
var reAlveolarN = /\Bn(?=[^tdN])/gm
//var reAlveolarN = /\Bn(?=[aAiIuUReEoO]\b)|\Bn\b/gm
input = input.replace(reAlveolarN, "nN");
var reAlveolarN2 = /\Bn(?=nN)/gm
input = input.replace(reAlveolarN2, "nN");
var reNasalG = /\BM(?=[kg])/gm
input = input.replace(reNasalG, "G");
var reNasalJ = /\BM(?=[cj])/gm
input = input.replace(reNasalJ, "J");
var reNasaln = /\BM(?=[td])/gm
input = input.replace(reNasaln, "n");
//alert("Alveolar N: "+input);
/* Tamil subscripts */
var reSoft = /([gDdb][aAiIuUeEoO][iu]*)/gm
input = input.replace(reSoft, "$1<sub>3</sub>");
var reSoft2 = /([gDdb])(?=[\s])/gm
input = input.replace(reSoft2, "$1<sub>3</sub>");
var reSoft3 = /([gDdb])$/gm
input = input.replace(reSoft3, "$1<sub>3</sub>");
var reSoft4 = /([gDdb])(?=[kgGcjJTDNtdnpbmyrlvwzSsR])/gm
input = input.replace(reSoft4, "$1<sub>3</sub>");
var reSoftAsp = /([gDdb]h[aAiIuUeEoO]*[iu]*)/gm
input = input.replace(reSoftAsp, "$1<sub>4</sub>");
var reHardAsp = /([kcTtp]h[aAiIuUeEoO]*[iu]*)/gm
input = input.replace(reHardAsp, "$1<sub>2</sub>");
}
else if(option != "strict" && (lang == "kn" || lang == "te")) {
var reNasals = /(\BG(?=[^GJNnmaAiIuUReEoO]\B))|(\BJ(?=[^GJNnmaAiIuUReEoO]\B))|(\BN(?=[^GJNnmaAiIuUReEoO]\B))|(\Bn(?=[^nmNyraAiIuUReEoO]\B))|\Bm(?=[^nmyraAiIuUReEoO])|\Bm\b/gm
input = input.replace(reNasals, "M");
}
else if(option != "strict" && lang == "ml") {
var endM = /\Bm\b/gm
input = input.replace(endM, "M");
}
else if(option != "strict" && lang == "sa") {
var reNasalG = /\BG(?=[^aAiIuUReEoO])\B/gm
input = input.replace(reNasalG, "M");
}
//input = trim(input);
var inputlen = input.length;
var tab = Tables[lang];
// alert("\nLength of input '"+input+"' = "+input.length);
do
{
current="";
//1. Parse and tokenise: Find the biggest substring found in the hash table
if((i+3) >= input.length) j = input.length - i;
else j = 3;
//document.write("Value of j = "+j);
// alert("Looking for '"+input.substr(i,j)+"'");
for(;j>0;j--) {
var substr = input.substr(i,j);
//document.write(j+" '"+substr+"':"+tab[substr]);
if(tab[substr]!= undefined) {
// Check if avagraha or quote.
if(substr == "'") {
if((previous == "") || (i+j == input.length))
break;
if(!isVowel(input[i+1]) && !isConsonant(input[i+1]))
break;
}
current = input.substr(i,j);
break;
}
}
if(current=="") { //No match.
j = 1;
if(input.substr(i,j) == "<") {
do {
j++;
} while(input.substr(i+j-1,1)!=">" && (i+j) < inputlen);
}
//alert("No match for '"+input.substr(i,j)+"'. j = "+j);
}
//2. Match with syntax and take appropriate action
//alert("\nCurrent substring: "+current);
if(lang == "en") {
if(current) output += tab[current];
else output += input.substr(i,j);
}
else if(isConsonant(previous) && isVowel(current)) { //CV
//alert("CV: "+previous+current);
if(current != "a") output += tab[current+"$"]; //Abugida
}
else if(isConsonant(previous)) { //CC or C*
//document.write("CC or C*");
output+=tab["V$"];
if (current != "") output += tab[current];
else output += input.substr(i,j);
}
else if(current != "")
output+= tab[current];
else
output += input.substr(i,j);
previous = current; i+=j;
//alert("i="+i+" j="+j+". Input len ="+input.length+" i+j="+(i+j)+"condition: "+((i+j) <= (inputlen)));
}
while((i) < (inputlen));
if(lang != "en" && isConsonant(previous))
output+=tab["V$"];
if (lang == "en") output = "<span style='font-family: tahoma'>"+output+"</span>";
else if(lang == "ml") output = "<span style='font-size: 110%'>"+output+"</span>";
//else if(lang == "te" ) output = "<span style='font-size: 130%'>"+output+"</span>";
else if(lang == "kn" || lang == "sa") output = "<span style='font-size: 110%'>"+output+"</span>";
//alert("\nThe result is "+output);
return output;
}
function transliterate(input, lang, option) {
var resTags = /(<[^<]+>)/;
var output = "";
var strings = input.split(resTags);
for (var x=0; x < strings.length; x++) {
if(strings[x].match(resTags)) {
output += strings[x];
}
else {
var curOutput = performTransliteration(strings[x], lang, option);
if (curOutput != null) output+=curOutput;
}
}
//alert("Complete Output"+output);
return output;
}
function walkLipiElements(n, scriptChoice) {
if (n.nodeType == 1) { // Check if n is an Element
var val = n.getAttribute("lipi");
if (val != null) { // Check if n is an Element
if (!doneonce) {
n.lipi = -1;
n.lipi = origText.push(n.innerHTML) - 1;
}
var txt = origText[n.lipi];
n.innerHTML = transliterate(txt, scriptChoice, val);
return;
}
var children = n.childNodes;
for(var i=0; i < children.length; i++) {
// Recurse on each one
walkLipiElements(children[i], scriptChoice);
}
}
}
function translipi() {
/* Read the cookie and trigger the transliteration. */
//alert(document.getElementById("frmTranslipi"));
// alert(document.getElementById("cbScriptChoice").value);
var scriptFromCookie = readCookie("lipiChosen");
if (scriptFromCookie != null) {
scriptChoice = scriptFromCookie;
} else {
scriptChoice = "en";
}
document.getElementById("cbScriptChoice").value =scriptChoice;
walkLipiElements(document.body, scriptChoice);
doneonce = true;
}
function storeLipiChoice() {
scriptChoice = document.getElementById("cbScriptChoice").value;
createCookie("lipiChosen", scriptChoice, 1);
translipi();
}
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var location = document.cookie.indexOf(nameEQ);
if(location == -1) return null;
var lipi=document.cookie.substr(location+nameEQ.length, 2);
return lipi;
}
$(translipi);
var linktxt = {"true": "Show Details", "false": "Hide Details"};
var styletxt = {"true": "block", "false": "none"};
function handleStanzaDetails(which) {
var len = which.parentNode.childNodes.length;
var displaydetails = !!which.name;
for (var i=0; i<which.parentNode.childNodes.length; i++){
var elem = which.parentNode.childNodes[i];
if(elem.id == null) continue;
if (elem.id == "divDetailed") {
elem.style.display = styletxt[displaydetails];
//alert("display: "+elem.innerHTML);
}
else if(elem.id == "divOriginal")
elem.style.display=styletxt[!displaydetails];
if(displaydetails) which.name = "";
else which.name="true";
which.innerHTML = linktxt[!displaydetails];
}
}