import gfx.controls.TextArea;
import gfx.controls.Button;
import Screens.RegisterAccountScreen3;
import flash.external.*;

class Screens.ProfileScreen extends Screen
{
	private var mcEditProfile:Button;
	private var mcSaveProfile:Button;
	private var mcChange:Button;
	private var mcEditBlockList:Button;
	private var mcEditInfo:Button;
	private var tfUsername:TextField;	
	private var mcProfileImage:MovieClip;
	private var taAboutMe:TextArea;
	private var taActivities:TextArea;
	private var taInterests:TextArea;
	private var taFavoriteGames:TextArea;
	private var taFavoriteMovies:TextArea;
	private var taFavoriteBooks:TextArea;
	private var taFavoriteQuotes:TextArea;
	
	private var mEditMode:Boolean;
	
	private static var mInstance:ProfileScreen;
			
	public function ProfileScreen()
	{
		ConsoleWindow.Trace("Constructing ProfileScreen");
		
		mScreenId = ScreenID.PROFILE;
		mScreenTabId = ScreenTab.ID_PROFILE;
		
		mInstance = this;
	}
	
	public static function get Instance():ProfileScreen { return mInstance; }
	
	public function VOnFinishedLoading():Void
	{	
		//Add click event for buttons
		mcEditBlockList.addEventListener("click", this, "OnClickEditBlockList");
		mcSaveProfile.addEventListener("click", this, "OnClickSaveProfile");
		mcEditProfile.addEventListener("click", this, "OnClickEditProfile");
		mcChange.addEventListener("click", this, "OnClickedChange");
		mcEditInfo.addEventListener("click", this, "OnClickEditInfo");
		
		//Add callbacks for C++
		super.VOnFinishedLoading();
	}
	
	public function OnShow():Void
	{
		if ( !mcProfileImage.mcImageContainer.mcImage )
		{
			var imageIndex:Number = LobbyInterface.Instance.GetProfileImageIndex();
			mcProfileImage.attachMovie( "ProfileImage" + imageIndex, "mcImage", mcProfileImage.getNextHighestDepth() );			
		}
		tfUsername.text = LobbyInterface.Instance.GetUsername();
		
		EnableTextInput( false );
	}
	
	public function EnableTextInput( state:Boolean ):Void
	{
		mcEditProfile._visible = !state;
		mcSaveProfile._visible = state;
		mEditMode = state;
		taAboutMe.disabled = !state;
		taActivities.disabled = !state;
		taInterests.disabled = !state;
		taFavoriteBooks.disabled = !state;
		taFavoriteGames.disabled = !state;
		taFavoriteMovies.disabled = !state;
		taFavoriteQuotes.disabled = !state;
	}
	
	public function OnReceivedPlayerInfo():Void
	{		
		taAboutMe.text = AccountInfo.Instance.GetAboutMe();
		taActivities.text = AccountInfo.Instance.GetActivities();
		taInterests.text = AccountInfo.Instance.GetInterests();
		taFavoriteGames.text = AccountInfo.Instance.GetFavoriteGames();
		taFavoriteMovies.text = AccountInfo.Instance.GetFavoriteBooks();
		taFavoriteBooks.text = AccountInfo.Instance.GetFavoriteMovies();
		taFavoriteQuotes.text = AccountInfo.Instance.GetFavoriteQuotes();	
	}
	
	public function GetAboutMe():String 	{ return taAboutMe.text; }
	public function GetActivities():String 	{ return taActivities.text; }
	public function GetInterests():String 	{ return taInterests.text; }
	public function GetFavoriteGames():String { return taFavoriteGames.text; }
	public function GetFavoriteBooks():String { return taFavoriteMovies.text; }
	public function GetFavoriteMovies():String { return taFavoriteBooks.text; }
	public function GetFavoriteQuotes():String { return taFavoriteQuotes.text; }
	
	public function OnClickSaveProfile():Void
	{
		EnableTextInput(false);
		f2c_UpdateAccount();
	}
	
	public function OnClickEditProfile():Void
	{
		EnableTextInput( true );
	}
	
	public function OnClickedChange():Void
	{
		LobbyInterface.Instance.ShowScreen( ScreenID.CHANGE_PHOTO );		
	}
	
	public function OnClickEditBlockList():Void
	{
		LobbyInterface.Instance.ShowScreen( ScreenID.BLOCK_LIST );
	}
	
	public function OnClickEditInfo():Void
	{
		LobbyInterface.Instance.ShowScreen( ScreenID.REGISTER_ACCOUNT_PERSONAL );
	}	
	
	public function f2c_UpdateAccount():Void
	{									
		// Do not change the order the parameters are passed in as
		ExternalInterface.call("f2c_UpdateAccount",
		[
		 AccountInfo.Instance.GetFirstName(), AccountInfo.Instance.GetMiddleName(), AccountInfo.Instance.GetLastName(),
		 AccountInfo.Instance.GetRace(), AccountInfo.Instance.GetIsMale(), AccountInfo.Instance.GetHomeAddress1(),
		 AccountInfo.Instance.GetHomeAddress2(), AccountInfo.Instance.GetHomeCity(), AccountInfo.Instance.GetHomeState(),
		 AccountInfo.Instance.GetHomeCountry(),
		 AccountInfo.Instance.GetHomeZipCode(),
		 AccountInfo.Instance.GetBillingAddress1(),
		 AccountInfo.Instance.GetBillingAddress2(), AccountInfo.Instance.GetBillingCity(), AccountInfo.Instance.GetBillingState(),
		 AccountInfo.Instance.GetBillingCountry(),
		 AccountInfo.Instance.GetBillingZipCode(), AccountInfo.Instance.GetEmailAddress(),
		 AccountInfo.Instance.GetPassword(), AccountInfo.Instance.GetPasswordRecoveryQuestion(), AccountInfo.Instance.GetPasswordRecoveryAnswer(),
		 "", "", 
		 String( AccountInfo.Instance.GetAgeInDays() ),
		 GetAboutMe(),
		 GetActivities(),
		 GetInterests(),
		 GetFavoriteGames(),
		 GetFavoriteMovies(),
		 GetFavoriteBooks(),
		 GetFavoriteQuotes()
		 ]);					 
	}
}