﻿// Warning: due to lack of time, lots of code is duplicated between translations.js and translations-home.js.

function log(text) {
    if (window.console) {
        console.log(text);
    }
}

$(function () {
    var inputAppId = '4AB7C14E6DD04564767E92683745F59E3151F140';
    var tokenizedAppId = '';
    var uiLanguageCode = 'en';
    var translatePage = 'free-translations';
    var languages = new Array();

    // Callbacks
    // ------------------------

    window.tokencallback = function (response) {
        tokenizedAppId = response;
        getLanguages();
        log("The tokenized AppID is: " + tokenizedAppId);
    };

    window.getlanguagescallback = function (response) {
        log("The available language codes are:" + response);

        $.each(response, function (index, value) {
            languages[index] = { "value": value, label: "" };
        });

        getLanguageNames(response, uiLanguageCode);
    };

    window.getLanguageNamesCallBack = function (response) {
        $("#from-language").html('');
        $("#to-language").html('');
        $.each(response, function (index, text) {
            languages[index].label = text;
            $('"<option value="' + languages[index].value + '">' + text + '</option>').appendTo("#from-language");
            $('"<option value="' + languages[index].value + '">' + text + '</option>').appendTo("#to-language");
        });

        log("Available language names: " + response);
    };

    // Translate functions
    // -------------------------

    function getAppIdToken() {
        log('requesting app token');
        var s = document.createElement("script");
        s.src = "http://api.microsofttranslator.com/V2/Ajax.svc/GetAppIdToken?oncomplete=tokencallback&appId=" + inputAppId + "&minRatingRead=5&maxRatingWrite=4&expireSeconds=60";
        document.getElementsByTagName("head")[0].appendChild(s);
    }

    function getLanguages() {
        log('requesting languages for translation...');
        var s = document.createElement("script");
        s.src = "http://api.microsofttranslator.com/V2/Ajax.svc/GetLanguagesForTranslate?oncomplete=getlanguagescallback&appId=" + inputAppId
        document.getElementsByTagName("head")[0].appendChild(s);
    }

    function getLanguageNames(languageCodes, locale) {
        log('requesting language names...');

        // Custom formatting for url. Example output: "[\"de\", \"fr\", \"it\"]"
        var languageCodesString = "[\"" + languageCodes.join("\", \"") + "\"]";

        log('encoded language codes: ' + languageCodesString);

        var s = document.createElement("script");
        s.src = "http://api.microsofttranslator.com/V2/Ajax.svc/GetLanguageNames?oncomplete=getLanguageNamesCallBack&appId=" + inputAppId + "&locale=" + locale + "&languageCodes=" + languageCodesString;
        document.getElementsByTagName("head")[0].appendChild(s);
    }

    // Main logic
    // -------------------------

    $('#txtInputNew').live('keyup blur', function () {
        // Store the maxlength and value of the field.
        var maxlength = $(this).attr('maxlength');
        var val = $(this).val();

        // Trim the field if it has content over the maxlength.
        if (val.length > maxlength) {
            $(this).val(val.slice(0, maxlength));
        }
    });    
    
    function initUiLanguage() {
        var txt = $("#ctl00_ContentPlaceHolder_translatebox_ButtonVertalen").val();

        if (txt == 'Vertaal') {
            uiLanguageCode = 'nl';
            translatePage = 'online-vertalen';
        }
        if (txt == 'Traduisez') {
            uiLanguageCode = 'fr';
            translatePage = 'traduction-gratuite';
        }
        if (txt == 'Translate') {
            uiLanguageCode = 'en';
            translatePage = 'free-translations';
        }
        if (txt == 'Перевести') {
            uiLanguageCode = 'ru';
            translatePage = 'translate_online';
        }

        log('Detected ui language: ' + uiLanguageCode);

        $("#btnTranslateNew").val(txt);
    }

    initUiLanguage();
    getAppIdToken();

    $("#btnTranslateNew").click(function () {
        var from = $("#from-language").val();
        var to = $("#to-language").val();
        var text = $("#txtInputNew").val();

        var queryString = "?from=" + from + "&to=" + to + "&text=" + text;

        window.location = '/' + uiLanguageCode + '/' + translatePage + queryString;

        //http://elanlanguages.com/nl/online-vertalen/?tm1=0&tm2=0
    });
});	
































