/*----------------------------------------------------------
	Name:			GitHub Repo Fetcher
	Code:			Matt Goucher
	Date:			November 21st 2011
----------------------------------------------------------*/
(function( $ ){
	$.fn.GitHubUser = function( options ) {

		var	settings = $.extend(true, settings, $.fn.GitHubUser.defaults, options),
				container = this;
		
		function buildElements ( object ) {

			// Don't Show Forked Repos
			if ( !settings.showForks && object.fork ) { return; }

			var	li		=		$('<li class="repo">')
						.append('<strong>' + object.name + '</strong>'),

					desc	=		$('<span class="more-info">')
						.append(object.description)
						.appendTo(li),
					
					url	=		$('<a class="git-url">View Repo on GitHub</a>')
						.attr('href', object.html_url)
						.appendTo(desc);

			container
				.append(li);

		}
		
		function gitGetRepos () {
			$.ajax({
				type: "GET",
				dataType: "jsonp",
				cache: false,
				url: 'https://api.github.com/users/' + settings.user + '/repos',
				success: function(response) {

					// Slow Down, There is an Error
					if ( errors (response) ) {return;}

					var data = response.data,
						 count = data.length;

					for ( i = 0; i < settings.count; i++ ) {
						buildElements ( response.data[i] );
					}

				}
			});
		}
		
		function errors ( response ) {
			if ( response.meta.status == 200 ) { return false; }

			if ( response.message ) {
				container
					.append(response.message);
			}else{
				container
					.append('An unknown error occured');
			}

			// There Was An Error
			return true;

		}
		
		gitGetRepos();
		
	};
	$.fn.GitHubUser.defaults = {
		'client_id'		:		false,
		'showForks'		:		false,
		'count'			:		1,
	}
})(jQuery);
