var BBS_URL = 'http://moana.mo-hawaii.com/gettopics.php?';
if(typeof NEW_TOPIC_TIME == 'undefined') {
    NEW_TOPIC_TIME = 3 * 24 * 60 * 60;
}

$(loadData);

var bbsLoader = {
  single: function(allData) {
	var board_id = this._boardIds;
	var topics = allData[board_id] || [];
	buildList(this, topics);
  },
  multi:  function(allData) {
	var board_id = this._boardIds;
	var topics = [];

	$.each(allData,
	       function(i,v) {
		   if($.inArray(i,board_id) != -1) {
		       $.merge(topics, v); }});

	topics.sort(function(l, r) {
		var a = l.updated, b = r.updated;
		return -1 * (a < b ? -1 : a > b ? 1 : 0); });

	buildList(this, topics.slice(0, 3), true);
  }
};

function loadData() {
    function getBoardIdsFromId(elm) {
	return elm.id.replace(/^bbs\-/, '').split('-');
    }

    var allIds = [];
    var containerElements = [];
	
    $('.load-bbs').each(function (idx, elm) {
	    containerElements.push(elm);
	    var bids = getBoardIdsFromId(elm);
	    elm._boardIds = bids;
	    if(bids.length > 1) {
		elm._bbsLoader = bbsLoader.multi;
		allIds = allIds.concat(bids);
	    } else {
		elm._bbsLoader = bbsLoader.single;
		allIds.push(bids[0]);
	    }
	});

    var idSeq = $.grep(allIds, function(id){ return /^\d+$/.test(id) }).join(',');
    var url = BBS_URL +'board_id=' + idSeq + '&uniqid='+ (new Date().getTime()) + '&callback=?';

    $.ajax({url:url, dataType:"jsonp", scriptCharset:'EUC-JP', success:function(data){
	    $.each(containerElements, function(idx, elm) { elm._bbsLoader(data); });  }})

}

function buildList(cont, topics, addBoardTitle) {
    var now = (new Date()).getTime() / 1000;
    var isNew = function(topic){ return now - topic.updated < NEW_TOPIC_TIME; }

    if(topics.length == 0) {
	return;
    }

    var ul = $('<ul></ul>').appendTo($(cont));

    $.each(topics, function(idx, topic) {
	    var a = $('<a></a>').
		attr({href: topic.url, target: '_blank'}).
		text(topic.title + (addBoardTitle ? ' ('+ topic.board +')' : ''));

	    var li = $('<li></li>').append(a);
	    if(isNew(topic)) {
		li.append($('<sup>NEW</sup>').attr('class', 'new'));
	    }
	    li.appendTo(ul);
	});

    $('li:last', ul).addClass('list-end');
}
