﻿function siteTranslateSetEngine(engine, engineDesc) {
	$("#hiddenSiteTranslateEngine").val(engine);
	$("#siteTranslateEngine").text(engineDesc);
	$("#siteTranslatePopup").hide();

	siteTranslateFillDirectionsFrom(engine);

	siteTranslateSetDefaultHiddens(engine);
}

function siteTranslateSetDirectionFrom(dirFrom, dirDesc) {
	$("#hiddenSiteTranslateDirectionFrom").val(dirFrom);
	$("#siteTranslateDirectionFrom").text(dirDesc);
	$("#siteTranslateDirectionFromPopup").hide();
}

function siteTranslateSetDirectionTo(dirTo, dirDesc) {
	$("#hiddenSiteTranslateDirectionTo").val(dirTo);
	$("#siteTranslateDirectionTo").text(dirDesc);
	$("#siteTranslateDirectionToPopup").hide();
}

function siteTranslateSetDefaultHiddens(engine) 
{
	var hidFrom;
	var hidTo;
	var dirFrom;
	var dirTo;
	var showDirTo = false;
	
	if (engine == "google") {
		hidFrom = "en";
		hidTo = "ru";
		dirFrom = "Английский";
		dirTo = "Русский";
		showDirTo = true;
	}
	else if (engine == "live") {
		hidFrom = "en_ru";
		hidTo = "";
		dirFrom = "Английский - Русский";
		dirTo = "";
	}
	
	$("#hiddenSiteTranslateDirectionFrom").val(hidFrom);
	$("#hiddenSiteTranslateDirectionTo").val(hidTo);
	$("#siteTranslateDirectionFrom").text(dirFrom);
	$("#siteTranslateDirectionTo").text(dirTo);

	if (showDirTo) {
		$("#siteTranslateDirectionTo").show();
		$("#siteTranslateDirectionToImg").show();
	}
	else {
		$("#siteTranslateDirectionTo").hide();
		$("#siteTranslateDirectionToImg").hide();
	}
}

function siteTranslateFillDirectionsFrom(engine) 
{
	var result = siteTranslateFillDirectionsFromHeader();
	
	if (engine == "google") {
		result += siteTranslateFillDirectionsFromGoogle();
	}
	else if (engine == "live") {
		result += siteTranslateFillDirectionsFromLive();
	}

	result += siteTranslateFillDirectionsFooter();

	$("#siteTranslateDivForDirectionFromPopup").html(result);
}

function siteTranslateFillDirectionsFromHeader() 
{
	var result = "";
	result += "<div class=\"popup-m\" id=\"siteTranslateDirectionFromPopup\" style=\"position: absolute; display: none;\">";
	result += "<div class=\"popup-heat-m\"></div>";
	result += "<div class=\"popup-central-m\">";
	result += "<div class=\"popup-title\" id=\"siteTranslorDirectionFromTitle\" style=\"cursor:pointer\"><a>закрыть<img src=\"http://images.most.ua/s/bg/cat_tit/pix.gif\" class=\"sprite-close\" alt=\"Закрыть\"/></a></div>";
	result += "<div class=\"popup-cont\" style=\"max-height:215px;\">";
	return result;
}

function siteTranslateFillDirectionsToHeader() {
	var result = "";
	result += "<div class=\"popup-m\" id=\"siteTranslateDirectionToPopup\" style=\"position: absolute; display: none;\">";
	result += "<div class=\"popup-heat-m\"></div>";
	result += "<div class=\"popup-central-m\">";
	result += "<div class=\"popup-title\" id=\"siteTranslorDirectionToTitle\" style=\"cursor:pointer\"><a>закрыть<img src=\"http://images.most.ua/s/bg/cat_tit/pix.gif\" class=\"sprite-close\" alt=\"Закрыть\"/></a></div>";
	result += "<div class=\"popup-cont\" style=\"max-height:215px;\">";
	return result;
}

function siteTranslateFillDirectionsFooter() 
{
	var result = "";
	result += "</div>";
	result += "</div>";
	result += "<div class=\"popup-bottom-m\"></div></div>";
	return result;
}

var siteTranslateDirectionFromItemTemplate = "<div class=\"popup-cont-mtitle\"><div style=\"cursor:pointer\" onclick=\"siteTranslateSetDirectionFrom('{0}','{1}')\"><a>{1}</a></div></div>";

function siteTranslateGetDirectionItemFrom(dirFrom, dirDesc) 
{
	var result = siteTranslateDirectionFromItemTemplate;
	result = result.replace(/\{0\}/g, dirFrom);
	result = result.replace(/\{1\}/g, dirDesc);
	return result;
}

