﻿// загрузка API
google.load("language", "1");
google.setOnLoadCallback(init);

var myLangs = {
"sq": "албанский",
"en": "английский",
"ar": "арабский",
"af": "африкаанс",
"be": "белорусский",
"bg": "болгарский",
"cy": "валлийский",
"hu": "венгерский",
"vi": "вьетнамский",
"gl": "галисийский",
"nl": "голландский",
"el": "греческий",
"da": "датский",
"iw": "иврит",
"yi": "идиш",
"id": "индонезийский",
"ga": "ирландский",
"is": "исландский",
"es": "испанский",
"it": "итальянский",
"ca": "каталанский",
"zh": "китайский",
"zh-CN": "китайский (упрощенный)",
"zh-TW": "китайский (традиционный)",
"ko": "корейский",
"lv": "латышский",
"lt": "литовский",
"mk": "македонский",
"ms": "малайский",
"mt": "мальтийский",
"de": "немецкий",
"no": "норвежский",
"fa": "персидский",
"pl": "польский",
"pt-PT": "португальский",
"ro": "румынский",
"ru": "русский",
"sr": "сербский",
"sk": "словацкий",
"sl": "словенский",
"sw": "суахили",
"tl": "тагальский",
"th": "тайский",
"tr": "турецкий",
"uk": "украинский",
"fi": "финский",
"fr": "французский",
"hi": "хинди",
"hr": "хорватский",
"cs": "чешский",
"sv": "шведский",
"et": "эстонский",
"ja": "японский"
};

// обрезка пробельныйх символов по краям строки
String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, "");
};

// инициализация
function init() {
    var l_src = document.getElementById('gt_lang_src');
    var l_dst = document.getElementById('gt_lang_dst');
    var dl = new Option("Определить язык", "");
    dl.className = "line-below";
    l_src.options.add(dl);
    
    var ordLangs = new Array();
    for (var l in google.language.Languages) {
        var lngCode = google.language.Languages[l];
	var lng = myLangs[lngCode] ? capitalize(myLangs[lngCode]) : formatLanguage(l);
        if (google.language.isTranslatable(lngCode)) {
            if (lngCode != "") {
			ordLangs.push({ 'value' : lngCode, 'text' : lng });
		}
            }
        }
	
	ordLangs.sort(sortLangs);
	for(i = 0 ; i < ordLangs.length ; i++)
	{
		l_src.options.add(new Option(ordLangs[i].text, ordLangs[i].value));
		l_dst.options.add(new Option(ordLangs[i].text, ordLangs[i].value, ordLangs[i].value == 'en' ? true : false));
	}
	document.getElementById("gt_text_dest").value = "";
	google.language.getBranding('gt_branding');
}

// сравнение строк
function sortLangs(a,b)
{
	return a.text < b.text ? -1 : (a.text > b.text ? 1 : 0);
}

// форматирование языка 
function formatLanguage(lng) {
    lng = capitalize(lng);

    var p = lng.indexOf("_");
    if (p != -1) {
        lng = lng.substr(0, p) + " (" + capitalize(lng.substr(p + 1, lng.length - p - 1)) + ")";
    }

    return lng
}

// приведение первой буквы слова к вергнему регистру, остальных - к нижнему
function capitalize(str) {
    return str.substr(0, 1).toUpperCase() + str.substr(1, str.length - 1).toLowerCase();
}

// обработчик отправки формы
function submitChange() {
	var value = document.getElementById('gt_text_src').value;
	if(value != "")
	{
		var lsrc = document.getElementById('gt_lang_src').value;
		var ldest = document.getElementById('gt_lang_dst').value;
		document.getElementById("gt_loading_image").src = "/images/loader.gif";
		document.getElementById("gt_translate_btn").disabled = true;
		document.getElementById("gt_text_dest").value = '';
		
		if(value.length > 300)
		{
			document.getElementById("gt_text_dest").value = 'Ваш текст содержит более 300 знаков';
		}
		else
		{
			google.language.translate({'text':value, 'type':'text'}, lsrc, ldest, translateResult);
		}
		/*var re = /(.{1,300})(?=(\.|$|\s+))/g;
		var match;
		
		while((match = re.exec(value)) != null)
		{
			google.language.translate(match[0], lsrc, ldest, translateResult, 'html');
		}*/
		
		document.getElementById("gt_translate_btn").disabled = false;
		document.getElementById("gt_loading_image").src = "/images/empty.gif";
		
	} else { alert("Вы не ввели текст для перевода!"); }
	return false;
}

// обработка результатов перевода
function translateResult(result) {
    var resultBody = document.getElementById("gt_text_dest");
    
    if(result.error) 
	{resultBody.value = 'ОШИБКА ПЕРЕВОДА: ' + resultBody.error.message; }
    else
	{resultBody.value = result.translation;}
	  
}
