//// 非同期RSS取得
function asyncRssData(mode, param) {
    if (mode != 'init') {
        param = loadData('param');
    }
    $.post(
           tabDataUrl(param),
           {},
           function(data, status) {
               if (status == 'success'){
                   if (!data) return 'error';
                   var rss = loadData('rss');
                   var tmp_rss = eval("("+data+")");
                   var push_no = tmp_rss.start;

                   if (!rss) { 
                       rss = tmp_rss;
                       rss.loaded = {};
                       jQuery.each(tmp_rss.rss, function(){
                           rss.rss['no' + push_no] = this;
                           push_no++;
                           if (rss.loaded['no' + this.no] == this.no) return true;
                           rss.loaded['no' + this.no] = this.no;
                       });
                   } else {
                       //かぶったものは飛ばす
                       jQuery.each(tmp_rss.rss, function(){
                           if (rss.loaded['no' + this.no] == this.no) {
                               push_no++;
                               return true;
                           }
                           rss.rss['no' + push_no] = this;
                           rss.loaded['no' + this.no] = this.no;
                           push_no++;
                       });
                   }
                   //保存
                   saveData('rss',rss);
                   saveData('param', param);

                   addTabLine(rss, param, mode);
                    
                   if (mode == 'double_next') {
                       pageRemove(rss, parseInt(param.no) - 4);
                   }

                   pageRemove(rss, parseInt(param.no) - 3);
                   pageLoad(rss, parseInt(param.no) - 2);
                   pageLoad(rss, parseInt(param.no) - 1);
                   pageLoad(rss, parseInt(param.no));
                   pageLoad(rss, parseInt(param.no) + 1);
                   pageLoad(rss, parseInt(param.no) + 2);
                   pageRemove(rss, parseInt(param.no) + 3);

                   if (mode == 'double_prev') {
                       pageRemove(rss, parseInt(param.no) + 4);
                   }

                   if (mode == 'init') {
                       $('#' + tab_options.tab_line).css("overflow", "hidden")
                                                   .width(800)
                                                   .height(tab_options.slider_height);
    
                       var li_length = $('#' + tab_options.tab_line + ' ul li').length - 1; // -1はスペーサの分
                       $('#' + tab_options.tab_line + ' ul li').css('float','left');
                       $('#' + tab_options.tab_line + ' ul').css('width', rss.all_length * parseInt(param.li_width))
                                                            .css('margin-left', -1 * (parseInt(param.no) - 2) * param.li_width);
                       arrowDisplay(param, rss);
                       openIframe(rss.rss['no' + param.no]);
                   }

               } else {
                   return 'error';
               }
           }
    );
}

function addTabLine(rss, param, mode) {
    //選択のナンバーを中心として10件ずつ作成する
    var tab_line = "";
    var min_no;
    var max_no;
    var created_tab_no = loadData('created_tab_no');
    if (!created_tab_no) created_tab_no = {};
    // -1なのは、配列は[0]からはじまるため、ただし、全件数を超える事はない
    max_no = param.no + 10 - 1;
    if (max_no > rss.all_length - 1) max_no = rss.all_length - 1;
    
    // -1なのは、配列は[0]からはじまるため
    // 作成対象最小ナンバーを求める、ただし[0]以上
    min_no = param.no - 10 - 1;
    if (min_no < 0) min_no = 0;
    for (var i = min_no; i <= max_no; i++) {
        //作成済みはすっ飛ばす
        if (created_tab_no['no' + i] == i) continue;
        //データがないのも飛ばす
        if (!rss.rss['no' + i]) continue;

        //タイトルの文字数制限
        var title = rss.rss['no' + i].title;
        if (title.length > 12) { 
           title = title.substring(0,11) + '..';
        }

        tab_line = tab_line + '<li id="rsstab_'+ rss.rss['no' + i].no + '" class="tab" onclick="tab_click('+ rss.rss['no' + i].no +');"><a alt="' + rss.rss['no' + i].title + '">' + title + '..' + '</a></li>' + "\n";

        //作成したナンバーを保存
        created_tab_no['no' + i] = i;
    }

    if (mode == 'prev' || mode == 'double_prev') {
        if (tab_line) {
            $('#' + tab_options.tab_line + ' ul').prepend(tab_line);
            $('#left_margin').prependTo('#' + tab_options.tab_line + ' ul');
    
            var left_margin = 0;
            left_margin = min_no * param.li_width;
            if (left_margin < 0) left_margin = 0;
            // ロードしてない分の左側の総計
            if (parseInt($('#left_margin').css('width')) > left_margin) {
                $('#left_margin').css('width', left_margin);
            }
        }
    } else if(mode == 'next' || mode == 'double_next') {
        $('#' + tab_options.tab_line + ' ul').append(tab_line);
    } else if(mode == 'init'){
        $('#' + tab_options.tab_line + ' ul').append(tab_line);
        var left_margin = 0;
        left_margin = min_no * param.li_width;
        if (left_margin < 0) left_margin = 0;
        // ロードしてない分の左側の総計
        $('#left_margin').css('width', left_margin);
    } else {
        return;
    }


    //作成したデータのnoは記録し、重複しないようにする
    saveData('created_tab_no', created_tab_no);
    return true;
}


function next() {
        if ($('#' + tab_options.tab_line).attr('name') == 'sending') return false;

        param = parseParam();
        rss = loadData('rss');
        if (param.no >= rss.all_length - 1) return false;

        param.no++;
        saveData('param', param);

        slide(param,'next');
        openIframe(rss.rss['no' + param.no]);
        $('#reader_close a').attr('href', closeButtonUrl());

}

function prev() {
        if ($('#' + tab_options.tab_line).attr('name') == 'sending') return false;

        param = parseParam();
        if (param.no <= 0) return false;

        param.no--;
        saveData('param', param);

        slide(param,'prev');
        rss = loadData('rss');
        openIframe(rss.rss['no' + param.no]);
        $('#reader_close a').attr('href', closeButtonUrl());

}

$(document).ready(function(){
    //パラメータ取得
    param = parseParam();
    //閉じるボタンのURLを作る
    $('#reader_close a').attr('href', closeButtonUrl());
    //RSSデータを取得し保存
    asyncRssData('init', param);

    $("#nextBtn").click(next);
    shortcut.add("right", next);

    $("#prevBtn").click(prev);
    shortcut.add("left", prev);

    $('#' + tab_options.tab_line).bind("ajaxSend", function(){
      $(this).attr('name','sending');
    }).bind("ajaxComplete", function(){
      $(this).attr('name','stay');
    });

    $('#loading_info').bind("ajaxSend", function(){
      $(this).show();
    }).bind("ajaxComplete", function(){
      $(this).hide();
    });
});


