// # vim: fileencoding=utf-8 autoindent expandtab sw=4 ts=4 :

var ItemReply = function(){};//new Object();


ItemReply.first_row = function(n) {
    var e = $('#form_itemreply_paging > #first_row');
    if (n != null) {
        e.val(n);
    } else {
        return e.val();
    }
};

ItemReply.rows_per_page = function(n) {
    var e = $('#form_itemreply_paging > #rows_per_page');
    if (n != null) {
        e.val(n);
    } else {
        return e.val();
    }
};

ItemReply.item_code = function(n) {
    var e = $('#form_itemreply_paging > #item_code');
    if (n != null) {
        e.val(n);
    } else {
        return e.val();
    }
};

//

ItemReply.now_loading = function(onoff) {
    var indicator = $('#itemreply_loading_indicator');
    if (onoff) {
        indicator.fadeIn();
    } else {
        indicator.fadeOut();
    }
};

ItemReply.refresh = function() {
    var url_ = '/stocks/xhr_list_itemreply/' + ItemReply.item_code() + '/';
    var data_ = {
        first_row:  ItemReply.first_row(),
        rows_per_page:  ItemReply.rows_per_page()
    };
    ItemReply.now_loading(true);
    $.ajax({
        url: url_,
        data: data_,
        dataType: 'json',
        success: function(data){
            ItemReply.clear_rows();
            ItemReply.add_rows(data);
            ItemReply.clear_pagenums();
            ItemReply.add_paging(data);
            ItemReply.now_loading(false);
        }
    });
};


/// PAGING

ItemReply.clear_pagenums = function() {
    var root = $('#itemreply_paging');
    var p = $('#pagenums', root);
    $('.cloned', p).remove();
};

ItemReply.add_pagenum = function(pagenum, first_row) {
    var root = $('#itemreply_paging');
    var p = $('#pagenums', root);
    var r = $('#pagenum_template', p).clone();
    r.attr('class', 'cloned');
    // link, pagenum
    var pagenum_ = $('#pagenum', r);
    if (ItemReply.first_row() == first_row) {
        pagenum_.html("&lt;"+pagenum+"&gt;");
    } else {
        pagenum_.html(pagenum);
    }
    var link_ = $('#link', r);
    link_.attr('href', "javascript:ItemReply.change_offset("+first_row+")");
    //
    p.append(r);
    r.fadeIn();
};

ItemReply.change_offset = function(first_row) {
    ItemReply.first_row(first_row);
    ItemReply.refresh();
};

ItemReply.change_page = function(page) {
    return ItemReply.change_offset((page - 1) * ItemReply.rows_per_page());
};

ItemReply.add_paging = function(data) {
    var paging = data['paging'];
    var root = $('#itemreply_paging');
    if (paging['total_pages'] == 0) {
        ItemReply.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:ItemReply.change_page(1)"); 
        link_first_page.fadeIn();
        link_last_page.attr('href', "javascript:ItemReply.change_page("+paging['total_pages']+")"); 
        link_last_page.fadeIn();
        link_prev_page.attr('href', "javascript:ItemReply.change_page("+paging['prev']+")"); 
        link_prev_page.fadeIn();
        link_next_page.attr('href', "javascript:ItemReply.change_page("+paging['next']+")"); 
        link_next_page.fadeIn();
        // pagenums
        $.each(paging['pages'], function(idx, a) {
                var pagenum = a[0];
                var first_row = a[1];
                ItemReply.add_pagenum(pagenum, first_row);
        });
    }
};


/// DELETE

ItemReply.delete_reply = function(id) {
    var msg = "삭제하시겠습니까?";
    if (!confirm(msg)) return;
    //
    var url_ = '/stocks/xhr_delete_itemreply/';
    var data_ = {id: id};
    ItemReply.now_loading(true);
    $.ajax({
        url: url_,
        data: data_,
        error: function(){
            ItemReply.now_loading(false);
        },
        success: function(data){
            ItemReply.now_loading(false);
            ItemReply.refresh();
        }
    });
};


/// ROWS

ItemReply.add_row = function(reply) {
    var root = $('#itemreply_rows');
    var row = $('#itemreply_row_template', root).clone();
    row.attr('class', 'cloned');
    // message, nickname, created, delete link
    $('#message', row).html(linebreaksbr(autolink(reply['message'])));
    $('#username', row).html(reply['user']['nickname']);
    $('#date', row).html(reply['created']);
    var delete_link = 'javascript:ItemReply.delete_reply("' + reply['id'] + '")';
    $('#delete_link', row).attr('href', delete_link);
    //
    root.append(row);
    row.fadeIn();
};

ItemReply.add_rows = function(data) {
    $.each(data['rows'], function(idx, row) {
            ItemReply.add_row(row);
    });
};

ItemReply.clear_rows = function() {
    $('.cloned', $('#itemreply_rows')).remove();
};



/// POSTING

ItemReply.when_post_failed = function() {
    var msg = '';
    msg += '댓글달기에 실패했습니다.';
    msg += '\n로그인해주시거나, 내용을 적어주세요. ^^';
    alert(msg);
    ItemReply.now_loading(false);
};

ItemReply.when_post_success = function() {
    ItemReply.now_loading(false);
    var message_elem = $('#message', $('#form_itemreply'));
    message_elem.val("");
    ItemReply.refresh();
};

ItemReply.post = function() {
    var url_ = '/stocks/xhr_post_itemreply/';
    var message_elem = $('#message', $('#form_itemreply'));
    var data_ = {
        item_code:  ItemReply.item_code(),
        message:    message_elem.val()
    };
    ItemReply.now_loading(true);
    $.ajax({
        url: url_,
        data: data_,
        type: 'POST',
        error:  ItemReply.when_post_failed,
        success: ItemReply.when_post_success
    });
};

///EOF
