/*************
    available options:

        doubanid : your id(number id or unique id in your douban url)
        maxresults : length of records,
        naked : do not append css,
        hidetime, 
        hidetitle.
    
    example: 

    <script type="text/javascript" src=" THE-PATH-TO miniblog_widget.js?doubanid=su27&hidetitle=1"></script>

*************/

if(document.getElementById('douban_mn') == null){
    document.write('<div id="douban_mn"></div>');
}

var db_scripts = document.getElementsByTagName('script');
for(var i=0,j=db_scripts.length; i<j; i++){
    if(/doubanid/.test(db_scripts[i].src)){
        var db_options = paras(db_scripts[i].src);
        var db_maxresults = db_options.maxresults || 10;
        break;
    }
}

if(!db_options.naked){
    document.write('<link href="http://www.douban.com/css/miniblog_widget.css" rel="stylesheet" type="text/css"/>');
}
document.write('<script type="text/javascript" src="http://api.douban.com/people/' + db_options.doubanid + '/miniblog?max-results=' + db_maxresults + '&amp;alt=xd&amp;callback=success"></script>')

function success(requester)
{
    var term, feedhtml, feedattr, outhtml = "";
    if(!db_options.hidetitle) outhtml += '<h2>'+requester.title.$t+'</h2>';
    outhtml += "<ul>";
    var entries = requester.entry;
    for(var i=0,j=entries.length; i<j; i++){
        feedhtml = '<li class="douban_item">';
        //console.info(entries[i]);
        if(entries[i]['db:attribute']){
            feedattr = get_feedattr(entries[i]['db:attribute']);
        }
        term = entries[i].category[0]['@term'].split('#miniblog.')[1];
        switch(term){
            case "recommendation":
                feedhtml += entries[i].content.$t;
                if(feedattr.comment) feedhtml += '<span class="douban_s">"'+feedattr.comment+'"</span>';
                break;

            case "saying":
                feedhtml += '说: <span class="douban_s">"'+entries[i].content.$t+'"</span>';
                break;

            case "movie":

            case "book":

            case "music":

            case "magzine":

            case "tv":
                feedhtml += entries[i].content.$t;
                if(feedattr.rating && !db_options.naked) feedhtml += '<span class="stars star'+feedattr.rating+'">beryl</span>';
                break;

            case "note":

            case "blog":

            case "event":

            case "site":

            case "place":

            case "contacts":

            default:
                feedhtml += entries[i].content.$t;

        }
        outhtml += feedhtml;
        if(!db_options.hidetime)
            outhtml += '<span class="douban_time">'+entries[i].published.$t.replace(/T/,' ').replace(/:..\+.*/,'')+'</span>';
        outhtml += '</li>';
    }
    outhtml += "</ul>";
    document.getElementById('douban_mn').innerHTML = outhtml;
}

function get_feedattr(feed){
    var o = {};
    for (var i=0,j=feed.length; i<j; i++) eval('o.' + feed[i]['@name'] + '="' + feed[i]['$t'] + '"');
    return o;
}

function paras(s){
    var o = {};
    if(s.indexOf('?') == -1) return {};
    var vs = s.split('?')[1].split('&');
    for(var i=0;i<vs.length;i++){
        if(vs[i].indexOf('=') != -1){
            var k = vs[i].split('=');
            eval('o.'+k[0]+'="'+k[1]+'"');
        }
    }
    return o;
}

