var LittleTritone = function(d, set) {
var $ = function(id) {
return document.getElementById(id);
};
if (!set.scname) {
return;
};
var jumpURL = 'http://twitter.com/' + set.scname;
var baseURL = 'http://api.twitter.com/1/statuses/user_timeline/' + set.scname + '.json';
var contID = set.contID || 'LittleTritoneDisplayPane';
var clLabelImage = set.clLabelImage || 'http://lab.f-sp.net/_api/lt/pts/w/label.gif';
var clLabelWidth = set.clLabelWidth || 11;
var clLabelMargin = set.clLabelMargin || 5;
var clBorderColor = set.clBorderColor || '#888888';
var clBGColor = set.clBGColor || '#ffffff';
var hdFontSize = set.hdFontSize || 10;
var hdMargin = set.htMargin || 5;
var hdLinkColor = set.hdLinkColor || '#f46912';
var hdCreatedTimeColor = set.hdCreatedTimeColor || '#ada39d';
var tlUpButton = set.tlUpButton || 'http://lab.f-sp.net/_api/lt/pts/w/green_bu.gif';
var tlDownButton = set.tlDownButton || 'http://lab.f-sp.net/_api/lt/pts/w/green_bd.gif';
var tlButtonSize = set.tlButtonSize || 10;
var tlMargin = set.tlMargin || 5;
var tlIconWidth = set.tlIconWidth || 42;
var tlIconHeight = set.tlIconHeight || 42;
var tlBGColor = set.tlBGColor || '#f4eae5';
var tlFontSize = set.tlFontSize || 10;
var tlFontColor = set.tlFontColor || '#000000';
var tlLinkColor = set.tlLinkColor;
var ftTextColor = set.ftTextColor || '#c1c1c1';
var maxURLLength = set.maxURLLength || 20;
var updateInterval = set.updateInterval || 120000;
var scname = set.scname;
var script_id;
var current_stream = [];
var current_itemID = 0;
var currenttime;
var timerID;
var loaded = false;
var username;
var usericon;
var create_time;
var canvas;
var btUp;
var btDown;
if (updateInterval < 60000) {
updateInterval = 60000;
};
var showTL = function(){
var url = get_jsonp_url('show');
if (!url) {
return;
};
JSONP.get(url);
};
var updateTL = function(){
var url = get_jsonp_url('update');
if (!url) {
return;
};
JSONP.get(url);
};
var get_jsonp_url = function(cbname){
if (!cbname) {
return baseURL;
};
return baseURL + '?exclude_replies=true&count=20&callback=JSONP.' + cbname;
};
var internal_show_timeline = function(json){
var table = d.createElement('table');
table.border = '0';
with(table.style) {
borderCollapse = 'collapse';
width = '100%';
border = clBorderColor + ' 1px solid';
backgroundColor = clBGColor;
};
$(contID).appendChild(table);
var tbody = d.createElement('tbody');
table.appendChild(tbody);
var tr1 = d.createElement('tr');
tr1.style.textAlign = 'left';
tr1.style.verticalAlign = 'top';
tbody.appendChild(tr1);
var th = d.createElement('th');
th.rowSpan = '2';
with(th.style) {
width = clLabelWidth + clLabelMargin * 2 + 'px';
borderRight = clBorderColor + ' 1px dotted';
};
th.innerHTML = "";
tr1.appendChild(th);
username = d.createElement('div');
with(username.style) {
fontSize = hdFontSize + 'px';
lineHeight = hdFontSize + 'px';
paddingLeft = hdMargin + 'px';
paddingTop = hdMargin + 'px';
fontWeight = 'bold';
};
var td1l = d.createElement('td');
td1l.appendChild(username);
tr1.appendChild(td1l);
create_time = d.createElement('div');
with(create_time.style) {
fontSize = hdFontSize + 'px';
lineHeight = hdFontSize + 'px';
paddingRight = tlButtonSize + tlMargin * 2 + 'px';
paddingTop = hdMargin + 'px';
color = hdCreatedTimeColor;
fontWeight = 'bold';
};
var td1r = d.createElement('td');
td1r.style.textAlign = 'right';
td1r.appendChild(create_time);
tr1.appendChild(td1r);
var logo = d.createElement('img');
logo.src = "http://lab.f-sp.net/_api/lt/pts/footlabel_h.gif";
logo.style.border = 'none';
var anc = d.createElement('a');
anc.setAttribute('href', 'http://lab.f-sp.net/');
anc.setAttribute('target', '_blank');
anc.appendChild(logo);
var td1f = d.createElement('td');
td1f.rowSpan = 2;
with(td1f.style) {
width = '13px';
verticalAlign = 'middle';
backgroundColor = '#888888';
};
td1f.appendChild(anc);
tr1.appendChild(td1f);
var tr2 = d.createElement('tr');
tr2.style.verticalAlign = 'top';
tbody.appendChild(tr2);
var td2 = d.createElement('td');
td2.colSpan = '2';
tr2.appendChild(td2);
var table2 = d.createElement('table');
table2.border = '0';
table2.style.borderCollapse = 'separate';
table2.cellPadding = '0';
table2.cellSpacing = tlMargin;
table2.style.width = '100%';
td2.appendChild(table2);
var tbody2 = d.createElement('tbody');
table2.appendChild(tbody2);
var t2tr1 = d.createElement('tr');
with(t2tr1.style) {
textAlign = 'left';
verticalAlign = 'top';
};
tbody2.appendChild(t2tr1);
usericon = d.createElement('div');
var t2td1l = d.createElement('td');
t2td1l.rowSpan = 2;
t2td1l.style.width = tlIconWidth + 'px';
t2td1l.appendChild(usericon);
t2tr1.appendChild(t2td1l);
var canvcont = d.createElement('div');
with(canvcont.style) {
width = '100%';
height = Math.round(tlFontSize * 1.5) * 3 + tlMargin * 2 + 'px';
overflow = 'auto';
};
canvas = d.createElement('div');
with(canvas.style) {
fontSize = tlFontSize + 'px';
lineHeight = Math.round(tlFontSize * 1.5) + 'px';
padding = tlMargin + 'px';
color = tlFontColor;
};
var t2td1c = d.createElement('td');
t2td1c.rowSpan = 2;
with(t2td1c.style) {
backgroundColor = tlBGColor;
height = Math.round(tlFontSize * 1.5) * 3 + tlMargin * 2 + 'px';
};
canvcont.appendChild(canvas);
t2td1c.appendChild(canvcont);
t2tr1.appendChild(t2td1c);
var bt1 = d.createElement('img');
bt1.src = tlUpButton;
bt1.onclick = streamScrollUp;
btUp = bt1;
var t2td1r = d.createElement('td');
t2td1r.style.width = tlButtonSize + 'px';
t2td1r.appendChild(bt1);
t2tr1.appendChild(t2td1r);
var bt2 = d.createElement('img');
bt2.src = tlDownButton;
bt2.onclick = streamScrollDown;
btDown = bt2;
var t2tr2 = d.createElement('tr');
tbody2.appendChild(t2tr2);
var t2td2 = d.createElement('td');
t2td2.style.verticalAlign = 'bottom';
t2td2.appendChild(bt2);
t2tr2.appendChild(t2td2);
json2tl(json);
};
var internal_update_timeline = function(json){
json2tl(json);
};
var set_user_info = function(obj){
var img = d.createElement('img');
img.src = obj.profile_image_url;
with(img.style) {
width = tlIconWidth + 'px';
height = tlIconHeight + 'px';
border = 'none';
};
var anc = d.createElement('a');
anc.href = jumpURL;
anc.target = '_blank';
anc.appendChild(img);
usericon.appendChild(anc);
username.innerHTML = "" + obj.name + " (" + scname + ")";
};
var json2tl = function(json){
if (!loaded) {
set_user_info(json[0].user);
};
current_stream = [];
current_itemID = 0;
var date = new Date();
currenttime = date.getTime();
var i;
for (i=0; i";
if (url.length > maxURLLength) {
url = url.substring(0, maxURLLength) + '...';
};
lt += url + "";
tlitem = tlitem.replace(/http:\/\/[\x21-\x7e]+/gi, lt);
};
var created = json[i].created_at.split(' ');
created = created[1] + ', ' + created[2] + ' ' + created[5] + ' ' + created[3] + ' GMT' + created[4];
created = Date.parse(created);
var dt = created;
created = Math.round((currenttime - created) * 0.001);
if (created < 5) {
created = '5秒以内';
}
else if (created < 30) {
created = '30秒前';
}
else if (created < 60) {
created = '1分前';
}
else {
created = Math.round(created / 60);
if (created < 60) {
created = created + '分前';
}
else {
var hour = Math.floor(created / 60);
var minute = created - hour * 60;
if (hour < 24) {
created = hour + '時間' + minute + '分前';
}
else {
created = Math.round(hour / 24);
if (created == 1) {
created = '昨日';
}
else {
created = created + '日前';
};
};
};
};
current_stream[i] = [tlitem, created];
};
loaded = true;
show_current_item();
};
var show_current_item = function(){
canvas.innerHTML = current_stream[current_itemID][0];
create_time.innerHTML = current_stream[current_itemID][1];
if (current_itemID < 1) {
btUp.style.visibility = 'hidden';
}
else {
btUp.style.visibility = 'visible';
};
if (current_itemID >= current_stream.length - 1) {
btDown.style.visibility = 'hidden';
}
else {
btDown.style.visibility = 'visible';
};
setTimeout(updateTL, updateInterval);
};
var get_child_id = function(num){
num = +num;
return contID + '_child' + num;
};
JSONP = {
get : function(url){
if (script_id) {
d.body.removeChild($(script_id));
};
script_id = url;
var s = d.createElement('script');
s.charset = 'UTF-8';
s.id = url;
s.src = url;
s.type = 'text/javascript';
d.body.appendChild(s);
},
show : function(json){
internal_show_timeline(json);
},
update : function(json){
internal_update_timeline(json);
}
};
var stream_scroll_by = function(num){
var newid = current_itemID + num;
if (newid < 0 || newid >= current_stream.length) {
return;
};
current_itemID = newid;
show_current_item();
};
var streamScrollUp = function(){
stream_scroll_by(-1);
};
var streamScrollDown = function(){
stream_scroll_by(1);
};
showTL();
};