import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.Button;

class Screens.LoggingInScreen extends Screen
{	
	private var loginFailureResult:Button;		
	private var cancelFromLoggingIn:Button;		
		
	public function LoggingInScreen() 
	{
		ConsoleWindow.Trace("Constructing LoggingInScreen");						
		
		mScreenId = ScreenID.LOGGING_IN;		
		mScreenTabId = ScreenTab.ID_LOGIN;		
	}
	
	public function VOnFinishedLoading():Void
	{		
		loginFailureResult.visible = false;

		//Add click event for buttons
		cancelFromLoggingIn.addEventListener("click", this, "cancelFromLoggingInFunc");
				
		//Add callbacks for C++
		ExternalInterface.addCallback("c2f_NotifyLoginResultFailure", this, c2f_NotifyLoginResultFailure);
		ExternalInterface.addCallback("c2f_NotifyLoginResultSuccess", this, c2f_NotifyLoginResultSuccess);
		
		super.VOnFinishedLoading();
	}
	
	function cancelFromLoggingInFunc():Void
	{
		ExternalInterface.call("f2c_DisconnectFromServer");
		//_root.gotoAndPlay("Disconnected");
		LobbyInterface.Instance.ShowScreen( ScreenID.CONNECTION );
	}

	function c2f_NotifyLoginResultFailure(reasonIdentifier:String, bannedReason:String, whenBanned:String, bannedExpiration:String ):Void
	{
		switch (reasonIdentifier)
		{
			case "Client_Login_HANDLE_NOT_IN_USE_OR_BAD_SECRET_KEY":
			break;
			case "Client_Login_CANCELLED":
			break;
			case "Client_Login_CABLE_NOT_CONNECTED":
			break;
			case "Client_Login_NET_NOT_CONNECTED":
			break;
			case "Client_Login_BANNED":
			// banned parameters used here, not otherwise
			break;
			case "Client_Login_CDKEY_STOLEN":
			break;
			case "Client_Login_EMAIL_ADDRESS_NOT_VALIDATED":
			break;
			case "Client_Login_BAD_TITLE_OR_TITLE_SECRET_KEY":
			break;
		}
				
		loginFailureResult.visible=true;
		loginFailureResult.label=reasonIdentifier;
	}

	function c2f_NotifyLoginResultSuccess( ):Void
	{
		//_root.gotoAndPlay("LoggedIn");
		LobbyInterface.Instance.ShowScreen( ScreenID.LOGGED_IN );
	}
	
}