/*
 *
 *	Author: Ashutosh Raghuwanshi.
 *	E-Mail: ashutosh@pragya.cjb.net
 *	URL   : http://pragya.cjb.net
 *  Notice: You may freely use this script as long as you keep this banner as it is.
 *
 */
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
   try{window.status = "Using JScript version " + @_jscript_version;}catch(exception){}
   @else @*/
   alert("You need a more recent script engine.\nMinimum Internet Explorer 5.0 is required.");
/*@end @*/

var ALT_Key = false;
var KeyFilter;

function GetCookie(name){
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
	while (i < clen)
	{
		var j = i + alen;
		var endstr;
		if (document.cookie.substring(i, j) == arg){
			endstr = document.cookie.indexOf (";", j);
			if (endstr == -1)
				endstr = document.cookie.length;
			return unescape(document.cookie.substring(j, endstr));
		}
		i = document.cookie.indexOf(" ", i) + 1;
		if (i == 0)
		break;
	}
return null;
}

function SetCookie(name, value){
var argv = SetCookie.arguments;
var argc = SetCookie.arguments.length;
var expires = (2 < argc) ? argv[2] : null;
var path = (3 < argc) ? argv[3] : null;
var domain = (4 < argc) ? argv[4] : null;
var secure = (5 < argc) ? argv[5] : true;
	document.cookie = name + "=" + escape(value.toString()) +
		((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
		((path == null) ? "" : ("; path=" + path)) +
		((domain == null) ? "" : ("; domain=" + domain)) +
		((secure == true) ? "; secure" : "");
}

function RestoreSettings(){
var Size = parseInt(GetCookie("Size"));
	document.all.txtEdit.style.fontSize = document.all.cmbFontSize.value = isNaN(Size) ? document.all.cmbFontSize.value : Size;
}

function SaveSettings(){
var expdate = new Date();
	expdate.setTime(expdate.getTime() +  (24 * 60 * 60 * 1000));
	SetCookie("Size", document.all.cmbFontSize.value, expdate, "/", null, false);
}

function Unicode2UTF(){
var UTF_Stream = new Stream(document.all.txtEdit.innerText);
	document.all.txtEdit.innerText = UCS2_to_UTF8(UTF_Stream);
}

function UTF2Unicode(){
var UTF_Stream = new Stream(document.all.txtEdit.innerText);
	document.all.txtEdit.innerText = UTF8_to_UCS2(UTF_Stream);
}

function EncodeText(){
	document.all.txtEdit.innerText = escape(document.all.txtEdit.innerText);
}

function DecodeText(){
	document.all.txtEdit.innerText = unescape(document.all.txtEdit.innerText);
}

function CutText(){
var tmpRange;
	tmpRange = document.body.createTextRange();
	tmpRange.moveToElementText(document.all.txtEdit)
	try{tmpRange.execCommand('cut');}catch(err){}
}

function CopyText(){
var tmpRange;
	tmpRange = document.body.createTextRange();
	tmpRange.moveToElementText(document.all.txtEdit)
	try{tmpRange.execCommand('copy');}catch(err){}
}

function PasteText(){
var tmpRange;
	tmpRange = document.body.createTextRange();
	tmpRange.moveToElementText(document.all.txtEdit)
	try{tmpRange.execCommand('paste');}catch(err){}
}

function compound(character){
var Range;
	Range = document.selection.createRange();
	if(Range.text.length > 0) document.selection.clear();
	Range.text = character;
	event.returnValue=false;
}

function combine(Cur_Char){
var Range, SecRange, WordRange, Prev_Char, Sec_Prev_Char;
	Range = document.createRange();
	Range.collapse(false);
	SecRange = Range.cloneRange();
	Range.move("character", -1);
	SecRange.move("character", -2);
	Range.expand("character");
	Prev_Char = Range.text.charCodeAt(0);
	SecRange.expand("character");
	Sec_Prev_Char = SecRange.text.charCodeAt(0);
	if(Prev_Char == 0x094d)
		switch(Cur_Char){
			case 0x0020:
			case 0x000D:
				Range.text += "\u200D";
			// "Zero Width Joiner" has been used instead of space to avoid its selection with the word.
				Range.move("character", -2);
				Range.expand("character");
				Range.text = " ";
				WordRange = document.selection.createRange();
				WordRange.collapse(false);
				WordRange.move("character", -1);
				WordRange.move("word", -1);
				WordRange.expand("character");
				WordRange.expand("word", 1);
				try{
					if(WordDict.Exists(escape(WordRange.text)))
						WordRange.text = WordDict.Item(escape(WordRange.text));
				}catch(e){/*Ignore The Error*/}

				WordRange.collapse(false);
				WordRange.move("character", -1);
				WordRange.expand("character");
				WordRange.expand("character");
				WordRange.text = "";
				break;
			case 0x002E:
				Range.move("character", -1);
				Range.expand("character");
				Range.expand("character");
				switch(Sec_Prev_Char){
					case 0x0915: Range.text = "\u0958\u094D"; event.returnValue=false; break;
					case 0x0916: Range.text = "\u0959\u094D"; event.returnValue=false; break;
					case 0x0917: Range.text = "\u095A\u094D"; event.returnValue=false; break;
					case 0x091C: Range.text = "\u095B\u094D"; event.returnValue=false; break;
					case 0x0921: Range.text = "\u095C\u094D"; event.returnValue=false; break;
					case 0x0922: Range.text = "\u095D\u094D"; event.returnValue=false; break;
					case 0x0928: Range.text = "\u0929\u094D"; event.returnValue=false; break;
					case 0x092B: Range.text = "\u095E\u094D"; event.returnValue=false; break;
					case 0x092F: Range.text = "\u095F\u094D"; event.returnValue=false; break;
					case 0x0930: Range.text = "\u0931\u094D"; event.returnValue=false; break;
					case 0x0933: Range.text = "\u0934\u094D"; event.returnValue=false; break;
					default    : Range.move("character", 1); Range.text += "\u093C"; event.returnValue=false; break;
				}
				break;
			case 0x0905: Range.text = ""; event.returnValue=false; break;
			case 0x0906: Range.text = "\u093E"; event.returnValue=false; break;
			case 0x0907: Range.text = "\u093F"; event.returnValue=false; break;
			case 0x0908: Range.text = "\u0940"; event.returnValue=false; break;
			case 0x0909: Range.text = "\u0941"; event.returnValue=false; break;
			case 0x090A: Range.text = "\u0942"; event.returnValue=false; break;
			case 0x090B:
				if(Sec_Prev_Char == 0x0933){
					Range.move("character", -1);
					Range.expand("character");
					Range.expand("character");
					Range.text = "";
					combine(0x090C);
				}
				else
					Range.text = "\u0943";
				event.returnValue=false;
				break;
			case 0x090C: Range.text = "\u0962"; event.returnValue=false; break;
			case 0x090D: Range.text = "\u0945"; event.returnValue=false; break;
			case 0x090F: Range.text = "\u0947"; event.returnValue=false; break;
			case 0x0911: Range.text = "\u0949"; event.returnValue=false; break;
			case 0x0913: Range.text = "\u094B"; event.returnValue=false; break;
			case 0x0928: compound("\u0928\u094D"); break;
			case 0x0939:
				Range.move("character", -1);
				Range.expand("character");
				Range.expand("character");
				switch(Sec_Prev_Char){
					case 0x0915: Range.text = "\u0916\u094D"; event.returnValue=false; break;
					case 0x0917: Range.text = "\u0918\u094D"; event.returnValue=false; break;
					case 0x091A: Range.text = "\u091B\u094D"; event.returnValue=false; break;
					case 0x091C: Range.text = "\u091D\u094D"; event.returnValue=false; break;
					case 0x091F: Range.text = "\u0920\u094D"; event.returnValue=false; break;
					case 0x0921: Range.text = "\u0922\u094D"; event.returnValue=false; break;
					case 0x0924: Range.text = "\u0925\u094D"; event.returnValue=false; break;
					case 0x0926: Range.text = "\u0927\u094D"; event.returnValue=false; break;
					case 0x092A: Range.text = "\u092B\u094D"; event.returnValue=false; break;
					case 0x092C: Range.text = "\u092D\u094D"; event.returnValue=false; break;
					case 0x0938: Range.text = "\u0936\u094D"; event.returnValue=false; break;
					case 0x0936: Range.text = "\u0937\u094D"; event.returnValue=false; break;
					default    : Range.move("character", 2); Range.text = "\u0939\u094D";
								event.returnValue=false;
				}
				break;
			case 0x092E:
				compound("\u092E\u094D");
				break;
			case 0x092F:
				if(Sec_Prev_Char == 0x0917){
					Range.move("character", -1);
					Range.expand("character");
					Range.expand("character");
					Range.text = "\u091C\u094D\u091E\u094D";
					event.returnValue=false;
				}
				else
					compound("\u092F\u094D");
				break;
		}
	else
		switch(Cur_Char){
			case 0x0020:
			case 0x000D:
				if(Range.htmlText.length == 0 || Range.htmlText.lastIndexOf("</TEXTAREA>") != -1) break;
				Range.text += ("\u0020\u200D");
				WordRange = document.selection.createRange();
				WordRange.collapse(false);
				WordRange.move("character", -1);
				WordRange.move("word", -1);
				WordRange.expand("character");
				WordRange.expand("word", 1);
				try{
					if(WordDict.Exists(escape(WordRange.text)))
						WordRange.text = WordDict.Item(escape(WordRange.text));
				}catch(e){/*Ignore The Error*/}

				WordRange.collapse(false);
				WordRange.move("character", -1);
				WordRange.expand("character");
				WordRange.expand("character");
				WordRange.text = "";
				break;
			case 0x002E:
				switch(Prev_Char){
					case 0x002E: Range.text = "\u0964"; event.returnValue=false; break;
					case 0x0964: Range.text = "\u0965"; event.returnValue=false; break;
				}
				break;
			case 0x004D:
				switch(Prev_Char){
					case 0x0911: Range.text = "\u0950"; event.returnValue=false; break;
					case 0x090A:
						if(Sec_Prev_Char == 0x0906){
							Range.move("character", -1);
							Range.expand("character");
							Range.expand("character");
							Range.text = "\u0950";
							event.returnValue=false;
						}
						break;
				}
				break;
			case 0x0901:
				if(Prev_Char == 0x090A){
					Range.text = "\u0950"; event.returnValue=false;
				}
				break;
			case 0x0905:
				switch(Prev_Char){
					case 0x002E: Range.text = "\u093D"; event.returnValue=false; break;
					case 0x0905: Range.text = "\u0906"; event.returnValue=false; break;
					default: if((Prev_Char >= 0x0915 && Prev_Char <= 0x0939) ||
								(Prev_Char >= 0x0958 && Prev_Char <= 0x095F)){
								Range.text += "\u093E";
								event.returnValue=false;
							 }
							break;
				}
				break;
			case 0x0907:
				switch(Prev_Char){
					case 0x0905: Range.text = "\u0910"; event.returnValue=false; break;
					case 0x0907: Range.text = "\u0908"; event.returnValue=false; break;
					case 0x093F: Range.text = "\u0940"; event.returnValue=false; break;
					case 0x0948: Range.text = "\u0908"; event.returnValue=false; break;
					default: if((Prev_Char >= 0x0915 && Prev_Char <= 0x0939) ||
								(Prev_Char >= 0x0958 && Prev_Char <= 0x095F)){
								Range.text += "\u0948";
								event.returnValue=false;
							 }
							break;
				}
				break;
			case 0x0909:
				switch(Prev_Char){
					case 0x0905: Range.text = "\u0914"; event.returnValue=false; break;
					case 0x0909: Range.text = "\u090A"; event.returnValue=false; break;
					case 0x0913: Range.text = "\u0914"; event.returnValue=false; break;
					case 0x0941: Range.text = "\u0942"; event.returnValue=false; break;
					case 0x094B: Range.text = "\u094C"; event.returnValue=false; break;
					default: if((Prev_Char >= 0x0915 && Prev_Char <= 0x0939) ||
								(Prev_Char >= 0x0958 && Prev_Char <= 0x095F)){
								Range.text += "\u094C";
								event.returnValue=false;
							 }
							 else if(Prev_Char == 0x094B){
								Range.text = "\u094C";
								event.returnValue=false;
							 }
							break;
				}
				break;
			case 0x090B:
				switch(Prev_Char){
					case 0x090B: Range.text = "\u0960"; event.returnValue=false; break;
					case 0x090C: Range.text = "\u0961"; event.returnValue=false; break;
					case 0x0933:
						if(Sec_Prev_Char == 0x094D){
							Range.move("character", -1);
							Range.expand("character");
							Range.expand("character");
							Range.text = "\u0962";
						}
						else
							Range.text = "\u090C";
						event.returnValue=false;
						break;
					case 0x0943: Range.text = "\u0944"; event.returnValue=false; break;
					case 0x0962: Range.text = "\u0963"; event.returnValue=false; break;
				}
				break;
			case 0x090C: compound("\u090C"); break;
			case 0x090F:
				switch(Prev_Char){
					case 0x007E:
						if(Sec_Prev_Char == 0x094D){
							Range.move("character", -1);
							Range.expand("character");
							Range.expand("character");
							Range.text = "\u0946";
						}
						else
							Range.text = "\u090E";
						event.returnValue=false;
						break;
					case 0x090F: Range.text = "\u0908"; event.returnValue=false; break;
					case 0x0947: Range.text = "\u0940"; event.returnValue=false; break;
				}
				break;
			case 0x0913:
				switch(Prev_Char){
					case 0x007E:
						if(Sec_Prev_Char == 0x094D){
							Range.move("character", -1);
							Range.expand("character");
							Range.expand("character");
							Range.text = "\u094A";
						}
						else
							Range.text = "\u0912";
						event.returnValue=false;
						break;
					case 0x002E: Range.text = "\u0970"; event.returnValue=false; break;
					case 0x0913: Range.text = "\u090A"; event.returnValue=false; break;
					case 0x094B: Range.text = "\u0942"; event.returnValue=false; break;
				}
				break;
			case 0x0923:
				if(Prev_Char == 0x002E){
					Range.text = "\u0901";
					event.returnValue=false;
				}
				else
					compound("\u0923\u094D");
				break;
			case 0x0928:
				if(Prev_Char == 0x002E){
					 Range.text = "\u0902";
					 event.returnValue=false;
				}
				else
					compound("\u0928\u094D");
				break;
			case 0x092E:
				if(Prev_Char == 0x002E){
					 Range.text = "\u0902";
					 event.returnValue=false;
				}
				else
					compound("\u092E\u094D");
				break;
			case 0x092F: compound("\u092F\u094D");	break;
			case 0x0939:
				switch(Prev_Char){
					case 0x002E: Range.text = "\u094D"; event.returnValue=false; break;
					case 0x0043:
					case 0x0063: Range.text = "\u091A\u094D"; event.returnValue=false; break;
					default: compound("\u0939\u094D"); event.returnValue=false;
				}	
				break;
		}
	event.keyCode = Cur_Char;
}

function ITrans_KeyFilter(){
var tmpRange;
	if(event.type=="keydown"){
		if(event.keyCode==8/*BackSpace*/){
			tmpRange = document.selection.createRange();
			tmpRange.collapse(false);
			tmpRange.move("character", -1);
			tmpRange.expand("character");
			if(tmpRange.text.charCodeAt(0) == 0x094D)
				tmpRange.text = "";
		}
		return;
	}
	switch(event.keyCode){
/* C R */ case 0x000D: if(!event.shiftKey) combine(0x000D); break;
/* SPC */ case 0x0020: if(!event.shiftKey) combine(0x0020); break;
/*  !  */ case 0x0021: break;
/*  "  */ case 0x0022: break;
/*  #  */ case 0x0023: break;
/*  $  */ case 0x0024: break;
/*  %  */ case 0x0025: break;
/*  &  */ case 0x0026: break;
/*  '  */ case 0x0027: break;
/*  (  */ case 0x0028: break;
/*  )  */ case 0x0029: break;
/*  *  */ case 0x002A: break;
/*  +  */ case 0x002B: break;
/*  ,  */ case 0x002C: break;
/*  -  */ case 0x002D: break;
/*  .  */ case 0x002E: combine(0x002E); break;
/*  /  */ case 0x002F: break;
/*  0  */ case 0x0030: event.keyCode = 0x0966; break;
/*  1  */ case 0x0031: event.keyCode = 0x0967; break;
/*  2  */ case 0x0032: event.keyCode = 0x0968; break;
/*  3  */ case 0x0033: event.keyCode = 0x0969; break;
/*  4  */ case 0x0034: event.keyCode = 0x096A; break;
/*  5  */ case 0x0035: event.keyCode = 0x096B; break;
/*  6  */ case 0x0036: event.keyCode = 0x096C; break;
/*  7  */ case 0x0037: event.keyCode = 0x096D; break;
/*  8  */ case 0x0038: event.keyCode = 0x096E; break;
/*  9  */ case 0x0039: event.keyCode = 0x096F; break;
/*  :  */ case 0x003A: break;
/*  ;  */ case 0x003B: break;
/*  <  */ case 0x003C: break;
/*  =  */ case 0x003D: break;
/*  >  */ case 0x003E: break;
/*  ?  */ case 0x003F: break;
/*  @  */ case 0x0040: break;
/*  A  */ case 0x0041: combine(0x0906); break;
/*  B  */ case 0x0042: break;
/*  C  */ case 0x0043: break;
/*  D  */ case 0x0044: compound("\u0921\u094D"); break;
/*  E  */ case 0x0045: combine(0x090D); break;
/*  F  */ case 0x0046: break;
/*  G  */ case 0x0047: compound("\u0919\u094D"); break;
/*  H  */ case 0x0048: event.keyCode = 0x0903; break;
/*  I  */ case 0x0049: combine(0x0908); break;
/*  J  */ case 0x004A: compound("\u091E\u094D"); break;
/*  K  */ case 0x004B: break;
/*  L  */ case 0x004C: compound("\u0933\u094D"); break;
/*  M  */ case 0x004D: combine(0x004D); break;
/*  N  */ case 0x004E: combine(0x0923); break;
/*  O  */ case 0x004F: combine(0x0911); break;
/*  P  */ case 0x0050: break;
/*  Q  */ case 0x0051: break;
/*  R  */ case 0x0052: combine(0x090B); break;
/*  S  */ case 0x0053: compound("\u0936\u094D"); break;
/*  T  */ case 0x0054: compound("\u091F\u094D"); break;
/*  U  */ case 0x0055: combine(0x090A); break;
/*  V  */ case 0x0056: compound("\u0935\u094D"); break;
/*  W  */ case 0x0057: compound("\u0935\u094D"); break;
/*  X  */ case 0x0058: break;
/*  Y  */ case 0x0059: compound("\u092F\u094D");break;
/*  Z  */ case 0x005A: break;
/*  [  */ case 0x005B: break;
/*  \  */ case 0x005C: break;
/*  ]  */ case 0x005D: break;
/*  ^  */ case 0x005E: break;
/*  _  */ case 0x005F: event.keyCode = 0x0020;
/*  `  */ case 0x0060: break;
/*  a  */ case 0x0061: combine(0x0905); break;
/*  b  */ case 0x0062: compound("\u092C\u094D"); break;
/*  c  */ case 0x0063: break;
/*  d  */ case 0x0064: compound("\u0926\u094D"); break;
/*  e  */ case 0x0065: combine(0x090F); break;
/*  f  */ case 0x0066: compound("\u092B\u094D"); break;
/*  g  */ case 0x0067: compound("\u0917\u094D"); break;
/*  h  */ case 0x0068: combine(0x0939); break;
/*  i  */ case 0x0069: combine(0x0907); break;
/*  j  */ case 0x006A: compound("\u091C\u094D"); break;
/*  k  */ case 0x006B: compound("\u0915\u094D"); break;
/*  l  */ case 0x006C: compound("\u0932\u094D"); break;
/*  m  */ case 0x006D: combine(0x092E); break;
/*  n  */ case 0x006E: combine(0x0928); break;
/*  o  */ case 0x006F: combine(0x0913); break;
/*  p  */ case 0x0070: compound("\u092A\u094D"); break;
/*  q  */ case 0x0071: compound("\u0958\u094D"); break;
/*  r  */ case 0x0072: compound("\u0930\u094D"); break;
/*  s  */ case 0x0073: compound("\u0938\u094D"); break;
/*  t  */ case 0x0074: compound("\u0924\u094D"); break;
/*  u  */ case 0x0075: combine(0x0909); break;
/*  v  */ case 0x0076: compound("\u0935\u094D"); break;
/*  w  */ case 0x0077: compound("\u0935\u094D"); break;
/*  x  */ case 0x0078: compound("\u0915\u094D\u0937\u094D"); break;
/*  y  */ case 0x0079: combine(0x092F); break;
/*  z  */ case 0x007A: compound("\u095B\u094D"); break;
/*  {  */ case 0x007B: break;
/*  |  */ case 0x007C: break;
/*  }  */ case 0x007D: break;
/*  ~  */ case 0x007E: break;
	}
}

function InScript_KeyFilter(){
	switch(event.keyCode){
/*  !  */ case 0x0021: event.keyCode = 0x090D; break;
/*  "  */ case 0x0022: event.keyCode = 0x0920; break;
/*  #  */ case 0x0023: compound("\u094D\u0930"); break;
/*  $  */ case 0x0024: compound("\u0930\u094D"); break;
/*  %  */ case 0x0025: compound("\u091C\u094D\u091E"); break;
/*  &  */ case 0x0026: compound("\u0915\u094D\u0937"); break;
/*  '  */ case 0x0027: event.keyCode = 0x091F; break;
/*  (  */ case 0x0028: break;
/*  )  */ case 0x0029: break;
/*  *  */ case 0x002A: compound("\u0936\u094D\u0930"); break;
/*  +  */ case 0x002B: event.keyCode = 0x090B; break;
/*  ,  */ case 0x002C: break;
/*  -  */ case 0x002D: break;
/*  .  */ case 0x002E: break;
/*  /  */ case 0x002F: event.keyCode = 0x092F; break;
/*  0  */ case 0x0030: break;
/*  1  */ case 0x0031: break;
/*  2  */ case 0x0032: break;
/*  3  */ case 0x0033: break;
/*  4  */ case 0x0034: break;
/*  5  */ case 0x0035: break;
/*  6  */ case 0x0036: break;
/*  7  */ case 0x0037: break;
/*  8  */ case 0x0038: break;
/*  9  */ case 0x0039: break;
/*  :  */ case 0x003A: event.keyCode = 0x091B; break;
/*  ;  */ case 0x003B: event.keyCode = 0x091A; break;
/*  <  */ case 0x003C: event.keyCode = 0x0937; break;
/*  =  */ case 0x003D: event.keyCode = 0x0943; break;
/*  >  */ case 0x003E: event.keyCode = 0x0964; break;
/*  ?  */ case 0x003F: event.keyCode = 0x095F; break;
/*  @  */ case 0x0040: event.keyCode = 0x0945; break;
/*  A  */ case 0x0041: event.keyCode = 0x0913; break;
/*  B  */ case 0x0042: event.keyCode = 0x0934; break;
/*  C  */ case 0x0043: event.keyCode = 0x0923; break;
/*  D  */ case 0x0044: event.keyCode = 0x0905; break;
/*  E  */ case 0x0045: event.keyCode = 0x0906; break;
/*  F  */ case 0x0046: event.keyCode = 0x0907; break;
/*  G  */ case 0x0047: event.keyCode = 0x0909; break;
/*  H  */ case 0x0048: event.keyCode = 0x092B; break;
/*  I  */ case 0x0049: event.keyCode = 0x0918; break;
/*  J  */ case 0x004A: event.keyCode = 0x0931; break;
/*  K  */ case 0x004B: event.keyCode = 0x0916; break;
/*  L  */ case 0x004C: event.keyCode = 0x0925; break;
/*  M  */ case 0x004D: event.keyCode = 0x0936; break;
/*  N  */ case 0x004E: event.keyCode = 0x0933; break;
/*  O  */ case 0x004F: event.keyCode = 0x0927; break;
/*  P  */ case 0x0050: event.keyCode = 0x091D; break;
/*  Q  */ case 0x0051: event.keyCode = 0x0914; break;
/*  R  */ case 0x0052: event.keyCode = 0x0908; break;
/*  S  */ case 0x0053: event.keyCode = 0x090F; break;
/*  T  */ case 0x0054: event.keyCode = 0x090A; break;
/*  U  */ case 0x0055: event.keyCode = 0x0919; break;
/*  V  */ case 0x0056: event.keyCode = 0x0929; break;
/*  W  */ case 0x0057: event.keyCode = 0x0910; break;
/*  X  */ case 0x0058: combine(0x0901); break;
/*  Y  */ case 0x0059: event.keyCode = 0x092D; break;
/*  Z  */ case 0x005A: event.keyCode = 0x090E; break;
/*  [  */ case 0x005B: event.keyCode = 0x0921; break;
/*  \  */ case 0x005C: event.keyCode = 0x0949; break;
/*  ]  */ case 0x005D: event.keyCode = 0x093C; break;
/*  ^  */ case 0x005E: compound("\u0924\u094D\u0930"); break;
/*  _  */ case 0x005F: event.keyCode = 0x0903; break;
/*  `  */ case 0x0060: event.keyCode = 0x094A; break;
/*  a  */ case 0x0061: event.keyCode = 0x094B; break;
/*  b  */ case 0x0062: event.keyCode = 0x0935; break;
/*  c  */ case 0x0063: event.keyCode = 0x092E; break;
/*  d  */ case 0x0064: event.keyCode = 0x094D; break;
/*  e  */ case 0x0065: event.keyCode = 0x093E; break;
/*  f  */ case 0x0066: event.keyCode = 0x093F; break;
/*  g  */ case 0x0067: event.keyCode = 0x0941; break;
/*  h  */ case 0x0068: event.keyCode = 0x092A; break;
/*  i  */ case 0x0069: event.keyCode = 0x0917; break;
/*  j  */ case 0x006A: event.keyCode = 0x0930; break;
/*  k  */ case 0x006B: event.keyCode = 0x0915; break;
/*  l  */ case 0x006C: event.keyCode = 0x0924; break;
/*  m  */ case 0x006D: event.keyCode = 0x0938; break;
/*  n  */ case 0x006E: event.keyCode = 0x0932; break;
/*  o  */ case 0x006F: event.keyCode = 0x0926; break;
/*  p  */ case 0x0070: event.keyCode = 0x091C; break;
/*  q  */ case 0x0071: event.keyCode = 0x094C; break;
/*  r  */ case 0x0072: event.keyCode = 0x0940; break;
/*  s  */ case 0x0073: event.keyCode = 0x0947; break;
/*  t  */ case 0x0074: event.keyCode = 0x0942; break;
/*  u  */ case 0x0075: event.keyCode = 0x0939; break;
/*  v  */ case 0x0076: event.keyCode = 0x0928; break;
/*  w  */ case 0x0077: event.keyCode = 0x0948; break;
/*  x  */ case 0x0078: event.keyCode = 0x0902; break;
/*  y  */ case 0x0079: event.keyCode = 0x092C; break;
/*  z  */ case 0x007A: event.keyCode = 0x0946; break;
/*  {  */ case 0x007B: event.keyCode = 0x0922; break;
/*  |  */ case 0x007C: event.keyCode = 0x0911; break;
/*  }  */ case 0x007D: event.keyCode = 0x091E; break;
/*  ~  */ case 0x007E: event.keyCode = 0x0912; break;
	}
}

function AltFilter(){
var Range, character="";
	if(!ALT_Key) return false;
	switch(event.keyCode){
		case 75 : character = "\u0958"; break;
		case 73 : character = "\u095A"; break;
		case 80 : character = "\u095B"; break;
		case 219: character = "\u095C"; break;
		case 187: character = "\u0944"; break;
		case 188: character = "\u0970"; break;
		case 190: character = "\u0965"; break;
		case 75 : character = "\u0958"; break;
		case 48 : character = "\u0966"; break;
		case 49 : character = "\u0967"; break;
		case 50 : character = "\u0968"; break;
		case 51 : character = "\u0969"; break;
		case 52 : character = "\u096A"; break;
		case 53 : character = "\u096B"; break;
		case 54 : character = "\u096C"; break;
		case 55 : character = "\u096D"; break;
		case 56 : character = "\u096E"; break;
		case 57 : character = "\u096F"; break;
		case 186: character = "\u0952"; break;
		case 90 : character = "\u0953"; break;
		case 67 : character = "\u0954"; break;
		case 70 : character = "\u0962"; break;
		case 82 : character = "\u0963"; break;
	}
	if(character!=""){
		Range = document.selection.createRange();
		if(Range.text.length > 0) document.selection.clear();
		Range.text = character;
		event.returnValue=false;
	}
	parent.status=event.keyCode;
}

KeyFilter = ITrans_KeyFilter;
function init(){
	parent.focus();
	document.all.txtEdit.focus();
}
