/*
 * jQuery jfeed extension 0.2
 * 
 * Copyright (c) 2009 Gen Ichino
 * 
 * requries jfeed plugin made by Jean-François Hovinne - http://www.hovinne.com/
 * 
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */
(function($){
	
	if ($.isFunction($.fn.outerHtml)) {
		$.fn.extend({
			outerHtml: function(replacement){
				if (replacement) {
					return this.each(function(){
						$(this).replaceWith(replacement);
					});
				}
				
				var $temp = $("<div/>").append($(this).clone());
				var html = $temp.html();
				//clean up
				$temp.remove();
				return html;
			}
		});
	};
	
	var loaderURL = 'images/ajax_loader.gif';
	var $loader = $('<div style="vertical-align:middle;text-align:center;"><img src="' + loaderURL + '"/></div>');
		
	jfeedExt = {
		// new list
		createNewList : function(options){
			
			options = $.extend({
					num:10,
					icon:'',
					even:'',
					odd:''
			}, options);
					
			var successCallback = options.success;
			var length = this.length;
					
			return this.each(function(index){
				var $this = $(this);
				var loader = $loader.clone();
				$this.append(loader);
				
				options.success = function(feed){
					
					loader.remove();
													
					var html = '<ul>';
					$(feed.items).each(function(index){
						//limit number of articles
						if(index >= options.num) return false;
						//
						var $content = $(this.content);
						var corporate = $content.find('.corporate').eq(0).text();
						var icon = ($.trim(options.icon) != '') ? '<img src="' + options.icon + '" />' : '';
						html += '<li>' + icon + '<a href="' + this.link + '" target="_blank">' + corporate + '</a></li>';
					});
					
					html += '</ul>';
					$this.append(html);
					
					var $ul = $this.find('ul');
					$ul.find('li:even').addClass(options.even)
						.end()
						.find('li:odd').addClass(options.odd);
					
					if(index == (length - 1)){
						if ($.isFunction(successCallback)) {
							successCallback(feed);
						}
					}
				};
				
				$.getFeed(options);
			});
		},
		//recommend list
		createRecommendList : function(options){
			
			options = $.extend({
				num:10,
				even:'',
				odd:''
			}, options);
			
			var successCallback = options.success;
			var length = this.length;	
			
			return this.each(function(index){
				var $this = $(this);
				
				var loader = $loader.clone();
				$this.append(loader);
				
				options.success = function(feed){
					
					loader.remove();
					
					var items = [];
					var $ul = $('<ul/>')
					$this.append($ul);
					
					$(feed.items).each(function(index){
						//limit number of articles
						if(index >= options.num) return false;
						//
						var $content = $(this.content);
						var corporate = $content.find('.corporate').eq(0).text();
						var description = $content.find('.description').eq(0).text();
						
						var $li = $('<li/>');
						$li.append('<strong><a href="' + this.link +'" target="_blank">' + corporate + '</a></strong><br /><a href="' + this.link + '" target="_blank">' + description +'</a>')
						$li.css({opacity:0});			
						$ul.append($li);
						
						items[items.length] = $li;
					});
					
					//get temp height
					//var height = $this.height();
					//$this.css({height:height});
					/*
					$(items).each(function(){
						$(this).hide();
					});
					*/
					
					var $ul = $this.find('ul');
					$ul.find('li:even').addClass(options.even)
						.end()
						.find('li:odd').addClass(options.odd)
						.end()
						//.hide()
						//.fadeIn();
					;
					
					$(items).each(function(index){
						this.animate({opacity:0}, 80 * index)
							.animate({opacity:1}, 500)
							;
					});
					
					
					/*
					//animate
					$this.animate({height:height}, 700, "swing", function(){
						$(items).each(function(){
							this.fadeIn();
						});
					});
					*/
										
					//callback
					if(index == (length - 1)){
						if ($.isFunction(successCallback)) {
							successCallback(feed);
						}
					};
				};
				
				$.getFeed(options);
			});
		},
		//pickup list
		createPickupList : function(options){
			options = $.extend({
				num:10,
				itemClass:'record',
				imageClass:'adPict',
				imageWidth:94,
				imageHeight:56,
				textClass:'adTxt'
			}, options);
			var successCallback = options.success;
			var length = this.length;
			
			return this.each(function(index){
				
				var $this = $(this);
				var loader = $loader.clone();
				$this.append(loader);
				
				options.success = function(feed){
					
					loader.remove();
					
					var items = [];
					$(feed.items).each(function(index){
						//limit number of articles
						if(index >= options.num) return false;
						//
						var $content = $(this.content);
						var corporate = $content.find('.corporate').eq(0).text();
						var favor = $content.find('.favor').eq(0).text();
						var icon = ($.trim(options.icon) != '') ? '<img src="' + options.icon + '" />' : '';
						
						var $image = $($content.find('.image').eq(0).html());
						$image.attr({width:options.imageWidth, height:options.imageHeight});
						
						var $item = $('<div/>');
						$item.addClass(options.itemClass)
							.append($('<div/>').addClass(options.imageClass).append($image))
							.append($('<div/>').addClass(options.textClass).append('<p class="company"><a href="' + this.link + '" target="_blank">' + corporate + '</a></p>')
								.append('<p><a href="' + this.link +'" target="_blank" target="_blank">' + favor  + '</a></p>')
						  	);
						$image.wrap('<a href="' + this.link + '" target="_blank"></a>');
						
						$this.append($item);
						items[items.length] = $item;
					});
					
					//var height = $this.height();
					//$this.css({height:height});
					/*
					$(items).each(function(index){
						this.animate({opacity:0}, 80 * index)
							.animate({opacity:1}, 500)
							;
					});
					*/
					//callback		
					if(index == (length - 1)){
						if ($.isFunction(successCallback)) {
							successCallback(feed);
						}
					};
				};
				
				$.getFeed(options);
			});
		}
	};
	
	$.each(jfeedExt, function(i){
		$.fn[i] = this;
	});
	
	$(function(){
		
	});
})(jQuery);

