google.load("feeds", "1");//--- Constructorfunction CymwRSSfeeder(divid) {	this.feedlabels = [];	this.feedurls = [];	this.feeds = [];	this.feedsfetched = 0;	this.feedlimit = 8;	this.sortstring = "date";	this._categories = [];	this._icons = [];	this.feedcontainer = document.getElementById(divid);}//--- FeedするRSSのアドレス（とラベル）を追加CymwRSSfeeder.prototype.addFeed = function(Aurl, Alabel) {	this.feedurls[this.feedurls.length] = Aurl;	this.feedlabels[this.feedlabels.length] = Alabel;}//--- カテゴリ別アイコン指定を追加CymwRSSfeeder.prototype.addCate = function(Acategory, Aicon) {	this._categories[this._categories.length] = Acategory;	this._icons[this._icons.length] = Aicon;}//--- 実行CymwRSSfeeder.prototype.init = function() {	this.feedsfetched = 0;	this.feeds = [];	this.feedcontainer.innerHTML='Retrieving RSS feed(s)'	var displayer = this;	for (var i = 0; i < this.feedurls.length; i++) {		var feedpointer = new google.feeds.Feed(this.feedurls[i]);		feedpointer.load(function(label) {			return function(r) {				displayer._fetch_data_as_array(r, label);			}		}(this.feedlabels[i]));	}}//--- 日付フォーマットCymwRSSfeeder._formatdate = function(datestr) {	var itemdate = new Date(datestr)	var yy = itemdate.getFullYear();	var mm = itemdate.getMonth() + 1;	var dd = itemdate.getDate();	mm = "00" + mm;	mm = mm.substr(mm.length - 2, 2);	dd = "00" + dd;	dd = dd.substr(dd.length - 2, 2);	var parseddate = yy + "." + mm + "." + dd;	return parseddate;}//--- ソートCymwRSSfeeder._sortarray = function(arr, sortstr) {	var sortstr = (sortstr == "label") ? "ddlabel" : sortstr;	if (sortstr == "title" || sortstr == "ddlabel") {		arr.sort(function(a,b) {			var fielda = a[sortstr].toLowerCase();			var fieldb = b[sortstr].toLowerCase();			return (fielda < fieldb) ? -1			                         : (fielda > fieldb) ? 1			                                             : 0;		});	}	else {		try {			arr.sort(function(a, b) {				return new Date(b.publishedDate) - new Date(a.publishedDate)			});		}		catch(err) {}	}}//--- データFetchCymwRSSfeeder.prototype._fetch_data_as_array = function(result, ddlabel) {	var thisfeed = (!result.error) ? result.feed.entries : "";	if (thisfeed == "") {		alert("Google Feed API Error: " + result.error.message);	}	for (var i = 0; i < thisfeed.length; i++) {		result.feed.entries[i].ddlabel = ddlabel;	}	this.feeds = this.feeds.concat(thisfeed);	this._signaldownloadcomplete();}//--- 最終データCymwRSSfeeder.prototype._signaldownloadcomplete = function() {	this.feedsfetched += 1;	if (this.feedsfetched == this.feedurls.length) {		this._displayresult(this.feeds);	}}//--- 出力CymwRSSfeeder.prototype._displayresult = function(feeds) {	var rssoutput = "";	CymwRSSfeeder._sortarray(feeds, this.sortstring)	var loop_end = (feeds.length < this.feedlimit) ? feeds.length : this.feedlimit;	for (var i = 0; i < loop_end; i++) {		var title_temp = feeds[i].title;		if (title_temp.length > 8) {			title_temp = title_temp.substr(0, 8) + "...";		}		var itemdate = CymwRSSfeeder._formatdate(feeds[i].publishedDate);		var itemtitle = "<a href=\"" + feeds[i].link + "\" target=\"_new\" class=\"titlefield\">" + itemdate + " " + title_temp + "</a><br />\n";		itemtitle = itemtitle.replace("<br>", "");		itemtitle = itemtitle.replace("\n", "");		rssoutput += itemtitle+"<hr size=1>";/**///		rssoutput += title_temp + "<br>";	}	this.feedcontainer.innerHTML = rssoutput;}
