/*
 * A simple JQuery plugin for an RSS-fed news box
 *
 * @author Francesco Vivoli <f.vivoli@gmail.com> - http://atalayasec.org	
 * Based on code found on the JQuery mailing list
 */
(function($) {
	
/**
 * Configure the news box container with url, maximum number of posts
 * to be fetched and their text length.
 * @example $('#newsbox').feedreader({
 *		targeturl: 'http://blogs.atalayasec.org/atalaya/?feed=rss2',
 *		items: 3,
 *		descLength: 15
 *	});
 * @desc fill the #newsbox element with at most 3 posts taken from the above url, and showig
 * a teaser of at most 15 words.
 *	
 */	
$.fn.feedreader = function(options) {
	var defaults = {
		targeturl: 'feedproxy.php?url=http://feeds2.feedburner.com/TheKeks',
		items: 4,
		descLength: 15
	}
	if(!options.targeturl)	return false;
	var opts = $.extend(defaults, options);
	$(this).each(function(){
			var container = this;
			$.get(opts.targeturl,function(xml){
					var posts=[];
					var i=0;
					$("item", xml).each(function(){
									if(i>opts.items-1)	return;
									var post={};
									$(this).find("guid").each(function(){
										post.link=getNodeText(this);
									});
									$(this).find("title").each(function(){
										post.title=getNodeText(this);	
									/*alert("Cao");*/
									});
									$(this).find("pubDate").each(function(){
										post.date=getNodeText(this);
									});
									$(this).find("description").each(function(){
										var t=getNodeText(this);						
										t=t.substr(7,t.length-9);
										post.desc=trimtext(t,opts.descLength)+'...';
									});
									posts[i++]=post;
					 });
					writeposts(container,posts);					
				
			})
	});	
	
};

function trimtext(text,length){
	var t = text.replace(/\s/g,' ');
	var words = t.split(' ');
	if(words.length<=length)	return text;
	var ret='';
	for(var i=0;i<length;i++){
		ret+=words[i]+' ';
	}
	return ret;
}

function writeposts(container,posts){
	$(container).empty();
	var html = '<div>';
	for(var k in posts){
		html+=format(posts[k])
	}
	html += '</div>';
	$(container).append(html);
}

function extract_day(date)
	{return date.substr(5,2);
	}
	
function extract_month(date)
	{var month=date.substr(8,3);
	switch(month)
		{case 'Jan': return 'Januar';
			break;
		case 'Feb': return 'Februar';
			break;
		case 'Mar': return 'Mart';
			break;
		case 'Apr': return 'April';
			break;
		case 'May': return 'Maj';
			break;
		case 'Jun': return 'Jun';
			break;
		case 'Jul': return 'Jul';
			break;
		case 'Aug': return 'Avgust';
			break;
		case 'Sep': return 'Septembar';
			break;
		case 'Oct': return 'Oktobar';
			break;
		case 'Nov': return 'Novembar';
			break;
		case 'Dec': return 'Decembar';
			break;
		default:	return 'nothing';
		}
	}
	
function format(post){
	var html='<div class="span-9 last date_block"><div class="span-2 date_field purple_color"><div class="span-2 date_day">'+extract_day(post.date)+'</div><div class="clear2"></div><div class="span-2 date_month">'+extract_month(post.date)+'</div></div>';
	html+='<div class="span-7 last"><div class="span-7 last"> <h2 class="right_column">'+post.title+'</h2></div>';
	html+='<div class="span-7 last">'+post.desc+'<a href="'+post.link+'" target="_blank"><span class="purple_color">>></span></a></div></div></div>';
	return html;	
}

function getNodeText(node)
{
        var text = "";
        if(node.text) text = node.text;
        if(node.firstChild) text = node.firstChild.nodeValue;
        return text;
}

})(jQuery);
