// ==UserScript==
// @name Social Bookmark Viewer for Sleipnir+SeaHorse 2.0.7
// @author sasuket
// @namespace http://sasuket.blog7.fc2.com/
// @description Show Bookmark's comments at the bottom of your browser.
// @include http://*
// ==/UserScript==
var popup = true; //リンク先をポップアップする:true / しない:false
var hbm_max_comment_num = 30; //はてなブックマークコメント最大件数
var hbm_show_tag_only = false; //はてなブックマークのタグのみ(コメントなし)も出力する:true / しない:false
var delicious_tag_cloud = true; //del.icio.us タグをタグクラウド化する:true / しない:false
var delicious_tag_min_size = 8; //del.icio.us タグクラウドの最小フォントサイズ(pt)
var delicious_tag_max_size = 40; //del.icio.us タグクラウドの最大フォントサイズ(pt)
var livedoor_clip_output = false; //livedoorクリップも出力する:true / しない:false
var sbm_view_id = "sbm_viewer";
//CSS setting
addCSSRule('#'+sbm_view_id, 'width: 90%; background-color: #f0f0f0; border: solid 1px #cccccc; margin: 5px; padding: 5px; text-align: left;');
addCSSRule('#'+sbm_view_id+' ' + 'p.close', 'color: blue; text-decoration: underline;');
addCSSRule('#'+sbm_view_id+' ' + 'img', 'border: none;');
addCSSRule('#'+sbm_view_id+' ' + 'a', 'text-decoration: none;');
addCSSRule('#'+sbm_view_id+' ' + 'ul', 'list-style-type: none;');
addCSSRule('#'+sbm_view_id+' ' + 'ul#hatena-bookmark-comments li .hbm_date', 'color: black;');
addCSSRule('#'+sbm_view_id+' ' + 'ul#hatena-bookmark-comments li .hbm_name', 'color: blue;');
addCSSRule('#'+sbm_view_id+' ' + 'ul#hatena-bookmark-comments li .hbm_tags a', 'color: gray;');
addCSSRule('#'+sbm_view_id+' ' + 'ul#hatena-bookmark-comments li .hbm_comment', 'color: black;');
addCSSRule('#'+sbm_view_id+' ' + 'ul#delicious-url-tags li', 'display: inline; padding: 2px;');
//addCSSRule('#'+sbm_view_id+' ' + 'ul#delicious-url-tags li:after', 'content:" "'); //IE7未対応のため
addCSSRule('#'+sbm_view_id+' ' + '.comment-count', 'color: red; font-weight: bold; text-decoration: underline; background-color: #ffcccc;');
var page_uri = top.location.href;
var HATENA_BOOKMARK_APPEND_ICON = "http://b.hatena.ne.jp/images/append.gif";
var HATENA_BOOKMARK_ENTRY_ICON = "http://d.hatena.ne.jp/images/b_entry.gif";
var DELICIOUS_ICON = "http://images.del.icio.us/static/img/delicious.small.gif";
var BUZZURL_ICON = "http://buzzurl.jp/static/image/api/icon/add_icon_mini_08.gif";
var LIVEDOOR_CLIP_ICON = 'http://parts.blog.livedoor.jp/img/cmn/clip_16_16_w.gif';
//CSS ルール追加
function addCSSRule(selector, property){
//IE
if(document.styleSheets[0].addRule){
document.styleSheets[0].addRule(selector, "{" + property + "}");
//Mozilla
}else if(document.styleSheets[0].insertRule){
document.styleSheets[0].insertRule(selector + "{" + property + "}", document.styleSheets[0].cssRules.length);
}else{
return false;
}
}
// ->
function _popup_uri(uri){
return (popup ? uri + "\" onclick=\"window.open('" + uri + "'); return false;\" onkeypress=\"window.open('" + uri + "'); return false" : uri);
}
function hatena_bookmark_callbackfunc(obj){
function getDate(date) {
var y = date.getFullYear();
var m = date.getMonth() + 1;
var d = date.getDate();
if (m < 10) m = "0" + m;
if (d < 10) d = "0" + d;
return y + "/" + m + "/" + d;
}
if(obj && obj.count>0){
var bm = obj.bookmarks;
var div_hatena_bookmark = document.getElementById(sbm_view_id + '_hatena_bookmark');
var hbm_entry_uri = "http://b.hatena.ne.jp/entry/" + escape(page_uri);
var hbm_append_uri = "http://b.hatena.ne.jp/append?" + escape(page_uri);
div_hatena_bookmark.innerHTML = '
';
var hatena_ul = document.getElementById('hatena-bookmark-comments');
for(i=0;i0)){
var name = bm[i].user;
var date = getDate(new Date(bm[i].timestamp));
var tags = bm[i].tags;;
for(j=0;j' + tag + '';
}
var li = document.createElement('li');
li.innerHTML = '' + date + ' ' + name + ' ' + tags.join(',') + ' ';
hatena_ul.appendChild(li);
}
if (i == hbm_max_comment_num) { break; }
}
}
}
function delicious_callbackfunc(obj){
if(obj){
var bm = obj[0];
if(bm && bm.total_posts>0){
var div_delicious = document.getElementById(sbm_view_id + '_delicious');
var delicious_uri = "http://del.icio.us/url/?url=" + escape(page_uri);
div_delicious.innerHTML = '
';
var delicious_ul = document.getElementById('delicious-url-tags');
for (tag in bm.top_tags){
var li = document.createElement('li');
var a = document.createElement('a');
a.setAttribute('href', 'http://del.icio.us/tag/'+tag);
if(delicious_tag_cloud){
var font_size = Math.floor(bm.top_tags[tag] * (10 / bm.total_posts)) * 4 + delicious_tag_min_size;
a.style.fontSize = (delicious_tag_max_size > font_size) ? font_size : delicious_tag_max_size;
}
a.appendChild(document.createTextNode(tag));
li.appendChild(a);
delicious_ul.appendChild(li);
delicious_ul.appendChild(document.createTextNode(' ')); //IE7未対応のため
}
}
}
}
function buzzurl_callbackfunc(obj){
if(obj){
var bm = obj[0];
if(bm && bm.users>0){
var div_buzzurl = document.getElementById(sbm_view_id + '_buzzurl');
var buzzurl_uri = "http://buzzurl.jp/entry/" + escape(page_uri);
div_buzzurl.innerHTML = '
';
}
}
}
function livedoor_clip_count(){
var div_livedoorclip = document.getElementById(sbm_view_id + '_livedoor_clip');
var livedoorclip_uri = "http://clip.livedoor.com/page/" + escape(page_uri);
var livedoorclip_img_uri = "http://image.clip.livedoor.com/counter/" + escape(page_uri);
div_livedoorclip.innerHTML = '
';
}
(function (c) { //Add
var is_called;
if (document != null && is_called != true && self.location.href==top.location.href){
is_called = true;
//ADD Start
if (document.readyState != 'complete'){
if (c < 8000){
var f = arguments.callee;
c *= 2;
setTimeout(function () { f(c); }, c);
}
return;
}
//ADD End
if (self.location.href==top.location.href){
var div = document.createElement('div');
div.id = sbm_view_id;
var is_done = document.getElementById(sbm_view_id); //Add
if (is_done != null) { return; } //Add
var sbm_view_hidden = "javascript:document.getElementById('" + sbm_view_id + "').style.display='none',void(0);";
div.innerHTML = 'CLOSE
';
document.body.appendChild(div);
var div_hatena_bookmark = document.createElement('div');
div_hatena_bookmark.id = sbm_view_id + '_hatena_bookmark';
div.appendChild(div_hatena_bookmark);
script_hbm = document.createElement('script');
script_hbm.src = 'http://b.hatena.ne.jp/entry/json/?callback=hatena_bookmark_callbackfunc&url=' + escape(page_uri);
document.body.appendChild(script_hbm);
var div_delicious = document.createElement('div');
div_delicious.id = sbm_view_id + '_delicious';
div.appendChild(div_delicious);
script_del = document.createElement('script');
script_del.src = 'http://badges.del.icio.us/feeds/json/url/data?callback=delicious_callbackfunc&url='+ escape(page_uri);
document.body.appendChild(script_del);
var div_buzzurl = document.createElement('div');
div_buzzurl.id = sbm_view_id + '_buzzurl';
div.appendChild(div_buzzurl);
script_del = document.createElement('script');
script_del.src = 'http://api.buzzurl.jp/api/counter/v1/json?cb=buzzurl_callbackfunc&url='+ escape(page_uri);
document.body.appendChild(script_del);
if(livedoor_clip_output){
var div_livedoor_clip = document.createElement('div');
div_livedoor_clip.id = sbm_view_id + '_livedoor_clip';
div.appendChild(div_livedoor_clip);
livedoor_clip_count();
}
}
}
})(100); //ADD