// JavaScript Document
var DOM = document.getElementById ? 1 : 0, opera = window.opera && DOM ? 1 : 0, IE = !opera && document.all ? 1 : 0, NN6 = DOM && !IE && !opera ? 1 : 0;

var language = 1;

var rus_lr2 = ('Å-å-Î-î-¨-¨-Ý-Ý-Æ-Æ-×-×-Ø-Ø-Ù-Ù-Ú-Ü-Þ-Þ-ß-ß-ß-ß-¸-æ-÷-ø-ù-ý-þ-ÿ-ÿ').split('-');
var lat_lr2 = ('/E-/e-/O-/o-ÉO-Éo-ÉE-Ée-ÇH-Çh-ÖH-Öh-ÑH-Ñh-ØH-Øh-ú'+String.fromCharCode(35)+'-ü'+String.fromCharCode(39)+'-ÉU-Éu-ÉA-Éa-ÛA-Ûa-éo-çh-öh-ñh-øh-ée-éu-éa-ûa').split('-');
var rus_lr1 = ('À-Á-Â-Ã-Ä-Å-Ç-È-É-Ê-Ë-Ì-Í-Î-Ï-Ð-Ñ-Ò-Ó-Ô-Õ-Õ-Ö-Ù-Û-Ý-à-á-â-ã-ä-å-ç-è-é-ê-ë-ì-í-î-ï-ð-ñ-ò-ó-ô-õ-õ-ö-ù-ú-û-ü-ý').split('-');
var lat_lr1 = ('A-B-V-G-D-E-Z-I-J-K-L-M-N-O-P-R-S-T-U-F-H-X-C-W-Y-Q-a-b-v-g-d-e-z-i-j-k-l-m-n-o-p-r-s-t-u-f-h-x-c-w-'+String.fromCharCode(35)+'-y-'+String.fromCharCode(39)+'-q').split('-');
var rus_rl = ('À-Á-Â-Ã-Ä-Å-¨-Æ-Ç-È-É-Ê-Ë-Ì-Í-Î-Ï-Ð-Ñ-Ò-Ó-Ô-Õ-Ö-×-Ø-Ù-Ú-Û-Ü-Ý-Þ-ß-à-á-â-ã-ä-å-¸-æ-ç-è-é-ê-ë-ì-í-î-ï-ð-ñ-ò-ó-ô-õ-ö-÷-ø-ù-ú-û-ü-ý-þ-ÿ').split('-');
var lat_rl = ('A-B-V-G-D-E-JO-ZH-Z-I-J-K-L-M-N-O-P-R-S-T-U-F-H-C-CH-SH-W-'+String.fromCharCode(35)+String.fromCharCode(35)+'-Y-'+String.fromCharCode(39)+String.fromCharCode(39)+'-JE-JU-JA-a-b-v-g-d-e-jo-zh-z-i-j-k-l-m-n-o-p-r-s-t-u-f-h-c-ch-sh-shh-'+String.fromCharCode(35)+'-y-'+String.fromCharCode(39)+'-je-ju-ja').split('-');


