/*
window.onload = function getRss()
{
   // declare foaf Namespace
   foafNS="http://www.samurai-japan.jp/xml/blog/"

   // Create RDF object
   myRDF = new RDF()

   // Get foaf rdf
   myRDF.getRDFURL('http://www.samurai-japan.jp/xml/blog/10000.rdf',callback)

   function callback() {

    // Return array of triples which have a foaf:name of "Jim Ley"
    name=myRDF.Match(null,null,foafNS+"title",null)

    // Get the object which has a subject returned previously
    // and the predicate of foaf:mbox
    mbox=myRDF.getSingleObject(name,name[0].subject,foafNS+"mbox",null) 

    // alert the mailbox
    alert(mbox)

   }
}
*/

var famous_cnt = 0;

window.onload = function getBlogRss()
{
    // 最新記事取得
    rssReader('http://www.samurai-japan.jp/xml/blog_new.rdf', 'blog_new');
    // 最新ランキング取得
    rssReader('http://www.samurai-japan.jp/xml/blog_rank.rdf', 'blog_rank');
    // 最新有名人ブログを取得
    rssReader('http://www.samurai-japan.jp/xml/blog_famous.rdf', 'blog_famous');
}

//メイン関数
function rssReader(url, type)
{
    var xml = new JKL.ParseXML( url );  // JKL.ParseXMLオブジェクトを生成
    
    switch (type) {
        case 'blog_new':
            var func = function ( data )        // 呼び出し先関数を定義する
            {  
              onloadNew( data );                //コールバック
            }
            break;
        case 'blog_rank':
            var func = function ( data )        // 呼び出し先関数を定義する
            {  
              onloadRank( data );                //コールバック
            }
            break;
        case 'blog_famous':
            var func = function ( data )        // 呼び出し先関数を定義する
            {  
              onloadFamous( data );                //コールバック
            }
            break;
        default:
            return false;
            break;
    }
    xml.async( func );                  // 呼び出し先関数を指定する
    xml.parse();                        // ダウンロード～解析～関数呼び出しする
}

//新着ブログタグを作成する
function onloadNew(xml)
{
    var tableData = "";
    var data = "";
    var k  = 'blog_new';
    //rdf:RDF要素以下のitem要素を順番に処理
    for(i in xml["rdf:RDF"].item)
    {
        if (xml["rdf:RDF"].item[i].link == undefined) {
            continue;
        }
        //出力用HTMLを作る
        data += '<tr>';
        data += '   <th>';
        data += '       <a href="' + xml["rdf:RDF"].item[i].link + '" target="_blank" >';
        data += '       <img src="/images/ec/community/blog_icon.gif" alt="' + xml["rdf:RDF"].item[i].title + '" />' + xml["rdf:RDF"].item[i].title;
        data += '       </a>';
        data += '   </th>';
        data += '   <td>by&nbsp;' + xml["rdf:RDF"].item[i].creator + '</td>';
        data += '   <td>'+ xml["rdf:RDF"].item[i].lastupdate + '</td>';
        data += '</tr>';
    }
    tableData += '<table style="clear: both;">' + data + '</table>';
    //出力
    document.getElementById("blog_new").innerHTML = tableData;
}

//ランキングタグを作成する
function onloadRank(xml)
{
    var tableData = "";
    var data = "";
    var k  = 'blog_rank';
    //rdf:RDF要素以下のitem要素を順番に処理
    for(i in xml["rdf:RDF"].item)
    {
        if (xml["rdf:RDF"].item[i].link == undefined) {
            continue;
        }
        //出力用HTMLを作る
        data += '<tr valign="top">';
        data += '   <th><img src="/images/ec/community/img_blogRanking_icon.jpg" />' + xml["rdf:RDF"].item[i].rank + '位</th>';
        data += '   <td>';
        data += '       <a href="' + xml["rdf:RDF"].item[i].link + '" target="_blank" >' + xml["rdf:RDF"].item[i].title + '</a><br />';
        data += '       by&nbsp;' + xml["rdf:RDF"].item[i].creator;
        data += '   </td>';
        data += '</tr>';
    }
    tableData += '<table id="blog_ranking">' + data + '</table>';
    //出力
    document.getElementById("blog_rank").innerHTML = tableData;
}

//RSSを受信時に起動するコールバック関数
function onloadFamous(xml)
{
    var tableData = "";
    var tmpData   = "";
    var data      = "";
    var k         = 'blog_famous';
    var tmpAry    = [];
    var famousAry = [];
    //rdf:RDF要素以下のitem要素を順番に処理
    for(i in xml["rdf:RDF"].item)
    {
        if (xml["rdf:RDF"].item[i].link == undefined) {
            continue;
        }
        tmpData = '';
        // tmpData += '<th><a href="' + + '"><img src="/images/ec/community/" alt="" /></a>';
        // tmpData += '<th></th>';
        tmpData += '<th>';
        tmpData += '       <a href="' + xml["rdf:RDF"].item[i].link + '" target="_blank" >' + xml["rdf:RDF"].item[i].title + '</a><br />';
        tmpData += '       by&nbsp;' + xml["rdf:RDF"].item[i].creator;
        tmpData += '</th>';
           
        tmpAry[famous_cnt] = tmpData; 
        famous_cnt++;
    }

    famousAry = random(tmpAry, 8);
    // alert(famousAry);
    for (var i =1, len=famousAry.length;i<=len;i++) 
    {
        // alert(i);
        //出力用HTMLを作る
        if (i == 1 || i%2 == 1) {
            data += '<tr valign="top">';
        }

        data += famousAry[i-1];

        if (i%2 == 0) {
            data += '</tr>';
        }
        // alert(data);
    }
    tableData += '<table id="blog_famous">' + data + '</table>';
    //出力
    document.getElementById("blog_famous").innerHTML = tableData;
}


// 配列をランダムに指定件数分取得する
function random(array, num) {
    var a = array;
    var t = {};
    var r = [];
    var l = a.length;
    var n = num < l ? num : l;
    while (n-- > 0) {
        var i = Math.random() * l | 0;
        r[n] = t[i] || a[i];
        --l;
        t[i] = t[l] || a[l];
    }
    return r;
}


