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`Õ','w','W','W','Jo','jo','JO','zh','zh','Zh','ZH','ZH','ch','Ch','CH','sh','Sh','SH','je','Je',"ju",'ju',"JU",'Ju',"JU","ja",'ja',"JA",'Ja','JA','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','x','X','c','C','#','y','Y',"'");

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 showTranslChar(c) {
	document.writeln( '<b style="color:blue">'+convert(c)+'</b>' + ':<span style="color:red">' + c + '</span> ');
}

function showTranslTbl() {
	showTranslChar('A');
	showTranslChar('B');
	showTranslChar('V');
	showTranslChar('G');
	showTranslChar('D');
	showTranslChar('E');
	showTranslChar('Jo');
	showTranslChar('Zh');
	showTranslChar('Z');
	showTranslChar('I');
	showTranslChar('J');
	showTranslChar('K');
	showTranslChar('L');
	showTranslChar('M');
	showTranslChar('N');
	showTranslChar('O');
	showTranslChar('P');
	showTranslChar('R');
	showTranslChar('S');
	showTranslChar('T');
	showTranslChar('U');
	showTranslChar('F');
	showTranslChar('X');
	showTranslChar('C');
	showTranslChar('Ch');
	showTranslChar('Sh');
	showTranslChar('W');
	showTranslChar('#');
	showTranslChar('Y');
	showTranslChar("'");
	showTranslChar('Je');
	showTranslChar('Ju');
	showTranslChar('Ja');
}

function totranslit( text ) {	// translates latin to cyrillic 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;
}
