function facebook_onlogout() 
{
	FB.Connect.logout();
}

function facebook_UPUsr()
{
	var oParam			= new Object();
	oParam.facebookId	= FB.Facebook.get_sessionState().result.uid;
	oRootEngine.setParam( oParam );
	
	oRootEngine.doAsyncTaskImp( 'user', '', 'FB.doLoginWithFlipshake',
		function ( result ) {		
			var aTemp 	= JSON.parse( result );
			if ( aTemp.LoggedInFacebook )
			{
				location.reload();
			} else {
				tb_show('Welcome to Flipshake. |Sign Up!',ABS_PATH+'?popup=FB.signup&width=480&height=614', false);
			}
		}
	);
}

function facebook_onlogin() {
	var oParam			= new Object();
	oParam.facebookId	= FB.Facebook.get_sessionState().result.uid;
	oRootEngine.setParam( oParam );
	oRootEngine.doAsyncTaskImp( 'user', '', 'doLoginFacebook', 
		function ( result ) {		
			var aTemp 	= JSON.parse( result );
			if( !aTemp.LoggedInFacebook )
			{
				tb_show('Welcome to Flipshake. |Sign Up!',ABS_PATH+'?popup=FB.signup&width=480&height=614', false);
			} else {
				enableBtn();
				tb_remove();
				loadAjaxArea(false);
			}
		}
	);
}

function doFrmFBSubmitFlipshake()
{
	var email 		= $("input[name='FB_email']", $('#_frmSignUpFB') ).val();
	var username 	= $("input[name='FB_username']", $('#_frmSignUpFB') ).val();
	var accept		= true;
	var code		= $("input[name='signup_code']", $('#_frmSignUpFB') ).val();
	
	var usrnamePat	= /\W/;
	var emailPat	= /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if ( username == '' ) {
		alert("Username is Empty!");
		$("input[name='FB_username']", $('#_frmSignUpFB') ).focus();
		return false;
	} else if ( usrnamePat.test( username ) ) {
		alert("Username contains illegal characters!");
		$("input[name='FB_username']", $('#_frmSignUpFB') ).focus();
		return false;
	} else if ( email == '' ){
		alert("Email is Empty!");
		$("input[name='FB_email']", $('#_frmSignUpFB') ).focus();
		return false;
	} else if ( !emailPat.test( email ) ){
		alert("Invalid Email Address!");
		$("input[name='FB_email']", $('#_frmSignUpFB') ).focus();
		return false;
	} else {
		var oParam			= new Object();
		oParam.username		= username;
		oParam.email		= email;
		oParam.accept		= accept;
		oParam.code			= code;
		oParam.facebookId	= FB.Facebook.get_sessionState().result.uid;

		oRootEngine.setParam( oParam );
		oRootEngine.doAsyncTaskImp( 'user','','FB.Submit',
			function ( result ) 
			{
				var aTemp 	= JSON.parse( result );
				if ( aTemp.error ){
					$('div.error').html( aTemp.error );
					$('div.error').fadeIn('slow');
				} else {
					enableBtn();
					loadAjaxArea();
					$('div.success').fadeIn('slow');
					setTimeout(function(){
						tb_show('Welcome to Flipshake.',ABS_PATH+'?popup=FB.verification&width=480&height=630', false);
					}, 2000);
					loadCompJS( oRootEngine );
				}
			}
		);
	}
}

function doLoginAlready()
{
	var username 	= $("input[name='FS_email']", $('#_frmAlready') ).val();
	var password	= $("input[name='FS_password']", $('#_frmAlready') ).val();
	
	if ( username == '' ){
		alert("Username is Empty!");
		$("input[name='FS_email']", $('#_frmAlready') ).focus();
		return false;
	} else if ( password.value == '' ){
		alert("Password is Empty!");
		$("input[name='FS_password']", $('#_frmAlready') ).focus();
		return false;
	}else{
		var oParam			= new Object();
		oParam.username		= username;
		oParam.password		= password;
		oParam.facebookId	= FB.Facebook.get_sessionState().result.uid;
		oParam.already		= true;
		
		oRootEngine.setParam( oParam );
		oRootEngine.doAsyncTaskImp( 'user','','FB.alreadyUsr',
		function ( result ) 
		{
			var aTemp 	    = JSON.parse( result );
			var msg 	    = aTemp[1];	
			if ( aTemp.LoggedInFacebook ) 
			{
				enableBtn();
				loadAjaxArea();
				if ( $("input[name='x_view']").val() == 'your_account_settings' )
				{
					location.reload();
				}else{
					tb_show('Welcome to Flipshake.',ABS_PATH+'?popup=FB.verification&width=480&height=630', false);
					loadCompJS( oRootEngine );	
				}				
			}else{
				$('div._messageLoginPwd').html(msg);
			}
		});
	}
}

