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 '';}));
		});

		$('#login_btn').click(function() {
			if(itp_fn_login_validate()) {
				itp_fn_login_proc();
			}
			return false;
		});

		var callbackFn = function(result) {
			POP_LIST = result.popList;
			fn_proc_popup_view('L');
		};
		const key = {sViewTargetCd: 'L'};
		var param = $.param(key);
		fn_ajax_call('/api/pop/open-pop', param, callbackFn, 'GET');
	});
});

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_validate() {
	$('#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_USER_ID').val() == '') {
		$('#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_proc() {
	
	var callbackFn = function(result) {
		var hashed = fnHashed(result.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) {
			// alert('SIGN-IN RESULT : ' + JSON.stringify(result));
			sessionStorage.setItem('itp_login_info', JSON.stringify({
				timestamp: new Date(),
		        connKey: result.connKey		// Jwt키를 가져와서 세션 스토리지에 저장
			})); 
	    	$(location).attr('href', ITP_CONTEXTPATH + '/main.html');
		};
		var params = $('#command').serializeObject();
		fn_ajax_call('/api/member/sign-in', JSON.stringify(params), loginFn, 'POST'); //암호화 해서 보내는 경우 먼저 해시키를 가져와서 암호화해서 보낸다
	};
	fn_ajax_call('/api/session/hashed', null, callbackFn, 'GET'); //Crypto 암호화를 위한 해쉬키.. 로그인 후에는 Jwt 포함인 /api/session/hashedKey 이걸로 호출해서 사용한다.
	
	// 공통코드 저장 테스트
	// let map = new Map();
	// map.set('useYn', JSON.stringify([{'codeDtlCd':'Y','codeDtlNm':'사용'},{'codeDtlCd':'N','codeDtlNm':'미사용'}]));
	// sessionStorage.itp_common_code = JSON.stringify(Array.from(map.entries()));
	
	// $(location).attr('href', ITP_CONTEXTPATH + '/main.html');	
}
