google.load("feeds", "1");

var url = [
	"http://feeds.japan.cnet.com/cnet/rss",
	"http://feeds.japan.cnet.com/cnet/news",
	"http://rss.rssad.jp/rss/itmnews/2.0/news_nettopics.xml",
	"http://rss.rssad.jp/rss/itmnews/2.0/news_venture.xml",
	"http://rss.rssad.jp/rss/markezine/new/20/index.xml",
	"http://feeds.feedburner.com/web-tan"
];

var unnecessary = [
	"ブックレビュー",
	"AD:",
	"PR:"
];

var num_entries = 5;
var entries = [];
var entries_display = [];
var current = 0;
var num_display = 0;
var title_buf = [];
var callback = null;

function showRss(count, func) {
	num_display = count;
	callback = func;
    loadRss();
}

function loadRss() {
	var feed = new google.feeds.Feed(url[0]);
    feed.setNumEntries(num_entries);
    feed.load(next);
}

function next(result){
    if (!result.error) {
        for (var i = 0; i < result.feed.entries.length; i++) {
            entries.push(result.feed.entries[i]);
        }
    }
    if (url.length > current) {
    	var feed = new google.feeds.Feed(url[current++]);
    	feed.load(next);
    } else {
    	onComplete();
    }
}

function cmp(a, b) {
	var date1 = new Date(b.publishedDate);
	var date2 = new Date(a.publishedDate);
	return date1.getTime() - date2.getTime();
}

function onComplete(){
        entries.sort(cmp);

        var cnt = (num_display < entries.length) ? num_display : entries.length;

		var i = 0;
		entry: while (i < entries.length) {
			var entry = entries[i];
			var title = entry.title;
			var link = entry.link;
			var content = entry.contentSnippet;
			var publishedDate = formatDate(entry.publishedDate);

			for (var j = 0; j < unnecessary.length; j++) {
				if (title.indexOf(unnecessary[j]) >= 0) {
					++i;
					continue entry;
				}
			}

			++i;
			var tmp = {
				title: title,
				link: link,
				content: content,
				publishedDate: publishedDate
			};

			for(var j = 0; j < title_buf.length; j++) {
				if (title_buf[j] == title) {
					continue entry;
				}
			}

			title_buf.push(title);
			entries_display.push(tmp);

			if (entries_display.length >= cnt) {
				break;
			}
		}

		callback(entries_display);
}

function formatDate(str){
    var myDate = new Date(str);
    var year = myDate.getFullYear();
    var month = myDate.getMonth() + 1;
    if(month < 10) {
    	month = "0" + month;
    }
    var day = myDate.getDate();
    if(day < 10) {
    	day = "0" + day;
    }
    var hour = myDate.getHours();
    if(hour < 10) {
    	hour = "0" + hour;
    }
    var minute = myDate.getMinutes();
    if(minute < 10) {
    	minute = "0" + minute;
    }
    var date = year + "/" + month + "/" + day + " " + hour + ":" + minute;
    return date;
}

