require(['config'], function() {
	require([
		'jquery', 
		'crypto' //Crypto 암호화 js - 필요한 페이지만 불러서 쓴다
	], function($) {
		if (sessionStorage.getItem('itp_login_info') !== null) { //Jwt 가 살아있으면 메인으로 보낸다.
	    	location.replace('./main.html');
	    }

		// itp_fn_login_init();

		$('#ITP_LOGIN').on('keyup', 'input, textarea', function() {
			var $th = $(this);
			$th.val($th.val().replace(/(<([^>]+)>)/ig, function() {return '';}));
		});

		$('button[id^="ITP_FORM_DEL_LOGIN"]').on('click', function() {
			$(this).closest('.input_area').find('input').val('');
			if($(this).attr('id') === 'ITP_FORM_DEL_LOGIN_BSNS_REG_NO') {
				$('#ITP_FORM_LOGIN_BRAND_ID').empty();
			}
		});

		$('#ITP_BTN_LOGIN_BSNS_REG_NO').on('click', function() {
			itp_fn_login_reg_no();
		});

		$('#login_btn').click(function() {
			if(itp_fn_login_validate()) {
				itp_fn_login_info();
				// itp_fn_login_proc();
			}
		});
	});
});

function itp_fn_login_init() {	
	$('#ITP_FORM_LOGIN_SAVE_ID').prop('checked', true);
	var save_id = localStorage.getItem('ITP_USER_ID');
    if (save_id !== null) {
    	$('#ITP_FORM_LOGIN_USER_ID').val(save_id);
    }
}

function itp_fn_login_reg_no() {
	if ($('#ITP_FORM_LOGIN_BSNS_REG_NO').val() === '') {
		$('.error').show();
	} else {
		$('.error').hide();

		var callbackFn = function(result) {
			fn_make_select_brand(result.gridRows, 'ITP_FORM_LOGIN_BRAND_ID');
		};
		var param = {'bsnsRegNo': $('#ITP_FORM_LOGIN_BSNS_REG_NO').val()};
		fn_ajax_call('/api/member/brand-list-app', $.param(param), callbackFn, 'GET');
	}
}

function itp_fn_login_validate() {
	$('#ITP_FORM_LOGIN_BRAND_ID').closest('.form-group').removeClass('has-error');
	$('#ITP_FORM_LOGIN_USER_ID').closest('.form-group').removeClass('has-error');
	$('#ITP_FORM_LOGIN_USER_PW').closest('.form-group').removeClass('has-error');
	$('#ITP_FORM_LOGIN_ERROR').text(ITP_MSG_LOCALE.message.login.help);

	if ($('#ITP_FORM_LOGIN_BRAND_ID').val() === '') {
		$('#ITP_FORM_LOGIN_BRAND_ID').closest('.form-group').addClass('has-error');
		$('#ITP_FORM_LOGIN_ERROR').text(ITP_MSG_LOCALE.message.login.needId);
		return false;
	}

	if ($('#ITP_FORM_LOGIN_USER_ID').val() === '' || $('#ITP_FORM_LOGIN_USER_ID').val().toLowerCase() === 'master') {
		$('#ITP_FORM_LOGIN_USER_ID').closest('.form-group').addClass('has-error');
		$('#ITP_FORM_LOGIN_ERROR').text(ITP_MSG_LOCALE.message.login.needId);
		return false;
	}

	if ($('#ITP_FORM_LOGIN_USER_PW').val() === '') {
		$('#ITP_FORM_LOGIN_USER_PW').closest('.form-group').addClass('has-error');
		$('#ITP_FORM_LOGIN_ERROR').text(ITP_MSG_LOCALE.message.login.needPw);
		return false;
	}

	$('#ITP_FORM_LOGIN_ERROR').text('');
	const userId = $('#ITP_FORM_LOGIN_USER_ID').val();
	if ($('#ITP_FORM_LOGIN_SAVE_ID').prop('checked')) {
		localStorage.setItem('ITP_USER_ID', userId);
	} else {
		localStorage.removeItem('ITP_USER_ID');
	}

	return true;
}

function itp_fn_login_info() {
	if(CommonObj.isApp) {
		$(location).attr('href', 'app:loginInfo');
	} else {
		itp_fn_login_proc();
	}
}

function itp_fn_login_proc() {
	var callbackFn = function(result) {
		var hashed = fnHashed(result.hashed);
		var userId = getUserId($('#ITP_FORM_LOGIN_USER_ID').val());
		$('#userId').val(CryptoJS.AES.encrypt(userId, hashed));
		// $('#userId').val(CryptoJS.AES.encrypt($('#ITP_FORM_LOGIN_USER_ID').val(), hashed));
		$('#password').val(CryptoJS.AES.encrypt($('#ITP_FORM_LOGIN_USER_PW').val(), hashed));
	    var loginFn = function(result) {
			sessionStorage.setItem('itp_login_info', JSON.stringify({
				timestamp: new Date(),
		        connKey: result.connKey		// Jwt키를 가져와서 세션 스토리지에 저장
			})); 
	    	$(location).attr('href', MOBILE_CONTEXTPATH + '/app/main.html');
		};
		var params = $('#ITP_FORM_MOBILE_LOGIN').serializeObject();
		var url = '/api/member/sign-in';
		// var url = CommonObj.isApp ? '/api/member/sign-in-app' : '/api/member/sign-in';
		fn_ajax_call(url, JSON.stringify(params), loginFn, 'POST'); //암호화 해서 보내는 경우 먼저 해시키를 가져와서 암호화해서 보낸다
	};
	fn_ajax_call('/api/session/hashed', null, callbackFn, 'GET'); //Crypto 암호화를 위한 해쉬키.. 로그인 후에는 Jwt 포함인 /api/session/hashedKey 이걸로 호출해서 사용한다.
}

function getUserId(userId) {
	if(userId.length !== 1) return userId.toUpperCase();
	switch (userId) {
		case '1':
		case '2': return 'BRD22120000' + userId;
		case '4':
		case '5':
		case '6':
		case '7': return 'STR22120000' + userId;
		case '0':
		case '3':
		case '8':
		case '9': return 'SPY221200005';
	}
}

function appCallFnLoginInfo(strInfo) {
	let appInfo = JSON.parse(strInfo);
	$('#appReg').val(appInfo.appReg);
	$('#appVer').val(appInfo.appVer);
	$('#deviId').val(appInfo.deviId);
	$('#deviOsVer').val(appInfo.deviOsVer);
	$('#deviTpCd').val(appInfo.deviTpCd);
	CommonObj.appInfo.set(strInfo);
	itp_fn_login_proc();
}
