નોંધ: પાનું પ્રકાશિત કર્યા પછી, તમારે તમારા બ્રાઉઝરની કૅશ બાયપાસ કરવાની આવશ્યકતા પડી શકે છે.

  • ફાયરફોક્સ / સફારી: શીફ્ટ દબાવેલી રાખીને રિલોડ પર ક્લિક કરો, અથવા તો Ctrl-F5 કે Ctrl-R દબાવો (મેક પર ⌘-R)
  • ગુગલ ક્રોમ: Ctrl-Shift-R દબાવો (મેક પર ⌘-Shift-R)
  • ઈન્ટરનેટ એક્સપ્લોરર/એજ: Ctrl દબાવેલી રાખીને રિફ્રેશ પર ક્લિક કરો, અથવા Ctrl-F5 દબાવો
  • Opera: Ctrl-F5 દબાવો
/*
This script is a modified version of Alex benenson's cyrillic translitarator and this version was created by user Dsvyas

This script was copied from the new.wikipedia.org
*/
var amhaHash='{"k":"ક્","ક્a":"ક","કa":"કા","ક્i":"કિ","ક્I":"કી","કિi":"કી","કેe":"કી","ક્u":"કુ","ક્U":"કૂ","કોo":"કૂ","કુu":"કૂ","ક્e":"કે","કi":"કૈ","ક્o":"કો","કu":"કૌ","ક્:":"કઃ","ક:":"કઃ","ક્O":"કૉ","કૉM":"કાઁ","ક્E":"કૅ","કૅM":"કઁ","ક્R":"કૃ","ક્M":"કં","કM":"કં","ક્r":"ક્ર્","ક્h":"ખ્","ખ્a":"ખ","ખa":"ખા","ખ્i":"ખિ","ખ્I":"ખી","ખિi":"ખી","ખેe":"ખી","ખ્u":"ખુ","ખ્U":"ખૂ","ખોo":"ખૂ","ખુu":"ખૂ","ખ્e":"ખે","ખi":"ખૈ","ખ્o":"ખો","ખu":"ખૌ","ખ્:":"ખઃ","ખ:":"ખઃ","ખ્O":"ખૉ","ખૉM":"ખાઁ","ખ્E":"ખૅ","ખૅM":"ખઁ","ખ્R":"ખૃ","ખ્M":"ખં","ખM":"ખં","ખ્r":"ખ્ર્",';
amhaHash+='"g":"ગ્","ગ્a":"ગ","ગa":"ગા","ગ્i":"ગિ","ગ્I":"ગી","ગિi":"ગી","ગેe":"ગી","ગ્u":"ગુ","ગ્U":"ગૂ","ગોo":"ગૂ","ગુu":"ગૂ","ગ્e":"ગે","ગi":"ગૈ","ગ્o":"ગો","ગu":"ગૌ","ગ્:":"ગઃ","ગ:":"ગઃ","ગ્O":"ગૉ","ગૉM":"ગાઁ","ગ્E":"ગૅ","ગૅM":"ગઁ","ગ્R":"ગૃ","ગૃu":"ગૃ","ગ્M":"ગં","ગM":"ગં","ગ્r":"ગ્ર્","ગ્h":"ઘ્","ઘ્a":"ઘ","ઘa":"ઘા","ઘ્i":"ઘિ","ઘ્I":"ઘી","ઘિi":"ઘી","ઘેe":"ઘી","ઘ્u":"ઘુ","ઘ્U":"ઘૂ","ઘોo":"ઘૂ","ઘુu":"ઘૂ","ઘ્e":"ઘે","ઘi":"ઘૈ","ઘ્o":"ઘો","ઘu":"ઘૌ","ઘ્:":"ઘઃ","ઘ:":"ઘઃ","ઘ્O":"ઘૉ","ઘૉM":"ઘાઁ","ઘ્E":"ઘૅ","ઘૅM":"ઘઁ","ઘ્R":"ઘૃ","ઘ્M":"ઘં","ઘM":"ઘં","ઘ્r":"ધ્ર્","G":"ઙ્","ઙ્a":"ઙ","ઙa":"ઙા","ઙ્i":"ઙિ","ઙ્I":"ઙી","ઙિi":"ઙી","ઙેe":"ઙી","ઙ્u":"ઙુ","ઙ્U":"ઙૂ","ઙોo":"ઙૂ","ઙુu":"ઙૂ","ઙ્e":"ઙે","ઙi":"ઙૈ","ઙ્o":"ઙો","ઙu":"ઙૌ","ઙ્:":"ઙઃ","ઙ:":"ઙઃ","ઙ્O":"ઙૉ","ઙૉM":"ઙાઁ","ડ્E":"ડૅ","ડૅM":"ડઁ","ડ્R":"ડૃ","ડ્M":"ડં",';
amhaHash+='"c":"ચ્","ચ્a":"ચ","ચa":"ચા","ચ્i":"ચિ","ચ્I":"ચી","ચિi":"ચી","ચેe":"ચી","ચ્u":"ચુ","ચ્U":"ચૂ","ચોo":"ચૂ","ચુu":"ચૂ","ચ્e":"ચે","ચi":"ચૈ","ચ્o":"ચો","ચu":"ચૌ","ચ્:":"ચઃ","ચ:":"ચઃ","ચ્O":"ચૉ","ચૉM":"ચાઁ","ચ્E":"ચૅ","ચૅM":"ચઁ","ચ્R":"ચૃ","ચ્M":"ચં","ચM":"ચં","ચ્r":"ચ્ર્","C":"છ્",';
amhaHash+='"ચ્h":"છ્","C":"છ્","છ્a":"છ","છa":"છા","છ્i":"છિ","છ્I":"છી","છિi":"છી","છેe":"છી","છ્u":"છુ","છ્U":"છૂ","છોo":"છૂ","છુu":"છૂ","છ્e":"છે","છi":"છૈ","છ્o":"છો","છu":"છૌ","છ્:":"છઃ","છ:":"છઃ","છ્O":"છૉ","છૉM":"છાઁ","છ્E":"છૅ","છૅM":"છઁ","છ્R":"છૃ","છ્M":"છં","છM":"છં","છ્r":"છ્ર્",';
amhaHash+='"j":"જ્","જ્a":"જ","જa":"જા","જ્i":"જિ","જ્I":"જી","જિi":"જી","જેe":"જી","જ્u":"જુ","જ્U":"જૂ","જોo":"જૂ","જુu":"જૂ","જ્e":"જે","જi":"જૈ","જ્o":"જો","જu":"જૌ","જ્:":"જઃ","જ:":"જઃ","જ્O":"જૉ","જૉM":"જાઁ","જ્E":"જૅ","જૅM":"જઁ","જ્R":"જૃ","જ્M":"જં","જM":"જં","જ્r":"જ્ર્","જ્h":"ઝ્","ઝ્a":"ઝ","ઝa":"ઝા","ઝ્i":"ઝિ","ઝ્I":"ઝી","ઝિi":"ઝી","ઝેe":"ઝી","ઝ્u":"ઝુ","ઝ્U":"ઝૂ","ઝોo":"ઝૂ","ઝુu":"ઝૂ","ઝ્e":"ઝે","ઝi":"ઝૈ","ઝ્o":"ઝો","ઝu":"ઝૌ","ઝ્:":"ઞઃ","ઝ:":"ઝઃ","ઝ્O":"ઝૉ","ઝૉM":"ઝાઁ","ઝ્E":"ઝૅ","ઝૅM":"ઝઁ","ઝ્R":"ઝૃ","ઝ્M":"ઝં","ઝM":"ઝં","ઝ્r":"ઝ્ર્",';
amhaHash+='"z":"ઝ્","Z":"ઝ્","Z:":"ઞઃ","Y":"ઞ્","ઞ્a":"ઞ","jn":"જ્ઞ્","જ્ઞ્a":"જ્ઞ",';
amhaHash+='"T":"ટ્","ટ્a":"ટ","ટa":"ટા","ટ્i":"ટિ","ટ્I":"ટી","ટિi":"ટી","ટેe":"ટી","ટ્u":"ટુ","ટ્U":"ટૂ","ટોo":"ટૂ","ટુu":"ટૂ","ટ્e":"ટે","ટi":"ટૈ","ટ્o":"ટો","ટu":"ટૌ","ટ્:":"ટઃ","ટ:":"ટઃ","ટ્O":"ટૉ","ટૉM":"ટાઁ","ટ્E":"ટૅ","ટૅM":"ટઁ","ટ્R":"ટૃ","ટ્M":"ટં","ટM":"ટં","ટ્r":"ટ્ર્","ટ્h":"ઠ્","ઠ્a":"ઠ","ઠa":"ઠા","ઠ્i":"ઠિ","ઠ્I":"ઠી","ઠિi":"ઠી","ઠેe":"ઠી","ઠ્u":"ઠુ","ઠ્U":"ઠૂ","ઠોo":"ઠૂ","ઠુu":"ઠૂ","ઠ્e":"ઠે","ઠi":"ઠૈ","ઠ્o":"ઠો","ઠu":"ઠૌ","ઠ્:":"ઠઃ","ઠ:":"ઠ:","ઠ્O":"ઠૉ","ઠૉM":"ઠાઁ","ઠ્E":"ઠૅ","ઠૅM":"ઠઁ","ઠ્R":"ઠૃ","ઠ્M":"ઠં","ઠM":"ઠં","ઠ્r":"ઠ્ર્",';
amhaHash+='"D":"ડ્","ડ્a":"ડ","ડa":"ડા","ડ્i":"ડિ","ડ્I":"ડી","ડિi":"ડી","ડેe":"ડી","ડ્u":"ડુ","ડ્U":"ડૂ","ડોo":"ડૂ","ડુu":"ડૂ","ડ્e":"ડે","ડi":"ડૈ","ડ્E":"ડૅ","ડ્o":"ડો","ડu":"ડૌ","ડ્:":"ડઃ","ડ:":"ડઃ","ડ્O":"ડૉ","ડૉM":"ડૉં","ડૅM":"ડઁ","ડ્R":"ડૃ","ડ્M":"ડં","ડM":"ડં","ડ્r":"ડ્ર્","ડ્h":"ઢ્","ઢ્a":"ઢ","ઢa":"ઢા","ઢ્i":"ઢિ","ઢ્I":"ઢી","ઢિi":"ઢી","ઢેe":"ઢી","ઢ્u":"ઢુ","ઢ્U":"ઢૂ","ઢોo":"ઢૂ","ઢુu":"ઢૂ","ઢ્e":"ઢે","ઢi":"ઢૈ","ઢ્o":"ઢો","ઢu":"ઢૌ","ઢ્:":"ઢઃ","ઢ્a:":"ઢ:","ઢ્O":"ઢૉ","ઢૉM":"ઢાઁ","ઢ્E":"ઢૅ","ઢૅM":"ઢઁ","ઢ્R":"ઢૃ","ઢ્M":"ઢં","ઢM":"ઢં","ઢ્r":"ઢ્ર્",';
amhaHash+='"N":"ણ્","ણ્a":"ણ","ણa":"ણા","ણ્i":"ણિ","ણ્I":"ણી","ણિi":"ણી","ણેe":"ણી","ણ્u":"ણુ","ણ્U":"ણૂ","ણોo":"ણૂ","ણુu":"ણૂ","ણ્e":"ણે","ણi":"ણૈ","ણ્o":"ણો","ણu":"ણૌ","ણ્:":"ણઃ","ણ:":"ણઃ","ણ્O":"ણૉ","ણૉM":"ણાઁ","ણ્E":"ણૅ","ણૅM":"ણઁ","ણ્R":"ણૃ","ણ્M":"ણં","ણM":"ણં","ણ્r":"ણ્ર્",';
amhaHash+='"t":"ત્","ત્a":"ત","તa":"તા","ત્i":"તિ","ત્I":"તી","તિi":"તી","તેe":"તી","ત્u":"તુ","ત્U":"તૂ","તોo":"તૂ","તુu":"તૂ","ત્e":"તે","તi":"તૈ","ત્o":"તો","તu":"તૌ","ત્:":"તઃ","ત:":"તઃ","ત્O":"તૉ","તૉM":"તાઁ","ત્E":"તૅ","તૅM":"તઁ","ત્R":"તૃ","ત્M":"તં","તM":"તં","ત્r":"ત્ર્","ત્h":"થ્","થ્a":"થ","થa":"થા","થ્i":"થિ","થ્I":"થી","થિi":"થી","થેe":"થી","થ્u":"થુ","થ્U":"થૂ","થોo":"થૂ","થુu":"થૂ","થ્e":"થે","થi":"થૈ","થ્o":"થો","થu":"થૌ","થ્:":"થઃ","થ્a:":"થ:","થ્O":"થૉ","થૉM":"થાઁ","થ્E":"થૅ","થૅM":"થઁ","થ્R":"થૃ","થ્M":"થં","થM":"થં","થ્r":"થ્ર્",';
amhaHash+='"d":"દ્","દ્a":"દ","દa":"દા","દ્i":"દિ","દ્I":"દી","દિi":"દી","દેe":"દી","દ્u":"દુ","દ્U":"દૂ","દોo":"દૂ","દુu":"દૂ","દ્e":"દે","દi":"દૈ","દ્o":"દો","દu":"દૌ","દ્:":"દઃ","દ:":"દઃ","દ્O":"દૉ","દૉM":"દાઁ","દ્E":"દૅ","દૅM":"દઁ","દ્R":"દૃ","દ્M":"દં","દM":"દં","દ્r":"દ્ર્","દ્દda":"દ્દ","દ્h":"ધ્","ધ્a":"ધ","ધa":"ધા","ધ્i":"ધિ","ધ્I":"ધી","ધિi":"ધી","ધેe":"ધી","ધ્u":"ધુ","ધ્U":"ધૂ","ધોo":"ધૂ","ધુu":"ધૂ","ધ્e":"ધે","ધi":"ધૈ","ધ્o":"ધો","ધu":"ધૌ","ધ્:":"ધઃ","ધ્a:":"ધ:","ધ્O":"ધૉ","ધૉM":"ધાઁ","ધ્E":"ધૅ","ધૅM":"ધૅં","ધ્R":"ધૃ","ધ્M":"ધં","ધM":"ધં","ધ્r":"ધ્ર્",';
amhaHash+='"n":"ન્","ન્a":"ન","નa":"ના","ન્i":"નિ","ન્I":"ની","નિi":"ની","નેe":"ની","ન્u":"નુ","ન્U":"નૂ","નોo":"નૂ","નુu":"નૂ","ન્e":"ને","નi":"નૈ","ન્o":"નો","નu":"નૌ","ન્:":"નઃ","ન:":"નઃ","ન્O":"નૉ","નૉM":"નાઁ","ન્E":"નૅ","નૅM":"નઁ","ન્R":"નૃ","ન્M":"નં","નM":"નં","ન્r":"ન્ર્","ન્n":"ન્ન્",';
amhaHash+='"p":"પ્","P":"प्","પ્a":"પ","પa":"પા","પ્i":"પિ","પ્I":"પી","પિi":"પી","પેe":"પી","પ્u":"પુ","પ્U":"પૂ","પોo":"પૂ","પુu":"પૂ","પ્e":"પે","પi":"પૈ","પ્o":"પો","પu":"પૌ","પ્:":"પઃ","પ:":"પઃ","પ્O":"પૉ","પૉM":"પાઁ","પ્E":"પૅ","પૅM":"પઁ","પ્R":"પૃ","પ્M":"પં","પM":"પં","પ્r":"પ્ર્",';
amhaHash+='"પ્h":"ફ્","f":"ફ્","F":"ફ્","ફ્a":"ફ","ફa":"ફા","ફ્i":"ફિ","ફ્I":"ફી","ફિi":"ફી","ફેe":"ફી","ફ્u":"ફુ","ફ્U":"ફૂ","ફોo":"ફૂ","ફુu":"ફૂ","ફ્e":"ફે","ફi":"ફૈ","ફ્o":"ફો","ફu":"ફૌ","ફ્:":"ફઃ","ફ્a:":"ફ:","ફ્O":"ફૉ","ફોM":"ફાઁ","ફ્E":"ફૅ","ફૅM":"ફઁ","ફ્R":"ફૃ","ફ્M":"ફં","ફM":"ફં","ફ્r":"ફ્ર્",';
amhaHash+='"b":"બ્","B":"બ્","બ્a":"બ","બa":"બા","બ્i":"બિ","બ્I":"બી","બિi":"બી","બેe":"બી","બ્u":"બુ","બ્U":"બૂ","બોo":"બૂ","બુu":"બૂ","બ્e":"બે","બi":"બૈ","બ્o":"બો","બu":"બૌ","બ્:":"બઃ","બ:":"બઃ","બ્O":"બૉ","બૉM":"બાઁ","બ્E":"બૅ","બૅM":"બઁ","બ્R":"બૃ","બ્M":"બં","બM":"બં","બ્r":"બ્ર્",';
amhaHash+='"બ્h":"ભ્","ભ્a":"ભ","ભa":"ભા","ભ્i":"ભિ","ભ્I":"ભી","ભિi":"ભી","ભેe":"ભી","ભ્u":"ભુ","ભ્U":"ભૂ","ભોo":"ભૂ","ભુu":"ભૂ","ભ્e":"ભે","ભi":"ભૈ","ભ્o":"ભો","ભu":"ભૌ","ભ્:":"ભઃ","ભ્a:":"ભ:","ભ્O":"ભૉ","ભૉM":"ભાઁ","ભ્E":"ભૅ","ભૅM":"ભઁ","ભ્R":"ભૃ","ભ્M":"ભં","ભM":"ભં","U092DU094D":"ભ્","ભ્r":"ભ્ર્",';
amhaHash+='"m":"મ્","મ્a":"મ","મa":"મા","મ્i":"મિ","મ્I":"મી","મિi":"મી","મેe":"મી","મ્u":"મુ","મ્U":"મૂ","મોo":"મૂ","મુu":"મૂ","મ્e":"મે","મi":"મૈ","મ્o":"મો","મu":"મૌ","મ્:":"મઃ","મ્a:":"મઃ","મ્O":"મૉ","મૉM":"માઁ","મ્E":"મૅ","મૅM":"મઁ","મ્R":"મૃ","મ્M":"મં","મM":"મં","M":"ં","મ્r":"મ્ર્",';
amhaHash+='"y":"ય્","ય્a":"ય","યa":"યા","ય્i":"યિ","ય્I":"યી","યિi":"યી","યેe":"યી","ય્u":"યુ","ય્U":"યૂ","યોo":"યૂ","યુu":"યૂ","ય્e":"યે","યi":"યૈ","ય્o":"યો","યu":"યૌ","ય્:":"યઃ","ય્a:":"યઃ","ય્O":"યૉ","યૉM":"યાઁ","ય્E":"યૅ","યૅM":"યઁ","ય્R":"યૃ","ય્M":"યં","યM":"યં","Y":"ઞ્","ય્r":"ય્ર્",';
amhaHash+='"r":"ર્","R":"ઋ","ર્a":"ર","રa":"રા","ર્i":"રિ","ર્I":"રી","રિi":"રી","રેe":"રી","ર્u":"રુ","ર્U":"રૂ","રોo":"રૂ","રુu":"રૂ","ર્e":"રે","રi":"રૈ","ર્o":"રો","રu":"રૌ","ર્:":"રઃ","ર:":"રઃ","ર્O":"રૉ","રૉM":"રાઁ","ર્E":"રૅ","રૅM":"રઁ","ર્M":"રં","રM":"રં","rR":"રૃ",';
amhaHash+='"l":"લ્","લ્a":"લ","લa":"લા","લ્i":"લિ","લ્I":"લી","લિi":"લી","લેe":"લી","લ્u":"લુ","લ્U":"લૂ","લોo":"લૂ","લુu":"લૂ","લ્e":"લે","લi":"લૈ","લ્o":"લો","લu":"લૌ","લ્:":"લઃ","લ:":"લઃ","લ્O":"લૉ","લૉM":"લાઁ","લ્E":"લૅ","લૅM":"લઁ","લ્R":"લૃ","લ્M":"લં","લM":"લં","લ્r":"લ્ર્",';
amhaHash+='"v":"વ્","V":"વ્","w":"વ્","W":"વ્","વ્a":"વ","વa":"વા","વ્i":"વિ","વ્I":"વી","વિi":"વી","વેe":"વી","વ્u":"વુ","વ્U":"વૂ","વોo":"વૂ","વુu":"વૂ","વ્e":"વે","વi":"વૈ","વ્o":"વો","વu":"વૌ","વ્:":"વઃ","વ:":"વઃ","વ્O":"વૉ","વૉM":"વાઁ","વ્E":"વૅ","વૅM":"વઁ","વ્R":"વૃ","વ્M":"વં","વM":"વં","વ્r":"વ્ર્",';
amhaHash+='"s":"સ્","સ્a":"સ","સa":"સા","સ્i":"સિ","સ્I":"સી","સિi":"સી","સેe":"સી","સ્u":"સુ","સ્U":"સૂ","સોo":"સૂ","સુu":"સૂ","સ્e":"સે","સi":"સૈ","સ્o":"સો","સu":"સૌ","સ્:":"સઃ","સ્a:":"સઃ","સ્O":"સૉ","સૉM":"સાઁ","સ્E":"સૅ","સૅM":"સઁ","સ્R":"સૃ","સ્M":"સં","સM":"સં","સ્r":"સ્ર્",';
amhaHash+='"સ્h":"શ્","શ્a":"શ","શa":"શા","શ્i":"શિ","શ્I":"શી","શિi":"શી","શેe":"શી","શ્u":"શુ","શ્U":"શૂ","શોo":"શૂ","શુu":"શૂ","શ્e":"શે","શi":"શૈ","શ્o":"શો","શu":"શૌ","શ્:":"શઃ","શ્a:":"શઃ","શ્O":"શૉ","શૉM":"શાઁ","શ્E":"શૅ","શૅM":"શઁ","શ્rR":"શ્રૃ","શ્r":"શ્ર્","શ્R":"શૃ","શ્c":"શ્ચ્","શ્M":"શં","શM":"શં",';
amhaHash+='"S":"ષ્","શ્h":"ષ્","Sh":"ષ્","ષ્a":"ષ","ષa":"ષા","ષ્i":"ષિ","ષ્I":"ષી","ષિi":"ષી","ષેe":"ષી","ષ્u":"ષુ","ષ્U":"ષૂ","ષોo":"ષૂ","ષુu":"ષૂ","ષ્e":"ષે","ષi":"ષૈ","ષ્o":"ષો","ષu":"ષૌ","ષ્:":"ષઃ","ષ:":"ષઃ","ષ્O":"ષૉ","ષૉM":"ષાઁ","ષ્E":"ષૅ","ષૅM":"ષઁ","ષ્R":"ષૃ","ષ્M":"ષં","ષM":"ષં","ષ્r":"ષ્ર્",';
amhaHash+='"h":"હ્","હ્a":"હ","હa":"હા","હ્i":"હિ","હ્I":"હી","હિi":"હી","હેe":"હી","હ્u":"હુ","હ્U":"હૂ","હોo":"હૂ","હુu":"હૂ","હ્e":"હે","હi":"હૈ","હ્o":"હો","હu":"હૌ","હ્:":"હઃ","હ:":"હઃ","હ્O":"હૉ","હૉM":"હાઁ","હ્E":"હૅ","હૅM":"હઁ","હ્R":"હૃ","હ્r":"હ્ર્","હ્M":"હં","હM":"હં",';
amhaHash+='"L":"ળ્","ળ્a":"ળ","ળa":"ળા","ળ્i":"ળિ","ળ્I":"ળી","ળિi":"ળી","ળેe":"ળી","ળ્u":"ળુ","ળ્U":"ળૂ","ળોo":"ળૂ","ળુu":"ળૂ","ળ્e":"ળે","ળi":"ળૈ","ળ્o":"ળો","ળu":"ળૌ","ળ્:":"ળઃ","ળ:":"ળઃ","ળ્O":"ળૉ","ળૉM":"ળાઁ","ળ્E":"ળૅ","ળૅM":"ળઁ","ળ્R":"ળૃ","ળ્M":"ળં","ળM":"ળં",';
amhaHash+='"x":"ક્ષ્","X":"ક્ષ્","kS":"ક્ષ્","ક્ષ્a":"ક્ષ","ક્ષa":"ક્ષા","ક્ષ્i":"ક્ષિ","ક્ષ્I":"ક્ષી","ક્ષિi":"ક્ષી","ક્ષેe":"ક્ષી","ક્ષ્u":"ક્ષુ","ક્ષ્U":"ક્ષૂ","ક્ષોo":"ક્ષૂ","ક્ષુu":"ક્ષૂ","ક્ષ્e":"ક્ષે","ક્ષi":"ક્ષૈ","ક્ષ્o":"ક્ષો","ક્ષu":"ક્ષૌ","ક્ષ્:":"ક્ષઃ","ક્ષ:":"ક્ષઃ","ક્ષ્O":"ક્ષૉ","ક્ષૉM":"ક્ષાઁ","ક્ષ્E":"ક્ષૅ","ક્ષૅM":"ક્ષઁ","ક્ષ્R":"ક્ષૃ","ક્ષ્M":"ક્ષં","ક્ષM":"ક્ષં","ક્ષ્r":"ક્ષ્ર્",';
amhaHash+='"જ્n":"જ્ઞ્","જ્ઞ્a":"જ્ઞ","જ્ઞa":"જ્ઞા","જ્ઞ્i":"જ્ઞિ","જ્ઞ્I":"જ્ઞી","જ્ઞિi":"જ્ઞી","જ્ઞેe":"જ્ઞી","જ્ઞ્u":"જ્ઞુ","જ્ઞ્U":"જ્ઞૂ","જ્ઞોo":"જ્ઞૂ","જ્ઞુu":"જ્ઞૂ","જ્ઞ્e":"જ્ઞે","જ્ઞi":"જ્ઞૈ","જ્ઞ્o":"જ્ઞો","જ્ઞu":"જ્ઞૌ","જ્ઞ્:":"જ્ઞઃ","જ્ઞ્a:":"જ્ઞઃ","જ્ઞ્O":"જ્ઞૉ","ज्ञॉજ્ઞૉM":"જ્ઞાઁ","જ્ઞ્E":"જ્ઞૅ","જ્ઞૅM":"જ્ઞઁ","જ્ઞ્R":"જ્ઞૃ","જ્ઞ્M":"જ્ઞં","જ્ઞM":"જ્ઞં",';
amhaHash+='"dbh":"દ્ભ્","dm":"દ્મ્","ddh":"દ્ધ્","dv":"દ્વ્","dw":"દ્વ્","TT":"ટ્ટ્","ThTh":"ઠ્ઠ્","DD":"ડ્ડ્","DhDh":"ઢ્ઢ્",';
amhaHash+='"a":"અ","ઑm":"ૐ","અa":"આ","A":"આ","i":"ઇ","I":"ઈ","ઇi":"ઈ","એe":"ઐ","u":"ઉ","ઉu":"ઊ","U":"ઊ","ઓo":"ઔ","e":"એ","અi":"ઐ","o":"ઓ","અu":"ઔ","H":"ઃ","M":"ં","ंM":"ઁ","E":"ઍ","ઍM":"અઁ","O":"ઑ","ઑM":"આઁ","R":"ઋ","અ~":"ઽ","q":"॑","Q":"॓","J":"઼","K":"઼","||":"॥","0":"૦","1":"૧","2":"૨","3":"૩","4":"૪","5":"૫","6":"૬","7":"૭","8":"૮","9":"૯"}';



