సభ్యుడు:Mpradeep/padma.js
వికీపీడియా నుండి
గమనిక: భద్రపరచిన తరువాత, మార్పులను చూడాలంటేమీ బ్రౌజరు కాషె ను తప్పించవలసి రావచ్చు. మొజిల్లా/ ఫైర్ఫాక్స్/ సఫారి: shift కీని నొక్కి పెట్టి Reload నొక్కండి, లేదా Ctrl-shift-R నొక్కండి (యాపుల్ మాక్ లో Cmd-shift-R); IE: Ctrl నొక్కి పెట్టి, Refresh నొక్కండి, లేదా Ctrl-F5 నొక్కండి; కాంకరర్:: Reload మీట నొక్కండి, లేదా F5 నొక్కండి; ఒపేరా ను వాడే వారు Tools→Preferences కు వెళ్ళి కాషె ను పూర్తిగా తీసివేయ వలసి ఉంటుంది.
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Initial Developer of the Original Code is Nagarjuna Venna.
* Portions created by the Initial Developer are Copyright (C) 2005
* by the Initial Developer. All Rights Reserved.
*
* Contributor(s): Nagarjuna Venna <vnagarjuna@yahoo.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
//Unicode
//Various Signs
var Unicode_candrabindu = "\u0C01";
var Unicode_anusvara = "\u0C02"; //sunna
var Unicode_visarga = "\u0C03";
//Independent Vowels
var Unicode_letter_A = "\u0C05";
var Unicode_letter_AA = "\u0C06";
var Unicode_letter_I = "\u0C07";
var Unicode_letter_II = "\u0C08";
var Unicode_letter_U = "\u0C09";
var Unicode_letter_UU = "\u0C0A";
var Unicode_letter_R = "\u0C0B"; //vocalic R
var Unicode_letter_RR = "\u0C60"; //vocalic R
var Unicode_letter_L = "\u0C0C"; //vocalic L
var Unicode_letter_LL = "\u0C61"; //vocalic L
var Unicode_letter_E = "\u0C0E";
var Unicode_letter_EE = "\u0C0F";
var Unicode_letter_AI = "\u0C10";
var Unicode_letter_O = "\u0C12";
var Unicode_letter_OO = "\u0C13";
var Unicode_letter_AU = "\u0C14";
//Consonants
var Unicode_letter_KA = "\u0C15";
var Unicode_letter_KHA = "\u0C16";
var Unicode_letter_GA = "\u0C17";
var Unicode_letter_GHA = "\u0C18";
var Unicode_letter_NGA = "\u0C19";
var Unicode_letter_CA = "\u0C1A";
var Unicode_letter_CHA = "\u0C1B";
var Unicode_letter_JA = "\u0C1C";
var Unicode_letter_JHA = "\u0C1D";
var Unicode_letter_NYA = "\u0C1E";
var Unicode_letter_TTA = "\u0C1F";
var Unicode_letter_TTHA = "\u0C20";
var Unicode_letter_DDA = "\u0C21";
var Unicode_letter_DDHA = "\u0C22";
var Unicode_letter_NNA = "\u0C23";
var Unicode_letter_TA = "\u0C24";
var Unicode_letter_THA = "\u0C25";
var Unicode_letter_DA = "\u0C26";
var Unicode_letter_DHA = "\u0C27";
var Unicode_letter_NA = "\u0C28";
var Unicode_letter_PA = "\u0C2A";
var Unicode_letter_PHA = "\u0C2B";
var Unicode_letter_BA = "\u0C2C";
var Unicode_letter_BHA = "\u0C2D";
var Unicode_letter_MA = "\u0C2E";
var Unicode_letter_YA = "\u0C2F";
var Unicode_letter_RA = "\u0C30";
var Unicode_letter_RRA = "\u0C31";
var Unicode_letter_LA = "\u0C32";
var Unicode_letter_LLA = "\u0C33";
var Unicode_letter_VA = "\u0C35";
var Unicode_letter_SHA = "\u0C36";
var Unicode_letter_SSA = "\u0C37";
var Unicode_letter_SA = "\u0C38";
var Unicode_letter_HA = "\u0C39";
//Dependent Vowel Signs
var Unicode_vowelsn_AA = "\u0C3E";
var Unicode_vowelsn_I = "\u0C3F";
var Unicode_vowelsn_II = "\u0C40";
var Unicode_vowelsn_U = "\u0C41";
var Unicode_vowelsn_UU = "\u0C42";
var Unicode_vowelsn_R = "\u0C43";
var Unicode_vowelsn_RR = "\u0C44";
var Unicode_vowelsn_E = "\u0C46";
var Unicode_vowelsn_EE = "\u0C47";
var Unicode_vowelsn_AI = "\u0C48"; //this is the same as 0C46 followed by 0C56
var Unicode_vowelsn_O = "\u0C4A";
var Unicode_vowelsn_OO = "\u0C4B";
var Unicode_vowelsn_AU = "\u0C4C";
//Miscellaneous Signs
var Unicode_misc_VIRAMA = "\u0C4D"; //halant
var Unicode_misc_LENGTH = "\u0C55";
var Unicode_misc_AILEN = "\u0C56";
var Unicode_misc_AVAGRAHA = "\u093D";
var Unicode_misc_NUKTA = "\u093C";
//Ligatures
var Unicode_ligature_KSH = "\u0C15\u0C37";
//nukt
var Unicode_nukt_TCH = "\u0C1A\u093C\u0C4D";
var Unicode_nukt_TJ = "\u0C1C\u093C\u0C4d";
//Miscellaneous
var Unicode_conjuct_JNY = "\u0C1C\u0C1E";
var Unicode_conjuct_DDDD = "\u0C21\u0C21";
var Unicode_conjuct_TTTT = "\u0C1F\u0C1F";
//Digits
var Unicode_digit_ZERO = "\u0C66";
var Unicode_digit_ONE = "\u0C67";
var Unicode_digit_TWO = "\u0C68";
var Unicode_digit_THREE = "\u0C69";
var Unicode_digit_FOUR = "\u0C6A";
var Unicode_digit_FIVE = "\u0C6B";
var Unicode_digit_SIX = "\u0C6C";
var Unicode_digit_SEVEN = "\u0C6D";
var Unicode_digit_EIGHT = "\u0C6E";
var Unicode_digit_NINE = "\u0C6F";
//Zero-Width Joiner/Non Joiner for Virama
var Unicode_misc_ZWNJ = "\u200C";
var Unicode_misc_ZWJ = "\u200D";
var Unicode_independentVowels = new Array();
var Unicode_vowelMap = new Array();
Unicode_independentVowels[Unicode_letter_A] = 1;
Unicode_independentVowels[Unicode_letter_AA] = 1;
Unicode_independentVowels[Unicode_letter_I] = 1;
Unicode_independentVowels[Unicode_letter_II] = 1;
Unicode_independentVowels[Unicode_letter_U] = 1;
Unicode_independentVowels[Unicode_letter_UU] = 1;
Unicode_independentVowels[Unicode_letter_R] = 1;
Unicode_independentVowels[Unicode_letter_RR] = 1;
Unicode_independentVowels[Unicode_letter_L] = 1;
Unicode_independentVowels[Unicode_letter_LL] = 1;
Unicode_independentVowels[Unicode_letter_E] = 1;
Unicode_independentVowels[Unicode_letter_EE] = 1;
Unicode_independentVowels[Unicode_letter_AI] = 1;
Unicode_independentVowels[Unicode_letter_O] = 1;
Unicode_independentVowels[Unicode_letter_OO] = 1;
Unicode_independentVowels[Unicode_letter_AU] = 1;
Unicode_vowelMap[Unicode_letter_AA] = Unicode_vowelsn_AA;
Unicode_vowelMap[Unicode_letter_I] = Unicode_vowelsn_I;
Unicode_vowelMap[Unicode_letter_II] = Unicode_vowelsn_II;
Unicode_vowelMap[Unicode_letter_U] = Unicode_vowelsn_U;
Unicode_vowelMap[Unicode_letter_UU] = Unicode_vowelsn_UU;
Unicode_vowelMap[Unicode_letter_R] = Unicode_vowelsn_R;
Unicode_vowelMap[Unicode_letter_RR] = Unicode_vowelsn_RR;
Unicode_vowelMap[Unicode_letter_E] = Unicode_vowelsn_E;
Unicode_vowelMap[Unicode_letter_EE] = Unicode_vowelsn_EE;
Unicode_vowelMap[Unicode_letter_AI] = Unicode_vowelsn_AI;
Unicode_vowelMap[Unicode_letter_O] = Unicode_vowelsn_O;
Unicode_vowelMap[Unicode_letter_OO] = Unicode_vowelsn_OO;
Unicode_vowelMap[Unicode_letter_AU] = Unicode_vowelsn_AU;
function Unicode_isInherentVowel(str)
{
return str == Unicode_letter_A;
}
function Unicode_isVirama(str)
{
return str == Unicode_misc_VIRAMA;
}
function Unicode_getDependentVowel(str)
{
return Unicode_vowelMap[str];
}
//RTS
var RTS_maxLookupLen = 3;
var RTS_candrabindu_1 = "@M"; //arasunna
var RTS_candrabindu_2 = "@m";
var RTS_visarga_1 = "@h";
var RTS_visarga_2 = "@H";
var RTS_virama_1 = "^";
var RTS_virama_2 = "@n"; //nakarapollu what is this?
var RTS_virama_3 = "@N";
var RTS_avagraha = "@2";
//all the sunnas
var RTS_anusvara_1 = "M"; //sunna, non standard but supported by raMgavallika
var RTS_anusvara_2 = "nk";
var RTS_anusvara_3 = "nK";
var RTS_anusvara_4 = "ng";
var RTS_anusvara_5 = "nG";
var RTS_anusvara_6 = "nc";
var RTS_anusvara_7 = "nC";
var RTS_anusvara_8 = "nj";
var RTS_anusvara_9 = "nJ";
var RTS_anusvara_10 = "nT";
var RTS_anusvara_11 = "nD";
var RTS_anusvara_12 = "nt";
var RTS_anusvara_13 = "nd";
//var RTS_anusvara_14 = "np";
//var RTS_anusvara_15 = "nP";
var RTS_anusvara_16 = "nb";
var RTS_anusvara_17 = "nB";
//var RTS_anusvara_18 = "nl";
//var RTS_anusvara_19 = "nL";
//var RTS_anusvara_20 = "ns";
//var RTS_anusvara_21 = "nS";
//var RTS_anusvara_22 = "nh";
//var RTS_anusvara_23 = "nH";
//var RTS_anusvara_24 = "nv";
var RTS_anusvara_25 = "mk";
var RTS_anusvara_26 = "mK";
var RTS_anusvara_27 = "mg";
var RTS_anusvara_28 = "mG";
var RTS_anusvara_29 = "mc";
var RTS_anusvara_30 = "mC";
var RTS_anusvara_31 = "mj";
var RTS_anusvara_32 = "mJ";
var RTS_anusvara_33 = "mT";
var RTS_anusvara_34 = "mD";
var RTS_anusvara_35 = "mt";
var RTS_anusvara_36 = "md";
var RTS_anusvara_37 = "mp";
var RTS_anusvara_38 = "mP";
var RTS_anusvara_39 = "mb";
var RTS_anusvara_40 = "mB";
var RTS_anusvara_41 = "ml";
var RTS_anusvara_42 = "mL";
var RTS_anusvara_43 = "ms";
var RTS_anusvara_44 = "mS";
var RTS_anusvara_45 = "mh";
var RTS_anusvara_46 = "mH";
var RTS_anusvara_47 = "mv";
var RTS_anusvara_48 = "mV";
var RTS_anusvara_49 = "mw";
var RTS_anusvara_50 = "mW";
//Vowels
var RTS_vowel_A = "a";
var RTS_vowel_AA_1 = "aa";
var RTS_vowel_AA_2 = "A";
var RTS_vowel_AA_3 = "a'";
var RTS_vowel_AA_4 = "aaa";
var RTS_vowel_I = "i";
var RTS_vowel_II_1 = "ee";
var RTS_vowel_II_2 = "ii";
var RTS_vowel_II_3 = "I";
var RTS_vowel_II_4 = "i'";
var RTS_vowel_II_5 = "ia";
var RTS_vowel_U = "u";
var RTS_vowel_UU_1 = "uu";
var RTS_vowel_UU_2 = "oo";
var RTS_vowel_UU_3 = "U";
var RTS_vowel_UU_4 = "u'";
var RTS_vowel_UU_5 = "ua";
var RTS_vowel_R_1 = "R";
var RTS_vowel_R_2 = "r'";
var RTS_vowel_RR_1 = "RU";
var RTS_vowel_RR_2 = "r'u";
var RTS_vowel_L = "~l";
var RTS_vowel_LL = "~L";
var RTS_vowel_E = "e";
var RTS_vowel_EE_1 = "ae";
var RTS_vowel_EE_2 = "E";
var RTS_vowel_EE_3 = "e'";
var RTS_vowel_EE_4 = "ea";
var RTS_vowel_AI_1 = "ai";
var RTS_vowel_AI_2 = "ei";
var RTS_vowel_O = "o";
var RTS_vowel_OO_1 = "O";
var RTS_vowel_OO_2 = "oe";
var RTS_vowel_OO_3 = "oa";
var RTS_vowel_OO_4 = "o'";
var RTS_vowel_AU_1 = "au";
var RTS_vowel_AU_2 = "ou";
var RTS_vowel_AU_3 = "ow";
//Consonants
var RTS_consnt_KA = "k";
var RTS_consnt_KHA_1 = "kh";
var RTS_consnt_KHA_2 = "kH";
var RTS_consnt_KHA_3 = "K";
var RTS_consnt_KHA_4 = "Kh";
var RTS_consnt_KHA_5 = "KH";
var RTS_consnt_GA = "g";
var RTS_consnt_GHA_1 = "gh";
var RTS_consnt_GHA_2 = "gH";
var RTS_consnt_GHA_3 = "G";
var RTS_consnt_GHA_4 = "Gh";
var RTS_consnt_GHA_5 = "GH";
var RTS_consnt_NGA = "~m";
var RTS_consnt_CA_1 = "c";
var RTS_consnt_CA_2 = "ch";
var RTS_consnt_CA_3 = "cH";
var RTS_consnt_CHA_1 = "C";
var RTS_consnt_CHA_2 = "Ch";
var RTS_consnt_CHA_3 = "c'";
var RTS_consnt_CHA_4 = "CH";
var RTS_consnt_JA_1 = "j";
var RTS_consnt_JA_2 = "z";
var RTS_consnt_JHA_1 = "jh";
var RTS_consnt_JHA_2 = "jH";
var RTS_consnt_JHA_3 = "J";
var RTS_consnt_JHA_4 = "Jh";
var RTS_consnt_JHA_5 = "JH";
var RTS_consnt_NYA = "~n";
var RTS_consnt_TTA_1 = "t'";
var RTS_consnt_TTA_2 = "T";
var RTS_consnt_TTHA_1 = "t'h";
var RTS_consnt_TTHA_2 = "t'H";
var RTS_consnt_TTHA_3 = "Th";
var RTS_consnt_TTHA_4 = "TH";
var RTS_consnt_TTHA_5 = "th'";
var RTS_consnt_TTHA_6 = "tH'";
var RTS_consnt_DDA_1 = "d'";
var RTS_consnt_DDA_2 = "D";
var RTS_consnt_DDHA_1 = "dh'";
var RTS_consnt_DDHA_2 = "Dh";
var RTS_consnt_DDHA_3 = "DH";
var RTS_consnt_DDHA_4 = "dH'";
var RTS_consnt_NNA_1 = "N";
var RTS_consnt_NNA_2 = "Nh";
var RTS_consnt_NNA_3 = "NH";
var RTS_consnt_NNA_4 = "n'";
var RTS_consnt_NNA_5 = "nh";
var RTS_consnt_NNA_6 = "nH";
var RTS_consnt_TA = "t";
var RTS_consnt_THA_1 = "th";
var RTS_consnt_THA_2 = "tH";
var RTS_consnt_DA = "d";
var RTS_consnt_DHA_1 = "dh";
var RTS_consnt_DHA_2 = "dH";
var RTS_consnt_NA_1 = "n";
var RTS_consnt_NA_2 = "n&";
var RTS_consnt_PA = "p";
var RTS_consnt_PHA_1 = "ph";
var RTS_consnt_PHA_2 = "pH";
var RTS_consnt_PHA_3 = "f";
var RTS_consnt_PHA_4 = "P";
var RTS_consnt_PHA_5 = "Ph";
var RTS_consnt_PHA_6 = "PH";
var RTS_consnt_BA = "b";
var RTS_consnt_BHA_1 = "bh";
var RTS_consnt_BHA_2 = "bH";
var RTS_consnt_BHA_3 = "B";
var RTS_consnt_BHA_4 = "Bh";
var RTS_consnt_BHA_5 = "BH";
var RTS_consnt_MA_1 = "m";
var RTS_consnt_MA_2 = "m&";
var RTS_consnt_YA = "y";
var RTS_consnt_RA = "r";
var RTS_consnt_LA = "l";
var RTS_consnt_VA_1 = "v";
var RTS_consnt_VA_2 = "w";
var RTS_consnt_VA_3 = "V";
var RTS_consnt_VA_4 = "W";
var RTS_consnt_SHA_1 = "S";
var RTS_consnt_SHA_2 = "s'";
var RTS_consnt_SSA_1 = "sh";
var RTS_consnt_SSA_2 = "sH";
var RTS_consnt_SSA_3 = "Sh";
var RTS_consnt_SSA_4 = "SH";
var RTS_consnt_SA = "s";
var RTS_consnt_HA_1 = "h";
var RTS_consnt_HA_2 = "H";
var RTS_consnt_LLA_1 = "L";
var RTS_consnt_LLA_2 = "l'";
var RTS_consnt_LLA_3 = "Lh";
var RTS_consnt_LLA_4 = "lh";
var RTS_consnt_LLA_5 = "lH";
var RTS_consnt_LLA_6 = "LH";
var RTS_consnt_RRA_1 = "~r";
var RTS_consnt_RRA_2 = "r''";
var RTS_consnt_KSH = "x"; //ksh is automatically handled
//extinct consonants
var RTS_consnt_TCH = "~c";
var RTS_consnt_TJ = "~j";
//equivalents
var RTS_misc_JN = "jn";
var RTS_misc_DDD = "dd'";
var RTS_misc_TTT = "tt'";
//digits
var RTS_digit_ZERO = "~0";
var RTS_digit_ONE = "~1";
var RTS_digit_TWO = "~2";
var RTS_digit_THREE = "~3";
var RTS_digit_FOUR = "~4";
var RTS_digit_FIVE = "~5";
var RTS_digit_SIX = "~6";
var RTS_digit_SEVEN = "~7";
var RTS_digit_EIGHT = "~8";
var RTS_digit_NINE = "~9";
var RTS_toUnicode = new Array();
var RTS_vowels = new Array();
var RTS_specials = new Array();
var RTS_anusvaras = new Array();
var RTS_digits = new Array();
RTS_toUnicode[RTS_candrabindu_1] = Unicode_candrabindu;
RTS_toUnicode[RTS_candrabindu_2] = Unicode_candrabindu;
RTS_toUnicode[RTS_visarga_1] = Unicode_visarga;
RTS_toUnicode[RTS_visarga_2] = Unicode_visarga;
RTS_toUnicode[RTS_virama_1] = Unicode_misc_VIRAMA;
RTS_toUnicode[RTS_virama_2] = Unicode_misc_VIRAMA;
RTS_toUnicode[RTS_virama_3] = Unicode_misc_VIRAMA;
RTS_toUnicode[RTS_avagraha] = Unicode_misc_AVAGRAHA;
RTS_toUnicode[RTS_anusvara_1] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_2] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_3] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_4] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_5] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_6] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_7] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_8] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_9] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_10] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_11] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_12] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_13] = Unicode_anusvara;
//RTS_toUnicode[RTS_anusvara_14] = Unicode_anusvara;
//RTS_toUnicode[RTS_anusvara_15] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_16] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_17] = Unicode_anusvara;
//RTS_toUnicode[RTS_anusvara_18] = Unicode_anusvara;
//RTS_toUnicode[RTS_anusvara_19] = Unicode_anusvara;
//RTS_toUnicode[RTS_anusvara_20] = Unicode_anusvara;
//RTS_toUnicode[RTS_anusvara_21] = Unicode_anusvara;
//RTS_toUnicode[RTS_anusvara_22] = Unicode_anusvara;
//RTS_toUnicode[RTS_anusvara_23] = Unicode_anusvara;
//RTS_toUnicode[RTS_anusvara_24] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_25] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_26] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_27] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_28] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_29] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_30] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_31] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_32] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_33] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_34] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_35] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_36] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_37] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_38] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_39] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_40] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_41] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_42] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_43] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_44] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_45] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_46] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_47] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_48] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_49] = Unicode_anusvara;
RTS_toUnicode[RTS_anusvara_50] = Unicode_anusvara;
RTS_specials[RTS_candrabindu_1] = 1;
RTS_specials[RTS_candrabindu_2] = 1;
RTS_specials[RTS_visarga_1] = 1;
RTS_specials[RTS_visarga_2] = 1;
RTS_specials[RTS_virama_1] = 1;
RTS_specials[RTS_virama_2] = 1;
RTS_specials[RTS_virama_3] = 1;
RTS_specials[RTS_avagraha] = 1;
RTS_specials[RTS_anusvara_1] = 1;
RTS_anusvaras[RTS_anusvara_2] = 1;
RTS_anusvaras[RTS_anusvara_3] = 1;
RTS_anusvaras[RTS_anusvara_4] = 1;
RTS_anusvaras[RTS_anusvara_5] = 1;
RTS_anusvaras[RTS_anusvara_6] = 1;
RTS_anusvaras[RTS_anusvara_7] = 1;
RTS_anusvaras[RTS_anusvara_8] = 1;
RTS_anusvaras[RTS_anusvara_9] = 1;
RTS_anusvaras[RTS_anusvara_10] = 1;
RTS_anusvaras[RTS_anusvara_11] = 1;
RTS_anusvaras[RTS_anusvara_12] = 1;
RTS_anusvaras[RTS_anusvara_13] = 1;
//RTS_anusvaras[RTS_anusvara_14] = 1;
//RTS_anusvaras[RTS_anusvara_15] = 1;
RTS_anusvaras[RTS_anusvara_16] = 1;
RTS_anusvaras[RTS_anusvara_17] = 1;
//RTS_anusvaras[RTS_anusvara_18] = 1;
//RTS_anusvaras[RTS_anusvara_19] = 1;
//RTS_anusvaras[RTS_anusvara_20] = 1;
//RTS_anusvaras[RTS_anusvara_21] = 1;
//RTS_anusvaras[RTS_anusvara_22] = 1;
//RTS_anusvaras[RTS_anusvara_23] = 1;
//RTS_anusvaras[RTS_anusvara_24] = 1;
RTS_anusvaras[RTS_anusvara_25] = 1;
RTS_anusvaras[RTS_anusvara_26] = 1;
RTS_anusvaras[RTS_anusvara_27] = 1;
RTS_anusvaras[RTS_anusvara_28] = 1;
RTS_anusvaras[RTS_anusvara_29] = 1;
RTS_anusvaras[RTS_anusvara_30] = 1;
RTS_anusvaras[RTS_anusvara_31] = 1;
RTS_anusvaras[RTS_anusvara_32] = 1;
RTS_anusvaras[RTS_anusvara_33] = 1;
RTS_anusvaras[RTS_anusvara_34] = 1;
RTS_anusvaras[RTS_anusvara_35] = 1;
RTS_anusvaras[RTS_anusvara_36] = 1;
RTS_anusvaras[RTS_anusvara_37] = 1;
RTS_anusvaras[RTS_anusvara_38] = 1;
RTS_anusvaras[RTS_anusvara_39] = 1;
RTS_anusvaras[RTS_anusvara_40] = 1;
RTS_anusvaras[RTS_anusvara_41] = 1;
RTS_anusvaras[RTS_anusvara_42] = 1;
RTS_anusvaras[RTS_anusvara_43] = 1;
RTS_anusvaras[RTS_anusvara_44] = 1;
RTS_anusvaras[RTS_anusvara_45] = 1;
RTS_anusvaras[RTS_anusvara_46] = 1;
RTS_anusvaras[RTS_anusvara_47] = 1;
RTS_anusvaras[RTS_anusvara_48] = 1;
RTS_anusvaras[RTS_anusvara_49] = 1;
RTS_anusvaras[RTS_anusvara_50] = 1;
RTS_toUnicode[RTS_vowel_A] = Unicode_letter_A;
RTS_toUnicode[RTS_vowel_AA_1] = Unicode_letter_AA;
RTS_toUnicode[RTS_vowel_AA_2] = Unicode_letter_AA;
RTS_toUnicode[RTS_vowel_AA_3] = Unicode_letter_AA;
RTS_toUnicode[RTS_vowel_AA_4] = Unicode_letter_AA;
RTS_toUnicode[RTS_vowel_I] = Unicode_letter_I;
RTS_toUnicode[RTS_vowel_II_1] = Unicode_letter_II;
RTS_toUnicode[RTS_vowel_II_2] = Unicode_letter_II;
RTS_toUnicode[RTS_vowel_II_3] = Unicode_letter_II;
RTS_toUnicode[RTS_vowel_II_4] = Unicode_letter_II;
RTS_toUnicode[RTS_vowel_II_5] = Unicode_letter_II;
RTS_toUnicode[RTS_vowel_U] = Unicode_letter_U;
RTS_toUnicode[RTS_vowel_UU_1] = Unicode_letter_UU;
RTS_toUnicode[RTS_vowel_UU_2] = Unicode_letter_UU;
RTS_toUnicode[RTS_vowel_UU_3] = Unicode_letter_UU;
RTS_toUnicode[RTS_vowel_UU_4] = Unicode_letter_UU;
RTS_toUnicode[RTS_vowel_UU_5] = Unicode_letter_UU;
RTS_toUnicode[RTS_vowel_R_1] = Unicode_letter_R;
RTS_toUnicode[RTS_vowel_R_2] = Unicode_letter_R;
RTS_toUnicode[RTS_vowel_RR_1] = Unicode_letter_RR;
RTS_toUnicode[RTS_vowel_RR_2] = Unicode_letter_RR;
RTS_toUnicode[RTS_vowel_L] = Unicode_letter_L;
RTS_toUnicode[RTS_vowel_LL] = Unicode_letter_LL;
RTS_toUnicode[RTS_vowel_E] = Unicode_letter_E;
RTS_toUnicode[RTS_vowel_EE_1] = Unicode_letter_EE;
RTS_toUnicode[RTS_vowel_EE_2] = Unicode_letter_EE;
RTS_toUnicode[RTS_vowel_EE_3] = Unicode_letter_EE;
RTS_toUnicode[RTS_vowel_EE_4] = Unicode_letter_EE;
RTS_toUnicode[RTS_vowel_AI_1] = Unicode_letter_AI;
RTS_toUnicode[RTS_vowel_AI_2] = Unicode_letter_AI;
RTS_toUnicode[RTS_vowel_O] = Unicode_letter_O;
RTS_toUnicode[RTS_vowel_OO_1] = Unicode_letter_OO;
RTS_toUnicode[RTS_vowel_OO_2] = Unicode_letter_OO;
RTS_toUnicode[RTS_vowel_OO_3] = Unicode_letter_OO;
RTS_toUnicode[RTS_vowel_OO_4] = Unicode_letter_OO;
RTS_toUnicode[RTS_vowel_AU_1] = Unicode_letter_AU;
RTS_toUnicode[RTS_vowel_AU_2] = Unicode_letter_AU;
RTS_toUnicode[RTS_vowel_AU_3] = Unicode_letter_AU;
RTS_vowels[RTS_vowel_A] = 1;
RTS_vowels[RTS_vowel_AA_1] = 1;
RTS_vowels[RTS_vowel_AA_2] = 1;
RTS_vowels[RTS_vowel_AA_3] = 1;
RTS_vowels[RTS_vowel_AA_4] = 1;
RTS_vowels[RTS_vowel_I] = 1;
RTS_vowels[RTS_vowel_II_1] = 1;
RTS_vowels[RTS_vowel_II_2] = 1;
RTS_vowels[RTS_vowel_II_3] = 1;
RTS_vowels[RTS_vowel_II_4] = 1;
RTS_vowels[RTS_vowel_II_5] = 1;
RTS_vowels[RTS_vowel_U] = 1;
RTS_vowels[RTS_vowel_UU_1] = 1;
RTS_vowels[RTS_vowel_UU_2] = 1;
RTS_vowels[RTS_vowel_UU_3] = 1;
RTS_vowels[RTS_vowel_UU_4] = 1;
RTS_vowels[RTS_vowel_UU_5] = 1;
RTS_vowels[RTS_vowel_R_1] = 1;
RTS_vowels[RTS_vowel_R_2] = 1;
RTS_vowels[RTS_vowel_RR_1] = 1;
RTS_vowels[RTS_vowel_RR_2] = 1;
RTS_vowels[RTS_vowel_L] = 1;
RTS_vowels[RTS_vowel_LL] = 1;
RTS_vowels[RTS_vowel_E] = 1;
RTS_vowels[RTS_vowel_EE_1] = 1;
RTS_vowels[RTS_vowel_EE_2] = 1;
RTS_vowels[RTS_vowel_EE_3] = 1;
RTS_vowels[RTS_vowel_EE_4] = 1;
RTS_vowels[RTS_vowel_AI_1] = 1;
RTS_vowels[RTS_vowel_AI_2] = 1;
RTS_vowels[RTS_vowel_O] = 1;
RTS_vowels[RTS_vowel_OO_1] = 1;
RTS_vowels[RTS_vowel_OO_2] = 1;
RTS_vowels[RTS_vowel_OO_3] = 1;
RTS_vowels[RTS_vowel_OO_4] = 1;
RTS_vowels[RTS_vowel_AU_1] = 1;
RTS_vowels[RTS_vowel_AU_2] = 1;
RTS_vowels[RTS_vowel_AU_3] = 1;
RTS_toUnicode[RTS_consnt_KA] = Unicode_letter_KA;
RTS_toUnicode[RTS_consnt_KHA_1] = Unicode_letter_KHA;
RTS_toUnicode[RTS_consnt_KHA_2] = Unicode_letter_KHA;
RTS_toUnicode[RTS_consnt_KHA_3] = Unicode_letter_KHA;
RTS_toUnicode[RTS_consnt_KHA_4] = Unicode_letter_KHA;
RTS_toUnicode[RTS_consnt_KHA_5] = Unicode_letter_KHA;
RTS_toUnicode[RTS_consnt_GA] = Unicode_letter_GA;
RTS_toUnicode[RTS_consnt_GHA_1] = Unicode_letter_GHA;
RTS_toUnicode[RTS_consnt_GHA_2] = Unicode_letter_GHA;
RTS_toUnicode[RTS_consnt_GHA_3] = Unicode_letter_GHA;
RTS_toUnicode[RTS_consnt_GHA_4] = Unicode_letter_GHA;
RTS_toUnicode[RTS_consnt_GHA_5] = Unicode_letter_GHA;
RTS_toUnicode[RTS_consnt_NGA] = Unicode_letter_NGA;
RTS_toUnicode[RTS_consnt_CA_1] = Unicode_letter_CA;
RTS_toUnicode[RTS_consnt_CA_2] = Unicode_letter_CA;
RTS_toUnicode[RTS_consnt_CA_3] = Unicode_letter_CA;
RTS_toUnicode[RTS_consnt_CHA_1] = Unicode_letter_CHA;
RTS_toUnicode[RTS_consnt_CHA_2] = Unicode_letter_CHA;
RTS_toUnicode[RTS_consnt_CHA_3] = Unicode_letter_CHA;
RTS_toUnicode[RTS_consnt_CHA_4] = Unicode_letter_CHA;
RTS_toUnicode[RTS_consnt_JA_1] = Unicode_letter_JA;
RTS_toUnicode[RTS_consnt_JA_2] = Unicode_letter_JA;
RTS_toUnicode[RTS_consnt_JHA_1] = Unicode_letter_JHA;
RTS_toUnicode[RTS_consnt_JHA_2] = Unicode_letter_JHA;
RTS_toUnicode[RTS_consnt_JHA_3] = Unicode_letter_JHA;
RTS_toUnicode[RTS_consnt_JHA_4] = Unicode_letter_JHA;
RTS_toUnicode[RTS_consnt_JHA_5] = Unicode_letter_JHA;
RTS_toUnicode[RTS_consnt_NYA] = Unicode_letter_NYA;
RTS_toUnicode[RTS_consnt_TTA_1] = Unicode_letter_TTA;
RTS_toUnicode[RTS_consnt_TTA_2] = Unicode_letter_TTA;
RTS_toUnicode[RTS_consnt_TTHA_1] = Unicode_letter_TTHA;
RTS_toUnicode[RTS_consnt_TTHA_2] = Unicode_letter_TTHA;
RTS_toUnicode[RTS_consnt_TTHA_3] = Unicode_letter_TTHA;
RTS_toUnicode[RTS_consnt_TTHA_4] = Unicode_letter_TTHA;
RTS_toUnicode[RTS_consnt_TTHA_5] = Unicode_letter_TTHA;
RTS_toUnicode[RTS_consnt_TTHA_6] = Unicode_letter_TTHA;
RTS_toUnicode[RTS_consnt_DDA_1] = Unicode_letter_DDA;
RTS_toUnicode[RTS_consnt_DDA_2] = Unicode_letter_DDA;
RTS_toUnicode[RTS_consnt_DDHA_1] = Unicode_letter_DDHA;
RTS_toUnicode[RTS_consnt_DDHA_2] = Unicode_letter_DDHA;
RTS_toUnicode[RTS_consnt_DDHA_3] = Unicode_letter_DDHA;
RTS_toUnicode[RTS_consnt_DDHA_4] = Unicode_letter_DDHA;
RTS_toUnicode[RTS_consnt_NNA_1] = Unicode_letter_NNA;
RTS_toUnicode[RTS_consnt_NNA_2] = Unicode_letter_NNA;
RTS_toUnicode[RTS_consnt_NNA_3] = Unicode_letter_NNA;
RTS_toUnicode[RTS_consnt_NNA_4] = Unicode_letter_NNA;
RTS_toUnicode[RTS_consnt_NNA_5] = Unicode_letter_NNA;
RTS_toUnicode[RTS_consnt_NNA_6] = Unicode_letter_NNA;
RTS_toUnicode[RTS_consnt_TA] = Unicode_letter_TA;
RTS_toUnicode[RTS_consnt_THA_1] = Unicode_letter_THA;
RTS_toUnicode[RTS_consnt_THA_2] = Unicode_letter_THA;
RTS_toUnicode[RTS_consnt_DA] = Unicode_letter_DA;
RTS_toUnicode[RTS_consnt_DHA_1] = Unicode_letter_DHA;
RTS_toUnicode[RTS_consnt_DHA_2] = Unicode_letter_DHA;
RTS_toUnicode[RTS_consnt_NA_1] = Unicode_letter_NA;
RTS_toUnicode[RTS_consnt_NA_2] = Unicode_letter_NA;
RTS_toUnicode[RTS_consnt_PA] = Unicode_letter_PA;
RTS_toUnicode[RTS_consnt_PHA_1] = Unicode_letter_PHA;
RTS_toUnicode[RTS_consnt_PHA_2] = Unicode_letter_PHA;
RTS_toUnicode[RTS_consnt_PHA_3] = Unicode_letter_PHA;
RTS_toUnicode[RTS_consnt_PHA_4] = Unicode_letter_PHA;
RTS_toUnicode[RTS_consnt_PHA_5] = Unicode_letter_PHA;
RTS_toUnicode[RTS_consnt_PHA_6] = Unicode_letter_PHA;
RTS_toUnicode[RTS_consnt_BA] = Unicode_letter_BA;
RTS_toUnicode[RTS_consnt_BHA_1] = Unicode_letter_BHA;
RTS_toUnicode[RTS_consnt_BHA_2] = Unicode_letter_BHA;
RTS_toUnicode[RTS_consnt_BHA_3] = Unicode_letter_BHA;
RTS_toUnicode[RTS_consnt_BHA_4] = Unicode_letter_BHA;
RTS_toUnicode[RTS_consnt_BHA_5] = Unicode_letter_BHA;
RTS_toUnicode[RTS_consnt_MA_1] = Unicode_letter_MA;
RTS_toUnicode[RTS_consnt_MA_2] = Unicode_letter_MA;
RTS_toUnicode[RTS_consnt_YA] = Unicode_letter_YA;
RTS_toUnicode[RTS_consnt_RA] = Unicode_letter_RA;
RTS_toUnicode[RTS_consnt_LA] = Unicode_letter_LA;
RTS_toUnicode[RTS_consnt_VA_1] = Unicode_letter_VA;
RTS_toUnicode[RTS_consnt_VA_2] = Unicode_letter_VA;
RTS_toUnicode[RTS_consnt_VA_3] = Unicode_letter_VA;
RTS_toUnicode[RTS_consnt_VA_4] = Unicode_letter_VA;
RTS_toUnicode[RTS_consnt_SHA_1] = Unicode_letter_SHA;
RTS_toUnicode[RTS_consnt_SHA_2] = Unicode_letter_SHA;
RTS_toUnicode[RTS_consnt_SSA_1] = Unicode_letter_SSA;
RTS_toUnicode[RTS_consnt_SSA_2] = Unicode_letter_SSA;
RTS_toUnicode[RTS_consnt_SSA_3] = Unicode_letter_SSA;
RTS_toUnicode[RTS_consnt_SSA_4] = Unicode_letter_SSA;
RTS_toUnicode[RTS_consnt_SA] = Unicode_letter_SA;
RTS_toUnicode[RTS_consnt_HA_1] = Unicode_letter_HA;
RTS_toUnicode[RTS_consnt_HA_2] = Unicode_letter_HA;
RTS_toUnicode[RTS_consnt_LLA_1] = Unicode_letter_LLA;
RTS_toUnicode[RTS_consnt_LLA_2] = Unicode_letter_LLA;
RTS_toUnicode[RTS_consnt_LLA_3] = Unicode_letter_LLA;
RTS_toUnicode[RTS_consnt_LLA_4] = Unicode_letter_LLA;
RTS_toUnicode[RTS_consnt_LLA_5] = Unicode_letter_LLA;
RTS_toUnicode[RTS_consnt_LLA_6] = Unicode_letter_LLA;
RTS_toUnicode[RTS_consnt_RRA_1] = Unicode_letter_RRA;
RTS_toUnicode[RTS_consnt_RRA_2] = Unicode_letter_RRA;
RTS_toUnicode[RTS_consnt_KSH] = Unicode_ligature_KSH;
RTS_toUnicode[RTS_consnt_TCH] = Unicode_nukt_TCH;
RTS_toUnicode[RTS_consnt_TJ] = Unicode_nukt_TJ;
RTS_toUnicode[RTS_misc_JN] = Unicode_conjuct_JNY;
RTS_toUnicode[RTS_misc_DDD] = Unicode_conjuct_DDDD;
RTS_toUnicode[RTS_misc_TTT] = Unicode_conjuct_TTTT;
RTS_toUnicode[RTS_digit_ZERO] = Unicode_digit_ZERO;
RTS_toUnicode[RTS_digit_ONE] = Unicode_digit_ONE;
RTS_toUnicode[RTS_digit_TWO] = Unicode_digit_TWO;
RTS_toUnicode[RTS_digit_THREE] = Unicode_digit_THREE;
RTS_toUnicode[RTS_digit_FOUR] = Unicode_digit_FOUR;
RTS_toUnicode[RTS_digit_FIVE] = Unicode_digit_FIVE;
RTS_toUnicode[RTS_digit_SIX] = Unicode_digit_SIX;
RTS_toUnicode[RTS_digit_SEVEN] = Unicode_digit_SEVEN;
RTS_toUnicode[RTS_digit_EIGHT] = Unicode_digit_EIGHT;
RTS_toUnicode[RTS_digit_NINE] = Unicode_digit_NINE;
RTS_digits[RTS_digit_ZERO] = 1;
RTS_digits[RTS_digit_ONE] = 1;
RTS_digits[RTS_digit_TWO] = 1;
RTS_digits[RTS_digit_THREE] = 1;
RTS_digits[RTS_digit_FOUR] = 1;
RTS_digits[RTS_digit_FIVE] = 1;
RTS_digits[RTS_digit_SIX] = 1;
RTS_digits[RTS_digit_SEVEN] = 1;
RTS_digits[RTS_digit_EIGHT] = 1;
RTS_digits[RTS_digit_NINE] = 1;
function RTS_lookup(str)
{
return RTS_toUnicode[str];
}
function RTS_polluCharacter()
{
return Unicode_misc_VIRAMA;
}
function RTS_anusvaraCharacter()
{
return Unicode_anusvara;
}
function RTS_isVowel(str)
{
var b = RTS_vowels[str];
return b != null;
}
function RTS_isSpecial(str)
{
var b = RTS_specials[str];
return b == null ? RTS_isAnusvara(str) : true;
}
function RTS_isAnusvara(str)
{
var b = RTS_anusvaras[str];
return b != null;
}
function RTS_isSpecialHandlingForSunna(str)
{
return str == Unicode_letter_MA;
}
function RTS_isDigit(str)
{
return RTS_digits[str] != null;
}
//Parser
var parser_index = 0;
var parser_length = 0;
var parser_text = "";
function init(input)
{
parser_text = input;
parser_length = input.length;
parser_index = 0;
}
function parser_hasMore()
{
return parser_index < parser_length;
}
function parser_next()
{
var response = "";
var key = null;
var curLen = 0;
var remaining = parser_length - parser_index;
for(; remaining > 0; remaining = parser_length - parser_index) {
var maxLookupLen = remaining > RTS_maxLookupLen ? RTS_maxLookupLen : remaining;
var value;
var bufLen = 0;
for(var i = maxLookupLen; i > 0; i--) {
key = parser_text.substring(parser_index, parser_index + i);
value = RTS_lookup(key);
if (value != null) {
//found a match
if (!RTS_isAnusvara(key)) {
bufLen = i;
break;
}
//the match is one of the special sunnas (n or m followed by some consonant). Treat this as sunna
//only if this is the beginning of a syllable. Lame example: #arnku# - the nk here should not be sunna
//This piece of code is probably not necessary, I doubt there is a word in telugu that would match this
else if (curLen == 0) {
//only the n/m is consumed - so buffer length is 1 less
bufLen = i - 1;
break;
}
}
}
if (value == null) {
break;
}
var digit = RTS_isDigit(key);
if (digit) {
//we will parse the digit again the next time
if (curLen != 0)
break;
}
parser_index += bufLen;
if (RTS_isVowel(key) || RTS_isSpecial(key) || digit)
return response + value;
response += value;
curLen++;
}
if (curLen == 0) {
//can happen in two cases, bad clients (of RTSParser) or if the character we read is not recognized in RTS
//don't worry about bad clients - if next() is called even after hasNext() returns false, there is no harm in incrmenting index
//Those not recognized in RTS are returned as is.
parser_index++;
return key;
}
//act as if there is a virama at the end unless it is m, then treat it as sunna
if (curLen == 1 && RTS_isSpecialHandlingForSunna(response))
return RTS_anusvaraCharacter();
return response + RTS_polluCharacter();
}
//Transformer
function transformSyllable(syllable)
{
var length = syllable.length;
switch (length) {
case 0:
return "";
case 1:
//typically a vowel or a special character
return syllable;
default:
break;
}
var response = "";
for(var i = 0; i < length - 2; i++) {
response += syllable[i];
if (syllable[i + 1] != Unicode_misc_NUKTA && syllable[i + 1] != Unicode_misc_VIRAMA)
response += Unicode_misc_VIRAMA;
}
response += syllable[length - 2];
var c = syllable[length - 1];
//TODO: This should be an vowel
if (Unicode_isInherentVowel(c))
return response;
var v = Unicode_getDependentVowel(c);
if (v != null) {
return response + v;
}
else {
if (Unicode_isVirama(c))
return response + c + Unicode_misc_ZWNJ;
//TODO:
return response;
}
}
function convert(input)
{
var output = "";
init(input);
while (parser_hasMore()) {
var syllable = parser_next();
output += transformSyllable(syllable);
}
return output;
}
//Mode 0 is English, 1 is RTS
var mode = 0;
//Transforms input based on mode
function transformInput(input)
{
if (mode != 0 && mode != 1) {
alert("Invalid mode " + mode);
mode = 0;
}
var output = "";
var next = 0;
do {
var hash = input.indexOf('#', next);
if (hash == next) {
hash = input.indexOf('#', hash + 1);
if (hash != -1) {
//Mode remains unchanged because we process text between hashes here
if (mode == 0)
output += convert(input.substring(next + 1, hash));
else output += input.substring(next + 1, hash);
}
else {
//Mode changes because there is no terminating hash
if (mode == 0) {
mode = 1;
output += convert(input.substring(next + 1));
}
else {
mode = 0;
output += input.substring(next + 1);
}
}
next = hash + 1;
}
//don't change the mode yet because it will be done when it is matched the next time around
else if (hash != -1) {
if (mode == 0)
output += input.substring(next, hash);
else output += convert(input.substring(next, hash));
next = hash;
}
//Mode reamins the same because there are no more hashes
else {
if (mode == 0)
output += input.substring(next);
else output += convert(input.substring(next));
}
} while (hash != -1 && hash < input.length);
return output;
}

