/**
 * Falls der User noch nicht bei Facebook Connect eingeloggt ist, 
 * öffnet sich das Facebook Login Fenster. 
 * Falls User bereits bei Facebook eingeloggt, wird die Facebook Session ID
 * an das Inputfeld mit Id "FieldFacebookSID" übergeben und update darauf ausgeführt,
 * damit entsprechender Ajaxrequest angetriggert wird.
 * @return 
 */
function fbConnect() {
	FB.ensureInit ( function () { 
		if (!FB.Connect.get_loggedInUser()) {
			FB.Connect.requireSession(null, true);
			FB.Facebook.get_sessionState().waitUntilReady(fbConnect); 
		} else {
			//alert(FB.Facebook.apiClient.get_session().session_key);
			//alert(FB.Connect.get_loggedInUser());		
			$(".FieldFacebookSID").val(FB.Facebook.apiClient.get_session().session_key).change();
		}
		return false;
	});
}

/**
 * Loggt den User bei Facebook aus.
 * @return
 */
function fbLogout(){
	FB.ensureInit ( function () { 
		FB.Connect.logout(redirectToLogout);
	});
}

/**
 * Redirected den User auf die Logout Page.
 * Findet im JS statt in Java statt, da sonst Timingprobleme bei "Logout from Facebook and GMX"
 * @return
 */
function redirectToLogout(){
	window.location = "logout.html";
}

/**
 * Initalisierung der Facebookapplication, damit Cookieinformationen initialisiert werden können.
 * @param facebook_api_key_holder Apikey der Facebookapplikation
 * @param facebook_receiver_page_holder Receiverpage der Facebookapplication.
 * Dokumentation to receiver page : http://wiki.developers.facebook.com/index.php/Cross_Domain_Communication_Channel
 * @return
 */
function fbInit(facebook_api_key_holder, facebook_receiver_page_holder){
	FB.init(facebook_api_key_holder, facebook_receiver_page_holder);	
}

/**
 * Zeigt den Dialog zur Freigabe des Rechts Photo Upload. 
 * @return
 */
function showPermissionPhotoUploadDialog(){
	FB.Connect.showPermissionDialog('photo_upload', updateFacebookPermissionsDialogClosedField, false, null);
}

/**
 * Zeigt den Dialog zur Freigabe der uebergebenen facebook extended permissions. 
 * @return
 */
function showPermissionDialog(commaSeparatedPermissions){
	FB.Connect.showPermissionDialog(commaSeparatedPermissions, updateFacebookPermissionsDialogClosedField, false, null);
}

/**
 * Zeigt den Dialog zur Freigabe der Rechte stream_read und stream_write.
 * @return
 */
function showPermissionStreamDialog(){
	FB.Connect.showPermissionDialog('read_stream,publish_stream', updateFacebookPermissionsDialogClosedField, false, null);
}

/**
 * Updated das Feld FieldFacebookPermissionsDialogClosed,
 * damit die onUpdate() Funktion in Java aufgerufen wird.
 * @return
 */
function updateFacebookPermissionsDialogClosedField(){
	$(".FieldFacebookPermissionsDialogClosed").val("true").change();
}
