// hatena-bookmark.js

var MAX_HATENA = 10;
var HATENA_JSON = "http://www.kawa.net/rss/hatena-bookmark.json";

function hatena_update ( data, area ) {
    if ( ! data ) return;

//  if ( data && data.html && data.html.head && data.html.head.title ) {
//      hatena_display( area, data.html.head.title );
//  }

    if ( ! data.rss ) return;
    if ( ! data.rss.channel ) return;

    var items = data.rss.channel.item;
    if ( ! items ) return;
    if ( items.title ) items = [ items ];
    if ( items.length > MAX_HATENA ) items.length = MAX_HATENA;

    var frag = document.createDocumentFragment();

    for( var i=0; i<items.length; i++ ) {
        var title = items[i].title;
        var link  = items[i].link;
        var atag = document.createElement( "a" );
        var txt1 = document.createTextNode( title );
        var divtag = document.createElement( "div" );
        atag.href = link;
        atag.title = items[i].pubDate;
        atag.appendChild( txt1 );
        divtag.className = 'barlink';
        divtag.appendChild( atag );
        frag.appendChild( divtag );
    }

    hatena_display( area, frag );
};

function hatena_load ( area ) {
    hatena_display( area, "Now loading..." );
    var http = new JKL.ParseXML.JSON( HATENA_JSON );
    var func = function ( data ) {
        hatena_update( data, area );
    };
    var err = function ( err ) {
        hatena_display( area, "[error] "+err );
    };
    http.async( func );
//  http.onerror( err );
    http.parse();
};

function hatena_display ( area, elem ) {
    if ( typeof(elem) == "string" ) {
        elem = document.createTextNode( elem );
    }
    var here = document.getElementById(area);
    if ( here.firstChild ) {
        here.replaceChild( elem, here.firstChild );
    } else {
        here.appendChild( elem );
    }
}
