$(document).ready(function(event) {

    // On load initially hide the translate options
    $('#translateOptions').hide();

    // Toggle the translate options
    $('.BTNtranslate').click(function(event) {
        event.preventDefault();
        $('#translateOptions').toggle();
    })

    // Translate text
    $('#translateNow').click(function(event) {
        event.preventDefault();

        // Find text to translate, which has a class of 'translateText'
        var textToTranslate = [];
        $('.translateText').each(function(e) {
            var text = $(this).html();
            if (text != '') {
                textToTranslate[e] = text;
            }
        });

        // Get the source language
        var sourceLang = $('#sourceLang').val();
        
        // Get the target language
        var targetLang = $('#targetLang').val();

        // Update source language to chosen language
        $('#sourceLang').val(targetLang);

        // If there is text to translate then translate it
        if (textToTranslate != '') {
            translate(textToTranslate, sourceLang, targetLang);
        }
    });

});

/**
 * Calls google translate api.
 * Translates text from sourceLang to targetLang
 *
 * @param array $text
 * @param string $sourceLang
 * @param string $targetLang
 */
function translate(text, sourceLang, targetLang) {
    var q = '';
    var i = 0;
    for (i = 0; i < text.length; i++) {
        q += '&q=' + text[i]
    }

    var source = 'https://www.googleapis.com/language/translate/v2?key=AIzaSyDZpJs_QeLF2zljWTqGvKwdTz9UH-gAjLM&source=' + sourceLang + '&target=' + targetLang + '&callback=translateText' + q;
    $.getScript(source, function() {});
}

/**
 * Callback for google translate api
 */
function translateText(response) {
    $('.translateText').each(function(e) {
        $(this).html(response.data.translations[e].translatedText);
    });
}
