/*
 * アナ番WEB 用 複数RSS 解析 -> 比較 -> 整形 -> 出力
 */

// namespace object
var ana = new Object();

ana.RSS =
{
    // 最大表示件数
    dispMaxNum: 4,

    // アナウンサー名 (取得XMLのURL と連動)
    anaMember: [
        'sato',
        'shimada',
        'tomura',
        'shigemori',
        'chigita',
        'takahashi',
        'shirakata',
     //   'hirota'
    ],

    // アナウンサー顔画像のパス
    imgPath: "images/test/ana/#{announcer}.jpg",
    
    // アナウンサーURL
    urlPath: "http://www.nib.jp/anaban/blog/#{announcer}/",

    // XMLデータ保存用
    arrayDataArray: [],

    // 保存用
    dispFunc: "",
    id: "",

    // XMLデータ保持 & 実行
    pushArrayDataArray: function(announcer, data){
        if (data != null){ // マジックナンバー注意:後で直す
            data["rdf:RDF"][0].item[0]["announcer"] = announcer;
            ana.RSS.arrayDataArray.push(data);
            //if (ana.RSS.arrayDataArray.size() > ana.RSS.anaMember.size() - 1)
            if (ana.RSS.arrayDataArray.size() > ana.RSS.anaMember.size() / 2)  // 半数以上ファイルが取得できた場合
                ana.RSS.make();
            else
                ana.RSS.dispFunc(ana.RSS.id, null);  // ダミー画像表示
        }
    },

    // XML をひとつずつ解析し、配列に格納する
    //exec: function(id, xmlpathArray, dispFunc) {
    exec: function(id, xmlpathTemplate, dispFunc) {
        ana.RSS.dispFunc = dispFunc;
        ana.RSS.id = id;
        //for (var i = 0; i < xmlpathArray.size(); i++){
        for (var i = 0; i < ana.RSS.anaMember.size(); i++){
            var xmlpath = xmlpathTemplate.interpolate({anamember: ana.RSS.anaMember[i]});
            new top.Model(ana.RSS.anaMember[i],  xmlpath, ana.RSS.pushArrayDataArray);
        }
    },

    // 日付順に並びかえ、データを出力
    make: function(){
        // 日付順にソートし直す
        ana.RSS.arrayDataArray.sort(
            function (a, b){
                var a_dateString = a["rdf:RDF"][0].item[0]["dc:date"][0];
                var b_dateString = b["rdf:RDF"][0].item[0]["dc:date"][0];
                // 'YYYY-MM-DDThh:mm:ss+09:00' -> 'YYYY/MM/DD hh,mm,ss'
                var dateA = new Date(a_dateString.replace('+09:00', '').replace('T', ' ').replace(/-/ig, '/'));
                var dateB = new Date(b_dateString.replace('+09:00', '').replace('T', ' ').replace(/-/ig, '/'));
                return bool = dateB - dateA;
            }
        );

        // itemList の形式に 整形しなおす
        var newDataArray = { itemList: [ { item: [] } ] };

        for (var i = 0; i < ana.RSS.dispMaxNum; i++){

            var item = ana.RSS.arrayDataArray[i]["rdf:RDF"][0].item[0];

            var childItems = {date: [], title: [], img: [], url: []}
            // 日付 'YYYY-MM-DDThh:mm:ss+09:00' -> 'YYYY/MM/DD
            childItems.date[0] = item["dc:date"][0].replace(/T.*/, '').replace(/-/ig, '/');
            // タイトル
            childItems.title[0] = item["title"][0];
            // リンク
            childItems.url[0] = ana.RSS.urlPath.interpolate({announcer: item["announcer"]});
            // アナウンサー毎に 画像を変える
            childItems.img[0] = ana.RSS.imgPath.interpolate({announcer: item["announcer"]});

            newDataArray.itemList[0].item.push(childItems);
        }

        // 出力描写依頼
        ana.RSS.dispFunc(ana.RSS.id, newDataArray);
    }

}