function doFBSettings()
{
	var collect_flip = false;
	var create_flip  = false;
	var collect_stack  = false;
	var complete_stack  = false;
	var fb_friends  = false;
	$(":checkbox[name=fb_import_profile]", $('#FB-Settings')).each(function(){
		fb_import_profile  = this.checked;
	});
	$(":checkbox[name=collect_flip]", $('#FB-Settings')).each(function(){
		collect_flip  = this.checked;
	});
	
	$("input[name='create_flip']", $('#FB-Settings') ).each(function(){
		create_flip  = this.checked;
	});
	
	$("input[name='collect_stack']", $('#FB-Settings') ).each(function(){
		collect_stack  = this.checked;
	});	
	
	$("input[name='complete_stack']", $('#FB-Settings') ).each(function(){
		complete_stack  = this.checked;
	});	
	
	$("input[name='fb_friends']", $('#FB-Settings') ).each(function(){
		fb_friends  = this.checked;
	});
	
	var oParam				= new Object();
	oParam.facebookId		= FB.Facebook.get_sessionState().result.uid;
	oParam.import_profile	= fb_import_profile;
	oParam.collect_flip		= collect_flip;
	oParam.create_flip		= create_flip;
	oParam.collect_stack	= collect_stack;
	oParam.complete_stack	= complete_stack;
	oParam.fb_friends		= fb_friends;
	oParam.list_friends		=  $("input[name='list_friends']").val();
		
	$('p#account-facebook_submition_msg').html( "Loading..." );
	
	oRootEngine.setParam( oParam );		
	oRootEngine.doAsyncTaskImp( 'user','','FB.doSettings',
	function ( result ) {
		var aTemp 	    = JSON.parse( result );
		if( $("input[name='x_view']").val() != 'your_account_settings' )
		{
			tb_remove();
//				location.reload();	
		} else {
			$('p#account-facebook_submition_msg').html("<b>Personal information succesfully updated.</b>");
			location.reload();	
		}
	});
}

function doDisconnectFB()
{
	var oParam				= new Object();
	oParam.facebookId		= FB.Facebook.get_sessionState().result.uid;
	oRootEngine.setParam( oParam );
	oRootEngine.doAsyncTaskImp( 'user','','FB.doDisconnect',
	function ( result ) {
		var aTemp 	    = JSON.parse( result );
		if ( aTemp.sucess == 200)
		{
			$('#FB-Settings').hide();
			$('div.save').hide();
			$('#FB-Btn').show();
			location.reload();
		}
	});
}

function invitePopupFacebook()
{
	var oParam				= new Object();
	oParam.targetIds		= $("input[name=username_x]").val();
	oParam.flipId			= $("input[name=flip_id]").val();
	oRootEngine.setParam( oParam );
	oRootEngine.doAsyncTaskImp( 'user','','FB.doSendInviteFriends',
	function ( result ) {
		var aTemp 	    = JSON.parse( result );
		if ( aTemp.sucess == 200)
		{
			
			if ( !aTemp.error ) {
				if( aTemp.publish )
				{	
					var argsFB 		= JSON.parse( aTemp.publish );
//					var target_ids  = aTemp.data;
//					var target_ids  = ['1300467103','613902251'];
//					var target_ids  = new Array("1300467103", "613902251");
//					facebook_publish_feed_story( argsFB.TID, argsFB.TDATA, target_ids );
					/*facebook_invite_friends( argsFB.TDATA.url_flip );*/
				} else {
					location.reload();
				}
			} else {
				location.reload();
			}
		}
	});
}

var continuation = function() { 
	var oForm		= document.getElementById('mainForm');
	var typeForm	= (oForm.x_view) ? oForm.x_view.value : '';
	
	switch (typeForm) {
		  case 'flip_detail':
		  		location.reload();
		  break;	
		  case 'submitted_flips':
		  		window.location = document.getElementById('redir').value;
		  break;
	}
};

function facebook_publish_feed_story( form_bundle_id, template_data, friends ) 
{
  if( template_data ){
	  /**
	  	@Description: Load the feed form
	  	See also: http://wiki.developers.facebook.com/index.php/JS_API_M_FB.Connect.showFeedDialog
	  */
	  var targetIds = (friends) ? friends : null;
	  FB.ensureInit(function() {
	    	FB.Connect.showFeedDialog(form_bundle_id, template_data, targetIds, null, null, FB.RequireConnect.require, continuation);
	    	
	  });
  }
}

function facebook_invite_friends( url_element )
{
	if( url_element )
	{
		/**
			See also: http://wiki.developers.facebook.com/index.php/JS_API_M_FB.Connect.ShowShareDialog
		*/
		FB.ensureInit(function() {
			FB.Connect.showShareDialog(url_element, function(){});
		});
	}
	
}
