
/*
 * The facebook_onload statement is printed out in the PHP. If the user's logged in
 * status has changed since the last page load, then refresh the page to pick up
 * the change.
 *
 * This helps enforce the concept of "single sign on", so that if a user is signed into
 * Facebook when they visit your site, they will be automatically logged in -
 * without any need to click the login button.
 *
 * @param already_logged_into_facebook  reports whether the server thinks the user
 *                                      is logged in, based on their cookies
 *
 */
function facebook_onload(already_logged_into_facebook) {
  // user state is either: has a session, or does not.
  // if the state has changed, detect that and reload.
  FB.ensureInit(function() {
      FB.Facebook.get_sessionState().waitUntilReady(function(session) {
          var is_now_logged_into_facebook = session ? true : false;

          // if the new state is the same as the old (i.e., nothing changed)
          // then do nothing
          if (is_now_logged_into_facebook == already_logged_into_facebook) {
            return;
          }

          // otherwise, refresh to pick up the state change
          refresh_page();
        });
    });
}

/*
 * Our <fb:login-button> specifies this function in its onlogin attribute,
 * which is triggered after the user authenticates the app in the Connect
 * dialog and the Facebook session has been set in the cookies.
 */
function facebook_login_ready() {
  // In this app, we redirect the user back to index.php. The server will read
  // the cookie and see that the user is logged in, and will deliver a new page
  // with content appropriate for a logged-in user.
  //
  // However, a more complex app could use this function to do AJAX calls
  // and/or in-place replacement of page contents to avoid a full page refresh.
  refresh_page();
}

/*
 * Do a page refresh after login state changes.
 * This is the easiest but not the only way to pick up changes.
 * If you have a small amount of Facebook-specific content on a large page,
 * then you could change it in Javascript without refresh.
 */
function refresh_page() {
  window.location = 'index.php';
}

/*
 * Prompts the user to grant a permission to the application.
 */
function facebook_prompt_permission(permission) {
  FB.ensureInit(function() {
    FB.Connect.showPermissionDialog(permission);
  });
}

/*
 * Show the feed form. This would be typically called in response to the
 * onclick handler of a "Publish" button, or in the onload event after
 * the user submits a form with info that should be published.
 *
 */
function facebook_publish_feed_story(form_bundle_id, template_data) {
  // Load the feed form
  FB.ensureInit(function() {
          FB.Connect.showFeedDialog(form_bundle_id, template_data);
          //FB.Connect.showFeedDialog(form_bundle_id, template_data, null, null, FB.FeedStorySize.shortStory, FB.RequireConnect.promptConnect);

      // hide the "Loading feed story ..." div
      ge('feed_loading').style.visibility = "hidden";
  });
}

/*
 * If a user is not connected, then the checkbox that says "Publish To Facebook"
 * is hidden in the "add run" form.
 *
 * This function detects whether the user is logged into facebook but just
 * not connected, and shows the checkbox if that's true.
 */
function facebook_show_feed_checkbox() {
  FB.ensureInit(function() {
      FB.Connect.get_status().waitUntilReady(function(status) {
          if (status != FB.ConnectState.userNotLoggedIn) {
            // If the user is currently logged into Facebook, but has not
            // authorized the app, then go ahead and show them the feed dialog + upsell
            checkbox = ge('publish_fb_checkbox');
            if (checkbox) {
              checkbox.style.visibility = "visible";
            }
          }
        });
    });
}

/*
 * Save user Extended permission
 */
function facebook_permission_dialogbox(permission, obj){
  FB.ensureInit(function() {
	FB.Connect.showPermissionDialog(permission, function(perms) {
	   if (!perms) {
		 obj.checked = false;
		 
	   } else {
		 obj.checked = true;
	   }
		if(document.getElementById('fb_setting_window')){
			document.getElementById('fb_setting_window').style.display = 'none';
		}	   
	});

  });
}

/*
 * Save user Event permission
 */
function save_Event_permission_dialogbox(permission, obj){
  FB.ensureInit(function() {
	FB.Connect.showPermissionDialog(permission, function(perms) {
	   if (!perms) {
			obj.checked = false;
			obj.value = 0;
			if(document.getElementById('fb_setting_window')){
				document.getElementById('fb_setting_window').style.display = 'none';
			}												
		 		 
	   } else {
		get_UserPage(permission, obj);	
	   }
	});

  });
}

/*
 * Save user Comment permission
 */
