There are 4 previous versions of this script.
Add Syntax Highlighting (this will take a few seconds, probably freezing your browser while it works)
//v1.4.10 GreaseMonkey 005810
// ==UserScript==
// @name pbtweet
// @namespace http://t-trace.blogspot.com/
// @description Expand conversation chains and twitPic.com thumbnails.
// @include https://twitter.com/*
// @include http://twitter.com/*
// ==/UserScript==
// UPDATE INFO http://web.me.com/t_trace/pbtweet.html
( function(){
var isOpera = !!this.opera, isFirefox = !!this.Components, isChromium = !!this.contentWindow , isSafari = this.getMatchedCSSRules && !isChromium;
// initialize pbtweet if pbtweet not works.
if(!document.getElementById('pb_info')){
pb_init();
} else {
return(false);
}
// initialize pbtweet//
function pb_init()
{
pb_css_set();
conv_chain_hash = new Array(0);
session_id = document.getElementsByName('session-user-screen_name')[0].content;
//preference values
restore_pb_values();
pb_accept_local_functions = true;
document.pb_lang = pb_lang;
//information panel
pb_version = "v1.4.10 GM 005810";
pb_active_group = null;
//enable_accesskey = false;
//init process
pb_info_panel();
if(document.getElementById('side'))
{
// pb_group_tab();
remove_accesskey();
}
//build pb-extra
pb_extra = document.createElement('span');
pb_extra.setAttribute('class','pb-extra');
pb_trans = document.createElement('span');
pb_trans.setAttribute('class','pb-trans');
pb_trans.innerHTML = "to " + pb_lang.toUpperCase();
pb_extra.appendChild(pb_trans);
pb_rtwweet = document.createElement('span');
pb_rtwweet.setAttribute('class','pb-rtweet');
pb_rtwweet.innerHTML = "RT";
pb_extra.appendChild(pb_rtwweet);
pb_via = document.createElement('span');
pb_via.setAttribute('class','pb-via');
pb_via.innerHTML = "(via ";
pb_extra.appendChild(pb_via);
pb_temp_target = document.createElement('span');
// add pb_main event
if(!document.getElementById('show')){
// more button
document.getElementById('content').addEventListener("DOMNodeInserted",
function (event)
{
if(event.target.id == 'timeline')
{
conv_chain_hash = new Array(0);
pbtweet_main(event.target.getElementsByClassName('hentry'));
event.target.addEventListener("DOMNodeInserted",
function (event)
{
if(event.target.nodeName == "LI" && (pb_is_in_group(event.target) == false))
{
//alert('any');
event.target.style.opacity = '1';
event.target.style.marginTop = '0px';
event.target.style.webkitTransition = "";
removeClass(event.target, 'animate');
addClass(event.target, 'pbHiddenGroup');
pbtweet_main([event.target]);
}
else
{
if(event.target.nodeName == "LI" && (!hasClass(event.target, "animate")))
{
pbtweet_main([event.target]);
} else if(event.target.nodeName == "LI") {
kick_animation_on_top(event);
}
}
}, false);
}
else if(hasClass(event.target, "conv_chain"))
{
kick_animation(event.target)
}
}, false);
pb_add_eventlistener_to_timeline();
}
// make master objects
try{
master_fav = document.getElementsByClassName("fav-action")[0].cloneNode(true);
master_reply = document.getElementsByClassName("reply")[0].cloneNode(true);
} catch(err){
master_fav = document.createElement('a');
master_fav.className = "fav-action";
master_reply = document.createElement('a');
master_reply.className = "reply";
}
pb_snip_url = document.createElement('span');
//make Y!Pipes for Image receiver
bkite_processor = document.createElement('script');
bkite_processor.innerHTML = "var bkiteSrc = function(data){place_picture(data.value.items[1].content,data.value.items[0].content,data.value.items[2].content);}";
document.getElementsByTagName("head")[0].appendChild(bkite_processor);
//make tinyUrl receiver
tinyUrl_processor = document.createElement('script');
tinyUrl_processor.innerHTML = "var pbTurlExp = function(data){expand_url(data.value.items[0].content,data.value.items[1].content);}";
document.getElementsByTagName("head")[0].appendChild(tinyUrl_processor);
if(document.body.id != 'show')
{
var nav_buttons = document.getElementById('primary_nav').getElementsByTagName('a');
for(var i = 0; i < nav_buttons.length; i++){
nav_buttons[i].addEventListener('click', function(e){setTimeout(pbtweet_main(document.getElementsByClassName('hentry')), 500)},true);
}
var page_type = document.getElementById('side').getElementsByClassName('active')[0];
switch (page_type.id)
{
case "home_tab":
var update_target = document.getElementById('home_tab');
break;
case "replies_tab":
var update_target = document.getElementById('replies_tab');
break;
case "favorites_tab":
var update_target = document.getElementById('favorites_tab');
break;
case "profile_tab":
var update_target = document.getElementById('updates_tab');
break;
case "update_tab":
var update_target = document.getElementById('update_tab');
break;
default:
//var update_target = document.createElement('div');
}
}
pbtweet_main(document.getElementsByClassName('hentry')); //initial
}
function pb_add_eventlistener_to_timeline(timeline)
{
document.getElementById("timeline").addEventListener("DOMNodeInserted",
function (event)
{
if(event.target.nodeName == "LI" && (pb_is_in_group(event.target) == false))
{
event.target.style.opacity = '1';
event.target.style.marginTop = '0px';
removeClass(event.target, 'animate');
addClass(event.target, 'pbHiddenGroup');
pbtweet_main([event.target]);
}
else
{
if(event.target.nodeName == "LI" && (!hasClass(event.target, "animate")))
{
pbtweet_main([event.target]);
} else if(event.target.nodeName == "LI") {
kick_animation_on_top(event);
}
}
}, false);
}
// main process
function pbtweet_main(target)
{
var repeat_count = chain_count ;
// if target is moving... delay
// standard window
if(!document.getElementById('show'))
{
var entry = target;
for (var i=0; i < entry.length; i++)
{
for(var j = 0; j < conv_chain_hash.length; j++)
{ // remove redundant tweet
try
{
if(entry[i].id == conv_chain_hash[j])
{
remove_redundand(entry[i].id, 'inserted');
break;
}
}
catch(err)
{
}
}
try
{
if(entry[i].getElementsByClassName('msgtxt')[0])
{ //change search result
addClass(entry[i].getElementsByClassName('msgtxt')[0], 'entry-content');
addClass(entry[i].getElementsByClassName('meta')[0].getElementsByTagName('a')[0], 'entry-date');
entry[i].getElementsByClassName('meta')[0].getElementsByTagName('a')[0].href = entry[i].getElementsByClassName('meta')[0].getElementsByTagName('a')[0].href.replace(/\/([a-zA-Z0-9\-\_]+)\/statuses/, '/$1/status');
}
if(entry[i].hasAttribute("id"))
{ //add external links.
if(entry[i].getElementsByClassName('entry-content')[0])
{ // normal tweet
entry[i].getElementsByClassName('entry-content')[0].innerHTML = pb_link_maker(entry[i].getElementsByClassName('entry-content')[0].innerHTML,'main');
}
else if(entry[i].getElementsByClassName('msgtxt')[0])
{ // search tweet
entry[i].getElementsByClassName('msgtxt')[0].innerHTML = pb_link_maker(entry[i].getElementsByClassName('msgtxt')[0].innerHTML,'main');
}
pb_snip_retreiver(entry[i]);
twitpic_thumb(entry[i].id,entry[i].innerHTML);
pb_extra_set(entry[i]);
pb_appearance_set(entry[i]);
}
var meta_url_list = entry[i].getElementsByClassName('meta')[0].getElementsByTagName('a');
var get_url = "";
switch ( meta_url_list.length ) { //detect patter of in_reply_to_status_id url embedded
case 1:
break;
case 2:
if(meta_url_list[1].href.match(/\:\/\/twitter.com\/[^\/]+\/status/))
{
get_url = meta_url_list[1].href;
}
else
{
}
break;
case 3:
get_url = meta_url_list[2].href;
break;
default:
}
if(get_url != "" && (!entry[i].getElementsByClassName('conv_chain')[0]))
{
var my_node = entry[i].id;
// delaying //
if(hasClass(entry[i],"animate")){
setTimeout(pbtweet_main([entry[i]]), 1000);
} else {
document.getElementById(my_node).addEventListener("DOMNodeInserted", function(event){if(hasClass(event.target, "conv_chain")){kick_animation(event.target)}}, false);
retreve_data(get_url,my_node, repeat_count );
}
}
} catch(err) {
//window.console.log = err.message + " on " + i;
}
}
}
else
{ //tweet status view
try
{
var pic_entry = document.getElementsByClassName("status-body")[0];
pic_entry.setAttribute("id",guid());
twitpic_thumb(pic_entry.id,pic_entry.innerHTML);
var entry = document.getElementsByClassName("meta");
get_url = entry[0].childNodes[4].href;
if(document.getElementById("content").childElementCount == 1)
{
retreve_data(get_url,"content", repeat_count );
}
}
catch(err)
{
}
}
}
function retreve_data(get_url,my_node, count)
{
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
if(request.readyState == 4 && request.status == 200)
{
conv_object = eval('(' + request.responseText + ')');
var profile_image_url = conv_object["user"]["profile_image_url"];
var user_name = conv_object["user"]["screen_name"];
var conv_mine = "";
if (user_name == session_id){
conv_mine = " mine";
}
var url_replace = /\:\/\/twitter\.com\/[^\/]+\/status\/[0-9]+\"\>in\ reply\ to/;
var conv_innerHTML = "<span class = \'icons\'><a href='"+ pb_protocol() + "://twitter.com/" + user_name + "'><img src ='" + profile_image_url + "'></a></span><span class=\'entry-content " + user_name + conv_mine + "\'><strong>" + "<a href='" + pb_protocol() + "://twitter.com/" + user_name + "'>" +user_name + "</a> </strong>" + pb_link_maker(conv_object["text"]) + "</span>";
if(conv_object["in_reply_to_status_id"]){
var retreve_status = pb_protocol() + "://twitter.com/" + conv_object["in_reply_to_screen_name"] + "/status/" + conv_object["in_reply_to_status_id"];
//retreve_data(retreve_status,my_node);
if( count > 1 ) {
retreve_data(retreve_status,my_node, count - 1);
}
}
var conv_chain = document.createElement('div');
conv_chain.innerHTML = conv_innerHTML;
conv_chain.setAttribute("class","conv_chain");
conv_chain.id = guid();
// append fav and reply button
var conv_action = document.createElement('div');
conv_action.className = "actions";
var conv_meta = pb_protocol() + "://twitter.com/" + user_name + "/status/" + conv_object["id"];
var conv_fav = master_fav.cloneNode(true);
var conv_reply = master_reply.cloneNode(true);
// detect favorite
if(conv_object["favorited"] == true){
removeClass(conv_fav,"non-fav");
addClass(conv_fav,"fav");
} else {
removeClass(conv_fav,"fav");
addClass(conv_fav,"non-fav");
}
var conv_entry_meta = document.createElement('span');
conv_entry_meta.setAttribute('class','meta entry-meta');
var post_date = new Date(conv_object["created_at"]);
var current_date = new Date();
var past_duration = (current_date - post_date) / 1000;
var string_duration = "";
if (past_duration < 60){
string_duration = "less than a minute";
} else if(past_duration < 180) {
string_duration = "less than 3 minutes";
} else if(past_duration < 6000) {
string_duration = "less than 10 minutes";
} else if(past_duration < 36000) {
string_duration = "less than an hour";
} else if(past_duration < 10800) {
string_duration = "less than 3 hours";
} else if(past_duration < 360000) {
string_duration = "less than 10 hours";
} else if(past_duration < 86400) {
string_duration = "less than a day";
} else if(past_duration < 259200) {
string_duration = "less than 3 days";
} else if(past_duration < 604800) {
string_duration = "less than a week";
} else if(past_duration < 2592000) {
string_duration = "less than a month";
} else if(past_duration < 31536000) {
string_duration = "less than a year";
} else {
string_duration = "more than a year";
}
conv_entry_meta.innerHTML = "<a href='" + conv_meta + "' class='entry-date' rel='bookmark'><span class='published'>" + string_duration +" </span></a> <span>from " + conv_object["source"] + "</span>";
if(conv_object["in_reply_to_status_id"]){
conv_entry_meta.innerHTML = " " + conv_entry_meta.innerHTML + " <a href='" + pb_protocol() + "://twitter.com/" + conv_object["in_reply_to_user_id"] + "/status/" + conv_object["in_reply_to_status_id"] +"'>in reply to " + conv_object["in_reply_to_screen_name"] + "</a>";
}
conv_chain.appendChild(conv_entry_meta);
// append chat balloon
var conv_baloon = document.createElement('span');
conv_baloon.className = "entry-baloon";
var conv_baloon_top = document.createElement('span');
conv_baloon_top.className = "entry-content-before";
var conv_baloon_bottom = document.createElement('span');
conv_baloon_bottom.className = "entry-content-after";
if (user_name == session_id){
addClass(conv_baloon_top,"mine");
addClass(conv_baloon_bottom,"mine");
}
conv_baloon.appendChild(conv_baloon_top);
conv_baloon.appendChild(conv_chain.getElementsByClassName('entry-content')[0]);
conv_baloon.appendChild(conv_baloon_bottom);
conv_baloon.appendChild(conv_entry_meta);
conv_chain.appendChild(conv_baloon);
//var conv_path = location.href.match(/.+\/\/twitter.com(\/[^\/]+)/)[1];
var conv_path = 'http://twitter.com/';
var href_match = /.+\:\/\/twitter\.com\/(.+)\/status\/([0-9]+)/;
conv_reply.href = conv_path + "?status=@" + conv_meta.match(href_match)[1] + "%20&in_reply_to_status_id=" + conv_meta.match(href_match)[2] + "&in_reply_to=" + conv_meta.match(href_match)[1];
conv_reply.title = "reply to " + conv_meta.match(href_match)[1];
conv_fav.id = "status_star_" + conv_meta.match(href_match)[2];
conv_reply.className = "pb-reply";
removeClass(conv_fav,'fav-action');
addClass(conv_fav,'pb-fav-action');
conv_action.appendChild(conv_fav);
conv_action.appendChild(conv_reply);
//
conv_chain.insertBefore(conv_action, conv_baloon.nextSibling);
//add reply function
conv_reply.name = conv_reply.href;
//if(location.href.match(/twitter.com\/(timeline\/)*(home|replies|public_timeline|)/))
if( document.body.id.match(/home|replies|favorites|search/) )
{// home
conv_reply.removeAttribute("href");
conv_reply.addEventListener("click", function(e){pb_reply(e);e.preventDefault();e.stopPropagation}, false);
} else {
conv_reply.href = conv_reply.href.replace(/twitter.com\/(timeline\/)*[^\?]+/, "twitter.com/$1home");
conv_reply.href = conv_reply.href.replace(/&/g, "&");
}
//add fave event
conv_fav.addEventListener("click", function(e){pb_fave(e);e.preventDefault()}, false);
if(my_node != "content"){
conv_chain.style.marginTop = "-60px";
}
pb_extra_set(conv_chain);
//add snip retreiving
pb_snip_retreiver(conv_chain);
pb_appearance_set(conv_chain,conv_chain.getElementsByClassName('entry-content')[0]);
try{
document.getElementById(my_node).appendChild(conv_chain);
//kick_animation(conv_chain);
} catch(e){
//window.console.log = e + "on add_child";
}
var status_id = get_url.replace(/.+\:\/\/twitter\.com\/[^\/]+\/status\/([0-9]+)/,"status_$1");
if(status_id != null){
conv_chain_hash.push(status_id);
//setTimeout(remove_redundand(status_id),10);
remove_redundand(status_id);
}
twitpic_thumb(conv_chain.id,conv_chain.innerHTML);
}
};
if (location.href.match(/^https/) && get_url.match(/^https/)){
} else if (location.href.match(/^https/) && get_url.match(/^http\:/)) {
get_url = get_url.replace(/^http\:/, "https:");
} else if (location.href.match(/^http\:/) && get_url.match(/^https/)) {
get_url = get_url.replace(/^https\:/, "http:");
} else if (location.href.match(/^http\:/) && get_url.match(/^http\:/)) {
}
request.open('GET', get_url, true);
// JSON 1st!!!
request.setRequestHeader("Accept", "application/json, text/javascript, */*");
request.setRequestHeader("X-Requested-With", "XMLHttpRequest");
request.send(null);
}
function remove_redundand(target_id)
{
if(arguments[1] != 'inserted')
{
try
{
var remove_target = document.getElementById(target_id);
if( ((remove_target.offsetTop + remove_target.offsetHeight) < (window.scrollY + window.innerHeight)) && (remove_target.offsetTop + remove_target.offsetHeight) != 0)
{
var curr_scroll_x = window.scrollX;
var curr_scroll_y = window.scrollY;
window.scrollTo(curr_scroll_x, (curr_scroll_y - remove_target.offsetHeight));
}
// animation effects only std version
//setTimeout(remove_target.style.display = "none", 400);
remove_target.parentNode.removeChild(remove_target);
} catch(e) {
//window.console.log = window.console.log + '\n' + e + 'on removing';
}
}
else
{
var remove_target = document.getElementById(target_id);
remove_target.style.display = "none"
//remove_target.parentNode.removeChild(remove_target);
}
}
function hide_group(target_id)
{
try
{
var remove_target = document.getElementById(target_id);
if(arguments[2])
{ // group on_off
}
setTimeout(function(){if(!hasClass(remove_target,'pbHiddenGroup')){addClass(remove_target, ' pbHiddenGroup ');removeClass(remove_target, 'pbHiddingGroup')}}, 400);
//remove_target.parentNode.removeChild(remove_target);
} catch(e) {
//window.console.log = window.console.log + '\n' + e + 'on removing';
}
}
function twitpic_thumb(id,html)
{
var my_source = html;
if(my_source == ""){
my_source = document.getElementById(id).childNodes[0].childNodes[0].innerHTML;
}
var twitpic_carrier = />(http\:\/\/twitpic.com\/[^\<\.]+)<\/a\>/;
var movapic_carrier = /\"(http\:\/\/movapic.com\/pic\/([^\"]+))/;
var yfrog_carrier = />(http\:\/\/yfrog.com\/[^\<\.]+)<\/a\>/;
var photoshare_carrier = /(http\:\/\/bcphotoshare\.com\/photos\/[0-9]+\/([0-9]+))/;
var bkite_carrier = /(Photo|pic)\:\ \<a\ [^\>]*href\=\"http\:\/\/bkite.com\/([0-9a-zA-Z]+)\"/;
var sec_carrier = /http\:\/\/tiny12\.tv\/([a-zA-Z0-9]+)/;
var tumbl_carrier = /http\:\/\/tumblr\.com\/([a-zA-Z0-9]+)/;
var flickr_carrier = /http\:\/\/flic\.kr\/p\/([a-zA-Z0-9]+)/;
var bctiny_carrier = /http\:\/\/bctiny\.com\/([a-zA-Z0-9]+)/;
var fhatena_carrier = /(http\:\/\/f\.hatena\.ne\.jp\/(([^\/])[^\/]+)\/(([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])[0-9]+))/;
//twitpic support
if(my_source.match(twitpic_carrier)){
var pic_thumb_src = my_source.match(twitpic_carrier)[1].replace(/http\:\/\/twitpic\.com\/([0-9a-zA-Z]+)/,"http://twitpic.com/show/thumb/$1");
place_picture(id,pic_thumb_src,my_source.match(twitpic_carrier)[1]);
}
//photoshare support
if(my_source.match(photoshare_carrier)){
var pic_thumb_src = "http://images.bcphotoshare.com/storages/" + my_source.match(photoshare_carrier)[2] +"/thumbnail.jpg";
place_picture(id,pic_thumb_src,my_source.match(photoshare_carrier)[1]);
}
//fhatena support
if(my_source.match(fhatena_carrier)){
var pic_thumb_src = "http://img.f.hatena.ne.jp/images/fotolife/" + my_source.match(fhatena_carrier)[3] + "/" + my_source.match(fhatena_carrier)[2] + "/" + my_source.match(fhatena_carrier)[5] + "/" + my_source.match(fhatena_carrier)[4] + "_120.jpg";
place_picture(id,pic_thumb_src,my_source.match(fhatena_carrier)[1]);
}
//movapic support
if(my_source.match(movapic_carrier)){
var pic_thumb_src = "http://image.movapic.com/pic/s_" + my_source.match(movapic_carrier)[2] +".jpeg";
place_picture(id,pic_thumb_src,my_source.match(movapic_carrier)[1]);
}
//yfrog support
if(my_source.match(yfrog_carrier)){
var pic_thumb_src = my_source.match(yfrog_carrier)[1].replace(/http\:\/\/yfrog\.com\/([0-9a-zA-Z]+)/,"http://yfrog.com/$1:iphone");
place_picture(id,pic_thumb_src,my_source.match(yfrog_carrier)[1]);
}
// getting bkite.com image
if (my_source.match(bkite_carrier)){
var pic_thumb_query = my_source.replace(/.+<a\ [^\>]*href\=\"http\:\/\/bkite\.com\/([0-9a-zA-Z]+)\".+/,"http://bkite.com/objects/$1");
var pic_thumb_loader = document.createElement('script');
pic_thumb_loader.src = "http://pipes.yahoo.com/pipes/pipe.run?_id=WC_YK2IU3hGdr4ty6icw5g&_render=json&snipcode=" + pic_thumb_query + "&parentid=" + id + "&_callback=bkiteSrc";
document.getElementsByTagName("head")[0].appendChild(pic_thumb_loader);
}
// getting 12sec.tv image
if (my_source.match(sec_carrier)){
var pic_thumb_query = my_source.match(sec_carrier)[1];
var pic_thumb_loader = document.createElement('script');
pic_thumb_loader.src = "http://pipes.yahoo.com/pipes/pipe.run?_id=db3a5299e7cc3465a16b8333891cdc8d&_render=json&snipcode=" + pic_thumb_query + "&parentid=" + id + "&_callback=bkiteSrc";
document.getElementsByTagName("head")[0].appendChild(pic_thumb_loader);
}
// getting tumblr.com image
if (my_source.match(tumbl_carrier)){
var pic_thumb_query = my_source.match(tumbl_carrier)[1];
var pic_thumb_loader = document.createElement('script');
pic_thumb_loader.src = "http://pipes.yahoo.com/pipes/pipe.run?_id=d6a5ce53ecce335477faf60122f8f7f3&_render=json&snipcode=" + pic_thumb_query + "&parentid=" + id + "&_callback=bkiteSrc";
document.getElementsByTagName("head")[0].appendChild(pic_thumb_loader);
}
// getting flickr.com image
if (my_source.match(flickr_carrier)){
var pic_thumb_query = my_source.match(flickr_carrier)[1];
var pic_thumb_loader = document.createElement('script');
pic_thumb_loader.src = "http://pipes.yahoo.com/pipes/pipe.run?_id=416a1c6eb426f097dcd35aa745cfe22d&_render=json&snipcode=" + base58_decode(pic_thumb_query) + "&parentid=" + id + "&_callback=bkiteSrc";
document.getElementsByTagName("head")[0].appendChild(pic_thumb_loader);
}
// getting bctiny_carrier image
if (my_source.match(bctiny_carrier)){
var pic_thumb_query = my_source.match(bctiny_carrier)[1];
var pic_thumb_loader = document.createElement('script');
pic_thumb_loader.src = "http://pipes.yahoo.com/pipes/pipe.run?_id=a5de4b4f98184e4d59896d907948397a&_render=json&snipcode=" + pic_thumb_query + "&parentid=" + id + "&_callback=bkiteSrc";
document.getElementsByTagName("head")[0].appendChild(pic_thumb_loader);
}
return false;
}
function place_picture(id,pic_thumb_src,pic_href)
{
var pic_thumb = document.createElement('img');
var pic_thumb_link = document.createElement('a');
pic_thumb_link.setAttribute("href", pic_href);
pic_thumb_link.setAttribute("target", "_blank");
var pic_thumb_id = guid();
pic_thumb_link.setAttribute("id",pic_thumb_id);
pic_thumb.setAttribute("class","twitpic_thumb");
pic_thumb.setAttribute("src", pic_thumb_src);
pic_thumb_link.appendChild(pic_thumb);
document.getElementById(id).appendChild(pic_thumb_link);
}
//Make pseudo guid
function S4()
{
return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
}
function guid()
{
return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}
function base58_decode(snipcode) {
var alphabet = '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';
var num = snipcode.length;
var decoded = 0;
var multi = 1;
for ( var i = (num-1) ; i >= 0 ; i-- )
{
decoded = decoded + multi * alphabet.indexOf(snipcode[i]);
multi = multi * alphabet.length;
}
return decoded;
}
//Standard function
function hasClass(ele,cls)
{
try{
return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
} catch(err) {
return false;
}
//return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}
function addClass(ele,cls)
{
if (!hasClass(ele,cls)) ele.className += " "+cls + " ";
}
function removeClass(ele,cls)
{
if (hasClass(ele,cls)) {
var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
ele.className=ele.className.replace(reg,'');
}
}
function pb_protocol()
{
if (location.href.match(/^https/)){
return "https";
} else if (location.href.match(/^http\:/)) {
return "http";
}
}
//--autoScrolll--//
var during_pagination = true;
setTimeout(function(){if(!document.getElementById("autopagerize_style")){init_autoPager()}}, 1500);
function init_autoPager(){
during_pagination = false;
window.addEventListener("scroll", function(){add_scroll_event()}, false);
}
function add_scroll_event(){
if(document.getElementById("content").clientHeight < (window.scrollY + window.innerHeight + 200) && (during_pagination == false)){
during_pagination = true;
add_next_page();
};
}
// pb_add next page automatically
function add_next_page(){
during_pagination = true;
if(!location.href.match(/\/public_timeline$/)){
var more_url = '';
if(document.getElementById("more"))
{
more_url = document.getElementById("more").href;
insert_update(more_url);
}
else if(document.getElementById("search_more"))
{
var more_url = document.getElementById("search_more").href;
var more_click = document.createEvent('MouseEvents');
more_click.initEvent( 'click', true, true );
document.getElementById("search_more").dispatchEvent( more_click );
}
window.removeEventListener("scroll", function(){add_scroll_event()}, false);
during_pagination = false;
}
}
// -- auto updater -- //
var auto_update = true;
var update_span = 60000;
var update_object = {};
var purge_expression = /public_timeline/;
if(!location.href.match(purge_expression))setInterval(function(){insert_update()}, update_span);
function insert_update()
{
if(!arguments[0]){
// insert update
var real_timeline = document.getElementById("timeline");
var insert_point = real_timeline.getElementsByClassName('hentry')[0];
//if(document.getElementById('search_menu'))
//{ //new interface
var active_timeline_url = document.getElementById('side').getElementsByClassName('active')[0].getElementsByClassName('in-page-link')[0].href;
var top_status_id = active_timeline_url + "?twttr=true";
//}
//else
//{ //old interface
// var top_status_id = location.href + "?twttr=true";
//}
var insert_point_id = insert_point.id.replace(/status_([0-9]+)/,"$1");
insert_point_id += 0.1;
insert_point_id -= 0.1;
//addClass(insert_point, "pb-debug-insert");
}
else
{
// add next page
var real_timeline = document.getElementById("timeline");
var insert_point = real_timeline;
var insert_point_id = 0.0;
var top_status_id = arguments[0];
var more_buton = null;
if(document.getElementById("more"))
{
more_buton = document.getElementById("more");
}
else if(document.getElementById("search_more"))
{
more_buton = document.getElementById("search_more");
}
var page_num = more_buton.href.match(/page\=([0-9]+)/)[1];
//var page_num = document.getElementById("more").href.match(/page\=([0-9]+)/)[1];
page_num -= 0.0;
var more_url = more_buton.href;
more_buton.href = more_url.replace(/page\=[0-9]+/, ("page=" + (page_num + 1)));
}
var update_req = new XMLHttpRequest();
update_req.onreadystatechange = function() {
if(update_req.readyState == 4 && update_req.status == 200){
update_object = eval('(' + update_req.responseText + ')');
var insert_HTML = update_object["#timeline"];
var update_wrapper = document.createElement('div');
update_wrapper.style.display = "none";
update_wrapper.id = "pb_updater";
update_wrapper.innerHTML = insert_HTML;
document.getElementById("timeline").parentNode.appendChild(update_wrapper);
var update_node_number = update_wrapper.childNodes[0].childNodes.length;
for(var i = 0; i < update_node_number; i++ ){
var updated_entry = update_wrapper.childNodes[0].childNodes[0];
var updated_entry_id = updated_entry.id.replace(/status_([0-9]+)/,"$1");
updated_entry_id += 0.1;
updated_entry_id -= 0.1;
while(updated_entry_id < insert_point_id && hasClass(insert_point, "mine")){
insert_point = insert_point.nextSibling;
while( !hasClass( insert_point , 'hentry' ) )
{
insert_point = insert_point.nextSibling;
}
insert_point_id = insert_point.id.replace(/status_([0-9]+)/,"$1");
insert_point_id += 0.1;
insert_point_id -= 0.1;
// - debug -- addClass(insert_point, "pb-debug-insert");
}
// this try is for myself
try{
updated_entry.getElementsByClassName("reply")[0].name = updated_entry.getElementsByClassName("reply")[0].href;
if(location.href.match(/twitter.com\/(timeline\/)*home/))
{// home
updated_entry.removeAttribute("href");
} else {
updated_entry.href = updated_entry.href.replace(/twitter.com\/(timeline\/)*[^\?]+/, "twitter.com/$1home");
updated_entry.href = updated_entry.href.replace(/&/g, "&");
}
} catch(err){
}
//update status text
if(insert_point_id < updated_entry_id && hasClass(updated_entry,"mine") && (insert_point.id != "timeline") && (document.body.id != "profile")){
document.getElementsByClassName("status-text")[0].textContent = updated_entry.getElementsByClassName("entry-content")[0].textContent;
}
//alert(insert_point_id);
if(insert_point_id < updated_entry_id)
{
//add reply function
try{
updated_entry.getElementsByClassName("reply")[0].addEventListener("click", function(e){pb_reply(e);e.preventDefault()}, false);
} catch(err){
}
//add face event
try{
updated_entry.getElementsByClassName("fav-action")[0].addEventListener("click", function(e){pb_fave(e);e.preventDefault()}, false);
} catch(err){
}
//add destroy event
try{
updated_entry.getElementsByClassName("del")[0].addEventListener("click", function(e){pb_destroy(e);e.preventDefault();e.stopPropagation();}, false);
} catch(err){
}
//update animation
//addClass(updated_entry,"animate");
if(insert_point.id != "timeline"){
// add animation
//var conv_script = document.createElement('script');
//conv_script.innerHTML = "setTimeout(function(){document.getElementById('" + updated_entry.id + "').style.opacity = '1';document.getElementById('" + updated_entry.id + "').style.marginTop = '0px';}," + (i * 200 + 10) + ")";
//updated_entry.style.opacity = "0";
//updated_entry.style.marginTop = "-" + updated_entry.clientHeight + "px";
//updated_entry.style.marginTop = "-52px";
//updated_entry.style.webkitTransition = "opacity 0.35s cubic-bezier(0.4, 0.0, 0.6, 0.4), margin-top 0.2s ease-in";
//updated_entry.style.webkitTransition = "opacity 0.35s cubic-bezier(0.4, 0.0, 0.6, 0.4);";
//updated_entry.appendChild(conv_script);
insert_point.parentNode.insertBefore(updated_entry, insert_point);
// latest status class change.
if(insert_point.className.match(/latest\-status/)){
insert_point.className = insert_point.className.replace(/latest\-status/g,"");
}
//setTimeout(pb_growl(updated_entry), 10);
//only adding page.
} else {
removeClass(updated_entry, "animate");
real_timeline.appendChild(updated_entry);
}
}
else if(insert_point_id == updated_entry_id)
{
updated_entry.parentNode.removeChild(updated_entry);
}
else
{
update_wrapper.parentNode.removeChild(update_wrapper);
break;
}
}
try{
update_wrapper.parentNode.removeChild(update_wrapper);
} catch(err) {
}
}
};
update_req.open('GET', top_status_id, true);
update_req.setRequestHeader("Accept", "application/json, text/javascript, */*");
update_req.setRequestHeader("X-Requested-With", "XMLHttpRequest");
update_req.send(null);
return false;
}
function pb_link_maker(string)
{
var source = string;
var linked_source = source;
if(!arguments[1]){
linked_source = source.replace(/(https*\:\/\/[^\s\*\]\(\)]+)/g, "<a class='pb-link' href='$1' target='_blank'>$1</a>");
linked_source = linked_source.replace(/blank\'\>([^\<]{28})[^\<]+\<\/a/g, "blank'>$1...</a");
linked_source = linked_source.replace(/(\s*)\#([^\s]+)(\s*)/g,"$1<a class='pb-link hashtag' href='" + pb_protocol() + "://twitter.com/search?q=%23$2' target='_blank'>#$2</a>$3");
}
linked_source = linked_source.replace(/\@([0-9a-zA-Z\_\-]+)/g,"@<a class='pb-link sname' href='" + pb_protocol() + "://twitter.com/$1' target='_blank'>$1</a>");
//hashtag link
return linked_source;
}
function pb_snip_retreiver(target)
{
var snipMatch = /^(http\:\/\/tinyurl\.com\/[^\/]+|http\:\/\/bit\.ly\/.+|http\:\/\/is\.gd\/.+|http\:\/\/ff\.im\/\-.+|http\:\/\/twurl\.nl\/.+)/;
var links = target.getElementsByClassName('entry-content')[0].getElementsByTagName('a');
for(var i = 0; i < links.length; i++)
{
if(links[i].href.match(snipMatch))
{
var snip_opener = pb_snip_url.cloneNode(true);
snip_opener.name = links[i].href;
snip_opener.id = guid();
addClass(links[i], 'pb-snip-url');
links[i].appendChild(snip_opener);
links[i].addEventListener("mouseover", function(e){if(hasClass(e.target,'pb-snip-url')){pb_snip_expander(e.target)}}, false);
}
}
return false;
}
function pb_link_remover(target)
{
pb_temp_target = target.cloneNode(true);
try
{ // remove strong tag
pb_temp_target.removeChild(pb_temp_target.getElementsByTagName('strong')[0]);
} catch(err){
//alert(err);
}
var pb_link = pb_temp_target.getElementsByTagName('a');
//var num_pb_link = pb_link.length;
var removed_str = "";
for( var i = 0 ; i < pb_link.length ; i++ )
{
try
{ //possible when real-url is exist.
if( pb_link[i].innerText == '@' )
{ // in order to remove search tab
var atmark_span = document.createElement('span');
atmark_span.innerHTML = '@' ;
pb_link[i].parentNode.insertBefore( atmark_span , pb_link[i].nextSibling );
pb_link[i].parentNode.removeChild( pb_link[i] );
}
if(!(hasClass(pb_link[i],'hashtag') || hasClass(pb_link[i],'sname') || pb_link[i].target != "_blank"))
{
pb_link[i].textContent = pb_link[i].href;
}
} catch(err) {}
}
removed_str = pb_temp_target.textContent;
return removed_str;
}
function pb_snip_expander(target)
{
var url_alias = target.href;
var snip_pattern = /http\:\/\/bit\.ly\/.+|http\:\/\/is\.gd\/.+|http\:\/\/twurl\.nl\/.+|http\:\/\/tinyurl\.com\/.+/;
//var turl_pattern = /http\:\/\/tinyurl\.com\/.+/;
var ffim_pattern = /http\:\/\/ff\.im\/\-.+/;
// if(url_alias.match(turl_pattern))
// { //tinyURL JSONP
// var turl_alias = target.getElementsByTagName('span')[0].name.replace(/http\:\/\/tinyurl\.com\/(.+)/,"$1");
// var id = target.getElementsByTagName('span')[0].id;
// addClass(target.getElementsByTagName('span')[0],'loading');
//
// var turl_loader = document.createElement('script');
// turl_loader.src = "http://pipes.yahoo.com/pipes/pipe.run?_id=c2d2c2381f1613c9998ce59f9e621f43&_render=json&urlinput=" + turl_alias + "&parentid=" + id + "&_callback=pbTurlExp";
// document.getElementsByTagName("head")[0].appendChild(turl_loader);
// }
if(url_alias.match(snip_pattern))
{ //search twitter.com JSONP
var url_alias = url_alias;
var id = target.getElementsByTagName('span')[0].id;
addClass(target.getElementsByTagName('span')[0],'loading');
var turl_loader = document.createElement('script');
turl_loader.src = "http://pipes.yahoo.com/pipes/pipe.run?_id=be222308568f5f81791af459f573e5a8&_render=json&urlinput=" + url_alias + "&parentid=" + id + "&_callback=pbTurlExp";
document.getElementsByTagName("head")[0].appendChild(turl_loader);
}
else if(url_alias.match(ffim_pattern))
{ //ffim JSONP
var url_alias = target.getElementsByTagName('span')[0].name.match(/http\:\/\/ff\.im\/\-(.+)/)[1];
var id = target.getElementsByTagName('span')[0].id;
addClass(target.getElementsByTagName('span')[0],'loading');
var turl_loader = document.createElement('script');
turl_loader.src = "http://pipes.yahoo.com/pipes/pipe.run?_id=c67eb2388cba44aa76667c00ae58aa88&_render=json&urlinput=" + url_alias + "&parentid=" + id + "&_callback=pbTurlExp";
document.getElementsByTagName("head")[0].appendChild(turl_loader);
}
return;
}
// kick animation to fix place
function kick_animation(target)
{
var target = target;
if(target.parentNode.nextSibling)
{
//if(target.parentNode.nextSibling.offsetTop < (window.scrollY - 200))
if((target.parentNode.lastChild.offsetTop < (window.scrollY - 200)))
{
//alert('added upper scope');
var curr_scroll_x = window.scrollX;
var curr_scroll_y = window.scrollY;
window.scrollTo(curr_scroll_x, (curr_scroll_y + target.offsetHeight));
target.style.opacity = "1";
target.style.marginTop = "0px";
}
else if((target.parentNode.lastChild.offsetTop < (window.scrollY + window.innerHeight + 200)) && ((window.scrollY - 100) < target.parentNode.lastChild.offsetTop) )
{
target.style.opacity = "0";
target.style.webkitTransition = "opacity 0.45s cubic-bezier(0.4, 0.0, 0.6, 0.4), margin-top 0.35s ease-out";
var conv_script = document.createElement('script');
conv_script.innerHTML = "setTimeout(function(){document.getElementById('" + target.id + "').style.opacity = '1';document.getElementById('" + target.id + "').style.marginTop = '6px';},200)";
target.appendChild(conv_script);
}
else
{
target.style.opacity = "1";
target.style.marginTop = "6px";
}
}
else
{
//alert('end');
target.style.opacity = "1";
target.style.marginTop = "6px";
}
}
function kick_animation_on_top(e)
{
var target = e.target;
var curr_scroll_x = window.scrollX;
var curr_scroll_y = window.scrollY;
if(target.nextSibling.offsetTop < (window.scrollY - 60))
{ //upper than scope keep scropp position
window.scrollTo(curr_scroll_x, (curr_scroll_y + 52));
target.style.opacity = "1";
target.style.marginTop = "0px";
//removeClass(target, "animate");
pbtweet_main([target]);
}
else
{ // User can see animation
target.style.webkitTransition = "opacity 0.3s ease-in, margin-top 0.2s ease-in";
var conv_script = document.createElement('script');
conv_script.innerHTML = "var target=document.getElementById('" + target.id + "'); setTimeout(function(){target.style.opacity = '1';target.style.marginTop = '0px'},10)";
target.appendChild(conv_script);
setTimeout(function(){target.style.opacity = "1";target.style.webkitTransition = "";target.style.marginTop = "0px";removeClass(target, "animate");pbtweet_main([target]);}, 1500);
}
}
//reply button builder
function pb_extra_set(target)
{
var my_pb_extra = pb_extra.cloneNode(true);
var target_meta = target.getElementsByClassName('meta')[0];
var my_in_reply_to_url = target_meta.getElementsByClassName('entry-date')[0].href;
// var target_insert = target.getElementsByClassName('entry-meta')[0];
var my_reply_to = my_in_reply_to_url.match(/twitter\.com\/([^\/]+)/)[1];
var my_pb_trans = my_pb_extra.getElementsByClassName('pb-trans')[0];
var my_pb_rtwweet = my_pb_extra.getElementsByClassName('pb-rtweet')[0];
var my_pb_via = my_pb_extra.getElementsByClassName('pb-via')[0];
// var my_pb_replyall = my_pb_extra.getElementsByClassName('pb-all')[0];
my_pb_rtwweet.addEventListener("click", function(e){pb_reply(e,my_in_reply_to_url);}, false);
my_pb_via.addEventListener("click", function(e){pb_reply(e,my_in_reply_to_url);}, false);
my_pb_trans.addEventListener("click", function(e){pb_translate(e);e.stopPropagation();e.preventDefault();}, false);
//set parameter
my_pb_rtwweet.setAttribute('name',my_in_reply_to_url);
my_pb_rtwweet.setAttribute('title',"RT @" + my_reply_to + ":");
my_pb_rtwweet.innerHTML = "RT @:";
my_pb_via.setAttribute('name',my_in_reply_to_url);
my_pb_via.setAttribute('title',"via @" + my_reply_to + "");
my_pb_via.innerHTML = "(via @)";
target_meta.appendChild(my_pb_extra);
return false;
}
function pb_appearance_set(target)
{
var content_target = target;
if(arguments[1]){
var style_target = arguments[1];
} else {
var style_target = content_target;
}
var entry_string = content_target.getElementsByClassName('entry-content')[0].textContent;
var mention_regex = new RegExp("@" + session_id);
if(entry_string.match(mention_regex) && (!hasClass(style_target, 'mine'))){
addClass(style_target, "pb-mention");
if(hasClass(style_target.parentNode,"entry-baloon")){
addClass( style_target.parentNode.getElementsByClassName('entry-content-before')[0], "pb-mention");
addClass( style_target , "pb-mention" );
addClass( style_target.parentNode.getElementsByClassName('entry-content-after')[0], "pb-mention");
}
}
return false;
}
function pb_translate(event){
// load_localscript(event);
var toEn_button = event.target;
var target_container = toEn_button.parentNode.parentNode.parentNode.getElementsByClassName('entry-content')[0];
var string_container = target_container.cloneNode(true);
if(string_container.getElementsByClassName('pb-real-url')[0])
{
for(var i = 0; i < string_container.getElementsByClassName('pb-real-url').length; i++)
{
string_container.getElementsByClassName('pb-real-url')[i].textContent = '';
}
}
var original_string = string_container.textContent;
if(!hasClass(target_container.parentNode,'entry-baloon')){
if(target_container.parentNode.getElementsByTagName('strong')[0])
{
var tweeter_name = target_container.parentNode.getElementsByTagName('strong')[0].textContent;
}
else
{
var tweeter_name = "";
}
original_string = tweeter_name + ": " + original_string;
} else {
original_string = original_string.replace(/^([^\s]+)/,"$1: ");
}
var translator_Loader = document.createElement('script');
translator_Loader.src = "http://www.google.com/uds/Gtranslate?callback=gTransExp&context=" + target_container.parentNode.parentNode.id.replace(/\-/g,"__") + "&q=" + encodeURIComponent(original_string) + "&key=notsupplied&v=1.0&nocache=1240207680396&langpair=%7C" + pb_lang;
document.getElementsByTagName("head")[0].appendChild(translator_Loader);
var entry_id = target_container.parentNode.parentNode.id;
var original_container = document.getElementById(entry_id).getElementsByClassName('entry-content')[0];
string_container = null;
var translated_object = original_container.cloneNode(true);
addClass(translated_object,'pb-translated');
addClass(translated_object,'translate-loading');
translated_object.innerHTML = "<img src='http://assets0.twitter.com/images/loader.gif'>";
original_container.parentNode.insertBefore(translated_object, original_container.nextSibling);
toEn_button.parentNode.removeChild(toEn_button);
}
function pb_changelang(event) {
var menu = event.target;
pb_lang = menu.value;
pb_trans.innerHTML = "to " + pb_lang.toUpperCase();
var buttons = document.getElementsByClassName('pb-trans');
set_storage_Value( 'pb_lang' , pb_lang ) ;
for(var i = 0; i < buttons.length; i++)
{
buttons[i].innerHTML = "to " + pb_lang.toUpperCase();
}
}
// reply function
function pb_reply(event)
{
var target = event.target;
var msg_body = "";
var my_in_reply_to_url = "";
var elm = document.getElementById("status");
switch(event.target.className)
{
case "pb-rtweet":
var in_reply_to_url = arguments[1];
var reply_to = in_reply_to_url.match(/twitter\.com\/([^\/]+)\/status/)[1];
var my_in_reply_to_url = in_reply_to_url.match(/\/status\/([0-9]+)$/)[1];
elm.value = "RT @" + reply_to + ": " + pb_link_remover(target.parentNode.parentNode.parentNode.getElementsByClassName('entry-content')[0]);
break;
case "pb-via":
var in_reply_to_url = arguments[1];
var reply_to = in_reply_to_url.match(/twitter\.com\/([^\/]+)\/status/)[1];
var my_in_reply_to_url = in_reply_to_url.match(/\/status\/([0-9]+)$/)[1];
elm.value = pb_link_remover(target.parentNode.parentNode.parentNode.getElementsByClassName('entry-content')[0]) + " (via @" + reply_to + ")";
break;
case "pb-all":
var in_reply_to_url = arguments[1];
var reply_to = in_reply_to_url.match(/twitter\.com\/([^\/]+)\/status/)[1];
var my_in_reply_to_url = in_reply_to_url.match(/\/status\/([0-9]+)$/)[1];
var id_remover = new RegExp("\@" + reply_to + "\ ");
elm.value = elm.value.replace(id_remover,"");
elm.value = "@" + reply_to + " " + elm.value;
break;
default:
var in_reply_to_url = target.name;
var reply_to = in_reply_to_url.match(/in\_reply\_to\=(.+)$/)[1];
var my_in_reply_to_url = in_reply_to_url.match(/status\_id\=([0-9]+)\&/)[1];
var id_remover = new RegExp("\@" + reply_to + "\ ");
elm.value = elm.value.replace(id_remover,"");
elm.value = "@" + reply_to + " " + elm.value;
}
document.getElementById("in_reply_to_status_id").value = my_in_reply_to_url;
document.getElementById("in_reply_to").value = reply_to;
elm.focus();
if(event.target.className != "pb-rtweet"){
elm.setSelectionRange(elm.value.length, elm.value.length);
} else {
}
return(false);
}
// pb favorite function
function pb_fave(event)
{
var target = event.target;
var target_id = target.id.match(/status\_star\_([0-9]+)/)[1];
var fave_req = new XMLHttpRequest();
var post_path = "create";
if(hasClass(target,"fav")){
post_path = "destroy";
removeClass(target,"fav");
} else if(hasClass(target,"non-fav")){
post_path = "create";
removeClass(target,"non-fav");
}
fave_req.onreadystatechange = function(){
if(fave_req.readyState == 4 && fave_req.status == 200){
removeClass(target,"fav-throb");
if(post_path == "create"){
addClass(target,"fav");
} else if(post_path == "destroy"){
removeClass(target,"non-fav");
}
}
}
fave_req.open('POST', "/favorites/" + post_path + "/" + target_id , true);
fave_req.setRequestHeader("Accept", "*/*");
fave_req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
fave_req.setRequestHeader("X-Requested-With", "XMLHttpRequest");
fave_req.send("authenticity_token=" + twttr.form_authenticity_token);
addClass(target,"fav-throb");
return(false);
}
function pb_destroy(event)
{
if(confirm("Sure you want to delete this update? There is NO undo")){
var target = event.target;
var target_id = target.parentNode.childNodes[0].id.match(/status\_star\_([0-9]+)/)[1];
var fave_req = new XMLHttpRequest();
var post_path = "destroy";
fave_req.onreadystatechange = function(){
if(fave_req.status == 200){
remove_redundand('status_' + target_id);
}
}
fave_req.open('POST', "/status/" + post_path + "/" + target_id , true);
fave_req.setRequestHeader("Accept", "application/json, text/javascript, */*");
fave_req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
fave_req.setRequestHeader("X-Requested-With", "XMLHttpRequest");
// fave_req.send("authenticity_token=" + document.getElementById("authenticity_token").value);
fave_req.send("authenticity_token=" + twttr.form_authenticity_token);
addClass(target,"fav-throb");
}//
return(false);
}
// for Growl on Fluid.app
function pb_growl(updated_entry)
{
if(window.fluid){
if(updated_entry.getElementsByClassName("screen-name")[0])
{
var author = updated_entry.getElementsByClassName("screen-name")[0].title;
var avatar = updated_entry.getElementsByClassName("photo")[0].src;
} else {
var author = document.getElementById('profile').getElementsByClassName("fn")[0].innerText;
var avatar = document.getElementById('profile-image').src;
}
var tweet = updated_entry.getElementsByClassName("entry-content")[0].innerText;
window.fluid.showGrowlNotification({
title: author,
description: tweet,
identifier: updated_entry.id,
icon: avatar,
onclick: function(){ window.fluid.activate() ;},
});
}
}
function pb_group_tab()
{ //create group
var pb_hr = document.createElement('hr');
var pb_group_wrapper = document.createElement('div');
pb_group_wrapper.id = 'pb-group';
pb_group_wrapper.className = 'collapsible';
var pb_group_title = document.createElement('h2');
pb_group_title.className = 'sidebar-title';
pb_group_title.innerHTML = '<span>Groups</span>';
var pb_group_list = document.createElement('ul');
pb_group_list.className = 'sidebar-menu';
var pb_group_add_button = document.createElement('a');
pb_group_add_button.className = 'xref';
pb_group_add_button.innerHTML = 'add';
pb_group_list.appendChild( pb_group_add_button );
pb_group_title.appendChild( pb_group_add_button );
pb_group_wrapper.appendChild(pb_group_title);
pb_group_wrapper.appendChild(pb_group_list);
pb_group_wrapper.appendChild( pb_hr );
pb_group_add_button.addEventListener('click', function(e){pb_add_group(e.target.parentNode);e.stopPropagation;e.preventDefault()}, false);
document.getElementById('side').insertBefore( pb_group_wrapper, document.getElementById('rssfeed'));
document.getElementById( 'following' ).appendChild( pb_hr );
}
function pb_grouping(group)
{ //
if(pb_active_group != group || arguments[1] == 'keep')
{
removeClass(pb_active_group, 'pbActiveGroup');
pb_active_group = group;
var elements = document.getElementById('timeline').getElementsByClassName('hentry');
var group_list = group.getElementsByClassName('vcard');
var isInGroup = new RegExp(group.inGroup);
//alert(isInGroup);
for(var i = 0; i < elements.length; i++)
{
var target_u_name = elements[i].className.match(/u-([a-zA-Z0-9\_\-]+)/)[1];
if(target_u_name.match(isInGroup))
{
removeClass(elements[i], 'pbHiddenGroup');
}
else
{
hide_group(elements[i].id, '', i * 200);
}
}
addClass(group, 'pbActiveGroup');
}
else
{
setTimeout(function(){pb_remove_grouping()}, 100);
}
}
function pb_in_group_regexp(group)
{
var regrep_string = '';
var group_list = group.getElementsByClassName('vcard');
for(var j = 0; j < group_list.length; j++)
{
var g_name = group_list[j].getElementsByClassName('url')[0].href.replace(/.+twitter.com\/(.+)/, '$1');
regrep_string = regrep_string + '|^' + g_name + '$';
}
var return_regExp = new RegExp(regrep_string.replace(/^\|/, ''));
return return_regExp;
}
function pb_is_in_group(target)
{
var is_in_group = true;
if(pb_active_group != null)
{
is_in_group = false;
var target_u_name = target.className.match(/u\-([a-zA-Z0-9\_\-]+)/)[1];
var group_list = pb_active_group.getElementsByClassName('vcard');
for(var j = 0; j < group_list.length; j++)
{
var g_name = group_list[j].getElementsByClassName('url')[0].href.replace(/.+twitter.com\/(.+)/, '$1');
//window.console.log = window.console.log + target_u_name + '>>' + j + ': '+ g_name +'\n';
if(target_u_name == g_name)
{
is_in_group = true;
break;
}
}
}
return(is_in_group);
}
function pb_remove_grouping()
{
var group = pb_active_group;
removeClass(group, 'pbActiveGroup');
var elements = document.getElementById('timeline').getElementsByClassName('hentry');
for(var i = 0; i < elements.length; i++)
{
var target_id = elements[i].id;
setTimeout(pb_removing_timer(target_id), i*100);
}
pb_active_group = null;
}
function pb_removing_timer( target_id )
{
var target = document.getElementById(target_id);
removeClass(target, 'pbHiddenGroup');
}
function pb_add_group(wrapper)
{
var insert_point = wrapper;
var pb_group = document.createElement('li');
pb_group.className = 'link-title' ;
var pb_group_button = document.createElement('a');
pb_group_button.href = '#';
pb_group_button.innerHTML = '<span>Group</span>';
var pb_add_member_to_group_button = document.createElement('span');
pb_add_member_to_group_button.innerHTML = '+';
pb_add_member_to_group_button.className = 'pb-group-action';
pb_group_button.getElementsByTagName('span')[0].appendChild(pb_add_member_to_group_button);
pb_group_button.addEventListener('click', function(e){pb_grouping(pb_group);e.stopPropagation();e.preventDefault()}, false);
pb_add_member_to_group_button.addEventListener('click', function(e){pb_add_member_to_group_panel(pb_group);e.preventDefault();e.stopPropagation()}, true);
pb_group.appendChild(pb_group_button);
insert_point.parentNode.getElementsByClassName('sidebar-menu')[0].appendChild(pb_group);
return pb_group;
}
function pb_add_member_to_group(target)
{
var target = target;
if(arguments[1] != '')
{
var u_name_list = arguments[1].split(/[^0-9a-zA-Z\-\_]+/);
for( var i = 0 ; i < u_name_list.length ; i++ )
{
setTimeout( target.appendChild( vcard_builder( u_name_list[i] ) ) , 100 );
}
target.inGroup = pb_in_group_regexp(target);
pb_grouping(target,'keep');
}
pb_add_member_panel_close(target.getElementsByClassName('pb-add-group')[0]);
}
function pb_add_member_to_group_panel(target_group)
{
var input_field_wrapper = document.createElement('div');
input_field_wrapper.className = 'pb-add-group';
var input_field = document.createElement('input');
input_field.className = 'uname';
var add_button = document.createElement('input');
add_button.type = 'button';
add_button.value = 'Add';
var cancel_button = document.createElement('input');
cancel_button.type = 'button';
cancel_button.value = 'Cancel';
input_field_wrapper.appendChild(input_field);
input_field_wrapper.appendChild(cancel_button);
input_field_wrapper.appendChild(add_button);
add_button.addEventListener('click', function(e){pb_add_member_to_group(target_group, input_field.value);e.stopPropagation()}, false);
cancel_button.addEventListener('click', function(e){pb_add_member_panel_close(input_field_wrapper);e.stopPropagation()}, false);
target_group.appendChild(input_field_wrapper);
}
function pb_add_member_panel_close(target)
{
var target = target;
target.parentNode.removeChild(target);
}
function vcard_builder(uname)
{ // current, text vcard
var userinfo = fetch_user_info(uname);
if(userinfo)
{
var vcard = document.createElement('span');
vcard.className = 'vcard';
var vcard_url = document.createElement('a');
vcard_url.className = 'url';
vcard_url.rel = 'contact';
vcard_url.target = '_blank';
vcard_url.href = '/' + uname;
var vcard_avater = document.createElement('img');
vcard_avater.src = userinfo.profile_image_url;
vcard_avater.className = 'photo fn';
vcard_avater.width = '24';
vcard_avater.height = '24';
vcard_url.appendChild(vcard_avater);
vcard.appendChild(vcard_url);
//target.appendChild(vcard);
return(vcard);
}
else
{
return(null);
}
}
function vcard_append( userinfo , target )
{
}
function fetch_user_info(uname){
var request = new XMLHttpRequest();
var url = '/users/' + uname +'.json';
request.open('GET', url, false);
request.setRequestHeader("Accept", "application/json, text/javascript, */*");
request.send(null);
var conv_object = eval('(' + request.responseText + ')');
return(conv_object);
}
function pb_info_panel()
{ //create information panel
var pb_nav = document.createElement('li');
pb_nav.id = 'pb_info';
pb_nav.innerHTML = '<a href="">pbtweet</a>';
var lang_menu = '<select name="tl" id="pb_translation_target"><option value="sq">Albanian</option><option value="ar">Arabic</option><option value="bg">Bulgarian</option><option value="ca">Catalan</option><option value="zh-CN">中文 (簡体)</option><option value="zh-TW">中文 (繁体)</option><option value="hr">Croatian</option><option value="cs">Czech</option><option value="da">Danish</option><option value="nl">Dutch</option><option selected="" value="en">English</option><option value="et">Estonian</option><option value="fa">Persian</option><option value="tl">Filipino</option><option value="fi">Finnish</option><option value="fr">French</option><option value="gl">Galician</option><option value="de">German</option><option value="el">Greek</option><option value="iw">Hebrew</option><option value="hi">Hindi</option><option value="hu">Hungarian</option><option value="id">Indonesian</option><option value="it">Italian</option><option value="ja">Japanese</option><option value="ko">Korean</option><option value="lv">Latvian</option><option value="lt">Lithuanian</option><option value="mt">Maltese</option><option value="no">Norwegian</option><option value="pl">Polish</option><option value="pt">Portuguese</option><option value="ro">Romanian</option><option value="ru">Russian</option><option value="sr">Serbian</option><option value="sk">Slovak</option><option value="sl">Slovenian</option><option value="es">Spanish</option><option value="sv">Swedish</option><option value="th">Thai</option><option value="tr">Turkish</option><option value="uk">Ukrainian</option><option value="vi">Vietnamese</option></select>'
var chonv_count_menu = '<select name="conv_count"><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="999">infinite</option></select>';
var accesskey_enablity = '<input id="pbaccess" name="pbaccess" type="checkbox"><label for="pbaccess">enable accesskey</label>';
accesskey_enablity = '';
var pb_panel = document.createElement('div');
pb_panel.id = 'pb_panel';
pb_panel.innerHTML = 'version: ' + pb_version + '<br><form>translate to: '+ lang_menu + '<br>max conversation: ' + chonv_count_menu + '<br>' + accesskey_enablity + '</form><br><a href="http://web.me.com/t_trace/pbtweet/pbtweet_stable_FF.user.js" target="_blank">update to latest version</a><br><img src="http://search.twitter.com/images/powered-by-twitter-sig.gif?1220915084"><br>Powerd by Yahoo! Pipes<br>Powerd by Google<br><input type="button" value="close">';
pb_panel.style.display = 'none';
pb_nav.appendChild(pb_panel);
pb_nav.addEventListener('click', function(e){show_close_panel(e.target, pb_panel);e.preventDefault();},false);
pb_nav.getElementsByTagName('a')[1].addEventListener('click', function(e){e.stopPropagation();},false);
pb_nav.getElementsByTagName('select')[0].addEventListener('change', function(e){pb_changelang(e);},true);
pb_nav.getElementsByTagName('select')[1].addEventListener('change', function(e){chain_count = e.target.value; set_storage_Value( 'pb_chain_count' , chain_count ) ; } , true );
// pb_panel.getElementsByTagName('input')[0].addEventListener('click', function(e){pb_panel.style.display = 'none';e.preventDefault();e.stopPropagation()},true);
menu_init(pb_nav.getElementsByTagName('select')[0] , pb_lang );
menu_init(pb_nav.getElementsByTagName('select')[1] , chain_count );
document.getElementById('header').getElementsByTagName('ul')[0].insertBefore(pb_nav, document.getElementById('header').getElementsByTagName('li')[5]);
// document.getElementById('navigation').getElementsByTagName('ul')[0].insertBefore(pb_nav, document.getElementById('navigation').getElementsByTagName('ul')[0].getElementsByClassName('last')[0]);
}
function show_close_panel(obj, pb_panel){
if(obj.type == 'button')
{
pb_panel.style.display = 'none';
} else {
pb_panel.style.display = 'block';
}
}
function menu_init(target, value)
{
var option_list = target.getElementsByTagName('option');
for( var i = 0 ; i < option_list.length ; i++ )
{
if(option_list[i].value == value)
{
option_list[i].selected = true;
break;
}
}
}
function remove_accesskey(){
if(!enable_accesskey){
var target_list = document.getElementById('primary_nav').getElementsByTagName('a');
for(var i = 0; i < target_list.length ; i++ )
{
target_list[i].accessKey = "";
}
}
}
//Client side storage handler
function restore_pb_values()
{
chain_count = get_storage_Value('pb_chain_count') ? get_storage_Value('pb_chain_count') : 4;
pb_lang = get_storage_Value('pb_lang') ? get_storage_Value('pb_lang') : navigator.language.substr(0,2);
enable_accesskey = get_storage_Value('pb_enable_accesskey') ? get_storage_Value('pb_enable_accesskey') : false;
// if ( !is_localstorage() )
// { // for legacy cookie
// //alert('local and session storage not supported by this browser.');
// pb_lang = navigator.language.substr(0,2);
// chain_count = 4;
// }
// else
// { // for localstorage browsers
// chain_count = localStorage.getItem('pb_chain_count') ? localStorage.getItem('pb_chain_count') : 4;
// pb_lang = localStorage.getItem('pb_lang') ? localStorage.getItem('pb_lang') : navigator.language.substr(0,2);
// }
// Save changes if the user leaves the page.
window.onclose = function(){save_storage_Changes()};
}
function clearAll()
{
localStorage.clear();
restore_pb_values();
}
function set_storage_Value(key, value)
{
if ( is_localstorage() )
{
localStorage.setItem( key, value );
//sessionStorage.setItem(value, document.getElementById(value).value);
}
else
{
document.cookie = key + "=" + value + "; expires = Thu, 1-Jan-2030 00:00:00 GMT;" ;
}
}
function get_storage_Value(key)
{
if ( is_localstorage() )
{
return( localStorage.getItem(key) );
}
else
{
var cookies = document.cookie.split("; ");
for ( var i = 0 ; i < cookies.length ; i++ )
{
var str = cookies[i].split("=");
if ( str[0] == key ) {
return( unescape( str[1] ) );
break ;
}
}
}
}
function save_storage_Changes()
{
set_storage_Value('pb_chain_count', chain_count);
set_storage_Value('pb_lang', pb_lang);
return;
}
function clearValue(value)
{
if (value == 'myfield1')
{
sessionStorage.removeItem(value);
}
else
{
localStorage.removeItem(value);
}
document.getElementById(value).value = '';
}
function is_localstorage(){
if (typeof(sessionStorage) == 'undefined' || sessionStorage == null || typeof(localStorage) == 'undefined' || localStorage == null)
{
return(false);
}
else
{
return(false);
}
}
function load_localscript(event)
{
if(!pb_accept_local_functions)
{
var global_functions = document.createElement('script');
global_functions.src = "http://web.me.com/t_trace/pbtweet/pbtweet_global_dev.js";
document.getElementsByTagName("head")[0].appendChild(global_functions);
pb_accept_local_functions = true;
pb_translate(event);
}
}
function pb_css_set()
{
var insert_HTML = '';
var get_url = '';
GM_addStyle(<><![CDATA[s
div.conv_chain {clear:both; text-align:left;margin: 0px 5px 10px 0px; padding:0px 0px 0px 0px;}
div.conv_chain div.thumb{width: 34px !important; height: 34px !important; position:relative !important;max-width:100px;}
div.conv_chain div.thumb img{vertical-align:top; margin-right:4px !important;width:60px !important;max-width:60px !important;height:32px !important;}
div.conv_chain span.icons{display:inline-block;margin-left:10px;text-align:center;padding:0px 0px 10px 0px;width:50px !important;max-width:50px !important;}
div.conv_chain span.icons img{max-width:40px;max-height:40px;}
div.conv_chain span.icons a:hover {text-underline: none;}
div.conv_chain span.entry-content, body#show #content div.conv_chain span.entry-content{display:block;width:400px;max-width:400px;min-height:24px;margin:0px 0px 0px 0px;padding:0px 12px 0px 16px;vertical-align:top;background-image:url(http://web.me.com/t_trace/pbtweet/images/baloon_02.png); background-repeat:repeat-y;}
div.conv_chain span.entry-content-before{display:block;width:400px;max-width:400px; height:12px;margin:0px 0px 0px 0px;padding:0px 6px 0px 16px;vertical-align:top;background-image:url(http://web.me.com/t_trace/pbtweet/images/baloon_01.png); background-repeat:no-repeat;}
div.conv_chain span.entry-content-after {display:block;width:400px;max-width:400px; height:25px;margin:0px 0px -10px 0px;padding:0px 6px 0px 16px;vertical-align:top;background-image:url(http://web.me.com/t_trace/pbtweet/images/baloon_03.png); background-repeat:no-repeat; background-position:0px -4px;}
ol.statuses div.conv_chain span.meta.entry-meta {clear:right; display:block;padding-left:24px; height:14px; margin-top:4px}
.hentry img.twitpic_thumb {display:block;position:absolute;left:500px;top:0px;z-index:100;width:100px;heigt100px;border:7px solid white;-moz-box-shadow:0px 3px 5px rgba(0, 0, 0, 0.7);-moz-transform:scale(0.4) rotate(17deg); -moz-transform-origin:50% 0%;-moz-transition:-moz-transform 0.15s ease-in;}
.hentry img.twitpic_thumb:hover {z-index:101;-moz-transform:scale(1) rotate(0deg);}
div.conv_chain img.twitpic_thumb {position:absolute;left:435px; top:inherit;margin-top:-35px;-moz-transform-origin:50% 0%;-moz-transform:scale(0.3) rotate(17deg);}
div.conv_chain img.twitpic_thumb:hover {-moz-transform-origin:50% 0%;-moz-transform:scale(1) rotate(0deg);}
img.twitpic_thumb {display:block;position:absolute;z-index:900;width:100px;heigt100px;border:7px solid white;-moz-box-shadow:0px 3px 5px rgba(0, 0, 0, 0.7);-moz-transform:translate(490px, -30px) scale(0.4) rotate(17deg); -moz-transform-origin:50% 0%;-moz-transition:-moz-transform 0.15s ease-in;}
img.twitpic_thumb:hover {-moz-transform: translate(490px, -30px) scale(1) rotate(0deg);}
ol.statuses div.conv_chain .actions {display:inline; visibility: hidden;padding-top:4px ; float:right; width:14px;line-height:0.8em; position:inherit;margin-right:10px;}
ol.statuses div.conv_chain:hover .actions {visibility: visible;}
ol.statuses div.conv_chain .actions .pb-reply {padding:4px 6px; background-image: url(http://static.twitter.com/images/icon_reply.gif);}
ol.statuses div.conv_chain .actions .pb-fav-action {padding:4px 6px;}
ol.statuses span.pb-extra span {display:inline-block;box-sizing: content-box; height: 14px; font-size: 10px ;cursor:pointer; margin:0px 3px 5px 3px;padding:1px 6px;border:1px solid #cccccc; -moz-border-radius: 4px;background:#eee;}
ol.statuses li.status span.pb-extra, ol.statuses li.status:hover div.conv_chain span.pb-extra {opacity: 0;}
ol.statuses li.status:hover span.pb-extra, ol.statuses li.status div.conv_chain:hover span.pb-extra {opacity: 1;}
ol.statuses span.pb-extra span:hover {-moz-box-shadow:0px 2px 3px rgba(0, 0, 0, 0.5);color:#444;background-color:#fff;}
ol.statuses span.pb-extra {display:block;color:#ccc;position:absolute;width:165px;height:12px;margin-left:250px;margin-top:-16px; text-align:right; font-style:normal; font-family:sans-serif;}
ol.statuses span.meta.entry-meta {margin-top:5px;}
ol.statuses li {opacity: 1}
#pb_info {display: inherit !important;}
#pb_panel {position: absolute; display: none; left: -130px; padding:4px;background:white; z-index: 9999;}
#pb_panel * {display: inherit;}
//coloring for mine or pb-mention //
ol.statuses li.pb-mention {background-color:rgb(96%,100%,100%);}
ol.statuses li.pb-mention:hover {background-color:rgb(88%,95%,99%);}
ol.statuses li.mine {background-color:#ffffcc;}
ol.statuses li.mine:hover {background-color:rgb(91%,100%,93%);}
div.conv_chain span.entry-content.mine {background-image:url(http://web.me.com/t_trace/pbtweet/images/baloon_mine_02.png)}
div.conv_chain span.entry-content.pb-mention{background-image:url(http://web.me.com/t_trace/pbtweet/images/baloon_mention_02.png)}
div.conv_chain span.entry-content-before.mine { height:12px;background-image:url(http://web.me.com/t_trace/pbtweet/images/baloon_mine_01.png)}
div.conv_chain span.entry-content-before.pb-mention{ height:12px;background-image:url(http://web.me.com/t_trace/pbtweet/images/baloon_mention_01.png)}
div.conv_chain span.entry-content-after.mine { height:25px;background-image:url(http://web.me.com/t_trace/pbtweet/images/baloon_mine_03.png)}
div.conv_chain span.entry-content-after.pb-mention{ height:25px;background-image:url(http://web.me.com/t_trace/pbtweet/images/baloon_mention_03.png)}
//debug-css//
.pb-debug-insert {background-color:red !important;}
div#footer {position:fixed; bottom:-20px; z-index:900; text-align:center; margin:0px auto 0px 140px;-moz-box-shadow:0px 3px 5px rgba(0, 0, 0, 0.75);-moz-transition:bottom 0.2s ease-in;}
div.conv_chain span.entry-baloon {display:inline-block;width:422px;max-width:422px;vertical-align:bottom;margin:0px 0px 0px 0px;}
ol#timeline {padding-left:0px !important;}
#profile ol.statuses li.status span.pb-extra span.pb-rtweet, #profile ol.statuses li.status span.pb-extra span.pb-via {display:none;}
div#footer:hover {bottom: 0px;}
// for snip url
a.pb-snip-url {display:inline-block;margin:-3px -4px; padding: 1px 4px; border:1px solid transparent; text-decoration:none; -moz-border-top-left-radius: 5px 5px;-moz-border-top-right-radius: 5px 5px;}
a.pb-snip-url:hover {display:inline-block; border:1px solid #999; background-color: #ccc; text-decoration:none; background:-moz-gradient(linear, left top, left bottom, from(#fff), to(#eee), color-stop(0.1, #fff));}
a.pb-snip-url span {display:block; opacity: 0; position:absolute ;min-width:250px;max-width:400px; min-height: 16px;margin:0px 0px 0px -5px;padding: 5px 5px; background-color: white; text-decoration:underline; -moz-box-shadow: 0px 4px 4px rgba(0%, 0%, 0%, 0.4);-moz-transform:scale(0, 0);-moz-transform-origin:0% 0%;}
a.pb-snip-url:hover span {opacity: 1; position:absolute ; z-index: 950;border:1px solid #999; background-color: white; text-decoration:underline;-moz-transform:scale(1, 1);}
a.pb-snip-url:hover span.loading {background-image:url(http://assets0.twitter.com/images/loader.gif)}
ol.statuses span.status-body {overflow: inherit !important;}
.status-body > .pb-translated {display:block; border-top:1px dotted silver; color:#555; margin-top: 4px; padding-top:4px;}
.entry-baloon > .pb-translated {border:none; color:#555; padding-top: 4px;}
.translate-loading {text-align:center;}
ol.statuses div.conv_chain .pb-extra {width:180px; margin-left:216px;}
ol.statuses span.pb-extra .pb-trans {margin-right: 4px; height:14px;-moz-border-radius:6px 6px;}
ol.statuses span.pb-extra .pb-trans:hover {color: #444; border:1px solid white; background-color:rgb(99%,92%,39%); background: -moz-gradient(linear, left top, left bottom, from(#fff), to(rgb(88%,75%,19%)), color-stop(0.1, rgb(97%,94%,38%)));}
#profile ol.statuses li.status .status-body > .entry-meta {margin-left:63px;}
body#profile ol.statuses .latest-status .conv_chain .entry-baloon .entry-content {font-size: 1em;}]]></>);
}
})();
unsafeWindow.place_picture = function(id,pic_thumb_src,snip_code){
if(pic_thumb_src.match(/^http:\/\/s3\.amazonaws.com.+photo\-feed\.jpg$/))
{
var pic_thumb = document.createElement('img');
var pic_thumb_link = document.createElement('a');
pic_thumb_link.setAttribute("href", "http://bkite.com/" + snip_code);
pic_thumb_link.setAttribute("target", "_blank");
var pic_thumb_id = unsafeWindow.guidG();
pic_thumb_link.setAttribute("id",pic_thumb_id);
pic_thumb.setAttribute("class","twitpic_thumb");
pic_thumb.setAttribute("src", pic_thumb_src);
pic_thumb_link.appendChild(pic_thumb);
document.getElementById(id).appendChild(pic_thumb_link);
} else {
var pic_thumb = document.createElement('img');
var pic_thumb_link = document.createElement('a');
pic_thumb_link.setAttribute("href", snip_code);
pic_thumb_link.setAttribute("target", "_blank");
var pic_thumb_id = unsafeWindow.guidG();
pic_thumb_link.setAttribute("id",pic_thumb_id);
pic_thumb.setAttribute("class","twitpic_thumb");
pic_thumb.setAttribute("src", pic_thumb_src);
pic_thumb_link.appendChild(pic_thumb);
document.getElementById(id).appendChild(pic_thumb_link);
}
}
unsafeWindow.expand_url = function(real_url, id){
if(real_url.match(/^http*\:\/\/.+/))
{
var target = document.getElementById(id);
target.removeEventListener("mouseover", function(e){if(e.target.tagName == 'A'){pb_snip_expander(e.target)}},"false");
document.getElementById(id).textContent = real_url;
var real_url_link = document.createElement('a');
real_url_link.href = real_url.replace(/\, /g , ',');
real_url_link.textContent = real_url.replace(/\, /g , ',');
real_url_link.target = '_blank';
target.textContent = '';
target.appendChild(real_url_link);
unsafeWindow.addClassG(real_url_link, 'pb-real-url');
unsafeWindow.removeClassG(target,'loading');
}
else
{
var target = document.getElementById(id);
target.removeEventListener("mouseover", function(e){if(e.target.tagName == 'A'){pb_snip_expander(e.target)}},"false");
document.getElementById(id).textContent = 'can\'t read real url';
unsafeWindow.removeClassG(target,'loading');
}
}
unsafeWindow.gTransExp = function(){
var target_id = arguments[0].replace(/__/g,'-');
if(arguments[3] != null)
{ //error
var target_object = document.getElementById(target_id).getElementsByClassName('entry-content')[0];
var translated_object = document.getElementById(target_id).getElementsByClassName('pb-translated')[0];
translated_object.innerHTML = "" + arguments[3];
unsafeWindow.removeClassG(translated_object,'translate-loading');
} else {
var context = arguments[1].translatedText;
var org_lang = arguments[1].detectedSourceLanguage;
if(org_lang == pb_lang)
{ //same
var target_object = document.getElementById(target_id).getElementsByClassName('entry-content')[0];
var translated_object = document.getElementById(target_id).getElementsByClassName('pb-translated')[0];
target_object.parentNode.removeChild(translated_object);
}
else
{ // normal
var target_object = document.getElementById(target_id).getElementsByClassName('entry-content')[0];
var translated_object = document.getElementById(target_id).getElementsByClassName('pb-translated')[0];
translated_object.innerHTML = "" + context + " -- from :" + org_lang;
unsafeWindow.removeClassG(translated_object,'translate-loading');
}
}
}
unsafeWindow.S4G = function() {
return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
}
unsafeWindow.guidG = function() {
return (unsafeWindow.S4G()+unsafeWindow.S4G()+"-"+unsafeWindow.S4G()+"-"+unsafeWindow.S4G()+"-"+unsafeWindow.S4G()+"-"+unsafeWindow.S4G()+unsafeWindow.S4G()+unsafeWindow.S4G());
}
unsafeWindow.hasClassG = function(ele,cls) {
try{
return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
} catch(err) {
return false;
}
}
unsafeWindow.addClassG = function(ele,cls) {
if (!unsafeWindow.hasClassG(ele,cls)) ele.className += " "+cls;
}
unsafeWindow.removeClassG = function(ele,cls) {
if (unsafeWindow.hasClassG(ele,cls)) {
var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
ele.className=ele.className.replace(reg,'');
}
}
// in order to detect if outer script is loaded
//pb_accept_local_functions = false;