// for compatibility with bookmarklets
function cyr_translit(src) {
	return to_cyrillic(src);
}

var conversionHash = undefined;
var maxcyrlength = 0;

function getConversionHash() {
	if (conversionHash == undefined) {
		conversionHash = eval("("+amhaHash+")");
		 maxcyrlength=6;
	}

	return conversionHash;
}


function to_cyrillic(src, output, chunks) {
	if (src == undefined || src == "" || src == null)
		return src;
	if (output == undefined)
		output = new String();

	var hash = getConversionHash();
	
	var location = 0;
	
	while (location < src.length) {
		var len = Math.min(maxcyrlength, src.length - location);
		var arr = undefined;
		var sub;
		while (len > 0) {
			sub = src.substr(location, len);
			arr = hash[sub];
			if (arr != undefined) 
				break;
			else 
				len--;
		}
		
		// need this for translit on the fly
		if (chunks != undefined)
			chunks[chunks.length] = sub;
			
		if (arr == undefined) {
			output += sub;
			location ++;
		}
		else {

			// case analysis
			var newChar = arr;
			
			if (sub.toLowerCase() == sub.toUpperCase() && arr.length > 1 && arr[1] && (newChar.toUpperCase() != newChar.toLowerCase())) {
			
				// need translit hash to determine if previous character (and possibly the one before it) 
				// were converted and are in upper case
				
				// set prevDud to true previous is not a translated character or simply a blank
				// set prevCap to true if previous was translated and was upper case

				var prevCh = output.length == 0 ? null : output.substr(output.length - 1, 1);
				var prevDud = !prevCh || !getTranslitString(prevCh);
				var prevCap = (!prevDud && prevCh == prevCh.toUpperCase());

				// sub is caseless but result isn't. case will depend on lookbehind and lookahead
				if (prevDud || !prevCap) {
					output += newChar.toLowerCase();
					prevCap = false;
				}
				else {
					var next = " ";
					if (location + len < src.length)
						next = src.substr(location + len, 1);

					if (next != next.toUpperCase() && next == next.toLowerCase() ) {
						//next is lowercase (and not caseless)
						output += newChar.toLowerCase();
					}
					else if (next == next.toUpperCase() && next != next.toLowerCase() ) {
						// next is uppercase (and not caseless)
						output += newChar.toUpperCase();
					}
					else {
						// next is caseless. output case determined by the case of output[length - 2]
						var pprevCh = output.length == 1 ? null : output.substr(output.length - 2, 1);
						var pprevDud = !pprevCh || !getTranslitString(pprevCh);
						if (!pprevDud && (pprevCh == pprevCh.toUpperCase())) {
							//pre-prev is in upper case. output is also uppercase
							output += newChar.toUpperCase();
						}
						else {
						    output += newChar.toLowerCase();
						}
						
					}
				}
					
			}
			else if ((sub.toLowerCase() == sub.toUpperCase()) && (arr.length < 2 || !arr[1])) {
				
				// literal treatment of newChar
				output += newChar;

			}
			else if (sub != sub.toLowerCase()) {
			
				// sub not all-lowercase
				output += newChar.toUpperCase();
			}
			else {
					
					
					
				// sub is lowercase
			    output += newChar.toLowerCase();
			}
			location += len;
		}
	}
	
	return output;
}



