var agt=navigator.userAgent.toLowerCase();
var is_major = parseInt(navigator.appVersion);
var is_ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));

var map_en = new Array('s`h','S`h','S`H','s`Х','sh`','Sh`','SH`',"'o",'yo',"'O",'Yo','YO','zh','w','Zh','ZH','W','ch','Ch','CH','sh','Sh','SH','e`','E`',"'u",'yu',"'U",'Yu',"YU","'a",'ya',"'A",'Ya','YA','a','A','b','B','v','V','g','G','d','D','e','E','z','Z','i','I','j','J','k','K','l','L','m','M','n','N','o','O','p','P','r','R','s','S','t','T','u','U','f','F','h','H','c','C','`','y','Y',"'")
var map_ru = new Array('сх','Сх','СХ','сХ','щ','Щ','Щ','ё','ё','Ё','Ё','Ё','ж','ж','Ж','Ж','Ж','ч','Ч','Ч','ш','Ш','Ш','э','Э','ю','ю','Ю','Ю','Ю','я','я','Я','Я','Я','а','А','б','Б','в','В','г','Г','д','Д','е','Е','з','З','и','И','й','Й','к','К','л','Л','м','М','н','Н','о','О','п','П','р','Р','с','С','т','Т','у','У','ф','Ф','х','Х','ц','Ц','ъ','ы','Ы','ь')

function convert(str) {
	for(var i=0;i<map_en.length;++i) while(str.indexOf(map_en[i])>=0) str = str.replace(map_en[i],map_ru[i]);
	return str;
}

function unconvert(str) {
	for(var i=0;i<map_ru.length;++i) while(str.indexOf(map_ru[i])>=0) str = str.replace(map_ru[i],map_en[i]);
	return str;
}

function showTranslChar(c) {
	document.writeln( unconvert(c) + '=' + c + ' ');
}

function showTranslTbl() {
	showTranslChar('А');
	showTranslChar('Б');
	showTranslChar('В');
	showTranslChar('Г');
	showTranslChar('Д');
	showTranslChar('Е');
	showTranslChar('Ж');
	showTranslChar('З');
	showTranslChar('И');
	showTranslChar('Й');
	showTranslChar('К');
	showTranslChar('Л');
	showTranslChar('М');
	showTranslChar('Н');
	showTranslChar('О');
	showTranslChar('П');
	showTranslChar('Р');
	showTranslChar('С');
	showTranslChar('Т');
	showTranslChar('У');
	showTranslChar('Ф');
	showTranslChar('Х');
	showTranslChar('Ц');
	showTranslChar('Ч');
	showTranslChar('Ш');
	showTranslChar('Щ');
	showTranslChar('Ь');
	showTranslChar('Ы');
	showTranslChar('Ъ');
	showTranslChar('Э');
	showTranslChar('Ю');
	showTranslChar('Я');
}

function totranslit( text ) {	// translates latin to russian in txtObj
	var strarr = new Array();
	strarr = text.split(' ');
	for(var k=0;k<strarr.length;k++) {
		if ( strarr[k].indexOf("http://") < 0 && strarr[k].indexOf('@') < 0 && strarr[k].indexOf("www.") < 0 && strarr[k].indexOf("[") < 0) {
			strarr[k] = convert(strarr[k]);
		}
	}
        return strarr.join(' ');
}

// Replaces the currently selected text or the whole text

function translate( textarea ) {
    // IE
    if ( (is_major >= 4) && is_ie) {
        if (textarea.isTextEdit) {
            textarea.focus();
            var sel = document.selection;
            var rng = sel.createRange();
            rng.colapse;
            if((sel.type == "Text" || sel.type == "None") && rng != null) {
                rng.text = totranslit(rng.text);
            }
        }
        else {
            textarea.value = totranslit(textarea.value);
        }
    }
    // Mozilla
    else if ( textarea.selectionEnd ) {
        var ss = textarea.selectionStart;
        var st = textarea.scrollTop;
        var es = textarea.selectionEnd;
        if (es <= 2) {
            es = textarea.textLength;
        }
        var start  = (textarea.value).substring(0, ss);
        var middle = (textarea.value).substring(ss, es);
        var end    = (textarea.value).substring(es, textarea.textLength);
        if (textarea.selectionEnd - textarea.selectionStart > 0) {
            middle = totranslit(middle);
        }
        textarea.value = start + middle + end;
        var cpos = ss + (middle.length);
        textarea.selectionStart = cpos;
        textarea.selectionEnd   = cpos;
        textarea.scrollTop      = st;
    }
    // unidentified browser, replace the whole thing
    else {
        textarea.value = totranslit(textarea.value);
    }

    textarea.focus();

    return;
}
