(function(jQuery) {
	
	jQuery.fn.fbConnectButton = function(settings) {
		
		settings = jQuery.extend(true, {
					
									fbInitSettings:		{
															appId:	null,               // Facebook-App-ID
															cookie:	true, 				// enable cookies to allow the server to access the session
															status:	true, 				// check login status
															xfbml:	true,				// parse XFBML
                                                            oauth:  true
															
														},
											
									permissions: 		[],
									
									text:				"Connect with Facebook",
									
									registrationURL: 	"",
									onLoginEvent: 		"location.href='/fb/'",
									
									fbInitTimeout: 		200,
									fbInitTrials: 		10,
                                    fbLanguage:         "en_US"
							
								}, settings || {});
		
		var isInitialized 	= false;
		var initTrial 		= 0;
		
		var $body 			= jQuery("body");
		
		if (0 === jQuery("#fb-root").length) {
		
			var $root = jQuery("<div />");
			$root.attr("id", "fb-root");
	
			$body.append($root);
		}
		
		if (!window.FB) {
			
			var $script = jQuery("<script />");
			
			$script.attr("type", "text/javascript");
			$script.attr("src", "http://connect.facebook.net/" + settings.fbLanguage + "/all.js");
			
			$body.append($script);
			
		}
		
		var initialize = function() {
			
			if (true === isInitialized || settings.fbInitTrials < initTrial) {
				return false;
			}
			
			// Facebook initalisieren
			if (!window.FB) {
			
				window.setTimeout(function() {
					initialize();
				}, settings.fbInitTimeout);
				
				initTrial += 1;
				
			} else {
				window.FB.init(settings.fbInitSettings);
				isInitialized = true;
			}
			
		};
		
		initialize();
		
		var $button = jQuery("<fb:login-button></fb:login-button>");
		
		$button.text(settings.text);
				
		$button.attr("perms", settings.permissions.join(","));
		$button.attr("registration-url", settings.registrationURL);
		$button.attr("on-login", settings.onLoginEvent);
		
		// Button(s) einfuegen
		return this.each(function() {
			
			var $target = jQuery(this);		
			
			$target.append($button.clone());
			
		});
		
	};
		
})(jQuery);