function convertIt(src,converter){
 var resultbuffer=""; 
	for(var i=0;i<src.length;i++){
	resultbuffer=converter(resultbuffer+src[i]);
	}
        return converter(resultbuffer);

}



var translitHash = undefined;

function initTranslit() {
	if (translitHash == undefined) {
		translitHash = new Array();

		for (var i = 0; i < conversionHash.length; i++) {
			var ch = conversionHash[i][1];
			// if the translit string is not caseless, convert cyr string to upper case
			// otherwise maintain its case
			if (conversionHash[i][0].toUpperCase() != conversionHash[i][0].toLowerCase())
				ch = ch.toUpperCase();
				
			if (translitHash[ch] == undefined)
				translitHash[ch] = conversionHash[i][0];
		}
	}
}




//-- translit on-the-fly -- 

function replaceValue(node, value, stepback) {
	if (stepback == undefined)
		stepback = 0;
		
	if (isExplorer()) {
		var range = document.selection.createRange();
		range.moveStart("character", -stepback);
		range.text = value;
		range.collapse(false);
		range.select();
	}
	else {
		var scrollTop = node.scrollTop;
		var cursorLoc =  node.selectionStart;
		node.value = node.value.substring(0, node.selectionStart - stepback) + value + 
                node.value.substring(node.selectionEnd, node.value.length);
		node.scrollTop = scrollTop;
		node.selectionStart = cursorLoc + value.length - stepback;
		node.selectionEnd = cursorLoc + value.length - stepback;
	}
}


