// ==UserScript==
// @name          Translate Twitter
// @namespace     http://chris4403.blogspot.com/userscripts
// @description   Add "Translate!" link and language select pulldown to twitter timeline.Translate feature is using Google AJAX Language API.
// @include       http://twitter.com/*
// @include       https://twitter.com/*
// @include       http://twitter.com/account/archive
// @include       https://twitter.com/account/archive
// @exclude       http://twitter.com/account/setting
// @exclude       https://twitter.com/account/setting
// @exclude       http://twitter.com/
// @exclude       https://twitter.com/
// @exclude       http://twitter.com/*/statuses/*
// @exclude       https://twitter.com/*/statuses/*
// ==/UserScript==
(function(){

	var Version = '0.1.3';
	var lastUpdate = '2008.5.8';
	var scriptURL = 'http://www.chrisryu.com/translate_twitter/translate_twitter.user.js';
	var scriptText = '';
	try{
		(GM_setValue)
		scriptText = '<br/><a href="'+scriptURL+'">latest version</a>';
	}catch(e){
		//bookmarklet
	}
    var side = document.getElementById('side');
    if(side == null) return;
    side.innerHTML = '<div style="margin-bottom:20px"><B>Translate Twit!</B><br/><div style="margin-left:10px;color:#666666;margin-bottom:10px;">version:'+Version+'<br/>last update:'+lastUpdate+scriptText+'</div><b>Select Translate Language</b><br/><select id="trans_your_language" style="line-height:1;"><option value="ar">Arabic</option><option value="zh-CN">Chinese (Simplified)</option><option value="zh-TW">Chinese (Traditional)</option><option value="nl">Dutch</option><option value="en" selected="">English</option><option value="fr">French</option><option value="de">German</option><option value="it">Italian</option><option value="ja">Japanese</option><option value="ko">Korean</option><option value="pt">Portuguese</option><option value="ru">Russian</option><option value="es">Spanish</option></select></div>' + side.innerHTML;
    try{
        var save_func = function(e){
            var this_sel = (e.srcElement)?e.srcElement:this;
            GM_setValue('initLang',this_sel.value);
        }
        var sel = document.getElementById('trans_your_language');
        if (sel.addEventListener){
            sel.addEventListener('change', save_func, false);
        }else{
            sel.attachEvent('onchange', save_func);
        }
        document.getElementById('trans_your_language').value = GM_getValue('initLang');

    }catch(e){
    	//using by bookmarklet ignore this area;
    }

    var td = document.getElementById('timeline').getElementsByTagName('td');
    for(var i = 0,len = td.length;i<len;i++){
        if(td[i].className == 'content'){
            var span = document.createElement('span');
            var entry = td[i].getElementsByTagName('span');
            for(var j = 0;j<entry.length;j++){
                if(entry[j].className.indexOf('entry-content')>=0){
                    var t = (entry[j].innerHTML||"").replace(/^\s+|\s+$/g, "")
                    span.innerHTML = '<a href="javascript:void(0);">translate!</a>';
                    span.style.marginLeft='10px';

                    var click_func = function(e){
                        var this_span = (e.srcElement)?e.srcElement:this;
                        
                         var tmp = this_span.parentNode.parentNode.getElementsByTagName('span');
                         for(p in tmp){
                             if(tmp[p].className && tmp[p].className.indexOf('entry-content')>=0){
                                 var word = (tmp[p]||"").innerHTML.replace(/^\s+|\s+$/g, "");
                                 word = word.replace(/<.+?>/g,'');//remove tag
                                 var src = 'http://www.chrisryu.com/translate_twitter/translate.html?t=' + encodeURIComponent(word) + '&l=' + document.getElementById('trans_your_language').value;
                                 var iframe =  document.createElement('iframe');
                                 iframe.style.border = '1px solid #FFFFFF';
                                 iframe.frameBorder = '0';
                                 iframe.style.display = 'block';
                                 iframe.style.height = '100px';
                                 iframe.style.width = '100%';
                                 iframe.src = src;
                                 this_span.parentNode.appendChild(iframe);
                                 this_span.style.display='none';
                             }
                         }
                    }
                    
                    if (span.addEventListener)
                        span.addEventListener('click', click_func, false);
                    else
                        span.attachEvent('onclick', click_func);
                    td[i].appendChild(span);
                }
            }
        }
    }
})()
