मिडियाविकि:Translitor.js

विकिपिडिया नं

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/*
This script is a modified version of Alex benenson's cyrillic translitarator and this version was created by user Tatari for Devnagari and modified by user Eukesh for Oriya
*/
var amhaHash='{"k":"କ୍","କ୍a":"କ","କa":"କା","କ୍i":"କି","କ୍I":"କୀ","କିi":"କିଇ","କେe":"କୀ","କ୍u":"କୁ","କ୍U":"କୂ","କୋo":"କୂ","କୁu":"କୂ","କ୍e":"କେ","କi":"କୈ","କ୍o":"କୋ","କu":"କୌ","କ୍:":"କଃ","କ:":"କଃ","କ୍O":"କୋ","କୋM":"କାଁ","କ୍E":"କେ","କେM":"କଁ","କ୍R":"କୃ","କୃu":"କୃ","କୃU":"କୠ","କୃଓo":"କୃଊ","କୃl":"କ୍ଲୃ","କ୍ଲୃu":"କ୍ଲୃ","କ୍ଲୃU":"କ୍ଲୠ","କ୍ଲୃଓo":"କ୍ଲୃଊ","କ୍M":"କଂ","କ୍h":"ଖ୍","ଖ୍a":"ଖ","ଖa":"ଖା","ଖ୍i":"ଖି","ଖ୍I":"ଖୀ","ଖିi":"ଖିଇ","ଖେe":"ଖୀ","ଖ୍u":"ଖୁ","ଖ୍U":"ଖୂ","ଖୋo":"ଖୂ","ଖୁu":"ଖୂ","ଖ୍e":"ଖେ","ଖi":"ଖୈ","ଖ୍o":"ଖୋ","ଖu":"ଖୌ","ଖ୍:":"ଖଃ","ଖ:":"ଖଃ","ଖ୍O":"ଖୋ","ଖୋM":"ଖାଁ","ଖ୍E":"ଖେ","ଖେM":"ଖଁ","ଖ୍R":"ଖୃ","ଖୃu":"ଖୃ","ଖୃU":"ଖୠ","ଖୃଓo":"ଖୃଊ","ଖ୍M":"ଖଂ","ଖୃl":"ଖ୍ଲୃ","ଖ୍ଲୃu":"ଖ୍ଲୃ","ଖ୍ଲୃU":"ଖ୍ଲୠ","ଖ୍ଲୃଓo":"ଖ୍ଲୃଊ",';
amhaHash+='"g":"ଗ୍","ଗ୍a":"ଗ","ଗa":"ଗା","ଗ୍i":"ଗି","ଗ୍I":"ଗୀ","ଗିi":"ଗୀ","ଗେe":"ଗୀ","ଗ୍u":"ଗୁ","ଗ୍U":"ଗୂ","ଗୋo":"ଗୂ","ଗୁu":"ଗୂ","ଗ୍e":"ଗେ","ଗi":"ଗୈ","ଗ୍o":"ଗୋ","ଗu":"ଗୌ","ଗ୍:":"ଗଃ","ଗ:":"ଗଃ","ଗ୍O":"ଗୋ","ଗୋM":"ଗାଁ","ଗ୍E":"ଗେ","ଗେM":"ଗଁ","ଗ୍R":"ଗୃ","ଗୃu":"ଗୃ","ଗୃU":"ଗୠ","ଗୃଓo":"ଗୠ","ଗ୍M":"ଗଂ","ଗୃl":"ଗ୍ଲୃ","ଗ୍ଲୃu":"ଗ୍ଲୃ","ଗ୍ଲୃU":"ଗ୍ଲୠ","ଗ୍ଲୃo":"ଗ୍ଲୠ","ଗ୍h":"ଘ୍","ଘ୍a":"ଘ","ଘa":"ଘା","ଘ୍i":"ଘି","ଘ୍I":"ଘୀ","ଘିi":"ଘୀ","ଘେe":"ଘୀ","ଘ୍u":"ଘୁ","ଘ୍U":"ଘୂ","ଘୋo":"ଘୂ","ଘୁu":"ଘୂ","ଘ୍e":"ଘେ","ଘi":"ଘୈ","ଘ୍o":"ଘୋ","ଘu":"ଘୌ","ଘ୍:":"ଘଃ","ଘ:":"ଘଃ","ଘ୍O":"ଘୋ","ଘୋM":"ଘାଁ","ଘ୍E":"ଘେ","ଘେM":"ଘଁ","ଘ୍R":"ଘୃ","ଘୃu":"ଘୃ","ଘୃU":"ଘୠ","ଘୃଓo":"ଘୠ","ଘ୍M":"ଘଂ","ଘୃl":"ଘ୍ଲୃ","ଘ୍ଲୃu":"ଘ୍ଲୃ","ଘ୍ଲୃU":"ଘ୍ଲୠ","ଘ୍ଲୃଓo":"ଘ୍ଲୠ","G":"ଙ୍","ଙ୍a":"ଙ","ଙa":"ଙା","ଙ୍i":"ଙି","ଙ୍I":"ଙୀ","ଙିi":"ଙୀ","ଙେe":"ଙୀ","ଙ୍u":"ଙୁ","ଙ୍U":"ଙୂ","ଙୋo":"ଙୂ","ଙୁu":"ଙୂ","ଙ୍e":"ଙେ","ଙi":"ଙୈ","ଙ୍o":"ଙୋ","ଙu":"ଙୌ","ଙ୍:":"ଙଃ","ଙ:":"ଙଃ","ଙ୍O":"ଙୋ","ଙୋM":"ଙାଁ","ଙ୍E":"ଙେ","ଙେM":"ଙଁ","ଙ୍R":"ଙୃ","ଙୃu":"ଙୃ","ଙୃU":"ଙୠ","ଙୃଓo":"ଙୠ","ଙ୍M":"ଙଂ","ଙୃl":"ଙ୍ଲୃ","ଙ୍ଲୃu":"ଙ୍ଲୃ","ଙ୍ଲୃU":"ଙ୍ଲୠ","ଙ୍ଲୃଓo":"ଙ୍ଲୠ",';
amhaHash+='"c":"ଚ୍","ch":"ଚ୍","ଚ୍a":"ଚ","ଚa":"ଚା","ଚ୍i":"ଚି","ଚ୍I":"ଚୀ","ଚିi":"ଚୀ","ଚେe":"ଚୀ","ଚ୍u":"ଚୁ","ଚ୍U":"ଚୂ","ଚୋo":"ଚୂ","ଚୁu":"ଚୂ","ଚ୍e":"ଚେ","ଚi":"ଚୈ","ଚ୍o":"ଚୋ","ଚu":"ଚୌ","ଚ୍:":"ଚଃ","ଚ:":"ଚଃ","ଚ୍O":"ଚୋ","ଚୋM":"ଚାଁ","ଚ୍E":"ଚେ","ଚେM":"ଚଁ","ଚ୍R":"ଚୃ","ଚୃu":"ଚୃ","ଚୃU":"ଚୠ","ଚୃଓo":"ଚୠ","ଚ୍M":"ଚଂ","ଚୃl":"ଚ୍ଲୃ","ଚ୍ଲୃu":"ଚ୍ଲୃ","ଚ୍ଲୃU":"ଚ୍ଲୠ","ଚ୍ଲୃଓo":"ଚ୍ଲୠ",';
amhaHash+='"C":"ଛ୍","ଚ୍ହ୍h":"ଛ୍","ଛ୍h":"ଛ୍","ଛ୍a":"ଛ","ଛa":"ଛା","ଛ୍i":"ଛି","ଛ୍I":"ଛୀ","ଛିi":"ଛୀ","ଛେe":"ଛୀ","ଛ୍u":"ଛୁ","ଛ୍U":"ଛୂ","ଛୋo":"ଛୂ","ଛୁu":"ଛୂ","ଛ୍e":"ଛେ","ଛi":"ଛୈ","ଛ୍o":"ଛୋ","ଛu":"ଛୌ","ଛ୍:":"ଛଃ","ଛ:":"ଛଃ","ଛ୍O":"ଛୋ","ଛୋM":"ଛାଁ","ଛ୍E":"ଛେ","ଛେM":"ଛଁ","ଛ୍R":"ଛୃ","ଛୃu":"ଛୃ","ଛୃU":"ଛୠ","ଛୃଓo":"ଛୠ","ଛ୍M":"ଛଂ","ଛୃl":"ଛ୍ଲୃ","ଛ୍ଲୃu":"ଛ୍ଲୃ","ଛ୍ଲୃU":"ଛ୍ଲୠ","ଛ୍ଲୃଓo":"ଛ୍ଲୠ",';
amhaHash+='"j":"ଜ୍","ଜ୍a":"ଜ","ଜa":"ଜା","ଜ୍i":"ଜି","ଜ୍I":"ଜୀ","ଜିi":"ଜୀ","ଜେe":"ଜୀ","ଜ୍u":"ଜୁ","ଜ୍U":"ଜୂ","ଜୋo":"ଜୂ","ଜୁu":"ଜୂ","ଜ୍e":"ଜେ","ଜi":"ଜୈ","ଜ୍o":"ଜୋ","ଜu":"ଜୌ","ଜ୍:":"ଜଃ","ଜ:":"ଜଃ","ଜ୍O":"ଜୋ","ଜୋM":"ଜାଁ","ଜ୍E":"ଜେ","ଜେM":"ଜଁ","ଜ୍R":"ଜୃ","ଜୃu":"ଜୃ","ଜୃU":"ଜୠ","ଜୃଓo":"ଜୠ","ଜ୍M":"ଜଂ","ଜୃl":"ଜ୍ଲୃ","ଜ୍ଲୃu":"ଜ୍ଲୃ","ଜ୍ଲୃU":"ଜ୍ଲୠ","ଜ୍ଲୃଓo":"ଜ୍ଲୠ","ଜ୍h":"ଝ୍","ଝ୍a":"ଝ","ଝa":"ଝା","ଝ୍i":"ଝି","ଝ୍I":"ଝୀ","ଝିi":"ଝୀ","ଝେe":"ଝୀ","ଝ୍u":"ଝୁ","ଝ୍U":"ଝୂ","ଝୋo":"ଝୂ","ଝୁu":"ଝୂ","ଝ୍e":"ଝେ","ଝi":"ଝୈ","ଝ୍o":"ଝୋ","ଝu":"ଝୌ","ଝ୍:":"ଞଃ","ଝ୍a:":"ଝଃ","ଝ୍O":"ଝୋ","ଝୋM":"ଝାଁ","ଝ୍E":"ଝେ","ଝେM":"ଝଁ","ଝ୍R":"ଝୃ","ଝୃu":"ଝୃ","ଝୃU":"ଝୠ","ଝୃଓo":"ଝୠ","ଝ୍M":"ଝଂ","ଝୃl":"ଝ୍ଲୃ","ଝ୍ଲୃu":"ଝ୍ଲୃ","ଝ୍ଲୃU":"ଝ୍ଲୠ","ଝ୍ଲୃଓo":"ଝ୍ଲୠ",';
amhaHash+='"z":"ଝ୍","ଝ:":"ଝଃ","Z":"ଝ୍","Y":"ଞ୍","ଞ୍a":"ଞ","ଞa":"ଞା","ଞ୍i":"ଞି","ଞ୍I":"ଞୀ","ଞିi":"ଞୀ","ଞେe":"ଞୀ","ଞ୍u":"ଞୁ","ଞ୍U":"ଞୂ","ଞୋo":"ଞୂ","ଞୁu":"ଞୂ","ଞ୍e":"ଞେ","ଞi":"ଞୈ","ଞ୍o":"ଞୋ","ଞu":"ଞୌ","ଞ:":"ଞଃ","ଞ୍O":"ଞୋ","ଞୋM":"ଞାଁ","ଞ୍E":"ଞେ","ଞେM":"ଞଁ","ଞ୍R":"ଞୃ","ଞୃu":"ଞୃ","ଞୃU":"ଞୠ","ଞୃଓo":"ଞୠ","ଞ୍M":"ଞଂ","ଞୃl":"ଞ୍ଲୃ","ଞ୍ଲୃu":"ଞ୍ଲୃ","ଞ୍ଲୃU":"ଞ୍ଲୠ","ଞ୍ଲୃଓo":"ଞ୍ଲୠ",';
amhaHash+='"T":"ଟ୍","ଟ୍a":"ଟ","ଟa":"ଟା","ଟ୍i":"ଟି","ଟ୍I":"ଟୀ","ଟିi":"ଟୀ","ଟେe":"ଟୀ","ଟ୍u":"ଟୁ","ଟ୍U":"ଟୂ","ଟୋo":"ଟୂ","ଟୁu":"ଟୂ","ଟ୍e":"ଟେ","ଟi":"ଟୈ","ଟ୍o":"ଟୋ","ଟu":"ଟୌ","ଟ୍:":"ଟଃ","ଟ:":"ଟଃ","ଟ୍O":"ଟୋ","ଟୋM":"ଟାଁ","ଟ୍E":"ଟେ","ଟେM":"ଟଁ","ଟ୍R":"ଟୃ","ଟୃu":"ଟୃ","ଟୃU":"ଟୠ","ଟୃଓo":"ଟୠ","ଟ୍M":"ଟଂ","ଟୃl":"ଟ୍ଲୃ","ଟ୍ଲୃu":"ଟ୍ଲୃ","ଟ୍ଲୃU":"ଟ୍ଲୠ","ଟ୍ଲୃଓo":"ଟ୍ଲୠ","ଟ୍h":"ଠ୍","ଠ୍a":"ଠ","ଠa":"ଠା","ଠ୍i":"ଠି","ଠ୍I":"ଠୀ","ଠିi":"ଠୀ","ଠେe":"ଠୀ","ଠ୍u":"ଠୁ","ଠ୍U":"ଠୂ","ଠୋo":"ଠୂ","ଠୁu":"ଠୂ","ଠ୍e":"ଠେ","ଠi":"ଠୈ","ଠ୍o":"ଠୋ","ଠu":"ଠୌ","ଠ୍:":"ଠଃ","ଠ୍a:":"ଠଃ","ଠ୍O":"ଠୋ","ଠୋM":"ଠାଁ","ଠ୍E":"ଠେ","ଠେM":"ଠଁ","ଠ୍R":"ଠୃ","ଠୃu":"ଠୃ","ଠୃU":"ଠୠ","ଠୃଓo":"ଠୠ","ଠ୍M":"ଠଂ","ଠୃl":"ଠ୍ଲୃ","ଠ୍ଲୃu":"ଠ୍ଲୃ","ଠ୍ଲୃU":"ଠ୍ଲୠ","ଠ୍ଲୃଓo":"ଠ୍ଲୠ",';
amhaHash+='"D":"ଡ୍","ଡ୍a":"ଡ","ଡa":"ଡା","ଡ୍i":"ଡି","ଡ୍I":"ଡୀ","ଡିi":"ଡୀ","ଡେe":"ଡୀ","ଡ୍u":"ଡୁ","ଡ୍U":"ଡୂ","ଡୋo":"ଡୂ","ଡୁu":"ଡୂ","ଡ୍e":"ଡେ","ଡi":"ଡୈ","ଡ୍o":"ଡୋ","ଡu":"ଡୌ","ଡ୍:":"ଡଃ","ଡ:":"ଡଃ","ଡ୍O":"ଡୋ","ଡୋM":"ଓाଁ","ଡ୍E":"ଡେ","ଡେM":"ଡଁ","ଡ୍R":"ଡୃ","ଡୃu":"ଡୃ","ଡୃU":"ଡୠ","ଡୃଓo":"ଡୠ","ଡ୍M":"ଡଂ","ଡୃl":"ଡ୍ଲୃ","ଡ୍ଲୃu":"ଡ୍ଲୃ","ଡ୍ଲୃU":"ଡ୍ଲୠ","ଡ୍ଲୃଓo":"ଡ୍ଲୠ","ଡ୍h":"ଢ୍","ଢ୍a":"ଢ","ଢa":"ଢା","ଢ୍i":"ଢି","ଢ୍I":"ଢୀ","ଢିi":"ଢୀ","ଢେe":"ଢୀ","ଢ୍u":"ଢୁ","ଢ୍U":"ଢୂ","ଢୋo":"ଢୂ","ଢୁu":"ଢୂ","ଢ୍e":"ଢେ","ଢi":"ଢୈ","ଢ୍o":"ଢୋ","ଢu":"ଢୌ","ଢ୍:":"ଢଃ","ଢ୍a:":"ଢଃ","ଢ୍O":"ଢୋ","ଢୋM":"ଢାଁ","ଢ୍E":"ଢେ","ଢେM":"ଢଁ","ଢ୍R":"ଢୃ","ଢୃu":"ଢୃ","ଢୃU":"ଢୠ","ଢୃଓo":"ଢୠ","ଢ୍M":"ଢଂ","ଢୃl":"ଢ୍ଲୃ","ଢ୍ଲୃu":"ଢ୍ଲୃ","ଢ୍ଲୃU":"ଢ୍ଲୠ","ଢ୍ଲୃଓo":"ଢ୍ଲୠ",';
amhaHash+='"N":"ଣ୍","ଣ୍a":"ଣ","ଣa":"ଣା","ଣ୍i":"ଣି","ଣ୍I":"ଣୀ","ଣିi":"ଣୀ","ଣେe":"ଣୀ","ଣ୍u":"ଣୁ","ଣ୍U":"ଣୂ","ଣୋo":"ଣୂ","ଣୁu":"ଣୂ","ଣ୍e":"ଣେ","ଣi":"ଣୈ","ଣ୍o":"ଣୋ","ଣu":"ଣୌ","ଣ୍:":"ଣଃ","ଣ:":"ଣଃ","ଣ୍O":"ଣୋ","ଣୋM":"ଣାଁ","ଣ୍E":"ଣେ","ଣେM":"ଣଁ","ଣ୍R":"ଣୃ","ଣୃu":"ଣୃ","ଣୃU":"ଣୠ","ଣୃଓo":"ଣୠ","ଣ୍M":"ଣଂ","ଣୃl":"ଣ୍ଲୃ","ଣ୍ଲୃu":"ଣ୍ଲୃ","ଣ୍ଲୃU":"ଣ୍ଲୠ","ଣ୍ଲୃଓo":"ଣ୍ଲୠ",';
amhaHash+='"t":"ତ୍","ତ୍a":"ତ","ତa":"ତା","ତ୍i":"ତି","ତ୍I":"ତୀ","ତିi":"ତୀ","ତେe":"ତୀ","ତ୍u":"ତୁ","ତ୍U":"ତୂ","ତୋo":"ତୂ","ତୁu":"ତୂ","ତ୍e":"ତେ","ତi":"ତୈ","ତ୍o":"ତୋ","ତu":"ତୌ","ତ୍:":"ତଃ","ତ:":"ତଃ","ତ୍O":"ତୋ","ତୋM":"ତାଁ","ତ୍E":"ତେ","ତେM":"ତଁ","ତ୍R":"ତୃ","ତୃu":"ତୃ","ତୃU":"ତୠ","ତୃଓo":"ତୠ","ତ୍M":"ତଂ","ତୃl":"ତ୍ଲୃ","ତ୍ଲୃu":"ତ୍ଲୃ","ତ୍ଲୃU":"ତ୍ଲୠ","ତ୍ଲୃଓo":"ତ୍ଲୠ","ତ୍h":"ଥ୍","ଥ୍a":"ଥ","ଥa":"ଥା","ଥ୍i":"ଥି","ଥ୍I":"ଥୀ","ଥିi":"ଥୀ","ଥେe":"ଥୀ","ଥ୍u":"ଥୁ","ଥ୍U":"ଥୂ","ଥୋo":"ଥୂ","ଥୁu":"ଥୂ","ଥ୍e":"ଥେ","ଥi":"ଥୈ","ଥ୍o":"ଥୋ","ଥu":"ଥୌ","ଥ୍:":"ଥଃ","ଥ୍a:":"ଥଃ","ଥ୍O":"ଥୋ","ଥୋM":"ଥାଁ","ଥ୍E":"ଥେ","ଥେM":"ଥଁ","ଥ୍R":"ଥୃ","ଥୃu":"ଥୃ","ଥୃU":"ଥୠ","ଥୃଓo":"ଥୠ","ଥ୍M":"ଥଂ","ଥୃl":"ଥ୍ଲୃ","ଥ୍ଲୃu":"ଥ୍ଲୃ","ଥ୍ଲୃU":"ଥ୍ଲୠ","ଥ୍ଲୃଓo":"ଥ୍ଲୠ",';
amhaHash+='"d":"ଦ୍","ଦ୍a":"ଦ","ଦa":"ଦା","ଦ୍i":"ଦି","ଦ୍I":"ଦୀ","ଦିi":"ଦୀ","ଦେe":"ଦୀ","ଦ୍u":"ଦୁ","ଦ୍U":"ଦୂ","ଦୋo":"ଦୂ","ଦୁu":"ଦୂ","ଦ୍e":"ଦେ","ଦi":"ଦୈ","ଦ୍o":"ଦୋ","ଦu":"ଦୌ","ଦ୍:":"ଦଃ","ଦ:":"ଦଃ","ଦ୍O":"ଦୋ","ଦୋM":"ଦାଁ","ଦ୍E":"ଦେ","ଦେM":"ଦଁ","ଦ୍R":"ଦୃ","ଦୃu":"ଦୃ","ଦୃU":"ଦୠ","ଦୃଓo":"ଦୠ","ଦ୍M":"ଦଂ","ଦୃl":"ଦ୍ଲୃ","ଦ୍ଲୃu":"ଦ୍ଲୃ","ଦ୍ଲୃU":"ଦ୍ଲୠ","ଦ୍ଲୃଓo":"ଦ୍ଲୠ","ଦ୍h":"ଧ୍","ଧ୍a":"ଧ","ଧa":"ଧା","ଧ୍i":"ଧି","ଧ୍I":"ଧୀ","ଧିi":"ଧୀ","ଧେe":"ଧୀ","ଧ୍u":"ଧୁ","ଧ୍U":"ଧୂ","ଧୋo":"ଧୂ","ଧୁu":"ଧୂ","ଧ୍e":"ଧେ","ଧi":"ଧୈ","ଧ୍o":"ଧୋ","ଧu":"ଧୌ","ଧ୍:":"ଧଃ","ଧ୍a:":"ଧଃ","ଧ୍O":"ଧୋ","ଧୋM":"ଧାଁ","ଧ୍E":"ଧେ","ଧେM":"ଧଁ","ଧ୍R":"ଧୃ","ଧୃu":"ଧୃ","ଧୃU":"ଧୠ","ଧୃଓo":"ଧୠ","ଧ୍M":"ଧଂ","ଧୃl":"ଧ୍ଲୃ","ଧ୍ଲୃu":"ଧ୍ଲୃ","ଧ୍ଲୃU":"ଧ୍ଲୠ","ଧ୍ଲୃଓo":"ଧ୍ଲୠ",';
amhaHash+='"n":"ନ୍","ନ୍a":"ନ","ନa":"ନା","ନ୍i":"ନି","ନ୍I":"ନୀ","ନିi":"ନୀ","ନେe":"ନୀ","ନ୍u":"ନୁ","ନ୍U":"ନୂ","ନୋo":"ନୂ","ନୁu":"ନୂ","ନ୍e":"ନେ","ନi":"ନୈ","ନ୍o":"ନୋ","ନu":"ନୌ","ନ୍:":"ନଃ","ନ:":"ନଃ","ନ୍O":"ନୋ","ନୋM":"ନାଁ","ନ୍E":"ନେ","ନେM":"ନଁ","ନ୍R":"ନୃ","ନୃu":"ନୃ","ନୃU":"ନୠ","ନୃଓo":"ନୠ","ନ୍M":"ନଂ","ନୃl":"ନ୍ଲୃ","ନ୍ଲୃu":"ନ୍ଲୃ","ନ୍ଲୃU":"ନ୍ଲୠ","ନ୍ଲୃଓo":"ନ୍ଲୠ",';
amhaHash+='"p":"ପ୍","ପ୍a":"ପ","ପa":"ପା","ପ୍i":"ପି","ପ୍I":"ପୀ","ପିi":"ପୀ","ପେe":"ପୀ","ପ୍u":"ପୁ","ପ୍U":"ପୂ","ପୋo":"ପୂ","ପୁu":"ପୂ","ପ୍e":"ପେ","ପi":"ପୈ","ପ୍o":"ପୋ","ପu":"ପୌ","ପ୍:":"ପଃ","ପ:":"ପଃ","ପ୍O":"ପୋ","ପୋM":"ପାଁ","ପ୍E":"ପେ","ପେM":"ପଁ","ପ୍R":"ପୃ","ପୃu":"ପୃ","ପୃU":"ପୠ","ପୃଓo":"ପୠ","ପ୍M":"ପଂ","ପୃl":"ପ୍ଲୃ","ପ୍ଲୃu":"ପ୍ଲୃ","ପ୍ଲୃU":"ପ୍ଲୠ","ପ୍ଲୃଓo":"ପ୍ଲୠ",';
amhaHash+='"P":"ପ୍","ପ୍a:":"ପଃ","ପ୍h":"ଫ୍","ଫ୍a":"ଫ","ଫa":"ଫା","ଫ୍i":"ଫି","ଫ୍I":"ଫୀ","ଫିi":"ଫୀ","ଫ୍ee":"ଫୀ","ଫ୍u":"ଫୁ","ଫ୍U":"ଫୂ","ଫୋo":"ଫୂ","ଫ୍uu":"ଫୂ","ଫ୍e":"ଫେ","ଫi":"ଫୈ","ଫ୍o":"ଫୋ","ଫu":"ଫୌ","ଫ୍:":"ଫଃ","ଫ୍a:":"ଫଃ","ଫ୍O":"ଫୋ","ଫୋM":"ଫାଁ","ଫ୍E":"ଫେ","ଫେM":"ଫଁ","ଫ୍R":"ଫୃ","ଫୃu":"ଫୃ","ଫୃU":"ଫୠ","ଫୃଓo":"ଫୠ","ଫ୍M":"ଫଂ","ଫୃl":"ଫ୍ଲୃ","ଫ୍ଲୃu":"ଫ୍ଲୃ","ଫ୍ଲୃU":"ଫ୍ଲୠ","ଫ୍ଲୃଓo":"ଫ୍ଲୠ",';
amhaHash+='"f":"ଫ୍","F":"ଫ୍","b":"ବ୍","ବ୍a":"ବ","ବa":"ବା","ବ୍i":"ବି","ବ୍I":"ବୀ","ବିi":"ବୀ","ବେe":"ବୀ","ବ୍u":"ବୁ","ବ୍U":"ବୂ","ବୋo":"ବୂ","ବୁu":"ବୂ","ବ୍e":"ବେ","ବi":"ବୈ","ବ୍o":"ବୋ","ବu":"ବୌ","ବ୍:":"ବଃ","ବ:":"ବଃ","ବ୍O":"ବୋ","ବୋM":"ବାଁ","ବ୍E":"ବେ","ବେM":"ବଁ","ବ୍R":"ବୃ","ବୃu":"ବୃ","ବୃU":"ବୠ","ବୃଓo":"ବୠ","ବ୍M":"ବଂ","ବୃl":"ବ୍ଲୃ","ବ୍ଲୃu":"ବ୍ଲୃ","ବ୍ଲୃU":"ବ୍ଲୠ","ବ୍ଲୃଓo":"ବ୍ଲୠ",';
amhaHash+='"B":"ବ୍","ବ୍h":"ଭ୍","ଭ୍a":"ଭ","ଭa":"ଭା","ଭ୍i":"ଭି","ଭ୍I":"ଭୀ","ଭିi":"ଭୀ","ଭେe":"ଭୀ","ଭ୍u":"ଭୁ","ଭ୍U":"ଭୂ","ଭୋo":"ଭୂ","ଭୁu":"ଭୂ","ଭ୍e":"ଭେ","ଭi":"ଭୈ","ଭ୍o":"ଭୋ","ଭu":"ଭୌ","ଭ୍:":"ଭଃ","ଭ୍a:":"ଭଃ","ଭ୍O":"ଭୋ","ଭୋM":"ଭାଁ","ଭ୍E":"ଭେ","ଭେM":"ଭଁ","ଭୃ":"ଭୃ","ଭୃu":"ଭୃ","ଭୃU":"ଭୠ","ଭୃଓo":"ଭୠ","ଭ୍M":"ଭଂ","ଭୃl":"ଭ୍ଲୃ","ଭ୍ଲୃu":"ଭ୍ଲୃ","ଭ୍ଲୃU":"ଭ୍ଲୠ","ଭ୍ଲୃଓo":"ଭ୍ଲୠ","U092DU094D":"ଭ୍",';
amhaHash+='"m":"ମ୍","ମ୍a":"ମ","ମa":"ମା","ମ୍i":"ମି","ମ୍I":"ମୀ","ମିi":"ମୀ","ମେe":"ମୀ","ମ୍u":"ମୁ","ମ୍U":"ମୂ","ମୋo":"ମୂ","ମୁu":"ମୂ","ମ୍e":"ମେ","ମi":"ମୈ","ମ୍o":"ମୋ","ମu":"ମୌ","ମ୍:":"ମଃ","ମ:":"ମଃ","ମ୍O":"ମୋ","ମୋM":"ମାଁ","ମ୍E":"ମେ","ମେM":"ମଁ","ମ୍R":"ମୃ","ମୃu":"ମୃ","ମୃU":"ମୠ","ମୃଓo":"ମୠ","ମ୍M":"ମଂ","ମୃl":"ମ୍ଲୃ","ମ୍ଲୃu":"ମ୍ଲୃ","ମ୍ଲୃU":"ମ୍ଲୠ","ମ୍ଲୃଓo":"ମ୍ଲୠ",';
amhaHash+='"y":"ଯ୍","ଯ୍a":"ଯ","ଯa":"ଯା","ଯ୍i":"ଯି","ଯ୍I":"ଯୀ","ଯିi":"ଯୀ","ଯେe":"ଯୀ","ଯ୍u":"ଯୁ","ଯ୍U":"ଯୂ","ଯୋo":"ଯୂ","ଯୁu":"ଯୂ","ଯ୍e":"ଯେ","ଯi":"ଯୈ","ଯ୍o":"ଯୋ","ଯu":"ଯୌ","ଯ୍:":"ଯଃ","ଯ:":"ଯଃ","ଯ୍O":"ଯୋ","ଯୋM":"ଯାଁ","ଯ୍E":"ଯେ","ଯେM":"ଯଁ","ଯ୍R":"ଯୃ","ଯୃu":"ଯୃ","ଯୃU":"ଯୠ","ଯୃଓo":"ଯୠ","ଯ୍M":"ଯଂ","ଯୃl":"ଯ୍ଲୃ","ଯ୍ଲୃu":"ଯ୍ଲୃ","ଯ୍ଲୃU":"ଯ୍ଲୠ","ଯ୍ଲୃଓo":"ଯ୍ଲୠ",';
amhaHash+='"r":"ର୍","ର୍r":"ର୍‍","ର୍a":"ର","ରa":"ରା","ର୍i":"ରି","ର୍I":"ରୀ","ରିi":"ରୀ","ରେe":"ରୀ","ର୍u":"ରୁ","ର୍U":"ରୂ","ରୋo":"ରୂ","ରୁu":"ରୂ","ର୍e":"ରେ","ରi":"ରୈ","ର୍o":"ରୋ","ରu":"ରୌ","ର୍:":"ରଃ","ର:":"ରଃ","ର୍O":"ରୋ","ରୋM":"ରାଁ","ର୍E":"ରେ","ରେM":"ରଁ","ର୍M":"ରଂ","ର୍ଲୃ":"ର୍ଲୃ","ର୍ଲୃu":"ର୍ଲୃ","ର୍ଲୃU":"ର୍ଲୠ","ର୍ଲୃଓo":"ର୍ଲୠ","ର୍R":"ରୃ","ରୃu":"ରୃ","ରୃU":"ରୠ","ରୃଓo":"ରୠ",';
amhaHash+='"l":"ଲ୍","ଲ୍a":"ଲ","ଲa":"ଲା","ଲ୍i":"ଲି","ଲ୍I":"ଲୀ","ଲିi":"ଲୀ","ଲେe":"ଲୀ","ଲ୍u":"ଲୁ","ଲ୍U":"ଲୂ","ଲୋo":"ଲୂ","ଲୁu":"ଲୂ","ଲ୍e":"ଲେ","ଲi":"ଲୈ","ଲ୍o":"ଲୋ","ଲu":"ଲୌ","ଲ୍:":"ଲଃ","ଲ:":"ଲଃ","ଲ୍O":"ଲୋ","ଲୋM":"ଲାଁ","ଲ୍E":"ଲେ","ଲେM":"ଲଁ","ଲ୍R":"ଲୃ","ଲୃu":"ଲୃ","ଲୃU":"ଲୠ","ଲୃଓo":"ଲୠ","ଲ୍M":"ଲଂ","ଲୃl":"ଲ୍ଲୃ","ଲ୍ଲୃu":"ଲ୍ଲୃ","ଲ୍ଲୃU":"ଲ୍ଲୠ","ଲ୍ଲୃଓo":"ଲ୍ଲୠ",';
amhaHash+='"v":"ଭ୍","ଵ୍a":"ଵ","ଵa":"ଵା","ଵ୍i":"ଵି","ଵ୍I":"ଵୀ","ଵିi":"ଵୀ","ଵେe":"ଵୀ","ଵ୍u":"ଵୁ","ଵ୍U":"ଵୂ","ଵୋo":"ଵୂ","ଵୁu":"ଵୂ","ଵ୍e":"ଵେ","ଵi":"ଵୈ","ଵ୍o":"ଵୋ","ଵu":"ଵୌ","ଵ୍:":"ଵଃ","ଵ:":"ଵଃ","ଵ୍O":"ଵୋ","ଵୋM":"ଵାଁ","ଵ୍E":"ଵେ","ଵେM":"ଵଁ","ଵ୍R":"ଵୃ","ଵୃu":"ଵୃ","ଵୃU":"ଵୠ","ଵୃଓo":"ଵୃU","ଵ୍M":"ଵଂ","ଵୃl":"ଵ୍ଲୃ","\u0935\u0962u":"ଵ୍ଲୃ","\u0935\u0962U":"ଵ୍ଲୠ","\u0935\u0962ଓo":"ଵ୍ଲୠ",';
amhaHash+='"V":"ଵ୍","w":"ଵ୍","W":"ଵ୍","ସ୍h":"ଶ୍","ଶ୍a":"ଶ","ଶa":"ଶା","ଶ୍i":"ଶି","ଶ୍I":"ଶୀ","ଶିi":"ଶୀ","ଶେe":"ଶୀ","ଶ୍u":"ଶୁ","ଶ୍U":"ଶୂ","ଶୋo":"ଶୂ","ଶୁu":"ଶୂ","ଶ୍e":"ଶେ","ଶi":"ଶୈ","ଶ୍o":"ଶୋ","ଶu":"ଶୌ","ଶ୍:":"ଶଃ","ଶ୍a:":"ଶଃ","ଶ୍O":"ଶୋ","ଶୋM":"ଶାଁ","ଶ୍E":"ଶେ","ଶେM":"ଶଁ","ଶ୍rR":"ଶରୃ","ଶରୃu":"ଶରୃ","ଶରୃU":"ଶରୠ","ଶରୃoo":"ଶରୠ","ଶ୍R":"ଶୃ","ଶୃu":"ଶୃ","ଶୃU":"ଶୠ","ଶୃଓo":"ଶୠ","ଶ୍M":"ଶଂ","ଶୃl":"ଶ୍ଲୃ","ଶ୍ଲୃu":"ଶ୍ଲୃ","ଶ୍ଲୃU":"ଶ୍ଲୠ","ଶ୍ଲୃଓo":"ଶ୍ଲୠ","ଶ୍h":"ଷ୍","ଷ୍a":"ଷ","ଷa":"ଷା","ଷ୍i":"ଷି","ଷ୍I":"ଷୀ","ଷିi":"ଷୀ","ଷେe":"ଷୀ","ଷ୍u":"ଷୁ","ଷ୍U":"ଷୂ","ଷୋo":"ଷୂ","ଷୁu":"ଷୂ","ଷ୍e":"ଷେ","ଷi":"ଷୈ","ଷ୍o":"ଷୋ","ଷu":"ଷୌ","ଷ୍:":"ଷଃ","ଷ:":"ଷଃ","ଷ୍O":"ଷୋ","ଷୋM":"ଷାଁ","ଷ୍E":"ଷେ","ଷେM":"ଷଁ","ଷ୍R":"ଷୃ","ଷୃu":"ଷୃ","ଷୃU":"ଷୠ","ଷୃଓo":"ଷୠ","ଷ୍M":"ଷଂ","ଷୃl":"ଷ୍ଲୃ","ଷ୍ଲୃu":"ଷ୍ଲୃ","ଷ୍ଲୃU":"ଷ୍ଲୠ","ଷ୍ଲୃଓo":"ଷ୍ଲୠ","ଷ୍h":"ଷ୍",';
amhaHash+='"s":"ସ୍","ସ୍a":"ସ","ସa":"ସା","ସ୍i":"ସି","ସ୍I":"ସୀ","ସିi":"ସୀ","ସେe":"ସୀ","ସ୍u":"ସୁ","ସ୍U":"ସୂ","ସୋo":"ସୂ","ସୁu":"ସୂ","ସ୍e":"ସେ","ସi":"ସୈ","ସ୍o":"ସୋ","ସu":"ସୌ","ସ:":"ସଃ","ସା:":"ସଃ","ସ୍O":"ସୋ","ସୋM":"ସାଁ","ସ୍E":"ସେ","ସେM":"ସଁ","ସ୍R":"ସୃ","ସୃu":"ସୃ","ସୃU":"ସୠ","ସୃଓo":"ସୠ","ସ୍M":"ସଂ","ସୃl":"ସ୍ଲୃ","ସ୍ଲୃu":"ସ୍ଲୃ","ସ୍ଲୃU":"ସ୍ଲୠ","ସ୍ଲୃଓo":"ସ୍ଲୠ",';
amhaHash+='"S":"ଶ୍","h":"ହ୍","ହ୍a":"ହ","ହa":"ହା","ହ୍i":"ହି","ହ୍I":"ହୀ","ହିi":"ହୀ","ହେe":"ହୀ","ହ୍u":"ହୁ","ହ୍U":"ହୂ","ହୋo":"ହୂ","ହୁu":"ହୂ","ହ୍e":"ହେ","ହi":"ହୈ","ହ୍o":"ହୋ","ହu":"ହୌ","ହ୍:":"ହଃ","ହ:":"ହଃ","ହ୍O":"ହୋ","ହୋM":"ହାଁ","ହ୍E":"ହେ","ହେM":"ହଁ","ହ୍R":"ହୃ","ହୃu":"ହୃ","ହୃU":"ହୠ","ହୃଓo":"ହୠ","ହ୍M":"ହଂ","ହୃl":"ହ୍ଲୃ","ହ୍ଲୃu":"ହ୍ଲୃ","ହ୍ଲୃU":"ହ୍ଲୠ","ହ୍ଲୃଓo":"ହ୍ଲୠ",';
amhaHash+='"L":"ଳ୍","ଳ୍a":"ଳ","ଳa":"ଳା","ଳ୍i":"ଳି","ଳ୍I":"ଳୀ","ଳିi":"ଳୀ","ଳେe":"ଳୀ","ଳ୍u":"ଳୁ","ଳ୍U":"ଳୂ","ଳୋo":"ଳୂ","ଳୁu":"ଳୂ","ଳ୍e":"ଳେ","ଳi":"ଳୈ","ଳ୍o":"ଳୋ","ଳu":"ଳୌ","ଳ୍:":"ଳଃ","ଳ:":"ଳଃ","ଳ୍O":"ଳୋ","ଳୋM":"ଳାଁ","ଳ୍E":"ଳେ","ଳେM":"ଳଁ","ଳ୍R":"ଳୃ","ଳୃu":"ଳୃ","ଳୃU":"ଳୠ","ଳୃଓo":"ଳୠ","ଳ୍M":"ଳଂ","ଳୃl":"ଳ୍ଲୃ","ଳ୍ଲୃu":"ଳ୍ଲୃ","ଳ୍ଲୃU":"ଳ୍ଲୠ","ଳ୍ଲୃଓo":"ଳ୍ଲୠ",';
amhaHash+='"x":"କ୍ଷ୍","କ୍ଷ୍a":"କ୍ଷ","କ୍ଷa":"କ୍ଷା","କ୍ଷ୍i":"କ୍ଷି","କ୍ଷ୍I":"କ୍ଷୀ","କ୍ଷିi":"କ୍ଷୀ","କ୍ଷେe":"କ୍ଷୀ","କ୍ଷ୍u":"କ୍ଷୁ","କ୍ଷ୍U":"କ୍ଷୂ","କ୍ଷୋo":"କ୍ଷୂ","କ୍ଷୁu":"କ୍ଷୂ","କ୍ଷ୍e":"କ୍ଷେ","କ୍ଷi":"କ୍ଷୈ","କ୍ଷ୍o":"କ୍ଷୋ","କ୍ଷu":"କ୍ଷୌ","କ୍ଷ୍:":"କ୍ଷଃ","କ୍ଷ:":"କ୍ଷଃ","କ୍ଷ୍O":"କ୍ଷୋ","କ୍ଷୋM":"କ୍ଷାଁ","କ୍ଷ୍E":"କ୍ଷେ","କ୍ଷେM":"କ୍ଷଁ","କ୍ଷ୍R":"କ୍ଷୃ","କ୍ଷୃu":"କ୍ଷୃ","କ୍ଷୃU":"କ୍ଷୠ","କ୍ଷୃଓo":"କ୍ଷୠ","କ୍ଷ୍M":"କ୍ଷଂ","କ୍ଷୃl":"କ୍ଷ୍ଲୃ","କ୍ଷ୍ଲୃu":"କ୍ଷ୍ଲୃ","କ୍ଷ୍ଲୃU":"କ୍ଷ୍ଲୠ","କ୍ଷ୍ଲୃଓo":"କ୍ଷ୍ଲୠ",';
amhaHash+='"X":"କ୍ଷ୍","଼n":"ଜ୍ଞ୍","ଙ୍y":"ଜ୍ଞ୍","ଜ୍ଞ୍a":"ଜ୍ଞ","ଜ୍ଞa":"ଜ୍ଞା","ଜ୍ଞ୍i":"ଜ୍ଞି","ଜ୍ଞ୍I":"ଜ୍ଞୀ","ଜ୍ଞିi":"ଜ୍ଞୀ","ଜ୍ଞେe":"ଜ୍ଞୀ","ଜ୍ଞ୍u":"ଜ୍ଞୁ","ଜ୍ଞ୍U":"ଜ୍ଞୂ","ଜ୍ଞୋo":"ଜ୍ଞୂ","ଜ୍ଞୁu":"ଜ୍ଞୂ","ଜ୍ଞ୍e":"ଜ୍ଞେ","ଜ୍ଞi":"ଜ୍ଞୈ","ଜ୍ଞ୍o":"ଜ୍ଞୋ","ଜ୍ଞu":"ଜ୍ଞୌ","ଜ୍ଞ୍:":"ଜ୍ଞଃ","ଜ୍ଞ୍a:":"ଜ୍ଞଃ","ଜ୍ଞ୍O":"ଜ୍ଞୋ","ଜ୍ଞୋM":"ଜ୍ଞାଁ","ଜ୍ଞ୍E":"ଜ୍ଞେ","ଜ୍ଞେM":"ଜ୍ଞଁ","ଜ୍ଞ୍R":"ଜ୍ଞୃ","ଜ୍ଞୃu":"ଜ୍ଞୃ","ଜ୍ଞୃU":"ଜ୍ଞୠ","ଜ୍ଞୃଓo":"ଜ୍ଞୠ","ଜ୍ଞ୍M":"ଜ୍ଞଂ","ଜ୍ଞୃl":"ଜ୍ଞ୍ଲୃ","ଜ୍ଞ୍ଲୃu":"ଜ୍ଞ୍ଲୃ","ଜ୍ଞ୍ଲୃU":"ଜ୍ଞ୍ଲୠ","ଜ୍ଞ୍ଲୃଓo":"ଜ୍ଞ୍ଲୠ",';
amhaHash+='"a":"ଅ","ଓm":"ଓଁ","ଅa":"ଆ","A":"ଆ","i":"ଇ","I":"ଈ","ଇi":"ଈ","ଏe":"ଐ","u":"ଉ","ଉu":"ଊ","U":"ଊ","ଓo":"ଔ","e":"ଏ","ଅi":"ଐ","o":"ଓ","ଅu":"ଔ","H":"ଃ","M":"ଂ","ଂM":"ଁ","E":"ଏ","ଏM":"ଅଁ","O":"ଓ","ଓM":"ଆଁ","ଆU":"ଓ","ଋl":"ଲୠ","ଲୠu":"ଲୠ","R":"ଋ","ଋi":"ଋ","ଋu":"ଋ","ଋU":"ୠ","ଋଓo":"ୠ","ଋI":"ୠ","ଋଇi":"ୠ","~":"ଽ","ଃH":"‌","q":"","q":"","Q":"","Q":"॔","J":"଼","K":"଼","C":"॰","z":"|","|z":"||","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 "";
}