// compare positions
function positionIsEqual(other) {
	if (isExplorer())
		return this.position.isEqual(other.position);
	else
		return this.position == other.position;
  
}

function Position(node) {
  if (node.selectionStart != undefined)
	this.position = node.selectionStart;
  else if (document.selection && document.selection.createRange())
    this.position = document.selection.createRange();
    
  this.isEqual = positionIsEqual;
}

function resetState() {
	this.position = new Position(this.node);
	this.transBuffer = "";
	this.cyrBuffer = "";
}

function StateObject(node) {
	this.node = node;
	this.reset = resetState;
	this.cyrBuffer = "";
	this.transBuffer = "";
	this.position = new Position(node);
}


var stateHash = new Array();

function isExplorer() {
  return (document.selection != undefined && document.selection.createRange().isEqual != undefined);
}

function pressedKey(event) {
  if (isExplorer())
	return event.keyCode;
  else
    return event.which;
}

function translitonkey(event) {
     /*
	if ((event.keyCode == 255 && event.charCode > 0) || event.keyCode == 8) {
		return;
	}
    */
    
    if (event == undefined)
		event = window.event;
    
	var node = null;
	if (event.target)
		node = event.target;
	else if (event.srcElement)
		node = event.srcElement;
		
	
	
	// initialize state
	var state = stateHash[node];
	if (state == null) {
		state = new StateObject(node);
		stateHash[node] = state;
	}
	if ( (pressedKey(event) > 20) && !event.ctrlKey && !event.altKey && !event.metaKey) {

		var c = String.fromCharCode(pressedKey(event));

		// process input
		var result = process_translit(state, c);
		// finish up
		if (c != result.out || result.replace != 0) {
		  if (isExplorer())
			event.returnValue = false;
		  else
		    event.preventDefault();
		  
		  replaceValue(node, result.out, result.replace);
		  
		  state.position = new Position(node);

		}
	}
	
}

