var Login = {

	create: function() {
		// sessionStorageManager.resetAllAppData();

		this.game.stage.backgroundColor = '#4d4d4d';
		this.textStyle = { font: "bold 32px Arial", fill: "#fff", align: "right", boundsAlignH: "right", boundsAlignV: "middle" };

		// keyboard shortcut
		this.keyboardShortcut = new KeyboardShortcut();
		this.keyboardShortcut.addCallback(
			Phaser.KeyCode.ESC,	// keyCode
			null,	// keyDownHandler
			(function() { this.back(); }).bind(this),	// keyUpHandler
			"login"	// callerClassName
		);
		this.keyboardShortcut.addCallback(
			Phaser.KeyCode.ENTER,	// keyCode
			null,	// keyDownHandler
			(function() { this.startMenu(); }).bind(this),	// keyUpHandler
			"start"	// callerClassName
		);

		// top ui
		var screenTopUI = new ScreenTopUI();
		screenTopUI.makeHomeButton( (function() { this.back(); }).bind(this) );
		screenTopUI.makeFullScreenButton();



		var textX = this.game.world.centerX - 320;
		this.makeMaestroNameText(textX, 200);
		this.makeNameText(textX, 300);
		this.makeEnterCodeText(textX, 360);
		if(sessionStorageManager.getMaestroName() != null) {
			this.inputTextMaestroName.canvasInput.value(sessionStorageManager.getMaestroName());
		} else {
			if(isDebugMode()) {
				this.inputTextMaestroName.canvasInput.value("삼화초");
				this.inputTextName.canvasInput.value("박지상");
				this.inputTextEnterCode.canvasInput.value("760621");
			}
		}

		if(sessionStorageManager.getMaestroID() === null)
			this.inputTextMaestroName.canvasInput.focus();
		else
			this.inputTextName.canvasInput.focus();

		this.makeStartButton(game.world.centerX, game.world.centerY + 100);
		this.makeExperienceButton(game.world.centerX + 225, game.world.centerY + 100);

		this.makeInfoText();
	},

	back: function() {
		sessionStorageManager.clear();
		location.href = '../../web/main/index.html';
	},

	makeMaestroNameText: function(x, y) {
		this.makeTextField(x, y, "마에스트로 계정 :");
		this.inputTextMaestroName = this.makeInputTypeText(x, y, "");
		this.inputTextMaestroName.canvasInput.placeHolder("입력 후 [ Tab ]키를 누르세요");
	},

	makeNameText: function(x, y) {
		this.makeTextField(x, y, "이름 :");
		this.inputTextName = this.makeInputTypeText(x, y, "");
		this.inputTextName.canvasInput.placeHolder("입력 후 [ Tab ]키를 누르세요");
	},

	makeEnterCodeText: function(x, y) {
		this.makeTextField(x, y, "입장번호 :");
		this.inputTextEnterCode = this.makeInputTypeText(x, y, "");
		this.inputTextEnterCode.canvasInput.placeHolder("입력 후 [ Tab ]키를 누르세요");
	},

	makeTextField: function(x, y, text) {
		return game.add.text(x, y, text, this.textStyle)
		.setTextBounds(0, 0, 200, 0)
		.setShadow(3, 3, 'rgba(0, 0, 0, 0.5)', 2)
		.boundsAlignH = 'right';
	},

	makeInputTypeText: function(x, y, text) {
		var inputText = new InputTypeText(x + 420, y);
		inputText.anchor.set(0.5);
		inputText.canvasInput.value('');
		if(isDebugMode()) {
			inputText.canvasInput.value(text);
		}
		inputText.canvasInput._onkeyup = (function() {
			if(event.keyCode == Phaser.Keyboard.ENTER) {
				this.startMenu();
			}
		}).bind(this);

		return inputText;
	},

	makeStartButton: function(x, y) {
		var setting = new RoundRectButtonSetting(x, y, 200, 100);
		setting.fontStyle.fontWeight = "bold";

		var startButton = new RoundRectButton(
			setting,
			RoundRectButton.NONE_ICON, "시작",
			(function() { this.startMenu(); }).bind(this)
		);
		startButton.addShortcutText("Enter");
	},

	makeExperienceButton: function(x, y) {
		var BUTTON_SIZE = 90;
		// var setting = new RoundRectButtonSetting(x, y, BUTTON_SIZE, BUTTON_SIZE);
		var setting = new RoundRectButtonSetting(x, y, 150, 100);
		// setting.roundAmount = 60;
		// setting.strokeWidthPx = 5;
		// setting.fontStyle.fontSize = 40;
		setting.fontStyle.fontWeight = "bold";

		// cyan
		setting.setStrokeColor(
			0x309090,
			0x208080,
			0x205050,
			0x666666
		);
		setting.setButtonColor(
			0x40c0c0,
			0x30a0a0,
			0x208080,
			0x666666
		);
		setting.setTextColor(
			"#cee",
			"#acc",
			"#8aa",
			"#333"
		);

		var experienceButton = new RoundRectButton(
			setting,
			RoundRectButton.NONE_ICON, "체험",
			(function() {
				this.setExperiencePlayerSessionStorage();
				// this.startMenu();
				game.state.start('LicenseTimer');
			}).bind(this)
		);
	},

	setExperiencePlayerSessionStorage: function() {
		sessionStorageManager.setMaestroName("");
		sessionStorageManager.setMaestroID(1);
		sessionStorageManager.setMaestroAccountType(100);
		sessionStorageManager.setPlayerName("체험 학생");
		sessionStorageManager.setPlayerID(1);
		sessionStorageManager.setPlayerAccountType(0);
		sessionStorageManager.setPlayingAppID(null);
		sessionStorageManager.setPlayingAppName(null);
		sessionStorageManager.setPlayingAppKoreanName(null);
		sessionStorageManager.setRecord(0);
		sessionStorageManager.setAppHighestRecord(0);
	},

	makeInfoText: function(x, y) {
		var textStyle = { font: "30px Arial", fill: "#faa" };
		this.infoText = game.add.text(game.world.centerX, 640, "", textStyle);
		this.infoText.anchor.set(0.5);
		this.infoText.stroke = "#333";
		this.infoText.strokeThickness = 3;
	},


	startMenu: function() {
		var maestroName = this.inputTextMaestroName.canvasInput._value;
		sessionStorageManager.setPlayerName(this.inputTextName.canvasInput._value);
		var enterCode = this.inputTextEnterCode.canvasInput._value;

		// console.log(maestroName);
		// console.log(enterCode);

		if(maestroName == "") {
			this.infoText.text = "마에스트로 계정 이름을 입력해주세요";
			this.inputTextMaestroName.canvasInput.focus();
			return;
		} else if(sessionStorageManager.getPlayerName() == "") {
			this.infoText.text = "학생의 이름을 입력해주세요";
			this.inputTextName.canvasInput.focus();
			return;
		} else if(enterCode == "") {
			this.infoText.text = "학생의 입장번호를 입력해주세요";
			this.inputTextEnterCode.canvasInput.focus();
			return;
		}

		var dbConnectManager = new DBConnectManager();
		dbConnectManager.requestCheckPlayerLogin(
			maestroName,
			sessionStorageManager.getPlayerName(),
			enterCode,
			(function(jsonData) {
				this.loginSucceeded(jsonData);
			}).bind(this),
			(function(jsonData) {
				this.loginFailed(jsonData);
			}).bind(this)
		);
	},

	loginSucceeded: function(jsonData) {
		// console.log(jsonData);
		sessionStorageManager.setMaestroID(jsonData['MaestroID']);
		sessionStorageManager.setMaestroAccountType(jsonData['MaestroAccountType']);
		sessionStorageManager.setPlayerID(jsonData['PlayerID']);
		sessionStorageManager.setPlayerName(jsonData['PlayerName']);
		sessionStorageManager.setPlayerAccountType(jsonData['PlayerAccountType']);

		// sessionStorageManager.setPlayingAppName("menu");
		// location.href = '../../web/client/menu_app.html';

		game.state.start('LicenseTimer');
	},

	loginFailed: function(jsonData) {
		sessionStorageManager.clear();

		// show retry message
		// console.log('login failed, jsonData : ' + JSON.stringify(jsonData));

		if(jsonData["error"] !== null) {
			this.infoText.text = jsonData["error"];
		}
	},
}