function setupLinks () {
    url = '/json/links.js';
    new Ajax.Request(url,
                     { method: 'get', onComplete: displayLinks });
}

function displayLinks (request) {
    eval('var results = ' + request.responseText);
    var now        = new Date();
    var html       = '';
    var lastAccess = getCookie('LAST_ACCESS');
    var expires    = new Date();

    lastAccess = lastAccess == null ? 0 : parseInt(lastAccess);
    now = now.getTime() / 1000;
    for (var i = 0; i < results.length; i++) {
         html = html
              + '<dt>'
              + '<a href="'
              + results[i]['link']
              + '" target="_blank" title="最終更新: '
              + results[i]['formatted_updated']
              + '">'
              + results[i]['title']
              + '</a>';
         if (lastAccess < parseInt(results[i]['updated'])) {
             html = html
                  + '<img src="/images/new.gif" width=30 height=6 alt="new">';
         }
         html = html
              + '<span class="widget-external-links-author"> by '
              + results[i]['author']
              + "</span></dt>\n";
         if (results[i]['item_link'] != null && results[i]['item_link'] != '') {
              html = html
                   + '<dd>'
                   + '<a href="'
                   + results[i]['item_link']
                   + '" target="_blank">'
                   + results[i]['item_title']
                   + "</a></dd>\n";
         }
         if (i == 10) {
             html = html
                  + '<dt id="extender"><a href="javascript: void(0);" onClick="open_whole_external_links();">&gt;&gt; 全て表示</a></dt>'
                  + "\n"
                  + '<div id="link-omitted" style="display: none;">'
                  + "\n";
         }
    }
    html = html
         + '<dt id="extender-close" style="display: none;"><a href="javascript: void(0);" onClick="close_whole_external_links();">&lt;&lt; 閉じる</a></dt>'
         + "\n"
         + "</div>\n";

    $('link').innerHTML = '<dl>' + html + '</dl>';
    expires.setDate(expires.getDate() + 365);
    document.cookie = 'LAST_ACCESS=' + now
                    + '; path=/'
                    + '; expires=' + expires.toUTCString();
}

function getCookie (key) {
    var cookies = document.cookie.split('; ');
    while (cookies.length > 0) {
        var cookieData = cookies.pop().split('=', 2);
        if(cookieData[0] == key) {
            return unescape(cookieData[1]);
        }
    }
    return null;
}

function open_whole_external_links () {
    $('link-omitted').style.display='block';
    $('extender').style.display='none';
    $('extender-close').style.display='block';
}


function close_whole_external_links () {
    $('link-omitted').style.display='none';
    $('extender').style.display='block';
    $('extender-close').style.display='none';
}