function TranslitResult() {
	this.out = "";
	this.replace = 0;
}

function process_translit(state, c) {
	// reset state if position changed
	if (!state.position.isEqual(new Position(state.node)))
		state.reset();
		
	var result = new TranslitResult();
	
	// initial backbuffer. Add to it as characters are converted
	var backbuffer = getBackBuffer(state.node, state.cyrBuffer.length, 2);
	var chunks = new Array();
	
	state.transBuffer = state.transBuffer+ c

	var str = to_cyrillic(state.cyrBuffer+c, backbuffer, chunks);

	// remove backbuffer from output
	str = str.substr(backbuffer.length);
	result.out = str; 
	/* str is now left alone - it has the output matching contents of chunks and 
	   will be used to reinitialize backbuffers, along with chunks and state.transBuffer
	*/
	
	// get the difference between state.cyrBuffer and output
	for (var i = 0; i < Math.min(state.cyrBuffer.length, result.out.length); i++) {
		if (state.cyrBuffer.substr(i, 1) != result.out.substr(i, 1)) {
			result.replace = state.cyrBuffer.length - i;
			result.out = result.out.substr(i);
			break;
		}
	}
	if (result.replace == 0) {
               if(result.out.length<state.cyrBuffer.length)
				result.replace=state.cyrBuffer.length- result.out.length;
		result.out = result.out.substr(Math.min(state.cyrBuffer.length, result.out.length));
                 
                       //    result.out+="\u0008"
                         
	}
	
	// update state: backbuffer, bufferArray
	if (chunks.length > 0 && chunks[chunks.length - 1] == result.out.substr(result.out.length - 1)) {
		// no convertion took place, reset state
		state.reset();
	}
	else {
		while (state.transBuffer.length > maxcyrlength) {
			state.transBuffer = state.transBuffer.substr(chunks[0].length);
			chunks.shift();
			str = str.substr(1);
		}
		state.cyrBuffer = str;
	}
	return result;
}

