// JavaScript Document

function getCaretPosition (el)
{
var iCaretPos = 0
	// IE Support
if (document.selection) // IE hack
{
if (el.type == 'text') // textbox
{
var selectionRange = document.selection.createRange()
selectionRange.moveStart ('word', -el.value.length)
iCaretPos = selectionRange.text.length
}
else // textarea
{
 el.caretPos = document.selection.createRange();   
    var bookmark = "~m`h~";
    var orig = el.value;
    var caretPos = el.caretPos;
    caretPos.text = bookmark;
	var txt = el.value.replace(/\n/g,"");
    var iCaretPos = txt.search( bookmark );
	el.value = orig;
}
}
else if (el.selectionStart || el.selectionStart == '0') // Firefox
{
iCaretPos = el.selectionStart
}

return iCaretPos;
}



function setCaretPosition(ctrl, pos)
{

	if(ctrl.setSelectionRange)
	{
		ctrl.focus();
		ctrl.setSelectionRange(pos,pos);
	}
	else if (ctrl.createTextRange) {
		var range = ctrl.createTextRange();
		range.collapse(true);
		range.moveEnd('character', pos);
		range.moveStart('character', pos);
		range.select();
	}
}

function kaztype(evt, ctrl){
	if (evt.keyCode == 77 || evt.keyCode == 221){
	var caretPos = getCaretPosition(ctrl);

//MZ case
if(ctrl.setSelectionRange)
	{
		ctrl.focus();
		//ctrl.setSelectionRange(startPos,endPos);
		var lastSymbs = ctrl.value.substr(caretPos-2,2);
		var substi = fncRepl(lastSymbs);
		/* Find the Start and End Position */ 
/* Remember obj is a textarea or input field */ 
	
	if(substi){
	ctrl.value = ctrl.value.substr(0, caretPos-2) 
    + substi 
    + ctrl.value.substr(caretPos, ctrl.value.length); 
	setCaretPosition(ctrl,caretPos-1);
	
	}
	}
	//IE case;
	else if (ctrl.createTextRange) {
		var range = ctrl.createTextRange();
		range.collapse(true);
		range.moveStart('character',caretPos-2);
		range.moveEnd('character',2);
		range.select();
		var lastSymbs = range.text;
		var substi = fncRepl(lastSymbs); 
	    if(substi){
	range.text = substi;
	setCaretPosition(ctrl,caretPos-1);
			}
			else
			{
	setCaretPosition(ctrl,caretPos);
			}
	}
	
}
}


function fncRepl(lastSymbs){
//попробуем мою ActionScript реализацию
		switch (lastSymbs) {
	case "Аь" :
		//буквосочетание
	case "АЬ" :
		subst = "\u04D8";
		//юникод

		break;
		//завершение проверки
	case "аь" :
		//буквосочетание
		subst = "\u04D9";
		//юникод

		break;
		//завершение проверок
	case "Гъ" :
		//буквосочетание
	case "ГЪ" :
		subst = "\u0492";
		//юникод

		break;
		//завершение проверки
	case "гъ" :
		//буквосочетание
		subst = "\u0493";
		//юникод

		break;
		//завершение проверки
	case "Къ" :
		//буквосочетание
	case "КЪ" :
		subst = "\u049A";
		//юникод

		break;
		//завершение проверки
	case "къ" :
		//буквосочетание
		subst = "\u049B";
		//юникод

		break;
		//завершение проверки
	case "Нъ" :
	case "НЪ" :
		subst = "\u04A2";
		break;
	case "нъ" :
		subst = "\u04A3";
		break;
	case "Оь" :
		//буквосочетание
	case "ОЬ" :
		subst = "\u04E8";
		//юникод

		break;
		//завершение проверки
	case "оь" :
		//буквосочетание
		subst = "\u04E9";
		//юникод

		break;
		//завершение проверки
	case "Уъ" :
		//буквосочетание
	case "УЪ" :
		subst = "\u04B0";
		//юникод

		break;
		//завершение проверки
	case "уъ" :
		//буквосочетание
		subst = "\u04B1";
		//юникод

		break;
		//завершение проверки
	case "Уь" :
		//буквосочетание
	case "УЬ" :
		subst = "\u04AE";
		//юникод

		break;
		//завершение проверки
	case "уь" :
		//буквосочетание
		subst = "\u04AF";
		//юникод

		break;
		//завершение проверки
	case "Хъ" :
		//буквосочетание
	case "ХЪ" :
		subst = "\u04BA";
		//юникод

		break;
		//завершение проверки
	case "хъ" :
		//буквосочетание
		subst = "\u04BB";
		//юникод

		break;
		//завершение проверки
	case "Ыь" :
		//буквосочетание
	case "ЫЬ" :
	case "Иь" :
		//буквосочетание
	case "ИЬ" :
		subst = "\u0406";
		//юникод

		break;
		//завершение проверки
	case "ыь" :
		//буквосочетание
	case "иь" :
		//буквосочетание
		subst = "\u0456";
		//юникод

		break;
		//завершение проверки
		default:
		subst = '';
		
	}
return subst;

}