/*
	this is ugly code. renders
*/

var ff = {
		'current_date':'',
		
		render_feed:function(json) {
			ff.feed = '';
			ff.feed = json.entries;
			if (ff.feed.length !== 0) { $('feed').update(''); }
			ff.feed.each( function(item) { 				
				var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
				date = new Date(item.updated.slice(0,4) + '/' + (item.updated.slice(5,7)) + '/' + item.updated.slice(8,10));
				item.date = months[date.getMonth()] + ' ' + date.getDate() + ', ' + date.getFullYear();				
				item.time = item.updated.slice(11,19);
				ff.render_item(item); 				
			} );			
			if (ff.feed.length !== 0) {
				$('feed').insert('</div>'); // close out div from render_item calls
			}
		},
				
		/*
			render an item and if the item is first for a date, show that date first
		*/
		render_item:function(item) {
			if (item.date !== ff.current_date) {
				ff.current_date = item.date;
				$('feed').insert('<div><h4>'+ff.current_date+'</h4></div>');
			}
		
			var item_html = '';
			switch(item.service.id) {
				case "flickr": { item_html = ff.render_flickr(item); break; }
				case "twitter": { item_html = ff.render_twitter(item); break; }
				case "delicious": { item_html = ff.render_delicious(item); break; }
				case "blog": { item_html = ff.render_blog(item); break; }
				case "youtube": {item_html = ff.render_youtube(item); break; }
				default: { item_html = ff.render_unknown(item); }
			}			
			$('feed').insert(item_html);
		},
		
		/* 
			the rest of the methods are used to format json string for a variety of 
			services found aggregated in friend feed
			
			there should be a better way of storing this stuff in an associative array
			and just create the templates from strings on the fly. the main reason i don't like it is
			the template is the only thing that changes from method to method
		*/
		render_flickr:function(item) {			
			
			var content = item.media;
			var length = content.length;
			var returnstring = '';
			for (i = 0; i < length; i++) {
				var media = item.media[i];
				var thumbnail = media.thumbnails;
				var showlink = item.service.profileUrl + '' + thumbnail[0].url.match(/\/(\d*)_/)[1];
				item.url = thumbnail[0].url;
				var template = new Template('<div style="float:left;margin-right: 5px"><a href="'+showlink+'"><img src="' + item.url + '"></a></p></div>');
				returnstring += template.evaluate(item);
			}

			return '<div class="entry flickr"><p class="text">' + returnstring + '<span class="via" style="float:left;clear:left">via ' + item.service.name + '</span></div>';
		},
		
		render_youtube:function(item) {
			var media = item.media[0];
			var thumbnail = media.thumbnails;
			item.url = thumbnail[0].url;
			var template = new Template('<div class="entry youtube"><p class="text"><a href="#{link}"><img src="' + item.url + '"></a></p><p class="when">#{time} GMT</p><span class="via">via #{service.name}</span></div>');
			return template.evaluate(item);
		},

		render_twitter:function(item) {
			var template = new Template('<div class="entry twitter"><p class="text"><a href="#{link}">#{title}</a></p><p class="when">#{time} GMT</p><span class="via">via #{service.name}</span></div>');
			return template.evaluate(item);
		},
		
		render_delicious:function(item) {
			var template = new Template('<div class="entry delicious"><p class="text"><a href="#{link}">#{title}</a></p><p class="when">#{time} GMT</p><span class="via">via #{service.name}</span></div>');
			return template.evaluate(item);
		},
		
		render_blog:function(item) {
			var template = new Template('<div class="entry blog"><p class="text"><a href="#{link}">#{title}</a></p><p class="when">#{time} GMT</p><span class="via">from #{user.name}</span></div>');
			return template.evaluate(item);
		},
		

		
		render_unknown:function(item) {
			var template = new Template('<div class="entry unknown">#{time} You need a template for #{service.id}\'s! #{title}<p class="when">#{time}</p><span class="via">via #{service.name}</span></div>');
			return template.evaluate(item);
		}
}