// # vim: fileencoding=utf-8 autoindent expandtab sw=4 ts=4 :

var ItemArticle = function(){};//new Object();


ItemArticle.first_row = function(n) {
    var e = $('#form_itemarticle_paging > #first_row');
    if (n != null) {
        e.val(n);
    } else {
        return e.val();
    }
};

ItemArticle.rows_per_page = function(n) {
    var e = $('#form_itemarticle_paging > #rows_per_page');
    if (n != null) {
        e.val(n);
    } else {
        return e.val();
    }
};

ItemArticle.item_code = function(n) {
    var e = $('#form_itemarticle_paging > #item_code');
    if (n != null) {
        e.val(n);
    } else {
        return e.val();
    }
};

//

ItemArticle.now_loading = function(onoff) {
    var e = $('#itemarticle_loading_indicator');
    if (onoff) {
        e.fadeIn();
    } else {
        e.fadeOut();
    }
};

ItemArticle.refresh = function() {
    var url_ = '/board/item_articles/' + ItemArticle.item_code() + '/';
    var data_ = {
        first_row:  ItemArticle.first_row(),
        rows_per_page:  ItemArticle.rows_per_page()
    };
    ItemArticle.now_loading(true);
    $.ajax({
        url: url_,
        data: data_,
        dataType: 'json',
        success: function(data){
            ItemArticle.clear_rows();
            ItemArticle.add_rows(data);
            ItemArticle.clear_pagenums();
            ItemArticle.add_paging(data);
            ItemArticle.now_loading(false);
        }
    });
};


/// PAGING

ItemArticle.clear_pagenums = function() {
    $('.cloned', $('#pagenums', $('#itemarticles'))).remove();
};

ItemArticle.add_pagenum = function(pagenum, first_row) {
    var root = $('#itemarticles > #paging');
    var p = $('#pagenums', root);
    var r = $('#pagenum_template', p).clone();
    r.attr('class', 'cloned');
    // link, pagenum
    var pagenum_ = $('#pagenum_label', r);
    if (ItemArticle.first_row() == first_row) {
        pagenum_.html("&lt;"+pagenum+"&gt;");
    } else {
        pagenum_.html(pagenum);
    }
    var link_ = $('#pagenum_link', r);
    link_.attr('href', "javascript:ItemArticle.change_offset("+first_row+")");
    //
    p.append(r);
    r.fadeIn();
};

ItemArticle.change_offset = function(first_row) {
    ItemArticle.first_row(first_row);
    ItemArticle.refresh();
};

ItemArticle.change_page = function(page) {
    return ItemArticle.change_offset((page - 1) * ItemArticle.rows_per_page());
};

ItemArticle.add_paging = function(data) {
    var paging = data['paging'];
    var root = $('#itemarticles > #paging');
    if (paging['total_pages'] == 0) {
        ItemArticle.add_pagenum('게시글이 없습니다.', '#');
    } else {
        // first / prev / next / last
        var link_first_page = $('#link_first_page', root);
        var link_last_page = $('#link_last_page', root);
        var link_prev_page = $('#link_prev_page', root);
        var link_next_page = $('#link_next_page', root);
        link_first_page.attr('href', "javascript:ItemArticle.change_page(1)"); 
        link_first_page.fadeIn();
        link_last_page.attr('href', "javascript:ItemArticle.change_page("+paging['total_pages']+")"); 
        link_last_page.fadeIn();
        link_prev_page.attr('href', "javascript:ItemArticle.change_page("+paging['prev']+")"); 
        link_prev_page.fadeIn();
        link_next_page.attr('href', "javascript:ItemArticle.change_page("+paging['next']+")"); 
        link_next_page.fadeIn();
        // pagenums
        $.each(paging['pages'], function(idx, a) {
                var pagenum = a[0];
                var first_row = a[1];
                ItemArticle.add_pagenum(pagenum, first_row);
        });
    }
};



/// ROWS

ItemArticle.add_row = function(article) {
    var subject_link = function(a) {
        if (a['reply_count']) {
            var label = a['subject'] + " <b>(" + a['reply_count'] + ")</b>";
        } else {
            var label = a['subject'];
        }
        var board_id = a['board']['subject'];
        var article_id = a['id'];
        var link = "<a href='/board/articles/"+board_id+"/"+article_id+"/'>";
        return link + label + "</a>";
    };
    //
    var root = $('#itemarticles > #rows_container');
    var row = $('#row_template', root).clone();
    row.attr('class', 'cloned');
    // subject(+link, +reply-count), nickname, created
    $('#subject', row).html(subject_link(article));
    $('#nickname', row).html(article['user']['nickname']);
    $('#created', row).html(article['created']);
    //
    root.append(row);
    row.fadeIn();
};

ItemArticle.add_rows = function(data) {
    $.each(data['rows'], function(idx, row) {
            ItemArticle.add_row(row);
    });
};

ItemArticle.clear_rows = function() {
    $('.cloned', $('#itemarticles > #rows_container')).remove();
};




///EOF
