YAHOO.namespace('yo');
YAHOO.yo.init = function(config){
    YAHOO.yo.viewServer = config.viewServer;
}
YAHOO.yo.getViewUrl = function($url){
    return 'http://' + YAHOO.yo.viewServer + '/?href=' + encodeURIComponent($url);
}
YAHOO.yo.oEvent = new function(){
    this.newsAnim = null;
    this.init = function(){
        YAHOO.util.Event.addListener('newsButton', 'mouseover', this.openNews, null, this);
        YAHOO.util.Event.addListener('newsButton', 'mouseout', this.closeNews, null, this);
    }
    this.openNews = function(event){
        if( null !== this.newsAnim ){
            this.newsAnim.stop();
        }
        var target = YAHOO.util.Dom.get('newsText');
        YAHOO.util.Dom.setStyle(target, 'overflow-y', 'auto');
        this.newsAnim = new YAHOO.util.Anim(target,{height:{to:80}}, 0.5, YAHOO.util.Easing.easeOut);
        this.newsAnim.animate();
    }
    this.closeNews = function(event){
        if( null !== this.newsAnim ){
            this.newsAnim.stop();
        }
        var target = YAHOO.util.Dom.get('newsText');
        this.newsAnim = new YAHOO.util.Anim(target,{height:{to:30}}, 0.5, YAHOO.util.Easing.easeOut);
            YAHOO.util.Dom.setStyle(target, 'overflow-y', 'hidden');
        this.newsAnim.animate();
    }
}
YAHOO.yo.ranking = new function(){
    this.urls = [];

    this.view = function(){
        var div = YAHOO.util.Dom.get('ranking');
        div.innerHTML = '';
        for(var i=0;i<this.urls.length;++i){
            var url = this.urls[i];
            var link = url;
            if( url.length > 40 ){
                link = url.substr(0,40) + '...';
            }
            div.innerHTML += (i+1) + '. <a href="' + YAHOO.yo.getViewUrl(url) + '" target="new">' + link +
'</a> (' + this.hRank[url] + ')<br />\n';
        }
    }

    this.action = function(json){
        var num = 0;
        var hRank = {}
        var urls = [];
        for(var i=0;i<json.urls.length;++i){
            var url = decodeURIComponent(json.urls[i].url);
            if( 'undefined' == typeof hRank[url] ){
                hRank[url] = 1;
                urls.push(url);
            }else{
                ++hRank[url];
            }
        }
        urls.sort( function(a, b){
            return hRank[b].count - hRank[a].count;
        });
        this.urls = urls;
        this.hRank = hRank;
        this.view();
    };
}
YAHOO.yo.bubranking = new function(){
    this.urls = [];

    this.view = function(){
        var div = YAHOO.util.Dom.get('bubranking');
        div.innerHTML = '';
        for(var i=0;i<this.urls.length;++i){
            var url = this.urls[i];
            var link = url;
            if( url.length > 40 ){
                link = url.substr(0,40) + '...';
            }
            div.innerHTML += (i+1) + '. <a href="' + YAHOO.yo.getViewUrl(url) + '" target="new">' + link +
'</a> (' + this.hRank[url] + ')<br />\n';
        }
    }

    this.action = function(json){
        var num = 0;
        var hRank = {}
        var urls = [];
        var datum = json.urlitems;
        for(var i=0;i<datum.length;++i){
            if( i > 10 ){
                break;
            }
            var url = datum[i].url;
            if( '#url=' == url.substr(0,5) ){
                url = url.substr(5);
            }
            var count = datum[i].count;
            hRank[url] = count;
            urls.push(url);
        }
        this.urls = urls;
        this.hRank = hRank;
        this.view();
    };
}
;
//
// bookmark
//
(function(){
    var aBookMark = [
    ['http://bookmarks.yahoo.co.jp/action/bookmark?t=#TITLE#&amp;u=#URL#&amp;ei=UTF-8',
    'http://i.yimg.jp/images/sicons/ybm16.gif',16,16,'Yahoo!ブックマークに登録'],
    ['http://www.google.com/bookmarks/mark?op=edit&bkmk=#URL#&title=#TITLE#',
    'http://www.google.co.jp/favicon.ico',16,16,'Google Bookmarks に追加'],
    ['http://b.hatena.ne.jp/append?#URL#',
    'http://b.hatena.ne.jp/images/append.gif',16,12,'はてなブックマークに登録'],
    ['http://clip.livedoor.com/clip/add?link=#URL#&title=#TITLE#',
    'http://parts.blog.livedoor.jp/img/cmn/clip_16_16_b.gif',16,16,'livedoorクリップに追加'],
    ['http://buzzurl.jp/entry/#RAWURL#',
    'http://buzzurl.jp/static/image/api/icon/add_icon_mini_08.gif',16,16,'Buzzurlにブックマーク'],
    ['http://www.iza.ne.jp/bookmark/add/regist/back/#RAWURL#',
    'http://www.iza.ne.jp/images/common/bookmark_icon02.gif',16,16,'イザ！ブックマークに追加'],
    ['http://newsing.jp/nbutton?title=#TITLE#&url=#URL#',
    'http://image.newsing.jp/common/images/newsingit/newsingit_s.gif',16,16,'newsingに追加'],
/*
    ['http://ja.reddit.com/submit?url=#URL#',
    'http://ja.reddit.com/static/spreddit4.gif',16,16,'redditに追加'],
*/
    0
    ];
    var alltag = document.getElementsByTagName('div');
    for(var i=0;i<alltag.length;i++){
        var cls =  alltag[i].className;
        var tags = cls.split(' ');
        var hasBk = false;
        for(j=0;j<tags.length;j++){
            if( 'bookmark' == tags[j] ){
                hasBk = true;
            }
        }
        if( !hasBk ){
            continue;
        }
        var title = alltag[i].getAttribute('bk::title');
        var url = alltag[i].getAttribute('bk::url');

        var sBookMark = '';
        for(var j=0;j<aBookMark.length;j++){
            var bk=aBookMark[j];
            if(!bk){
                continue;
            }
            var bUrl = bk[0];
            bUrl = bUrl.replace('#URL#', encodeURIComponent(url));
            bUrl = bUrl.replace('#RAWURL#', url);
            bUrl = bUrl.replace('#TITLE#', encodeURIComponent(title));
            bUrl = bUrl.replace('#RAWTITLE#', title);
            sBookMark += '<a href="' + bUrl + '" target="_sb"><img src="' + bk[1] +
                         '" style="border:none;width:' + bk[2] +
                         'px;height:' + bk[3] + 'px;margin-left:1px;" /></a>'
        }

        alltag[i].innerHTML = sBookMark;
    }
})();