function getBackBuffer(node, offset, count) {
		
	if (isExplorer()) { //.tagName.toUpperCase() == "EDITOR") {
	
		var range = document.selection.createRange();
		range.moveStart("character", -offset);
		var result = range.text.substr(-count);
		if (!result)
			result = "";
			
		return result;

	} else {
		return node.value.substring(0, node.selectionStart - offset).substr(-count);
	}
}

// need this for bookmarklets
function getSelectedNode() {
  if (document.activeElement)
	return document.activeElement;
  else
    if (window.getSelection && window.getSelection() && window.getSelection().rangeCount > 0) {
		var range = window.getSelection().getRangeAt(0);
		if (range.startContainer && range.startContainer.childNodes && range.startContainer.childNodes.length > range.startOffset)
			return range.startContainer.childNodes[range.startOffset]
    }
  return null;
}

function toggleCyrMode() {
	var node = getSelectedNode();
	if (node) {
		if (stateHash[node]) {
			if (removeKeyEventListener(node))
				delete stateHash[node];
		}
		else {
			if (addKeyEventListener(node))
				stateHash[node] = new StateObject(node);
		}
	}
}

function addKeyEventListener(node) {
	if (node.addEventListener)
		node.addEventListener("keypress", translitonkey, false);
	else if (node.attachEvent)
	    node.attachEvent("onkeypress", translitonkey);
	else return false;
	return true;
}
function removeKeyEventListener(node) {
	if (node.removeEventListener)
		node.removeEventListener("keypress", translitonkey, false);
	else if (node.detachEvent)
		node.detachEvent("onkeypress", translitonkey);
	else return false;
	return true;
}

function getSelectedText() {
	if (isExplorer()) {
		return document.selection.createRange().text;
	}
	else {
		var node = getSelectedNode();
		if (node && node.value && node.selectionStart != undefined && node.selectionEnd != undefined)
			return node.value.substring(node.selectionStart, node.selectionEnd);
	}
	return "";
}