/*
 * delectable 1.0 - jQuery delicious feed generator plugin
 *
 * Copyright (c) 2009 Philip Beel (http://www.theodin.co.uk/)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * Revision: $Id: jquery.delectable.js 2009-09-13 $ 
 *
 */
(function($){
	$.fn.delectable=function(options){
		var defaults={
			limit:15,
			date:true,
			tags:false,
			tagLimit:6,
			username:'philipbeel'
		};
		var options=$.extend(defaults,options);
		
		return this.each(function(options){
			var act=$(this);
			var api="http://feeds.delicious.com/v2/json/";
			var count="?count=";
			$.getJSON(api+defaults.username+count+defaults.limit+"&callback=?",act,
				function(data) { 
					$.each(data,function(i,item){
						if(i == 0) {
							$(act).prepend('<ul class="deliciousList"><li class="delicious_content_'+i+'">');
						}else{
							$('.deliciousList').append('<li class="delicious_content_'+i+'">');
						}
					$('.delicious_content_'+i+'').append('<span class="delicious_link_'+i+'">'+item.u.replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig,'<a href="$&">$&</a> '));
					
					if(defaults.tags == true){
						var tagged = item.t;
						$.each(tagged,function(n,val) { 
							if(n <= defaults.tagLimit) {
								$('.delicious_content_'+i).append('<a class="tag" title="'+val+'"> '+val+'</a>');
							}
						});
					}
					if(defaults.date == true){
						$('.delicious_content_'+i).append('<small> '+item.dt.substr(0,10)+'</small>');
					}
				});
				$('a.tag').live('click', function() {
					getTags($(this).attr('title'))
				});
			});
			
			function getTags(newTag){ 
				var newApi="http://feeds.delicious.com/v2/json/tags/philipbeel";
				$.getJSON("http://feeds.delicious.com/v2/json/tag/"+newTag+count+defaults.limit+"&callback=?",act,
				function(data) {
					$(act).empty();
					$.each(data,function(num,elem){
					if(num == 0) {
						$(act).prepend('<ul class="deliciousList"><li class="delicious_content_'+num+'">');
					} else {
						$('.deliciousList').append('<li class="delicious_content_'+num+'">');
					}	
					$('.delicious_content_'+num+'').append('<span class="delicious_link_'+num+'">'+elem.u.replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig,'<a href="$&">$&</a> '));
					if(defaults.tags == true){
						var moreTagged = elem.t;
						$.each(moreTagged,function(n,val) {
							if(val == newTag) {
								if(n <= defaults.tagLimit) {
									$('.delicious_content_'+num).append('<a class="tagged" title="'+val+'"> '+val+'</a>');
								}
							} else {
								if(n <= defaults.tagLimit) {
								$('.delicious_content_'+num).append('<a class="tag" title="'+val+'"> '+val+'</a>');
								}
							}
						});
					}
					if(defaults.date == true){
						$('.delicious_content_'+num).append('<small> '+elem.dt.substr(0,10)+'</small>');
					}
					});
				});
			}
		});
	}
})(jQuery);
