/**
 * Embed your rss everywhere!
 * @author Alberto Bottarini <alberto.bottarini@gmail.com>
 */
(function(jq) {
	var asArray = function(a) {
		return Array.prototype.slice.call(a,0);
	}
	jq.delegate = function(func, scope, params, override) {
		return function() {
			func.apply(scope, override ? params : asArray(arguments).concat(params));
		}
	}	
	jq.callback = function(func, params, override) {
		return jq.delegate(func, this, params, override);
	}
})(jQuery);

function embedRss(options) {
	var feedpointer=new google.feeds.Feed(options.feedUrl);
	feedpointer.setNumEntries(100);
	feedpointer.load($.callback(displayfeed, [options]));
	window.setTimeout($.callback(embedRss, [options], true), options.timeout);
}

function displayfeed(result, options){ 
	var entries = result.feed.entries;
	var toAppend = "", index;
	$.each(entries, function(i) {
		if(i==0 || i%options.numFeeds == 0) {
			toAppend += "<li class='rss-group'><ul>";
		} 
		toAppend += "<li class='rss-item' ><table width='100%' height='100%' ><tr><td valign='middle' height='100%' ><a href='"+this.link+"' target='_blank'>"+fixRssTitle(this.title)+"</a></td></tr></table></li>";
		//toAppend += "<li class='rss-item'><a href='"+this.link+"' target='_blank'>"+fixRssTitle(this.title)+"</a></li>";
		if(i==(options.numFeeds-1) || (i-(options.numFeeds-1))%options.numFeeds == 0) {
			toAppend += "</ul></li>";
		}
		index = i%options.numFeeds;
	});
	if(index < options.numFeeds) {
		for(i = index+1; i<options.numFeeds; i++) {
			toAppend += "<li class='rss-item'></li>";
		}
		toAppend += "</ul></li>";
	}
	options.container.empty();
	options.container.append(toAppend);
	options.container.removeClass("load");
	innerfade(null, options);
} 
var innerfade = function(ms, options) {
	options.container.innerfade({
		timeout: 6000,
		containerheight: (options.numFeeds * 40) + "px",
		speed: "slow"
	});
	window.setTimeout(function() {
		options.container.find("li").show();
	}, 100);
}
var fixRssTitle = function(title) {
	var defaultMaxLength = {
		upperCase: 80,
		lowerCase: 85
	}
	var maxLength = defaultMaxLength.lowerCase;
	if(title == title.toUpperCase()) maxLength = defaultMaxLength.upperCase;
	if(title.length > maxLength) {
		return title.substring(0,maxLength-5)+"[...]";
	}
	return title;
}