function translateAlltoCyrillic() 
{

	TxtFeld=document.form.message;

	if (!IE) 
	{
	   
		var selLength = TxtFeld.textLength;
		var selStart  = TxtFeld.selectionStart;
		var selEnd    = TxtFeld.selectionEnd;
		var alltxt    = TxtFeld.value;
		var s1        = (alltxt).substring(0,selStart);
		var s2        = (alltxt).substring(selStart, selEnd);
		var s3        = (alltxt).substring(selEnd, selLength);
		
		if(selStart==selEnd){
		    txt = TxtFeld.value;
		}else{
		  txt = s2;
		}
		var txtnew = translitBuchstabeCyr("",txt.substr(0,1));
		var symb = "";
		for (kk=1;kk<txt.length;kk++)
		{
			symb = translitBuchstabeCyr(txtnew.substr(txtnew.length-1,1),txt.substr(kk,1));
			txtnew = txtnew.substr(0,txtnew.length-1) + symb;
		}
		
		var translatedtxt             = txtnew;
		if(selStart==selEnd){
		    TxtFeld.value = translatedtxt;
		}else{
    		TxtFeld.value             = s1 + translatedtxt + s3;
    	    TxtFeld.selectionStart    = selStart + translatedtxt.length;
    		TxtFeld.selectionEnd      = selStart + translatedtxt.length;
		}
	} 
	else
	{ 
		var is_selection_flag = 1;
		var userselection = document.selection.createRange();
		var txt = userselection.text;
		if (userselection==null || userselection.text==null || userselection.parentElement==null || userselection.parentElement().type!="textarea") 
		{
			// no text selected, all the text in the textarea is to be processed
			is_selection_flag = 0;
			txt = TxtFeld.value;
		}
///		txt =txt);
		var txtnew = translitBuchstabeCyr("",txt.substr(0,1));
		var symb = "";
		for (kk=1;kk<txt.length;kk++)
		{
			symb = translitBuchstabeCyr(txtnew.substr(txtnew.length-1,1),txt.substr(kk,1));
			txtnew = txtnew.substr(0,txtnew.length-1) + symb;
		}
		if (is_selection_flag)
		{
			userselection.text = txtnew;
			userselection.collapse();
			userselection.select();
		}
		else
		{
//			TxtFeld.value = smils2(txtnew);
			TxtFeld.value = txtnew;
//			setFocus()
		}
	} 
	return;
}

function AkeyIsDown(evnt)
{
	
	code = evnt.keyCode;
	if (code==27) {
		TxtFeld=document.form.message;
		var code = 0; 
		TxtFeld.focus()
		changelanguage(); 
		
	}
	return false;
}

function rus_div(){ 
	document.getElementById('lat1').className='lat';
	TxtFeld=document.form.message;
	TxtFeld.focus()
}
function lat_div(){ 
	document.getElementById('lat1').className='rus';
	TxtFeld=document.form.message;
	TxtFeld.focus()

}

function changelanguage(){  
	if (language==1)
	{
		language=0;
		lat_div();
	}
	else
	{
		language=1;
		rus_div();
	}
//	keks("autoTrans",language);
//	setFocus();
//	setZustand();
}



function transliteText(txt)
{
	
	vorTxt		= txt.length>1?txt.substr(txt.length-2,1):"";
	buchstabe	= txt.substr(txt.length-1,1);
	txt			= txt.substr(0,txt.length-2);
	//alert(vorTxt+" "+buchstabe);
	return txt+translitBuchstabeCyr(vorTxt,buchstabe);
}

function translitBuchstabeCyr(vorTxt,txt)
{
	var zweiBuchstaben							= vorTxt+txt;
	var code									= txt.charCodeAt(0);
	
	if (!(((code>=65) && (code<=123))||(code==35)||(code==39))) return zweiBuchstaben;
	
	for (x=0; x<lat_lr2.length; x++)
	{
		if (lat_lr2[x]==zweiBuchstaben) return rus_lr2[x];
	}
	for (x=0; x<lat_lr1.length; x++)
	{
		if (lat_lr1[x]==txt) return vorTxt+rus_lr1[x];
	}
	return zweiBuchstaben;
}


