var callbackResultData = null;
var key = 'AIzaSyB-F5XT3MOs_k-zAbPBMkXXwGhjZPXs85Q';

function initAdormoTranslateButtonFor(elemId)
{
    $('#'+elemId+'_translator .adormo_translate_link').click(function(){
        var parent   = $(this).parent();
        var links    = parent.find('.adormo_translate_link');
        var language = $(this).attr('language');

        $('#'+elemId+' .adormo_translate').each(function() {
            var _this = $(this);
            if ($.isArray(adormoTranslations) && $.isArray(adormoTranslations[_this.attr('object')+'_'+_this.attr('pk')]) && $.isArray(adormoTranslations[_this.attr('object')+'_'+_this.attr('pk')][_this.attr('field')])) {
                if (typeof(adormoTranslations[_this.attr('object')+'_'+_this.attr('pk')][_this.attr('field')][language]) != 'undefined') {
                    var text = adormoTranslations[_this.attr('object')+'_'+_this.attr('pk')][_this.attr('field')][language];
                    if (_this.hasClass('show_less')) {
                        var truncatedText = text.replace(/<br\s?\/?>/g, '');
                        var moreLink      = $(this).parent().parent().find('.show_more_link');
                        if (truncatedText.length > 220) {
                            text = truncatedText.substring(0, 220 - 3).replace(/\s+?(\S+)?$/, '').replace(/\n/g, '<br/>') + '…';
                            moreLink.removeClass('hide');
                             if (!moreLink.hasClass('more')) {
                                moreLink.parent().find('.show_less').addClass('hide')
                                moreLink.parent().find('.show_more').removeClass('hide')
                            } else {
                                moreLink.parent().find('.show_less').removeClass('hide')
                                moreLink.parent().find('.show_more').addClass('hide')
                            }
                        } else {
                            moreLink.addClass('hide');
                            $(this).parent().parent().find('.show_more').addClass('hide');
                            $(this).removeClass('hide');
                        }
                    }
                    $(this).html(text);
                }
            }
        });

        if (links.length == 1) {
            parent.remove();
        } else {
            links.removeClass('hide');
            $(this).addClass('hide');
        }

        parent.find('.separator').removeClass('hide');
        parent.find('.adormo_translate_link:visible .separator:last').addClass('hide');

        return false;
    });
}

function onGoogleTranslateButtonClick(elem, targetId, targetLang)
{
    var translateTo = elem.find('.translate_to');
    var translateBack = elem.find('.translate_back');
    var block = $('#'+targetId);

    if (translateTo.hasClass('hide')) {
        // content was translated and we need to show original text
        translateTo.removeClass('hide');
        translateBack.addClass('hide');
    } else {
        // translate and show translation
        translateTo.addClass('hide');
        translateBack.removeClass('hide');
    }

    toggleContentBlockTranslation(block, targetLang);

    return false;
}
function toggleContentBlockTranslation(block, targetLang)
{
    var blockTranslatedId = block.attr('id')+'_translated';
    var blockTranslated   = $('#'+blockTranslatedId);

    if (blockTranslated.length == 0) {
        /*var nodeName = block[0].nodeName;
        block.after('<'+nodeName+' id="'+blockTranslatedId+'" class="content_translated hide">'+block.html()+'</'+nodeName+'>');*/
        blockClone = block.clone(true);
        blockClone.attr('id', blockTranslatedId).attr('class', 'content_translated hide');
        block.after(blockClone);
        blockTranslated = $('#'+blockTranslatedId);
        translateContentBlock(blockTranslated, targetLang);
    }

    if (block.hasClass('hide')) {
        block.removeClass('hide');
        blockTranslated.addClass('hide');
    } else {
        block.addClass('hide');
        blockTranslated.removeClass('hide');
    }
}

// V2
function translateContentBlock(elem, targetLang)
{
    //var key = 'AIzaSyDRZgN5q6thrpmIRYoa6JRyZJuL09zylkA';
    
    elem.find('.google_translate').each(function(i, c){
        sourceLanguage  = $(this).attr('language') != '' ? $(this).attr('language') : '';
        if (sourceLanguage == targetLang) {
            return true; // continue
        }
        var param = {
            "key":      key,
            "target":   targetLang,
            "q":        c.innerHTML,
            "format":   "html",
            "callback": "_googleTranslateCallback"
        };
        if (sourceLanguage != '' && typeof(sourceLanguage) != 'undefined') {
            param.source = sourceLanguage;
        }
        $.getScript('https://www.googleapis.com/language/translate/v2?'+$.param(param), function(){
             if (callbackResultData != null) {
                 c.innerHTML = callbackResultData.translations[0].translatedText;
             }
        });
    });
}
function _googleTranslateCallback(result)
{
    if (typeof(result.data) != 'undefined') {
        callbackResultData = result.data;
    } else {
        callbackResultData = null;
    }
}

/*
V1
function translateContentBlock(elem, targetLang)
{
    if (typeof(google) == 'undefined') {
        $.getScript('http://www.google.com/uds/api?file=uds.js&v=1.0', function(){
            _translateContentBlock(elem, targetLang);
        });
    } else {
        _translateContentBlock(elem, targetLang);
    }
}

function _translateContentBlock(elem, targetLang)
{
    google.load("language", "1", {
        "callback": function(){
            elem.find('.google_translate').each(function(i, c){
                sourceLanguage  = $(this).attr('language') != '' ? $(this).attr('language') : '';
                if (sourceLanguage == targetLang) {
                    return true; // continue
                }
                google.language.translate(c.innerHTML, sourceLanguage, targetLang, function(result){
                    if (typeof(result.error) == 'undefined') {
                        c.innerHTML = result.translation;
                    }
                });
            });
        }
    }); 
}
*/