function siteTranslateFillDirectionsFromGoogle() 
{
	var result = "";
	result += siteTranslateGetDirectionItemFrom('en','Английский');
	result += siteTranslateGetDirectionItemFrom('ar','Арабский');
	result += siteTranslateGetDirectionItemFrom('bg','Болгарский');
	result += siteTranslateGetDirectionItemFrom('vi','Вьетнамский');
	result += siteTranslateGetDirectionItemFrom('nl','Голландский');
	result += siteTranslateGetDirectionItemFrom('el','Греческий');
	result += siteTranslateGetDirectionItemFrom('da','Датский');
	result += siteTranslateGetDirectionItemFrom('iw','Иврит');
	result += siteTranslateGetDirectionItemFrom('id','Индонезийский');
	result += siteTranslateGetDirectionItemFrom('es','Испанский');
	result += siteTranslateGetDirectionItemFrom('it','Итальянский');
	result += siteTranslateGetDirectionItemFrom('ca','Каталанский');
	result += siteTranslateGetDirectionItemFrom('zh-CN','Китайский');
	result += siteTranslateGetDirectionItemFrom('ko','Корейский');
	result += siteTranslateGetDirectionItemFrom('lv','Латышский');
	result += siteTranslateGetDirectionItemFrom('lt','Литовский');
	result += siteTranslateGetDirectionItemFrom('de','Немецкий');
	result += siteTranslateGetDirectionItemFrom('no','Норвежский');
	result += siteTranslateGetDirectionItemFrom('pl','Польский');
	result += siteTranslateGetDirectionItemFrom('pt','Португальский');
	result += siteTranslateGetDirectionItemFrom('ro','Румынский');
	result += siteTranslateGetDirectionItemFrom('ru','Русский');
	result += siteTranslateGetDirectionItemFrom('sr','Сербский');
	result += siteTranslateGetDirectionItemFrom('sk','Словацкий');
	result += siteTranslateGetDirectionItemFrom('sl','Словенский');
	result += siteTranslateGetDirectionItemFrom('tl','Тагальский');
	result += siteTranslateGetDirectionItemFrom('uk','Украинский');
	result += siteTranslateGetDirectionItemFrom('fi','Финский');
	result += siteTranslateGetDirectionItemFrom('fr','Французский');
	result += siteTranslateGetDirectionItemFrom('hi','Хинди');
	result += siteTranslateGetDirectionItemFrom('hr','Хорватский');
	result += siteTranslateGetDirectionItemFrom('cs','Чешский');
	result += siteTranslateGetDirectionItemFrom('sv','Шведский');
	result += siteTranslateGetDirectionItemFrom('ja','Японский');
	
	return result;
}

function siteTranslateFillDirectionsFromLive() 
{
	var result = "";
	result += siteTranslateGetDirectionItemFrom('en_ar', 'Английский - арабский');
	result += siteTranslateGetDirectionItemFrom('en_es', 'Английский - испанский');
	result += siteTranslateGetDirectionItemFrom('en_it', 'Английский - итальянский');
	result += siteTranslateGetDirectionItemFrom('en_zh-cht', 'Английский - китайский');
	result += siteTranslateGetDirectionItemFrom('en_ko', 'Английский - корейский');
	result += siteTranslateGetDirectionItemFrom('en_de', 'Английский - немецкий');
	result += siteTranslateGetDirectionItemFrom('en_nl', 'Английский - нидерландский');
	result += siteTranslateGetDirectionItemFrom('en_pl', 'Английский - польский');
	result += siteTranslateGetDirectionItemFrom('en_pt', 'Английский - португальский');
	result += siteTranslateGetDirectionItemFrom('en_ru', 'Английский - русский');
	result += siteTranslateGetDirectionItemFrom('en_fr', 'Английский - французский');
	result += siteTranslateGetDirectionItemFrom('en_ja', 'Английский - японский');
	result += siteTranslateGetDirectionItemFrom('ar_en', 'Арабский - английский');
	result += siteTranslateGetDirectionItemFrom('es_en', 'Испанский - английский');
	result += siteTranslateGetDirectionItemFrom('it_en', 'Итальянский - английский');
	result += siteTranslateGetDirectionItemFrom('zh-cht_en', 'Китайский - английский');
	result += siteTranslateGetDirectionItemFrom('ko_en', 'Корейский - английский');
	result += siteTranslateGetDirectionItemFrom('de_en', 'Немецкий - английский');
	result += siteTranslateGetDirectionItemFrom('nl_en', 'Нидерландский - английский');
	result += siteTranslateGetDirectionItemFrom('pl_en', 'Польский - английский');
	result += siteTranslateGetDirectionItemFrom('pt_en', 'Португальский - английский');
	result += siteTranslateGetDirectionItemFrom('ru_en', 'Русский - английский');
	result += siteTranslateGetDirectionItemFrom('fr_en', 'Французский - английский');
	result += siteTranslateGetDirectionItemFrom('ja_en', 'Японский - английский');
	return result;
}


function siteDoTranslate() 
{
    var siteUrl = $("#SiteTranslateUrl").val();
	var dirFrom = $("select#GoogleLangFrom").val();
	var dirTo = $("select#GoogleLangTo").val();

	siteUrl = Url.encode(siteUrl);

	var engineUrl = "";
	
	engineUrl = 'http://translate.google.com/translate?u={0}&sl={1}&tl={2}';
	

	engineUrl = engineUrl.replace(/\{0\}/g, siteUrl);
	engineUrl = engineUrl.replace(/\{1\}/g, dirFrom);
	engineUrl = engineUrl.replace(/\{2\}/g, dirTo);

	window.open(engineUrl);
}

var Url = {

    // public method for url encoding
    encode: function(string) {
        return escape(this._utf8_encode(string));
    },

    // public method for url decoding
    decode: function(string) {
        return this._utf8_decode(unescape(string));
    },

    // private method for UTF-8 encoding
    _utf8_encode: function(string) {
        string = string.replace(/\r\n/g, "\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if ((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // private method for UTF-8 decoding
    _utf8_decode: function(utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while (i < utftext.length) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if ((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i + 1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i + 1);
                c3 = utftext.charCodeAt(i + 2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }

}