function transliteFeld(object,evnt)
{
//	storeCaret(TxtFeld);
    if(opera)
	{
		return;
	}
	else if (NN6)
	{
		  	var code				= void 0;
			var code				=  evnt.charCode; 
			var textareafontsize	= 14; 
			var textreafontwidth	= 7;
			
			if(evnt.keyCode == 13 && !evnt.ctrlKey)
			{
				return 13;
			}
			
			if(evnt.keyCode == 13 && evnt.ctrlKey)
			{
				pretxt				= object.value.substring(0, object.selectionStart);
				result				= pretxt+"\r\n";
				object.value		= result+object.value.substring(object.selectionEnd);
				object.setSelectionRange(result.length,result.length);
				return;
				
			}
			if (language==1) return; //wird nicht translitet
			if ( code && (!(evnt.ctrlKey || evnt.altKey)))
			{
				pXpix				= object.scrollTop;
				pYpix				= object.scrollLeft;
        	
        	
				evnt.preventDefault();
				txt=String.fromCharCode(code);
				pretxt				= object.value.substring(0, object.selectionStart);
				result				= transliteText(pretxt+txt);
				object.value		= result+object.value.substring(object.selectionEnd);
				object.setSelectionRange(result.length,result.length);
				
				object.scrollTop	= 100000;
				object.scrollLeft	= 0;
				
				cXpix				= (result.split("\n").length)*(textareafontsize+3);
				cYpix				= (result.length-result.lastIndexOf("\n")-1)*(textreafontwidth+1);
				taXpix				= (object.rows+1)*(textareafontsize+3);
				taYpix				= object.clientWidth;
				
				if ((cXpix>pXpix)&&(cXpix<(pXpix+taXpix))) object.scrollTop=pXpix;
				if (cXpix<=pXpix) object.scrollTop=cXpix-(textareafontsize+3);
				if (cXpix>=(pXpix+taXpix)) object.scrollTop=cXpix-taXpix;
				
				if ((cYpix>=pYpix)&&(cYpix<(pYpix+taYpix))) object.scrollLeft=pYpix;
				if (cYpix<pYpix) object.scrollLeft=cYpix-(textreafontwidth+1);
				if (cYpix>=(pYpix+taYpix)) object.scrollLeft=cYpix-taYpix+1;
				
			}
			return true;
		
	}
	else if(IE){
//		if(isChat){
/*			var code = frames['input'].event.keyCode;
			if(code == 13){return 13;} //Enter wurde gedr?ckt
			if (language==1) return; //wird nicht translitet
			txt=String.fromCharCode(code);
			cursor_pos_selection		= frames['input'].document.selection.createRange();
			cursor_pos_selection.text	= "";
			cursor_pos_selection.moveStart("character",-1);
			vorTxt = cursor_pos_selection.text;
			if (vorTxt.length>1)
			{
				vorTxt="";
			}
			frames['input'].event.keyCode = 0;
			if (richtung==2)
			{
				result = vorTxt+translitBuchstabeLat(txt);
			}
			else
			{
				result = translitBuchstabeCyr(vorTxt,txt);
			}
			
			if (vorTxt != "")
			{ 
				cursor_pos_selection.select();
				cursor_pos_selection.collapse();
			}
			
			with(frames['input'].document.selection.createRange()) 
			{
				text = result; collapse();
				select();
			}	*/
			
//		}else{
			
			var code					= event.keyCode;
		
			if(code == 13){return 13;} //Enter wurde gedr?ckt
			if(language==1 && code != 10) return; //wird nicht translitet
			if(code == 27) return; //wird nicht translitet
			txt=String.fromCharCode(code);
			
			cursor_pos_selection		= document.selection.createRange();
			cursor_pos_selection.text	= "";
			cursor_pos_selection.moveStart("character",-1);
			vorTxt						= cursor_pos_selection.text;
						
			if (vorTxt.length>1) {vorTxt="";}
			event.keyCode				= 0;
			
			richtung = 1

			if (richtung==2)
			{
				result					= vorTxt+translitBuchstabeLat(txt);
			}
			else
			{
				result					= translitBuchstabeCyr(vorTxt,txt);
			}
			
			if (vorTxt!="") 
			{ 
				cursor_pos_selection.select(); 
				cursor_pos_selection.collapse();
			}
			with(document.selection.createRange())
			{
				text = result; collapse();
				select();
			}

//			setFocusPermanent();
//		}
		return;
   }
}