सदस्यः: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];
	}
}
"https://sa.wikisource.org/w/index.php?title=सदस्यः:Bodhisattwa/common.js&oldid=301710" इत्यस्माद् प्रतिप्राप्तम्