$.fn.textNodes = function() {  
    var ret = [];  
    this.contents().each( 
        function() {    
            var fn = arguments.callee;      
            if ( this.nodeType == 3 || $.nodeName(this, "br") )         
                ret.push( this );      
            else $(this).contents().each(fn);  
        });  
    return $(ret);
}

jQuery(function () {

    function my_unescape(x) {
        
        if (x!=null)        
            return x.replace(/\&quot;/gi,"\"").replace(/\&amp;/gi,"&").replace(/\&lt;/gi,"<").replace(/\&gt;/gi,">").replace(/\&\#39;/gi,"'");
        
        return "";    
    
    }

    window.renderTranslation=function(data, p) {
        
        if (data!=null && data["data"]!=null && data["data"]["translations"]) {
        
            var a=data["data"]["translations"];
            var b=textToTranslateArrGrouped[p];
            
            sourceText="";
            
            for (var j=0;j<a.length;j++) {
            
                b[j][0].nodeValue=my_unescape(a[j]["translatedText"]);
            
            }   
        }
    }

    function initTranslateScript(lang, x, k) {
    
        var newScript = document.createElement('script');      
        newScript.type = 'text/javascript';
    
        var source = 'https://www.googleapis.com/language/translate/v2?key=AIzaSyDZsaxYtyJWjfLFTDWDxjSIyWWqZH6egGc&format=html&source=en&target=' + lang + '&callback=translateTextFunc' + k + '&' + x;      
        
        newScript.src = source;
        
        document.getElementsByTagName('head')[0].appendChild(newScript);
        
        window.eval("window.translateTextFunc" + k + "=function(data) {renderTranslation(data," + k + ")};");
        
    }

    function translateTo(a) {

        /*
        $("body").translate('en', a, {
            not: "pre, .jq-translate-ui",
            start: function () { $("#translate-loading").show() },
            complete: function () { $("#translate-loading").hide(); },
            error: function () { }
        });
        */

        var newScript = document.createElement('script');      
        newScript.type = 'text/javascript';      
        var sourceText = "";
/*
        $("a").each(function() {
            
            if (this.innerHTML.indexOf("<img")==-1) {
            
                sourceText+=(sourceText=="" ? "" : "&") + "q=" + escape(this.innerHTML);
            
            }
            
        });
        
        */
        
        window.textToTranslateArr=[];
        
        $(window.document).textNodes().each(function() {
        
            if (this.parentNode!=null && this.nodeValue!=null && 
                escape(this.nodeValue)!="null" && 
                escape(this.nodeValue)!="%0A" && 
                escape(this.nodeValue)!="%0A%0A" && 
                this.parentNode.tagName.toLowerCase()!="style" && 
                this.parentNode.tagName.toLowerCase()!="script" && 
                this.parentNode.tagName.toLowerCase()!="noscript") 
                    textToTranslateArr.push([this,escape(this.nodeValue)]);
        
        });
        
        sourceText="";
        
        var k=0;
        
        window.textToTranslateArrGrouped=[];
        
        for (var i=0;i<textToTranslateArr.length;i++) {
        
            sourceText+=(sourceText=="" ? "" : "&") + "q=" + textToTranslateArr[i][1];
            
            if (textToTranslateArrGrouped[k]==null || textToTranslateArrGrouped[k]==undefined) {
                textToTranslateArrGrouped.push([]);
            }

            textToTranslateArrGrouped[k].push(textToTranslateArr[i]);

            if (sourceText.length>1024) {

                initTranslateScript(a, sourceText, k++);

                sourceText="";

            }
        
        }
        
        if (sourceText!="") {
            initTranslateScript(a, sourceText, k++);
        }
        
	    $("#translate-links-left a[name=" + a + "]").css("font-weight", "bold");

    }
    
    /*
    
    $.translate.ready(function () {
        $("#translate-loading").hide();
        var destLang = $.cookie('destLang');
        if (destLang) {
            translateTo(destLang);
        }
    }, true);
    
    */

    var c=$.cookie("destLang");	

	if (c==null || c==undefined) 
		c="en";

	if (c!="en") {
		    translateTo(c);
    }
	else {
	        $("#translate-links-left a[name=en]").css("font-weight", "bold");
    }

    $('#translate-links a,#translate-links-left a').click(function () {
        var lang = $(this).attr('name');
        //		translateTo( lang );
        $.cookie('destLang', lang, { path: '/' });
        if ($(this).attr('go') == 1) {
            location.href = this.href;
        } else {
            location.reload();
        }
    });
});
