/**
 *  Plugin which renders the YouTube channel videos list to the page
 *  @author:  H. Yankov (hristo.yankov at gmail dot com)
 *  @version: 1.0.0 (Nov/27/2009)
 *	http://yankov.us
 */

 var __mainDiv;
 var __preLoaderHTML;
 var __opts;
 
 function __jQueryYouTubeChannelReceiveData(data) {
	$.each(data.feed.entry, function(i,e) {
		
		var outputDiv = $("<div />").addClass("thevideo");
		var outputHeader = $("<h3 />");
		var outputLink = $("<a></a>").attr("href", e.media$group.media$content[0].url).attr("title", e.media$group.media$title.$t).addClass("youtubechannelview cboxElement").colorbox({iframe:true, innerWidth:640, innerHeight:385});
		var outputImage = $("<img />").attr("src",e.media$group.media$thumbnail[0].url);
	
		var outputHeaderLink = $("<a>" + e.media$group.media$title.$t + "</a>").attr("href", e.media$group.media$content[0].url).attr("title", e.media$group.media$title.$t).addClass("youtubechannelview cboxElement").colorbox({iframe:true, innerWidth:640, innerHeight:385});
		
		outputImage.appendTo(outputLink);
		outputLink.appendTo(outputDiv);
		
		outputHeaderLink.appendTo(outputHeader);
		outputHeader.appendTo(outputDiv);
		
		if (__opts.loadDesc) {	
			var outputDescription = $("<p>" + e.media$group.media$description.$t + "</p>")
			outputDescription.appendTo(outputDiv);
		}
		
		outputDiv.appendTo(__mainDiv);

	});
	// Remove the preloader and show the content
	$(__preLoaderHTML).remove();
	
	__mainDiv.show();
}
				
(function($) {
$.fn.youTubeChannel = function(options) {
	var videoDiv = $(this);

	$.fn.youTubeChannel.defaults = {
		userName: null,
		loadingText: "Loading...",
		loadDesc: false
	}
			
    __opts = $.extend({}, $.fn.youTubeChannel.defaults, options);
	
	return this.each(function() {
		if (__opts.userName != null) {			
			videoDiv.append("<div id=\"channel_div\"></div>");
			__mainDiv = $("#channel_div");
			__mainDiv.hide();
			
			__preLoaderHTML = $("<p class=\"loader\">" + __opts.loadingText + "</p>");
			videoDiv.append(__preLoaderHTML);
			
			// TODO: Error handling!
			$.getScript("http://gdata.youtube.com/feeds/api/users/" + __opts.userName + "/uploads?alt=json&callback=__jQueryYouTubeChannelReceiveData");
		}
	});
};
})(jQuery);