function save_comment_permission_dialogbox(permission, obj){
  FB.ensureInit(function() {
	FB.Connect.showPermissionDialog(permission, function(perms) {
	   if (!perms) {
			obj.checked = false;
			obj.value = 0;
			if(document.getElementById('fb_setting_window')){
				document.getElementById('fb_setting_window').style.display = 'none';
			}												
		 		 
	   } else {
		get_UserPage(permission, obj);	
	   }
	});

  });
}

function createFB_userlogin(permission, obj){
	FB.Connect.requireSession( function(){
		if(document.getElementById('fb_setting_window')){
			document.getElementById('fb_setting_window').style.display = 'block';
		}	
		FB.ensureInit(function() {
			FB.Connect.showPermissionDialog(permission, function(perms) {
				if (!perms) {
					obj.checked = false;
					obj.value = 0;
					if(document.getElementById('fb_setting_window')){
						document.getElementById('fb_setting_window').style.display = 'none';
					}												
				}else{
					get_UserPage(permission, obj);
				}
				
			});
		});
	},
	function(){
		obj.checked = false;
		obj.value = 0;
		if(document.getElementById('fb_setting_window')){
			document.getElementById('fb_setting_window').style.display = 'none';
		}		
	}	
	);
}
function get_other_user_login(permission, obj){
	document.getElementById('fb_profile_page').style.display = 'none';
	if(document.getElementById('fb_setting_window')){
		document.getElementById('fb_setting_window').style.display = 'block';
	}
	FB.Connect.logout(
		function(){
		createFB_userlogin(permission, obj);
	});
}

/*
 * Save user Voting permission
 */
function save_voting_permission_dialogbox(permission, obj){
  FB.ensureInit(function() {
	FB.Connect.showPermissionDialog(permission, function(perms) {
	   if (!perms) {
		obj.checked = false;
		obj.value = 0;
		if(document.getElementById('fb_setting_window')){
			document.getElementById('fb_setting_window').style.display = 'none';
		}												
		 
	   } else {
		get_UserPage(permission, obj);
	   }

	});

  });
}

function get_UserPage(permission, obj){
	if(document.getElementById('lbl_posting_container')){
		document.getElementById('lbl_posting_container').style.color = "#000000";
	}
	if(document.getElementById('fb_setting_window')){
		document.getElementById('fb_setting_window').style.display = 'block';
	}
	obj.checked = true;
	obj.value = 1;
	$('#fb_profile_page').html('');
	if(document.getElementById('fb_profile_page')){
		document.getElementById('fb_profile_page').style.display = 'block';
	}				
	document.getElementById('page_loader').style.display = 'block';					
	var url = MP_ROOTPATH+'facebook/get_profilepage.php';
	$.post(url, { action: "getUserPage", clickedObjId: obj.id, permission: permission},
	  function(data){
		if(data != '')
		{
			$('#fb_profile_page').html(data);
			document.getElementById('page_loader').style.display = 'none';
			document.getElementById('fb_profile_page').style.display = 'block';
			if(document.getElementById('fb_setting_window')){
				document.getElementById('fb_setting_window').style.display = 'none';
			}
		}
	  });
}

function initiate_Fb_login(){
	if(document.getElementById('fb_setting_window')){
		document.getElementById('fb_setting_window').style.display = 'block';
	}
	FB.Connect.requireSession( function(){
		FB.ensureInit(function() {
			document.getElementById('page_loader').style.display = 'block';
			var url = MP_ROOTPATH+'settings/change_fb_account.php';
			$.post(url, { action: "change_fb_account"},
			  function(data){
					if(document.getElementById('fb_setting_window')){
						document.getElementById('fb_setting_window').style.display = 'none';
					}
					document.getElementById('page_loader').style.display = 'none';
				if(data != '')
				{
					if(document.getElementById('fb_changeaccount_alert_popup')){
						$('#fbalert_changeaccount_popup_content').html(data);
						document.getElementById('fb_changeaccount_alert_popup').style.display = 'block';
					}	
				}
			  });
		});
	},
	function(){
		document.getElementById('page_loader').style.display = 'none';
		if(document.getElementById('fb_setting_window')){
			document.getElementById('fb_setting_window').style.display = 'none';
		}	
	}	
	);
}

function destroy_FB_usersession(){
	if(document.getElementById('fb_setting_window')){
		document.getElementById('fb_setting_window').style.display = 'block';
	}
	FB.Connect.logout(
		function(){
		initiate_Fb_login();
	});
}